MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_igr.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2!>
3!! @file
4!! @brief Contains module m_igr
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
20# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25
26# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43! New line at end of file is required for FYPP
44# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
45# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
46# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
47# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52
53# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56
57# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70! New line at end of file is required for FYPP
71# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
72
73# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78
79# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80
81# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149! New line at end of file is required for FYPP
150# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
151# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
152# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
153# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158
159# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164
165# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176! New line at end of file is required for FYPP
177# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
178
179# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180
181# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182
183# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184
185# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234! New line at end of file is required for FYPP
235# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
236
237! GPU parallel region (scalar reductions, maxval/minval)
238# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239
240! GPU parallel loop over threads (most common GPU macro)
241# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242
243! Required closing for GPU_PARALLEL_LOOP
244# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246! Mark routine for device compilation
247# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249! Declare device-resident data
250# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252! Inner loop within a GPU parallel region
253# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255! Scoped GPU data region
256# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! Host code with device pointers (for MPI with GPU buffers)
259# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Allocate device memory (unscoped)
262# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Free device memory
265# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Atomic operation on device
268# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! End atomic capture block
271# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Copy data between host and device
274# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! Synchronization barrier
277# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Import GPU library module (openacc or omp_lib)
280# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Emit code only for AMD compiler
283# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Emit code for non-Cray compilers
286# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! Emit code only for Cray compiler
289# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Emit code for non-NVIDIA compilers
292# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296! New line at end of file is required for FYPP
297# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
298
299# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
300
301! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
302! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
303! example see misc/nvidia_uvm/bind.sh. NVIDIA unified memory page placement hint
304# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305
306! Allocate and create GPU device memory
307# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308
309! Free GPU device memory and deallocate
310# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312! Cray-specific GPU pointer setup for vector fields
313# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Cray-specific GPU pointer setup for scalar fields
316# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Cray-specific GPU pointer setup for acoustic source spatials
319# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322
323# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
324! New line at end of file is required for FYPP
325# 7 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp" 2
326
327!> @brief Iterative ghost rasterization (IGR) for sharp immersed boundary treatment
328module m_igr
329
333 use m_mpi_proxy
334 use m_helper
336
337 implicit none
338
341
342 !> @cond
343#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
344 integer, dimension(3) :: nv_uvm_temp_on_gpu
345 real(wp), pointer, contiguous, dimension(:,:,:) :: jac, jac_rhs, jac_old
346 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_host
347 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_rhs_host
348 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_old_host
349#else
350 !> @endcond
351 real(wp), allocatable, target, dimension(:,:,:) :: jac
352 real(wp), allocatable, dimension(:,:,:) :: jac_rhs, jac_old
353
354# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
355#if defined(MFC_OpenACC)
356# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
357!$acc declare create(jac, jac_rhs, jac_old)
358# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
359#elif defined(MFC_OpenMP)
360# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
361!$omp declare target (jac, jac_rhs, jac_old)
362# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
363#endif
364 !> @cond
365#endif
366 !> @endcond
367 type(scalar_field), dimension(1) :: jac_sf
368
369# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
370#if defined(MFC_OpenACC)
371# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
372!$acc declare create(jac_sf)
373# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
374#elif defined(MFC_OpenMP)
375# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
376!$omp declare target (jac_sf)
377# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
378#endif
379
380 real(wp), allocatable, dimension(:,:) :: res_igr
381
382# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
383#if defined(MFC_OpenACC)
384# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
385!$acc declare create(Res_igr)
386# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
387#elif defined(MFC_OpenMP)
388# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
389!$omp declare target (Res_igr)
390# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
391#endif
392
393 real(wp) :: alf_igr
394
395# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
396#if defined(MFC_OpenACC)
397# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
398!$acc declare create(alf_igr)
399# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
400#elif defined(MFC_OpenMP)
401# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
402!$omp declare target (alf_igr)
403# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
404#endif
405
406# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
407 integer :: vidxb, vidxe
408
409# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
410#if defined(MFC_OpenACC)
411# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
412!$acc declare create(vidxb, vidxe)
413# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
414#elif defined(MFC_OpenMP)
415# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
416!$omp declare target (vidxb, vidxe)
417# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
418#endif
419
420 real(wp), allocatable, dimension(:) :: coeff_l, coeff_r
421
422# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
423#if defined(MFC_OpenACC)
424# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
425!$acc declare create(coeff_L, coeff_R)
426# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
427#elif defined(MFC_OpenMP)
428# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
429!$omp declare target (coeff_L, coeff_R)
430# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
431#endif
432# 82 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
433
434 integer(kind=8) :: i, j, k, l, q, r
435
436 ! Scalar copies of eqn_idx fields used in GPU atomics. nvfortran OpenMP does not support derived-type member indexing on the LHS
437 ! of atomic updates; plain integers work.
439
440# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
441#if defined(MFC_OpenACC)
442# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
443!$acc declare create(igr_momxb, igr_E_idx, igr_advxb)
444# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
445#elif defined(MFC_OpenMP)
446# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
447!$omp declare target (igr_momxb, igr_E_idx, igr_advxb)
448# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
449#endif
450
451contains
452
453 !> Initialize the IGR module
455
456 if (viscous) then
457#ifdef MFC_DEBUG
458# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
459 block
460# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
461 use iso_fortran_env, only: output_unit
462# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
463
464# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
465 print *, 'm_igr.fpp:96: ', '@:ALLOCATE(Res_igr(1:2, 1:maxval(Re_size)))'
466# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
467
468# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
469 call flush (output_unit)
470# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
471 end block
472# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
473#endif
474# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
475 allocate (res_igr(1:2, 1:maxval(re_size)))
476# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
477
478# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
479
480# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
481#if defined(MFC_OpenACC)
482# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
483!$acc enter data create(Res_igr)
484# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
485#elif defined(MFC_OpenMP)
486# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
487!$omp target enter data map(always,alloc:Res_igr)
488# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
489#endif
490 do i = 1, 2
491 do j = 1, re_size(i)
492 res_igr(i, j) = fluid_pp(re_idx(i, j))%Re(i)
493 end do
494 end do
495
496# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
497#if defined(MFC_OpenACC)
498# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
499!$acc update device(Res_igr, Re_idx, Re_size)
500# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
501#elif defined(MFC_OpenMP)
502# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
503!$omp target update to(Res_igr, Re_idx, Re_size)
504# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
505#endif
506#ifdef MFC_SIMULATION
507# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
508#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
509# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
510 block
511# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
512 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
513# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
514 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
515# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
516#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
517# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
518 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
519# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
520#else
521# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
522 use cuda_runtime_api
523# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
524#endif
525# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
526 integer :: istat
527# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
528
529# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
530 if (nv_uvm_pref_gpu) then
531# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
532 ! print*, "Moving Res_igr to GPU => ", SHAPE(Res_igr) set preferred location GPU
533# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
534 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetpreferredlocation, 0)
535# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
536 if (istat /= cudasuccess) then
537# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
538 write (*, "('Error code: ',I0, ': ')") istat
539# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
540 ! write(*,*) cudaGetErrorString(istat)
541# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
542 end if
543# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
544 ! set accessed by CPU
545# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
546 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetaccessedby, cudacpudeviceid)
547# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
548 if (istat /= cudasuccess) then
549# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
550 write (*, "('Error code: ',I0, ': ')") istat
551# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
552 ! write(*,*) cudaGetErrorString(istat)
553# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
554 end if
555# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
556 ! prefetch to GPU - physically populate memory pages
557# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
558 istat = cudamemprefetchasync(c_devloc(res_igr), sizeof(res_igr), 0, 0)
559# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
560 if (istat /= cudasuccess) then
561# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
562 write (*, "('Error code: ',I0, ': ')") istat
563# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
564 ! write(*,*) cudaGetErrorString(istat)
565# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
566 end if
567# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
568 end if
569# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
570 end block
571# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
572#endif
573# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
574#endif
575#ifdef MFC_SIMULATION
576# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
577#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
578# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
579 block
580# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
581 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
582# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
583 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
584# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
585#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
586# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
587 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
588# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
589#else
590# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
591 use cuda_runtime_api
592# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
593#endif
594# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
595 integer :: istat
596# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
597
598# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
599 if (nv_uvm_pref_gpu) then
600# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
601 ! print*, "Moving Re_idx to GPU => ", SHAPE(Re_idx) set preferred location GPU
602# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
603 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetpreferredlocation, 0)
604# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
605 if (istat /= cudasuccess) then
606# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
607 write (*, "('Error code: ',I0, ': ')") istat
608# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
609 ! write(*,*) cudaGetErrorString(istat)
610# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
611 end if
612# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
613 ! set accessed by CPU
614# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
615 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetaccessedby, cudacpudeviceid)
616# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
617 if (istat /= cudasuccess) then
618# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
619 write (*, "('Error code: ',I0, ': ')") istat
620# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
621 ! write(*,*) cudaGetErrorString(istat)
622# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
623 end if
624# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
625 ! prefetch to GPU - physically populate memory pages
626# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
627 istat = cudamemprefetchasync(c_devloc(re_idx), sizeof(re_idx), 0, 0)
628# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
629 if (istat /= cudasuccess) then
630# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
631 write (*, "('Error code: ',I0, ': ')") istat
632# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
633 ! write(*,*) cudaGetErrorString(istat)
634# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
635 end if
636# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
637 end if
638# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
639 end block
640# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
641#endif
642# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
643#endif
644 end if
645
646#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
647#ifdef MFC_DEBUG
648# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
649 block
650# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
651 use iso_fortran_env, only: output_unit
652# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
653
654# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
655 print *, 'm_igr.fpp:108: ', '@:ALLOCATE(jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
656# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
657
658# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
659 call flush (output_unit)
660# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
661 end block
662# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
663#endif
664# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
665 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
666# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
667
668# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
669
670# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
671#if defined(MFC_OpenACC)
672# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
673!$acc enter data create(jac)
674# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
675#elif defined(MFC_OpenMP)
676# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
677!$omp target enter data map(always,alloc:jac)
678# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
679#endif
680#ifdef MFC_DEBUG
681# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
682 block
683# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
684 use iso_fortran_env, only: output_unit
685# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
686
687# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
688 print *, 'm_igr.fpp:109: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
689# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
690
691# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
692 call flush (output_unit)
693# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
694 end block
695# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
696#endif
697# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
698 allocate (jac_rhs(-1:m,-1:n,-1:p))
699# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
700
701# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
702
703# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
704#if defined(MFC_OpenACC)
705# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
706!$acc enter data create(jac_rhs)
707# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
708#elif defined(MFC_OpenMP)
709# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
710!$omp target enter data map(always,alloc:jac_rhs)
711# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
712#endif
713
714 if (igr_iter_solver == 1) then ! Jacobi iteration
715#ifdef MFC_DEBUG
716# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
717 block
718# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
719 use iso_fortran_env, only: output_unit
720# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
721
722# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
723 print *, 'm_igr.fpp:112: ', '@:ALLOCATE(jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
724# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
725
726# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
727 call flush (output_unit)
728# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
729 end block
730# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
731#endif
732# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
733 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
734# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
735
736# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
737
738# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
739#if defined(MFC_OpenACC)
740# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
741!$acc enter data create(jac_old)
742# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
743#elif defined(MFC_OpenMP)
744# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
745!$omp target enter data map(always,alloc:jac_old)
746# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
747#endif
748 end if
749#else
750 ! create map
751 nv_uvm_temp_on_gpu(1:3) = 0
752 nv_uvm_temp_on_gpu(1:nv_uvm_igr_temps_on_gpu) = 1
753
754 if (nv_uvm_temp_on_gpu(1) == 1) then
755#ifdef MFC_DEBUG
756# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
757 block
758# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
759 use iso_fortran_env, only: output_unit
760# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
761
762# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
763 print *, 'm_igr.fpp:120: ', '@:ALLOCATE(jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
764# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
765
766# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
767 call flush (output_unit)
768# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
769 end block
770# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
771#endif
772# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
773 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
774# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
775
776# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
777
778# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
779#if defined(MFC_OpenACC)
780# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
781!$acc enter data create(jac)
782# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
783#elif defined(MFC_OpenMP)
784# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
785!$omp target enter data map(always,alloc:jac)
786# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
787#endif
788#ifdef MFC_SIMULATION
789# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
790#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
791# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
792 block
793# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
794 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
795# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
796 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
797# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
798#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
799# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
800 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
801# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
802#else
803# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
804 use cuda_runtime_api
805# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
806#endif
807# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
808 integer :: istat
809# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
810
811# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
812 if (nv_uvm_pref_gpu) then
813# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
814 ! print*, "Moving jac to GPU => ", SHAPE(jac) set preferred location GPU
815# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
816 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetpreferredlocation, 0)
817# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
818 if (istat /= cudasuccess) then
819# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
820 write (*, "('Error code: ',I0, ': ')") istat
821# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
822 ! write(*,*) cudaGetErrorString(istat)
823# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
824 end if
825# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
826 ! set accessed by CPU
827# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
828 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetaccessedby, cudacpudeviceid)
829# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
830 if (istat /= cudasuccess) then
831# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
832 write (*, "('Error code: ',I0, ': ')") istat
833# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
834 ! write(*,*) cudaGetErrorString(istat)
835# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
836 end if
837# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
838 ! prefetch to GPU - physically populate memory pages
839# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
840 istat = cudamemprefetchasync(c_devloc(jac), sizeof(jac), 0, 0)
841# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
842 if (istat /= cudasuccess) then
843# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
844 write (*, "('Error code: ',I0, ': ')") istat
845# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
846 ! write(*,*) cudaGetErrorString(istat)
847# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
848 end if
849# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
850 end if
851# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
852 end block
853# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
854#endif
855# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
856#endif
857 else
858 allocate (jac_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
859
860 jac(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end) => jac_host(:,:,:)
861 end if
862
863 if (nv_uvm_temp_on_gpu(2) == 1) then
864#ifdef MFC_DEBUG
865# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
866 block
867# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
868 use iso_fortran_env, only: output_unit
869# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
870
871# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
872 print *, 'm_igr.fpp:129: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
873# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
874
875# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
876 call flush (output_unit)
877# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
878 end block
879# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
880#endif
881# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
882 allocate (jac_rhs(-1:m,-1:n,-1:p))
883# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
884
885# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
886
887# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
888#if defined(MFC_OpenACC)
889# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
890!$acc enter data create(jac_rhs)
891# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
892#elif defined(MFC_OpenMP)
893# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
894!$omp target enter data map(always,alloc:jac_rhs)
895# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
896#endif
897#ifdef MFC_SIMULATION
898# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
899#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
900# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
901 block
902# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
903 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
904# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
905 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
906# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
907#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
908# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
909 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
910# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
911#else
912# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
913 use cuda_runtime_api
914# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
915#endif
916# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
917 integer :: istat
918# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
919
920# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
921 if (nv_uvm_pref_gpu) then
922# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
923 ! print*, "Moving jac_rhs to GPU => ", SHAPE(jac_rhs) set preferred location GPU
924# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
925 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetpreferredlocation, 0)
926# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
927 if (istat /= cudasuccess) then
928# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
929 write (*, "('Error code: ',I0, ': ')") istat
930# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
931 ! write(*,*) cudaGetErrorString(istat)
932# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
933 end if
934# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
935 ! set accessed by CPU
936# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
937 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetaccessedby, cudacpudeviceid)
938# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
939 if (istat /= cudasuccess) then
940# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
941 write (*, "('Error code: ',I0, ': ')") istat
942# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
943 ! write(*,*) cudaGetErrorString(istat)
944# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
945 end if
946# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
947 ! prefetch to GPU - physically populate memory pages
948# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
949 istat = cudamemprefetchasync(c_devloc(jac_rhs), sizeof(jac_rhs), 0, 0)
950# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
951 if (istat /= cudasuccess) then
952# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
953 write (*, "('Error code: ',I0, ': ')") istat
954# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
955 ! write(*,*) cudaGetErrorString(istat)
956# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
957 end if
958# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
959 end if
960# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
961 end block
962# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
963#endif
964# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
965#endif
966 else
967 allocate (jac_rhs_host(-1:m,-1:n,-1:p))
968 jac_rhs(-1:m,-1:n,-1:p) => jac_rhs_host(:,:,:)
969 end if
970
971 if (igr_iter_solver == 1) then ! Jacobi iteration
972 if (nv_uvm_temp_on_gpu(3) == 1) then
973#ifdef MFC_DEBUG
974# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
975 block
976# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
977 use iso_fortran_env, only: output_unit
978# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
979
980# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
981 print *, 'm_igr.fpp:138: ', '@:ALLOCATE(jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
982# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
983
984# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
985 call flush (output_unit)
986# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
987 end block
988# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
989#endif
990# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
991 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
992# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
993
994# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
995
996# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
997#if defined(MFC_OpenACC)
998# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
999!$acc enter data create(jac_old)
1000# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1001#elif defined(MFC_OpenMP)
1002# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1003!$omp target enter data map(always,alloc:jac_old)
1004# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1005#endif
1006#ifdef MFC_SIMULATION
1007# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1008#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
1009# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1010 block
1011# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1012 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
1013# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1014 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
1015# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1016#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
1017# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1018 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
1019# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1020#else
1021# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1022 use cuda_runtime_api
1023# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1024#endif
1025# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1026 integer :: istat
1027# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1028
1029# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1030 if (nv_uvm_pref_gpu) then
1031# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1032 ! print*, "Moving jac_old to GPU => ", SHAPE(jac_old) set preferred location GPU
1033# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1034 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetpreferredlocation, 0)
1035# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1036 if (istat /= cudasuccess) then
1037# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1038 write (*, "('Error code: ',I0, ': ')") istat
1039# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1040 ! write(*,*) cudaGetErrorString(istat)
1041# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1042 end if
1043# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1044 ! set accessed by CPU
1045# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1046 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetaccessedby, cudacpudeviceid)
1047# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1048 if (istat /= cudasuccess) then
1049# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1050 write (*, "('Error code: ',I0, ': ')") istat
1051# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1052 ! write(*,*) cudaGetErrorString(istat)
1053# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1054 end if
1055# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1056 ! prefetch to GPU - physically populate memory pages
1057# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1058 istat = cudamemprefetchasync(c_devloc(jac_old), sizeof(jac_old), 0, 0)
1059# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1060 if (istat /= cudasuccess) then
1061# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1062 write (*, "('Error code: ',I0, ': ')") istat
1063# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1064 ! write(*,*) cudaGetErrorString(istat)
1065# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1066 end if
1067# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1068 end if
1069# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1070 end block
1071# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1072#endif
1073# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1074#endif
1075 else
1076 allocate (jac_old_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
1077
1078 jac_old(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end, &
1079 & idwbuff(3)%beg:idwbuff(3)%end) => jac_old_host(:,:,:)
1080 end if
1081 end if
1082#endif
1083
1084
1085# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1086
1087# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1088#if defined(MFC_OpenACC)
1089# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1090!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1091# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1092#elif defined(MFC_OpenMP)
1093# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1094
1095# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1096
1097# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1098
1099# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1100!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l)
1101# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1102#endif
1103 do l = idwbuff(3)%beg, idwbuff(3)%end
1104 do k = idwbuff(2)%beg, idwbuff(2)%end
1105 do j = idwbuff(1)%beg, idwbuff(1)%end
1106 jac(j, k, l) = 0._stp
1107 if (igr_iter_solver == 1) jac_old(j, k, l) = 0._stp
1108 end do
1109 end do
1110 end do
1111
1112# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1113#if defined(MFC_OpenACC)
1114# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1115!$acc end parallel loop
1116# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1117#elif defined(MFC_OpenMP)
1118# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1119
1120# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1121!$omp end target teams loop
1122# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1123#endif
1124
1125 if (p == 0) then
1126 alf_igr = alf_factor*max(dx(1), dy(1))**2._wp
1127 else
1128 alf_igr = alf_factor*max(dx(1), dy(1), dz(1))**2._wp
1129 end if
1130
1131# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1132#if defined(MFC_OpenACC)
1133# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1134!$acc update device(alf_igr)
1135# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1136#elif defined(MFC_OpenMP)
1137# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1138!$omp target update to(alf_igr)
1139# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1140#endif
1141
1142 igr_momxb = eqn_idx%mom%beg
1143 igr_e_idx = eqn_idx%E
1144 igr_advxb = eqn_idx%adv%beg
1145
1146# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1147#if defined(MFC_OpenACC)
1148# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1149!$acc update device(igr_momxb, igr_E_idx, igr_advxb)
1150# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1151#elif defined(MFC_OpenMP)
1152# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1153!$omp target update to(igr_momxb, igr_E_idx, igr_advxb)
1154# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1155#endif
1156
1157# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1158 if (igr_order == 3) then
1159 vidxb = -1; vidxe = 2
1160
1161# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1162#if defined(MFC_OpenACC)
1163# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1164!$acc update device(vidxb, vidxe)
1165# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1166#elif defined(MFC_OpenMP)
1167# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1168!$omp target update to(vidxb, vidxe)
1169# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1170#endif
1171
1172#ifdef MFC_DEBUG
1173# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1174 block
1175# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1176 use iso_fortran_env, only: output_unit
1177# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1178
1179# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1180 print *, 'm_igr.fpp:177: ', '@:ALLOCATE(coeff_L(0:2))'
1181# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1182
1183# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1184 call flush (output_unit)
1185# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1186 end block
1187# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1188#endif
1189# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1190 allocate (coeff_l(0:2))
1191# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1192
1193# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1194
1195# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1196#if defined(MFC_OpenACC)
1197# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1198!$acc enter data create(coeff_L)
1199# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1200#elif defined(MFC_OpenMP)
1201# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1202!$omp target enter data map(always,alloc:coeff_L)
1203# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1204#endif
1205 coeff_l(0) = (2._wp/6._wp)
1206 coeff_l(1) = (5._wp/6._wp)
1207 coeff_l(2) = (-1._wp/6._wp)
1208
1209#ifdef MFC_DEBUG
1210# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1211 block
1212# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1213 use iso_fortran_env, only: output_unit
1214# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1215
1216# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1217 print *, 'm_igr.fpp:182: ', '@:ALLOCATE(coeff_R(-1:1))'
1218# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1219
1220# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1221 call flush (output_unit)
1222# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1223 end block
1224# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1225#endif
1226# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1227 allocate (coeff_r(-1:1))
1228# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1229
1230# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1231
1232# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1233#if defined(MFC_OpenACC)
1234# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1235!$acc enter data create(coeff_R)
1236# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1237#elif defined(MFC_OpenMP)
1238# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1239!$omp target enter data map(always,alloc:coeff_R)
1240# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1241#endif
1242 coeff_r(1) = (2._wp/6._wp)
1243 coeff_r(0) = (5._wp/6._wp)
1244 coeff_r(-1) = (-1._wp/6._wp)
1245 else if (igr_order == 5) then
1246 vidxb = -2; vidxe = 3
1247
1248# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1249#if defined(MFC_OpenACC)
1250# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1251!$acc update device(vidxb, vidxe)
1252# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1253#elif defined(MFC_OpenMP)
1254# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1255!$omp target update to(vidxb, vidxe)
1256# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1257#endif
1258
1259#ifdef MFC_DEBUG
1260# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1261 block
1262# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1263 use iso_fortran_env, only: output_unit
1264# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1265
1266# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1267 print *, 'm_igr.fpp:190: ', '@:ALLOCATE(coeff_L(-1:3))'
1268# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1269
1270# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1271 call flush (output_unit)
1272# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1273 end block
1274# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1275#endif
1276# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1277 allocate (coeff_l(-1:3))
1278# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1279
1280# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1281
1282# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1283#if defined(MFC_OpenACC)
1284# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1285!$acc enter data create(coeff_L)
1286# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1287#elif defined(MFC_OpenMP)
1288# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1289!$omp target enter data map(always,alloc:coeff_L)
1290# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1291#endif
1292 coeff_l(-1) = (-3._wp/60._wp)
1293 coeff_l(0) = (27._wp/60._wp)
1294 coeff_l(1) = (47._wp/60._wp)
1295 coeff_l(2) = (-13._wp/60._wp)
1296 coeff_l(3) = (2._wp/60._wp)
1297
1298#ifdef MFC_DEBUG
1299# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1300 block
1301# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1302 use iso_fortran_env, only: output_unit
1303# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1304
1305# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1306 print *, 'm_igr.fpp:197: ', '@:ALLOCATE(coeff_R(-2:2))'
1307# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1308
1309# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1310 call flush (output_unit)
1311# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1312 end block
1313# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1314#endif
1315# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1316 allocate (coeff_r(-2:2))
1317# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1318
1319# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1320
1321# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1322#if defined(MFC_OpenACC)
1323# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1324!$acc enter data create(coeff_R)
1325# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1326#elif defined(MFC_OpenMP)
1327# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1328!$omp target enter data map(always,alloc:coeff_R)
1329# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1330#endif
1331 coeff_r(2) = (-3._wp/60._wp)
1332 coeff_r(1) = (27._wp/60._wp)
1333 coeff_r(0) = (47._wp/60._wp)
1334 coeff_r(-1) = (-13._wp/60._wp)
1335 coeff_r(-2) = (2._wp/60._wp)
1336 end if
1337
1338
1339# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1340#if defined(MFC_OpenACC)
1341# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1342!$acc update device(coeff_L)
1343# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1344#elif defined(MFC_OpenMP)
1345# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1346!$omp target update to(coeff_L)
1347# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1348#endif
1349
1350# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1351#if defined(MFC_OpenACC)
1352# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1353!$acc update device(coeff_R)
1354# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1355#elif defined(MFC_OpenMP)
1356# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1357!$omp target update to(coeff_R)
1358# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1359#endif
1360# 213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1361 jac_sf(1)%sf => jac
1362
1363# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1364#if defined(MFC_OpenACC)
1365# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1366!$acc enter data copyin(jac_sf(1)%sf)
1367# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1368#elif defined(MFC_OpenMP)
1369# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1370!$omp target enter data map(to:jac_sf(1)%sf)
1371# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1372#endif
1373
1374# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1375#if defined(MFC_OpenACC)
1376# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1377!$acc enter data attach(jac_sf(1)%sf)
1378# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1379#elif defined(MFC_OpenMP)
1380# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1381!$omp target enter data map(always,to:jac_sf(1)%sf)
1382# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1383#endif
1384
1385 end subroutine s_initialize_igr_module
1386
1387 !> Iteratively solve the implicit gradient reconstruction system
1388 subroutine s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
1389
1390#ifdef _CRAYFTN
1391 ! DIR$ OPTIMIZE (-haggress)
1392#endif
1393 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1394 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
1395 integer, intent(in) :: t_step
1396 real(wp) :: rho_rx, rho_ry, rho_rz, rho_lx, rho_ly, rho_lz
1397 real(wp) :: fd_coeff
1398 integer :: num_iters
1399
1400 if (t_step == t_step_start) then
1401 num_iters = num_igr_warm_start_iters
1402 else
1403 num_iters = num_igr_iters
1404 end if
1405
1406 do q = 1, num_iters
1407
1408# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1409
1410# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1411#if defined(MFC_OpenACC)
1412# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1413!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_lx, rho_rx, rho_ly, rho_ry, rho_lz, rho_rz, fd_coeff)
1414# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1415#elif defined(MFC_OpenMP)
1416# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1417
1418# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1419
1420# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1421
1422# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1423!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_lx, rho_rx, rho_ly, rho_ry, rho_lz, rho_rz, fd_coeff)
1424# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1425#endif
1426 do l = 0, p
1427 do k = 0, n
1428 do j = 0, m
1429 rho_lx = 0._wp
1430 rho_rx = 0._wp
1431 rho_ly = 0._wp
1432 rho_ry = 0._wp
1433 rho_lz = 0._wp
1434 rho_rz = 0._wp
1435 fd_coeff = 0._wp
1436
1437
1438# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1439#if defined(MFC_OpenACC)
1440# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1441!$acc loop seq
1442# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1443#elif defined(MFC_OpenMP)
1444# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1445
1446# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1447#endif
1448 do i = 1, num_fluids
1449 rho_lx = rho_lx + real(q_cons_vf(i)%sf(j, k, l) + q_cons_vf(i)%sf(j - 1, k, l), kind=wp)/2._wp
1450 rho_rx = rho_rx + real(q_cons_vf(i)%sf(j, k, l) + q_cons_vf(i)%sf(j + 1, k, l), kind=wp)/2._wp
1451 rho_ly = rho_ly + real(q_cons_vf(i)%sf(j, k, l) + q_cons_vf(i)%sf(j, k - 1, l), kind=wp)/2._wp
1452 rho_ry = rho_ry + real(q_cons_vf(i)%sf(j, k, l) + q_cons_vf(i)%sf(j, k + 1, l), kind=wp)/2._wp
1453 if (p > 0) then
1454 rho_lz = rho_lz + real(q_cons_vf(i)%sf(j, k, l) + q_cons_vf(i)%sf(j, k, l - 1), kind=wp)/2._wp
1455 rho_rz = rho_rz + real(q_cons_vf(i)%sf(j, k, l) + q_cons_vf(i)%sf(j, k, l + 1), kind=wp)/2._wp
1456 end if
1457 fd_coeff = fd_coeff + q_cons_vf(i)%sf(j, k, l)
1458 end do
1459
1460 fd_coeff = 1._wp/fd_coeff + alf_igr*((1._wp/dx(j)**2._wp)*(1._wp/rho_lx + 1._wp/rho_rx) + (1._wp/dy(k) &
1461 & **2._wp)*(1._wp/rho_ly + 1._wp/rho_ry))
1462
1463 if (num_dims == 3) then
1464 fd_coeff = fd_coeff + alf_igr*(1._wp/dz(l)**2._wp)*(1._wp/rho_lz + 1._wp/rho_rz)
1465 end if
1466
1467 if (igr_iter_solver == 1) then ! Jacobi iteration
1468 if (num_dims == 3) then
1469 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac_old(j - 1, k, &
1470 & l)/rho_lx + jac_old(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac_old(j, k - 1, &
1471 & l)/rho_ly + jac_old(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac_old(j, k, &
1472 & l - 1)/rho_lz + jac_old(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1473 & kind=stp)
1474 else
1475 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(real(jac_old(j - 1, k, l), &
1476 & kind=wp)/rho_lx + real(jac_old(j + 1, k, l), &
1477 & kind=wp)/rho_rx) + (1._wp/dy(k)**2._wp)*(real(jac_old(j, k - 1, l), &
1478 & kind=wp)/rho_ly + real(jac_old(j, k + 1, l), kind=wp)/rho_ry)) + real(jac_rhs(j, k, l), &
1479 & kind=wp)/fd_coeff, kind=stp)
1480 end if
1481 else ! Gauss Seidel iteration
1482 if (num_dims == 3) then
1483 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1484 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1485 & l)/rho_ly + jac(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac(j, k, &
1486 & l - 1)/rho_lz + jac(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1487 & kind=stp)
1488 else
1489 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1490 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1491 & l)/rho_ly + jac(j, k + 1, l)/rho_ry)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1492 end if
1493 end if
1494 end do
1495 end do
1496 end do
1497
1498# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1499#if defined(MFC_OpenACC)
1500# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1501!$acc end parallel loop
1502# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1503#elif defined(MFC_OpenMP)
1504# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1505
1506# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1507!$omp end target teams loop
1508# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1509#endif
1510
1511 call s_populate_f_igr_buffers(bc_type, jac_sf)
1512
1513 if (igr_iter_solver == 1 .or. dummy) then ! Jacobi iteration
1514
1515# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1516
1517# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1518#if defined(MFC_OpenACC)
1519# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1520!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1521# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1522#elif defined(MFC_OpenMP)
1523# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1524
1525# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1526
1527# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1528
1529# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1530!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l)
1531# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1532#endif
1533 do l = idwbuff(3)%beg, idwbuff(3)%end
1534 do k = idwbuff(2)%beg, idwbuff(2)%end
1535 do j = idwbuff(1)%beg, idwbuff(1)%end
1536 jac_old(j, k, l) = jac(j, k, l)
1537 end do
1538 end do
1539 end do
1540
1541# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1542#if defined(MFC_OpenACC)
1543# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1544!$acc end parallel loop
1545# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1546#elif defined(MFC_OpenMP)
1547# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1548
1549# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1550!$omp end target teams loop
1551# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1552#endif
1553 end if
1554 end do
1555
1556 end subroutine s_igr_iterative_solve
1557
1558 !> Compute the IGR viscous stress contribution in the x-direction and accumulate into the RHS
1559 subroutine s_igr_sigma_x(q_cons_vf, rhs_vf)
1560
1561#ifdef _CRAYFTN
1562 ! DIR$ OPTIMIZE (-haggress)
1563#endif
1564 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1565 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1566 real(wp) :: f_l, vel_l, rho_l, f_r, vel_r, rho_r
1567# 330 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1568 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_rho_r
1569# 334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1570
1571
1572# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1573
1574# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1575#if defined(MFC_OpenACC)
1576# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1577!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, F_L, vel_L, alpha_rho_L, F_R, vel_R, alpha_rho_R, rho_L, rho_R)
1578# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1579#elif defined(MFC_OpenMP)
1580# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1581
1582# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1583
1584# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1585
1586# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1587!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, F_L, vel_L, alpha_rho_L, F_R, vel_R, alpha_rho_R, rho_L, rho_R)
1588# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1589#endif
1590 do l = 0, p
1591 do k = 0, n
1592 do j = -1, m
1593 f_l = 0._wp; f_r = 0._wp
1594 vel_l = 0._wp; vel_r = 0._wp
1595 rho_l = 0._wp; rho_r = 0._wp
1596
1597
1598# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1599#if defined(MFC_OpenACC)
1600# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1601!$acc loop seq
1602# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1603#elif defined(MFC_OpenMP)
1604# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1605
1606# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1607#endif
1608 do i = 1, num_fluids
1609 alpha_rho_l(i) = 0._wp
1610 alpha_rho_r(i) = 0._wp
1611 end do
1612
1613
1614# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1615#if defined(MFC_OpenACC)
1616# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1617!$acc loop seq
1618# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1619#elif defined(MFC_OpenMP)
1620# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1621
1622# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1623#endif
1624 do q = vidxb + 1, vidxe
1625
1626# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1627#if defined(MFC_OpenACC)
1628# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1629!$acc loop seq
1630# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1631#elif defined(MFC_OpenMP)
1632# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1633
1634# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1635#endif
1636 do i = 1, num_fluids
1637 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
1638 end do
1639
1640 vel_l = vel_l + coeff_l(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1641 f_l = f_l + coeff_l(q)*jac(j + q, k, l)
1642 end do
1643
1644
1645# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1646#if defined(MFC_OpenACC)
1647# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1648!$acc loop seq
1649# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1650#elif defined(MFC_OpenMP)
1651# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1652
1653# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1654#endif
1655 do q = vidxb, vidxe - 1
1656
1657# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1658#if defined(MFC_OpenACC)
1659# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1660!$acc loop seq
1661# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1662#elif defined(MFC_OpenMP)
1663# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1664
1665# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1666#endif
1667 do i = 1, num_fluids
1668 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
1669 end do
1670
1671 vel_r = vel_r + coeff_r(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1672 f_r = f_r + coeff_r(q)*jac(j + q, k, l)
1673 end do
1674
1675
1676# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1677#if defined(MFC_OpenACC)
1678# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1679!$acc loop seq
1680# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1681#elif defined(MFC_OpenMP)
1682# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1683
1684# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1685#endif
1686 do i = 1, num_fluids
1687 rho_l = rho_l + alpha_rho_l(i)
1688 rho_r = rho_r + alpha_rho_r(i)
1689 end do
1690
1691 vel_l = vel_l/rho_l
1692 vel_r = vel_r/rho_r
1693
1694# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1695
1696# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1697#if defined(MFC_OpenACC)
1698# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1699!$acc atomic update
1700# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1701#elif defined(MFC_OpenMP)
1702# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1703!$omp atomic update
1704# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1705#endif
1706 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1707 & l) + real(0.5_wp*dt*f_l*(1._wp/dx(j + 1)), kind=stp)
1708
1709# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1710#if defined(MFC_OpenACC)
1711# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1712!$acc atomic update
1713# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1714#elif defined(MFC_OpenMP)
1715# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1716!$omp atomic update
1717# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1718#endif
1719 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1720 & l) + real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j + 1)), kind=stp)
1721
1722# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1723#if defined(MFC_OpenACC)
1724# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1725!$acc atomic update
1726# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1727#elif defined(MFC_OpenMP)
1728# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1729!$omp atomic update
1730# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1731#endif
1732 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, l) - real(0.5_wp*dt*f_l*(1._wp/dx(j)), &
1733 & kind=stp)
1734
1735# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1736#if defined(MFC_OpenACC)
1737# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1738!$acc atomic update
1739# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1740#elif defined(MFC_OpenMP)
1741# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1742!$omp atomic update
1743# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1744#endif
1745 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1746 & l) - real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j)), kind=stp)
1747# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1748
1749# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1750#if defined(MFC_OpenACC)
1751# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1752!$acc atomic update
1753# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1754#elif defined(MFC_OpenMP)
1755# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1756!$omp atomic update
1757# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1758#endif
1759 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1760 & l) + real(0.5_wp*dt*f_r*(1._wp/dx(j + 1)), kind=stp)
1761
1762# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1763#if defined(MFC_OpenACC)
1764# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1765!$acc atomic update
1766# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1767#elif defined(MFC_OpenMP)
1768# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1769!$omp atomic update
1770# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1771#endif
1772 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1773 & l) + real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j + 1)), kind=stp)
1774
1775# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1776#if defined(MFC_OpenACC)
1777# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1778!$acc atomic update
1779# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1780#elif defined(MFC_OpenMP)
1781# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1782!$omp atomic update
1783# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1784#endif
1785 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, l) - real(0.5_wp*dt*f_r*(1._wp/dx(j)), &
1786 & kind=stp)
1787
1788# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1789#if defined(MFC_OpenACC)
1790# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1791!$acc atomic update
1792# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1793#elif defined(MFC_OpenMP)
1794# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1795!$omp atomic update
1796# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1797#endif
1798 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1799 & l) - real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j)), kind=stp)
1800# 394 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1801 end do
1802 end do
1803 end do
1804
1805# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1806#if defined(MFC_OpenACC)
1807# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1808!$acc end parallel loop
1809# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1810#elif defined(MFC_OpenMP)
1811# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1812
1813# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1814!$omp end target teams loop
1815# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1816#endif
1817
1818 end subroutine s_igr_sigma_x
1819
1820 !> Evaluate the approximate Riemann solver for the IGR scheme along a given direction
1821 subroutine s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
1822
1823#ifdef _CRAYFTN
1824 ! DIR$ OPTIMIZE (-haggress)
1825#endif
1826 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1827 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1828 integer, intent(in) :: idir
1829 real(wp) :: cfl
1830 real(wp) :: rho_l, gamma_l, pi_inf_l, e_l, mu_l, f_l, pres_l
1831 real(wp) :: rho_r, gamma_r, pi_inf_r, e_r, mu_r, f_r, pres_r
1832 real(wp), dimension(3) :: vflux_l_arr, vflux_r_arr
1833 real(wp), dimension(-1:1) :: rho_sf_small
1834# 416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1835 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_l, alpha_r, alpha_rho_r
1836 real(wp), dimension(3) :: vel_l, vel_r
1837 real(wp), dimension(3, 3) :: dvel
1838 real(wp), dimension(3) :: dvel_small
1839# 426 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1840
1841 if (idir == 1) then
1842 if (p == 0) then
1843# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1844
1845# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1846
1847# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1848#if defined(MFC_OpenACC)
1849# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1850!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
1851# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1852#elif defined(MFC_OpenMP)
1853# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1854
1855# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1856
1857# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1858
1859# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1860!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
1861# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1862#endif
1863# 433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1864 do l = 0, p
1865 do k = 0, n
1866 do j = -1, m
1867 vflux_l_arr = 0._wp
1868 vflux_r_arr = 0._wp
1869
1870# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1871
1872# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1873#if defined(MFC_OpenACC)
1874# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1875!$acc loop seq
1876# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1877#elif defined(MFC_OpenMP)
1878# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1879
1880# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1881#endif
1882 do q = vidxb, vidxe
1883 ! x-direction contributions
1884
1885# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1886#if defined(MFC_OpenACC)
1887# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1888!$acc loop seq
1889# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1890#elif defined(MFC_OpenMP)
1891# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1892
1893# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1894#endif
1895 do i = -1, 1
1896 rho_l = 0._wp
1897
1898# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1899#if defined(MFC_OpenACC)
1900# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1901!$acc loop seq
1902# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1903#elif defined(MFC_OpenMP)
1904# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1905
1906# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1907#endif
1908 do r = 1, num_fluids
1909 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
1910 end do
1911 rho_sf_small(i) = rho_l
1912 end do
1913
1914 dvel_small(1) = (1/(2._wp*dx(j)))*(1._wp*q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
1915 & l)/rho_sf_small(1) - 1._wp*q_cons_vf(igr_momxb)%sf(j - 1 + q, k, &
1916 & l)/rho_sf_small(-1))
1917 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
1918 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
1919
1920 if (q == 0) then
1921
1922# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1923#if defined(MFC_OpenACC)
1924# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1925!$acc loop seq
1926# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1927#elif defined(MFC_OpenMP)
1928# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1929
1930# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1931#endif
1932 do i = 1, num_dims
1933 dvel(i, 1) = dvel_small(i)
1934 end do
1935 end if
1936
1937 if (q > vidxb) then
1938 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
1939 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
1940 end if
1941 if (q < vidxe) then
1942 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
1943 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
1944 end if
1945
1946 ! y-direction contributions
1947
1948# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1949#if defined(MFC_OpenACC)
1950# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1951!$acc loop seq
1952# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1953#elif defined(MFC_OpenMP)
1954# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1955
1956# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1957#endif
1958 do i = -1, 1
1959 rho_l = 0._wp
1960
1961# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1962#if defined(MFC_OpenACC)
1963# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1964!$acc loop seq
1965# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1966#elif defined(MFC_OpenMP)
1967# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1968
1969# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1970#endif
1971 do r = 1, num_fluids
1972 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
1973 end do
1974 rho_sf_small(i) = rho_l
1975 end do
1976
1977 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
1978 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1979 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
1980 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1981
1982 if (q == 0) then
1983
1984# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1985#if defined(MFC_OpenACC)
1986# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1987!$acc loop seq
1988# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1989#elif defined(MFC_OpenMP)
1990# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1991
1992# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1993#endif
1994 do i = 1, num_dims
1995 dvel(i, 2) = dvel_small(i)
1996 end do
1997 end if
1998
1999 if (q > vidxb) then
2000 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
2001 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
2002 end if
2003 if (q < vidxe) then
2004 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
2005 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
2006 end if
2007
2008 if (q == 0) then
2009 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1)) + dvel(1, &
2010 & 1)**2._wp + dvel(2, 2)**2._wp + (dvel(1, 1) + dvel(2, 2))**2._wp), kind=stp)
2011 end if
2012 end do
2013
2014
2015# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2016#if defined(MFC_OpenACC)
2017# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2018!$acc loop seq
2019# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2020#elif defined(MFC_OpenMP)
2021# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2022
2023# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2024#endif
2025 do i = 1, num_fluids
2026 alpha_rho_l(i) = 0._wp
2027 alpha_rho_r(i) = 0._wp
2028 alpha_l(i) = 0._wp
2029 alpha_r(i) = 0._wp
2030 end do
2031
2032# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2033#if defined(MFC_OpenACC)
2034# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2035!$acc loop seq
2036# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2037#elif defined(MFC_OpenMP)
2038# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2039
2040# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2041#endif
2042 do i = 1, num_dims
2043 vel_l(i) = 0._wp
2044 vel_r(i) = 0._wp
2045 end do
2046
2047
2048# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2049#if defined(MFC_OpenACC)
2050# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2051!$acc loop seq
2052# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2053#elif defined(MFC_OpenMP)
2054# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2055
2056# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2057#endif
2058 do q = vidxb + 1, vidxe
2059
2060# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2061#if defined(MFC_OpenACC)
2062# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2063!$acc loop seq
2064# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2065#elif defined(MFC_OpenMP)
2066# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2067
2068# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2069#endif
2070 do i = 1, num_fluids
2071 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
2072 end do
2073
2074 if (num_fluids > 1) then
2075
2076# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2077#if defined(MFC_OpenACC)
2078# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2079!$acc loop seq
2080# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2081#elif defined(MFC_OpenMP)
2082# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2083
2084# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2085#endif
2086 do i = 1, num_fluids - 1
2087 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2088 end do
2089 else
2090 alpha_l(1) = 1._wp
2091 end if
2092
2093
2094# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2095#if defined(MFC_OpenACC)
2096# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2097!$acc loop seq
2098# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2099#elif defined(MFC_OpenMP)
2100# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2101
2102# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2103#endif
2104 do i = 1, num_dims
2105 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2106 end do
2107 end do
2108
2109
2110# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2111#if defined(MFC_OpenACC)
2112# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2113!$acc loop seq
2114# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2115#elif defined(MFC_OpenMP)
2116# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2117
2118# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2119#endif
2120 do q = vidxb, vidxe - 1
2121
2122# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2123#if defined(MFC_OpenACC)
2124# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2125!$acc loop seq
2126# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2127#elif defined(MFC_OpenMP)
2128# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2129
2130# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2131#endif
2132 do i = 1, num_fluids
2133 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
2134 end do
2135
2136 if (num_fluids > 1) then
2137
2138# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2139#if defined(MFC_OpenACC)
2140# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2141!$acc loop seq
2142# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2143#elif defined(MFC_OpenMP)
2144# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2145
2146# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2147#endif
2148 do i = 1, num_fluids - 1
2149 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2150 end do
2151 else
2152 alpha_r(1) = 1._wp
2153 end if
2154
2155
2156# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2157#if defined(MFC_OpenACC)
2158# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2159!$acc loop seq
2160# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2161#elif defined(MFC_OpenMP)
2162# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2163
2164# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2165#endif
2166 do i = 1, num_dims
2167 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2168 end do
2169 end do
2170
2171 if (num_fluids > 1) then
2172 alpha_l(num_fluids) = 1._wp
2173 alpha_r(num_fluids) = 1._wp
2174
2175
2176# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2177#if defined(MFC_OpenACC)
2178# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2179!$acc loop seq
2180# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2181#elif defined(MFC_OpenMP)
2182# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2183
2184# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2185#endif
2186 do i = 1, num_fluids - 1
2187 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
2188 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
2189 end do
2190 end if
2191
2192 rho_l = 0._wp; rho_r = 0._wp
2193 gamma_l = 0._wp; gamma_r = 0._wp
2194 pi_inf_l = 0._wp; pi_inf_r = 0._wp
2195
2196
2197# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2198#if defined(MFC_OpenACC)
2199# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2200!$acc loop seq
2201# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2202#elif defined(MFC_OpenMP)
2203# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2204
2205# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2206#endif
2207 do i = 1, num_fluids
2208 rho_l = rho_l + alpha_rho_l(i)
2209 gamma_l = gamma_l + alpha_l(i)*gammas(i)
2210 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
2211
2212 rho_r = rho_r + alpha_rho_r(i)
2213 gamma_r = gamma_r + alpha_r(i)*gammas(i)
2214 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
2215 end do
2216
2217
2218# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2219#if defined(MFC_OpenACC)
2220# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2221!$acc loop seq
2222# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2223#elif defined(MFC_OpenMP)
2224# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2225
2226# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2227#endif
2228 do i = 1, num_dims
2229 vel_l(i) = vel_l(i)/rho_l
2230 vel_r(i) = vel_r(i)/rho_r
2231 end do
2232
2233 if (viscous) then
2234 mu_l = 0._wp; mu_r = 0._wp
2235
2236# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2237#if defined(MFC_OpenACC)
2238# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2239!$acc loop seq
2240# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2241#elif defined(MFC_OpenMP)
2242# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2243
2244# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2245#endif
2246 do i = 1, num_fluids
2247 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
2248 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
2249 end do
2250
2251
2252# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2253#if defined(MFC_OpenACC)
2254# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2255!$acc atomic update
2256# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2257#elif defined(MFC_OpenMP)
2258# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2259!$omp atomic update
2260# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2261#endif
2262 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2263 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2264
2265# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2266#if defined(MFC_OpenACC)
2267# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2268!$acc atomic update
2269# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2270#elif defined(MFC_OpenMP)
2271# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2272!$omp atomic update
2273# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2274#endif
2275 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2276 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
2277
2278
2279# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2280#if defined(MFC_OpenACC)
2281# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2282!$acc atomic update
2283# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2284#elif defined(MFC_OpenMP)
2285# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2286!$omp atomic update
2287# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2288#endif
2289 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2290 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
2291
2292# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2293#if defined(MFC_OpenACC)
2294# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2295!$acc atomic update
2296# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2297#elif defined(MFC_OpenMP)
2298# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2299!$omp atomic update
2300# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2301#endif
2302 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2303 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
2304
2305
2306# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2307#if defined(MFC_OpenACC)
2308# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2309!$acc atomic update
2310# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2311#elif defined(MFC_OpenMP)
2312# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2313!$omp atomic update
2314# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2315#endif
2316 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2317 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2318
2319# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2320#if defined(MFC_OpenACC)
2321# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2322!$acc atomic update
2323# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2324#elif defined(MFC_OpenMP)
2325# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2326!$omp atomic update
2327# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2328#endif
2329 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2330 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
2331
2332
2333# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2334#if defined(MFC_OpenACC)
2335# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2336!$acc atomic update
2337# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2338#elif defined(MFC_OpenMP)
2339# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2340!$omp atomic update
2341# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2342#endif
2343 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2344 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
2345
2346# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2347#if defined(MFC_OpenACC)
2348# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2349!$acc atomic update
2350# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2351#elif defined(MFC_OpenMP)
2352# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2353!$omp atomic update
2354# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2355#endif
2356 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2357 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
2358
2359
2360# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2361#if defined(MFC_OpenACC)
2362# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2363!$acc atomic update
2364# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2365#elif defined(MFC_OpenMP)
2366# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2367!$omp atomic update
2368# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2369#endif
2370 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2371 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2372
2373# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2374#if defined(MFC_OpenACC)
2375# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2376!$acc atomic update
2377# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2378#elif defined(MFC_OpenMP)
2379# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2380!$omp atomic update
2381# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2382#endif
2383 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2384 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
2385
2386
2387# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2388#if defined(MFC_OpenACC)
2389# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2390!$acc atomic update
2391# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2392#elif defined(MFC_OpenMP)
2393# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2394!$omp atomic update
2395# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2396#endif
2397 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2398 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
2399
2400# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2401#if defined(MFC_OpenACC)
2402# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2403!$acc atomic update
2404# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2405#elif defined(MFC_OpenMP)
2406# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2407!$omp atomic update
2408# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2409#endif
2410 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2411 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
2412
2413
2414# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2415#if defined(MFC_OpenACC)
2416# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2417!$acc atomic update
2418# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2419#elif defined(MFC_OpenMP)
2420# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2421!$omp atomic update
2422# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2423#endif
2424 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2425 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2426
2427# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2428#if defined(MFC_OpenACC)
2429# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2430!$acc atomic update
2431# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2432#elif defined(MFC_OpenMP)
2433# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2434!$omp atomic update
2435# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2436#endif
2437 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2438 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
2439
2440
2441# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2442#if defined(MFC_OpenACC)
2443# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2444!$acc atomic update
2445# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2446#elif defined(MFC_OpenMP)
2447# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2448!$omp atomic update
2449# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2450#endif
2451 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2452 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
2453
2454# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2455#if defined(MFC_OpenACC)
2456# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2457!$acc atomic update
2458# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2459#elif defined(MFC_OpenMP)
2460# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2461!$omp atomic update
2462# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2463#endif
2464 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2465 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
2466 end if
2467
2468 e_l = 0._wp; e_r = 0._wp
2469
2470
2471# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2472#if defined(MFC_OpenACC)
2473# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2474!$acc loop seq
2475# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2476#elif defined(MFC_OpenMP)
2477# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2478
2479# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2480#endif
2481 do q = vidxb + 1, vidxe
2482 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2483 end do
2484
2485
2486# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2487#if defined(MFC_OpenACC)
2488# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2489!$acc loop seq
2490# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2491#elif defined(MFC_OpenMP)
2492# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2493
2494# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2495#endif
2496 do q = vidxb, vidxe - 1
2497 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2498 end do
2499
2500 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
2501 & vel_r, pres_l, pres_r, cfl)
2502
2503 do i = 1, num_fluids
2504
2505# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2506#if defined(MFC_OpenACC)
2507# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2508!$acc atomic update
2509# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2510#elif defined(MFC_OpenMP)
2511# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2512!$omp atomic update
2513# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2514#endif
2515 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2516 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2517 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
2518
2519
2520# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2521#if defined(MFC_OpenACC)
2522# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2523!$acc atomic update
2524# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2525#elif defined(MFC_OpenMP)
2526# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2527!$omp atomic update
2528# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2529#endif
2530 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2531 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
2532 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
2533 end do
2534
2535 if (num_fluids > 1) then
2536
2537# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2538#if defined(MFC_OpenACC)
2539# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2540!$acc loop seq
2541# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2542#elif defined(MFC_OpenMP)
2543# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2544
2545# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2546#endif
2547 do i = 1, num_fluids - 1
2548
2549# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2550#if defined(MFC_OpenACC)
2551# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2552!$acc atomic update
2553# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2554#elif defined(MFC_OpenMP)
2555# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2556!$omp atomic update
2557# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2558#endif
2559 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2560 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2561 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
2562
2563
2564# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2565#if defined(MFC_OpenACC)
2566# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2567!$acc atomic update
2568# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2569#elif defined(MFC_OpenMP)
2570# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2571!$omp atomic update
2572# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2573#endif
2574 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2575 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2576 & l)*vel_l(1)*(1._wp/dx(j + 1))), kind=stp)
2577
2578
2579# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2580#if defined(MFC_OpenACC)
2581# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2582!$acc atomic update
2583# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2584#elif defined(MFC_OpenMP)
2585# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2586!$omp atomic update
2587# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2588#endif
2589 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2590 & l) - real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
2591 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j))), kind=stp)
2592
2593
2594# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2595#if defined(MFC_OpenACC)
2596# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2597!$acc atomic update
2598# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2599#elif defined(MFC_OpenMP)
2600# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2601!$omp atomic update
2602# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2603#endif
2604 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2605 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2606 & l)*vel_l(1)*(1._wp/dx(j))), kind=stp)
2607 end do
2608 end if
2609
2610
2611# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2612#if defined(MFC_OpenACC)
2613# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2614!$acc atomic update
2615# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2616#elif defined(MFC_OpenMP)
2617# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2618!$omp atomic update
2619# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2620#endif
2621 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2622 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
2623 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
2624
2625
2626# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2627#if defined(MFC_OpenACC)
2628# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2629!$acc atomic update
2630# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2631#elif defined(MFC_OpenMP)
2632# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2633!$omp atomic update
2634# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2635#endif
2636 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2637 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
2638 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
2639
2640
2641# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2642#if defined(MFC_OpenACC)
2643# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2644!$acc atomic update
2645# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2646#elif defined(MFC_OpenMP)
2647# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2648!$omp atomic update
2649# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2650#endif
2651 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2652 & l) + real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j + 1)) - 0.5_wp*dt*cfl*(e_l) &
2653 & *(1._wp/dx(j + 1))), kind=stp)
2654
2655
2656# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2657#if defined(MFC_OpenACC)
2658# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2659!$acc atomic update
2660# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2661#elif defined(MFC_OpenMP)
2662# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2663!$omp atomic update
2664# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2665#endif
2666 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2667 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
2668 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
2669
2670
2671# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2672#if defined(MFC_OpenACC)
2673# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2674!$acc atomic update
2675# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2676#elif defined(MFC_OpenMP)
2677# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2678!$omp atomic update
2679# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2680#endif
2681 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2682 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
2683 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
2684
2685
2686# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2687#if defined(MFC_OpenACC)
2688# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2689!$acc atomic update
2690# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2691#elif defined(MFC_OpenMP)
2692# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2693!$omp atomic update
2694# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2695#endif
2696 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2697 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
2698 & *(1._wp/dx(j))), kind=stp)
2699
2700
2701# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2702#if defined(MFC_OpenACC)
2703# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2704!$acc loop seq
2705# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2706#elif defined(MFC_OpenMP)
2707# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2708
2709# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2710#endif
2711 do i = 1, num_fluids
2712
2713# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2714#if defined(MFC_OpenACC)
2715# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2716!$acc atomic update
2717# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2718#elif defined(MFC_OpenMP)
2719# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2720!$omp atomic update
2721# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2722#endif
2723 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2724 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2725 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
2726
2727
2728# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2729#if defined(MFC_OpenACC)
2730# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2731!$acc atomic update
2732# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2733#elif defined(MFC_OpenMP)
2734# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2735!$omp atomic update
2736# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2737#endif
2738 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2739 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
2740 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
2741 end do
2742
2743 if (num_fluids > 1) then
2744
2745# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2746#if defined(MFC_OpenACC)
2747# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2748!$acc loop seq
2749# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2750#elif defined(MFC_OpenMP)
2751# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2752
2753# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2754#endif
2755 do i = 1, num_fluids - 1
2756
2757# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2758#if defined(MFC_OpenACC)
2759# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2760!$acc atomic update
2761# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2762#elif defined(MFC_OpenMP)
2763# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2764!$omp atomic update
2765# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2766#endif
2767 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2768 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2769 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
2770
2771
2772# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2773#if defined(MFC_OpenACC)
2774# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2775!$acc atomic update
2776# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2777#elif defined(MFC_OpenMP)
2778# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2779!$omp atomic update
2780# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2781#endif
2782 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2783 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2784 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
2785
2786
2787# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2788#if defined(MFC_OpenACC)
2789# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2790!$acc atomic update
2791# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2792#elif defined(MFC_OpenMP)
2793# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2794!$omp atomic update
2795# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2796#endif
2797 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2798 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
2799 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
2800
2801
2802# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2803#if defined(MFC_OpenACC)
2804# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2805!$acc atomic update
2806# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2807#elif defined(MFC_OpenMP)
2808# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2809!$omp atomic update
2810# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2811#endif
2812 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2813 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2814 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
2815 end do
2816 end if
2817
2818
2819# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2820#if defined(MFC_OpenACC)
2821# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2822!$acc atomic update
2823# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2824#elif defined(MFC_OpenMP)
2825# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2826!$omp atomic update
2827# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2828#endif
2829 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2830 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
2831 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
2832
2833
2834# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2835#if defined(MFC_OpenACC)
2836# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2837!$acc atomic update
2838# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2839#elif defined(MFC_OpenMP)
2840# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2841!$omp atomic update
2842# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2843#endif
2844 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2845 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
2846 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
2847
2848
2849# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2850#if defined(MFC_OpenACC)
2851# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2852!$acc atomic update
2853# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2854#elif defined(MFC_OpenMP)
2855# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2856!$omp atomic update
2857# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2858#endif
2859 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2860 & l) + real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j + 1)) + 0.5_wp*dt*cfl*(e_r) &
2861 & *(1._wp/dx(j + 1))), kind=stp)
2862
2863
2864# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2865#if defined(MFC_OpenACC)
2866# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2867!$acc atomic update
2868# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2869#elif defined(MFC_OpenMP)
2870# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2871!$omp atomic update
2872# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2873#endif
2874 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2875 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
2876 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
2877
2878
2879# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2880#if defined(MFC_OpenACC)
2881# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2882!$acc atomic update
2883# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2884#elif defined(MFC_OpenMP)
2885# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2886!$omp atomic update
2887# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2888#endif
2889 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2890 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
2891 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
2892
2893
2894# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2895#if defined(MFC_OpenACC)
2896# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2897!$acc atomic update
2898# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2899#elif defined(MFC_OpenMP)
2900# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2901!$omp atomic update
2902# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2903#endif
2904 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2905 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
2906 & *(1._wp/dx(j))), kind=stp)
2907 end do
2908 end do
2909 end do
2910
2911# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2912#if defined(MFC_OpenACC)
2913# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2914!$acc end parallel loop
2915# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2916#elif defined(MFC_OpenMP)
2917# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2918
2919# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2920!$omp end target teams loop
2921# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2922#endif
2923# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2924 else
2925# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2926
2927# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2928
2929# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2930#if defined(MFC_OpenACC)
2931# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2932!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
2933# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2934#elif defined(MFC_OpenMP)
2935# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2936
2937# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2938
2939# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2940
2941# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2942!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
2943# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2944#endif
2945# 832 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2946 do l = 0, p
2947 do k = 0, n
2948 do j = -1, m
2949 vflux_l_arr = 0._wp
2950 vflux_r_arr = 0._wp
2951
2952# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2953
2954# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2955#if defined(MFC_OpenACC)
2956# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2957!$acc loop seq
2958# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2959#elif defined(MFC_OpenMP)
2960# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2961
2962# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2963#endif
2964 do q = vidxb, vidxe
2965 ! x-direction contributions
2966
2967# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2968#if defined(MFC_OpenACC)
2969# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2970!$acc loop seq
2971# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2972#elif defined(MFC_OpenMP)
2973# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2974
2975# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2976#endif
2977 do i = -1, 1
2978 rho_l = 0._wp
2979
2980# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2981#if defined(MFC_OpenACC)
2982# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2983!$acc loop seq
2984# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2985#elif defined(MFC_OpenMP)
2986# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2987
2988# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2989#endif
2990 do r = 1, num_fluids
2991 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
2992 end do
2993 rho_sf_small(i) = rho_l
2994 end do
2995
2996 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
2997 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
2998 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
2999 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3000 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1 + q, k, &
3001 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3002
3003 if (q == 0) then
3004
3005# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3006#if defined(MFC_OpenACC)
3007# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3008!$acc loop seq
3009# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3010#elif defined(MFC_OpenMP)
3011# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3012
3013# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3014#endif
3015 do i = 1, num_dims
3016 dvel(i, 1) = dvel_small(i)
3017 end do
3018 end if
3019
3020 if (q > vidxb) then
3021 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
3022 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
3023 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
3024 end if
3025 if (q < vidxe) then
3026 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
3027 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
3028 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
3029 end if
3030
3031 ! y-direction contributions
3032
3033# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3034#if defined(MFC_OpenACC)
3035# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3036!$acc loop seq
3037# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3038#elif defined(MFC_OpenMP)
3039# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3040
3041# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3042#endif
3043 do i = -1, 1
3044 rho_l = 0._wp
3045
3046# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3047#if defined(MFC_OpenACC)
3048# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3049!$acc loop seq
3050# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3051#elif defined(MFC_OpenMP)
3052# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3053
3054# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3055#endif
3056 do r = 1, num_fluids
3057 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
3058 end do
3059 rho_sf_small(i) = rho_l
3060 end do
3061
3062 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
3063 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3064 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
3065 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3066 if (q == 0) dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k + 1, &
3067 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3068 if (q == 0) then
3069
3070# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3071#if defined(MFC_OpenACC)
3072# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3073!$acc loop seq
3074# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3075#elif defined(MFC_OpenMP)
3076# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3077
3078# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3079#endif
3080 do i = 1, num_dims
3081 dvel(i, 2) = dvel_small(i)
3082 end do
3083 end if
3084
3085 if (q > vidxb) then
3086 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
3087 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
3088 end if
3089 if (q < vidxe) then
3090 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
3091 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
3092 end if
3093
3094 ! z-direction contributions
3095
3096# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3097#if defined(MFC_OpenACC)
3098# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3099!$acc loop seq
3100# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3101#elif defined(MFC_OpenMP)
3102# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3103
3104# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3105#endif
3106 do i = -1, 1
3107 rho_l = 0._wp
3108
3109# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3110#if defined(MFC_OpenACC)
3111# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3112!$acc loop seq
3113# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3114#elif defined(MFC_OpenMP)
3115# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3116
3117# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3118#endif
3119 do r = 1, num_fluids
3120 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k, l + i)
3121 end do
3122 rho_sf_small(i) = rho_l
3123 end do
3124
3125 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j + q, k, &
3126 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3127 if (q == 0) dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k, &
3128 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3129 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3130 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3131 & l - 1)/rho_sf_small(-1))
3132 if (q == 0) then
3133
3134# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3135#if defined(MFC_OpenACC)
3136# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3137!$acc loop seq
3138# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3139#elif defined(MFC_OpenMP)
3140# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3141
3142# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3143#endif
3144 do i = 1, num_dims
3145 dvel(i, 3) = dvel_small(i)
3146 end do
3147 end if
3148
3149 if (q > vidxb) then
3150 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(1))
3151 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
3152 end if
3153 if (q < vidxe) then
3154 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(1))
3155 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
3156 end if
3157
3158 if (q == 0) then
3159 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1) + dvel(1, 3)*dvel(3, &
3160 & 1) + dvel(2, 3)*dvel(3, 2)) + dvel(1, 1)**2._wp + dvel(2, 2)**2._wp + dvel(3, &
3161 & 3)**2._wp + (dvel(1, 1) + dvel(2, 2) + dvel(3, 3))**2._wp), kind=stp)
3162 end if
3163 end do
3164
3165
3166# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3167#if defined(MFC_OpenACC)
3168# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3169!$acc loop seq
3170# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3171#elif defined(MFC_OpenMP)
3172# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3173
3174# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3175#endif
3176 do i = 1, num_fluids
3177 alpha_rho_l(i) = 0._wp
3178 alpha_rho_r(i) = 0._wp
3179 alpha_l(i) = 0._wp
3180 alpha_r(i) = 0._wp
3181 end do
3182
3183# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3184#if defined(MFC_OpenACC)
3185# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3186!$acc loop seq
3187# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3188#elif defined(MFC_OpenMP)
3189# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3190
3191# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3192#endif
3193 do i = 1, num_dims
3194 vel_l(i) = 0._wp
3195 vel_r(i) = 0._wp
3196 end do
3197
3198
3199# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3200#if defined(MFC_OpenACC)
3201# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3202!$acc loop seq
3203# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3204#elif defined(MFC_OpenMP)
3205# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3206
3207# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3208#endif
3209 do q = vidxb + 1, vidxe
3210
3211# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3212#if defined(MFC_OpenACC)
3213# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3214!$acc loop seq
3215# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3216#elif defined(MFC_OpenMP)
3217# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3218
3219# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3220#endif
3221 do i = 1, num_fluids
3222 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
3223 end do
3224
3225 if (num_fluids > 1) then
3226
3227# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3228#if defined(MFC_OpenACC)
3229# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3230!$acc loop seq
3231# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3232#elif defined(MFC_OpenMP)
3233# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3234
3235# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3236#endif
3237 do i = 1, num_fluids - 1
3238 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3239 end do
3240 else
3241 alpha_l(1) = 1._wp
3242 end if
3243
3244
3245# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3246#if defined(MFC_OpenACC)
3247# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3248!$acc loop seq
3249# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3250#elif defined(MFC_OpenMP)
3251# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3252
3253# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3254#endif
3255 do i = 1, num_dims
3256 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3257 end do
3258 end do
3259
3260
3261# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3262#if defined(MFC_OpenACC)
3263# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3264!$acc loop seq
3265# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3266#elif defined(MFC_OpenMP)
3267# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3268
3269# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3270#endif
3271 do q = vidxb, vidxe - 1
3272
3273# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3274#if defined(MFC_OpenACC)
3275# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3276!$acc loop seq
3277# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3278#elif defined(MFC_OpenMP)
3279# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3280
3281# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3282#endif
3283 do i = 1, num_fluids
3284 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
3285 end do
3286
3287 if (num_fluids > 1) then
3288
3289# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3290#if defined(MFC_OpenACC)
3291# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3292!$acc loop seq
3293# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3294#elif defined(MFC_OpenMP)
3295# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3296
3297# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3298#endif
3299 do i = 1, num_fluids - 1
3300 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3301 end do
3302 else
3303 alpha_r(1) = 1._wp
3304 end if
3305
3306
3307# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3308#if defined(MFC_OpenACC)
3309# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3310!$acc loop seq
3311# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3312#elif defined(MFC_OpenMP)
3313# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3314
3315# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3316#endif
3317 do i = 1, num_dims
3318 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3319 end do
3320 end do
3321
3322 if (num_fluids > 1) then
3323 alpha_l(num_fluids) = 1._wp
3324 alpha_r(num_fluids) = 1._wp
3325
3326
3327# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3328#if defined(MFC_OpenACC)
3329# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3330!$acc loop seq
3331# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3332#elif defined(MFC_OpenMP)
3333# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3334
3335# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3336#endif
3337 do i = 1, num_fluids - 1
3338 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
3339 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
3340 end do
3341 end if
3342
3343 rho_l = 0._wp; rho_r = 0._wp
3344 gamma_l = 0._wp; gamma_r = 0._wp
3345 pi_inf_l = 0._wp; pi_inf_r = 0._wp
3346
3347
3348# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3349#if defined(MFC_OpenACC)
3350# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3351!$acc loop seq
3352# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3353#elif defined(MFC_OpenMP)
3354# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3355
3356# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3357#endif
3358 do i = 1, num_fluids
3359 rho_l = rho_l + alpha_rho_l(i)
3360 gamma_l = gamma_l + alpha_l(i)*gammas(i)
3361 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
3362
3363 rho_r = rho_r + alpha_rho_r(i)
3364 gamma_r = gamma_r + alpha_r(i)*gammas(i)
3365 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
3366 end do
3367
3368
3369# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3370#if defined(MFC_OpenACC)
3371# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3372!$acc loop seq
3373# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3374#elif defined(MFC_OpenMP)
3375# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3376
3377# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3378#endif
3379 do i = 1, num_dims
3380 vel_l(i) = vel_l(i)/rho_l
3381 vel_r(i) = vel_r(i)/rho_r
3382 end do
3383
3384 if (viscous) then
3385 mu_l = 0._wp
3386 mu_r = 0._wp
3387
3388# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3389#if defined(MFC_OpenACC)
3390# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3391!$acc loop seq
3392# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3393#elif defined(MFC_OpenMP)
3394# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3395
3396# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3397#endif
3398 do i = 1, num_fluids
3399 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
3400 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
3401 end do
3402
3403
3404# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3405#if defined(MFC_OpenACC)
3406# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3407!$acc atomic update
3408# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3409#elif defined(MFC_OpenMP)
3410# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3411!$omp atomic update
3412# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3413#endif
3414 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3415 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3416
3417# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3418#if defined(MFC_OpenACC)
3419# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3420!$acc atomic update
3421# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3422#elif defined(MFC_OpenMP)
3423# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3424!$omp atomic update
3425# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3426#endif
3427 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3428 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
3429
3430
3431# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3432#if defined(MFC_OpenACC)
3433# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3434!$acc atomic update
3435# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3436#elif defined(MFC_OpenMP)
3437# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3438!$omp atomic update
3439# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3440#endif
3441 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3442 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
3443
3444# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3445#if defined(MFC_OpenACC)
3446# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3447!$acc atomic update
3448# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3449#elif defined(MFC_OpenMP)
3450# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3451!$omp atomic update
3452# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3453#endif
3454 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3455 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
3456
3457
3458# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3459#if defined(MFC_OpenACC)
3460# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3461!$acc atomic update
3462# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3463#elif defined(MFC_OpenMP)
3464# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3465!$omp atomic update
3466# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3467#endif
3468 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3469 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3470
3471# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3472#if defined(MFC_OpenACC)
3473# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3474!$acc atomic update
3475# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3476#elif defined(MFC_OpenMP)
3477# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3478!$omp atomic update
3479# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3480#endif
3481 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3482 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
3483
3484
3485# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3486#if defined(MFC_OpenACC)
3487# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3488!$acc atomic update
3489# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3490#elif defined(MFC_OpenMP)
3491# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3492!$omp atomic update
3493# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3494#endif
3495 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3496 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
3497
3498# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3499#if defined(MFC_OpenACC)
3500# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3501!$acc atomic update
3502# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3503#elif defined(MFC_OpenMP)
3504# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3505!$omp atomic update
3506# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3507#endif
3508 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3509 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
3510
3511
3512# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3513#if defined(MFC_OpenACC)
3514# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3515!$acc atomic update
3516# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3517#elif defined(MFC_OpenMP)
3518# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3519!$omp atomic update
3520# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3521#endif
3522 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3523 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3524
3525# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3526#if defined(MFC_OpenACC)
3527# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3528!$acc atomic update
3529# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3530#elif defined(MFC_OpenMP)
3531# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3532!$omp atomic update
3533# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3534#endif
3535 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3536 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j + 1)), kind=stp)
3537
3538
3539# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3540#if defined(MFC_OpenACC)
3541# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3542!$acc atomic update
3543# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3544#elif defined(MFC_OpenMP)
3545# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3546!$omp atomic update
3547# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3548#endif
3549 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3550 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j)), kind=stp)
3551
3552# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3553#if defined(MFC_OpenACC)
3554# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3555!$acc atomic update
3556# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3557#elif defined(MFC_OpenMP)
3558# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3559!$omp atomic update
3560# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3561#endif
3562 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3563 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j)), kind=stp)
3564
3565
3566# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3567#if defined(MFC_OpenACC)
3568# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3569!$acc atomic update
3570# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3571#elif defined(MFC_OpenMP)
3572# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3573!$omp atomic update
3574# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3575#endif
3576 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3577 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3578
3579# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3580#if defined(MFC_OpenACC)
3581# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3582!$acc atomic update
3583# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3584#elif defined(MFC_OpenMP)
3585# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3586!$omp atomic update
3587# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3588#endif
3589 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3590 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j + 1)), kind=stp)
3591
3592
3593# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3594#if defined(MFC_OpenACC)
3595# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3596!$acc atomic update
3597# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3598#elif defined(MFC_OpenMP)
3599# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3600!$omp atomic update
3601# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3602#endif
3603 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3604 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j)), kind=stp)
3605
3606# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3607#if defined(MFC_OpenACC)
3608# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3609!$acc atomic update
3610# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3611#elif defined(MFC_OpenMP)
3612# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3613!$omp atomic update
3614# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3615#endif
3616 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3617 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j)), kind=stp)
3618
3619
3620# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3621#if defined(MFC_OpenACC)
3622# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3623!$acc atomic update
3624# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3625#elif defined(MFC_OpenMP)
3626# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3627!$omp atomic update
3628# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3629#endif
3630 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3631 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3632
3633# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3634#if defined(MFC_OpenACC)
3635# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3636!$acc atomic update
3637# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3638#elif defined(MFC_OpenMP)
3639# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3640!$omp atomic update
3641# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3642#endif
3643 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3644 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3645
3646
3647# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3648#if defined(MFC_OpenACC)
3649# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3650!$acc atomic update
3651# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3652#elif defined(MFC_OpenMP)
3653# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3654!$omp atomic update
3655# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3656#endif
3657 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3658 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
3659
3660# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3661#if defined(MFC_OpenACC)
3662# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3663!$acc atomic update
3664# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3665#elif defined(MFC_OpenMP)
3666# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3667!$omp atomic update
3668# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3669#endif
3670 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3671 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3672
3673
3674# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3675#if defined(MFC_OpenACC)
3676# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3677!$acc atomic update
3678# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3679#elif defined(MFC_OpenMP)
3680# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3681!$omp atomic update
3682# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3683#endif
3684 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3685 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3686
3687# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3688#if defined(MFC_OpenACC)
3689# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3690!$acc atomic update
3691# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3692#elif defined(MFC_OpenMP)
3693# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3694!$omp atomic update
3695# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3696#endif
3697 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3698 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
3699
3700
3701# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3702#if defined(MFC_OpenACC)
3703# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3704!$acc atomic update
3705# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3706#elif defined(MFC_OpenMP)
3707# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3708!$omp atomic update
3709# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3710#endif
3711 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3712 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
3713
3714# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3715#if defined(MFC_OpenACC)
3716# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3717!$acc atomic update
3718# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3719#elif defined(MFC_OpenMP)
3720# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3721!$omp atomic update
3722# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3723#endif
3724 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3725 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
3726 end if
3727
3728 e_l = 0._wp; e_r = 0._wp
3729
3730
3731# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3732#if defined(MFC_OpenACC)
3733# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3734!$acc loop seq
3735# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3736#elif defined(MFC_OpenMP)
3737# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3738
3739# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3740#endif
3741 do q = vidxb + 1, vidxe
3742 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3743 end do
3744
3745
3746# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3747#if defined(MFC_OpenACC)
3748# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3749!$acc loop seq
3750# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3751#elif defined(MFC_OpenMP)
3752# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3753
3754# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3755#endif
3756 do q = vidxb, vidxe - 1
3757 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3758 end do
3759
3760 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
3761 & vel_r, pres_l, pres_r, cfl)
3762
3763
3764# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3765#if defined(MFC_OpenACC)
3766# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3767!$acc loop seq
3768# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3769#elif defined(MFC_OpenMP)
3770# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3771
3772# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3773#endif
3774 do i = 1, num_fluids
3775
3776# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3777#if defined(MFC_OpenACC)
3778# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3779!$acc atomic update
3780# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3781#elif defined(MFC_OpenMP)
3782# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3783!$omp atomic update
3784# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3785#endif
3786 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
3787 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3788 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
3789
3790
3791# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3792#if defined(MFC_OpenACC)
3793# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3794!$acc atomic update
3795# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3796#elif defined(MFC_OpenMP)
3797# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3798!$omp atomic update
3799# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3800#endif
3801 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
3802 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
3803 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
3804 end do
3805
3806 if (num_fluids > 1) then
3807
3808# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3809#if defined(MFC_OpenACC)
3810# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3811!$acc loop seq
3812# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3813#elif defined(MFC_OpenMP)
3814# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3815
3816# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3817#endif
3818 do i = 1, num_fluids - 1
3819
3820# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3821#if defined(MFC_OpenACC)
3822# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3823!$acc atomic update
3824# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3825#elif defined(MFC_OpenMP)
3826# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3827!$omp atomic update
3828# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3829#endif
3830 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3831 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3832 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
3833
3834
3835# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3836#if defined(MFC_OpenACC)
3837# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3838!$acc atomic update
3839# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3840#elif defined(MFC_OpenMP)
3841# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3842!$omp atomic update
3843# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3844#endif
3845 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3846 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3847 & l)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3848
3849
3850# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3851#if defined(MFC_OpenACC)
3852# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3853!$acc atomic update
3854# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3855#elif defined(MFC_OpenMP)
3856# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3857!$omp atomic update
3858# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3859#endif
3860 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3861 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
3862 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j)), kind=stp)
3863
3864
3865# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3866#if defined(MFC_OpenACC)
3867# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3868!$acc atomic update
3869# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3870#elif defined(MFC_OpenMP)
3871# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3872!$omp atomic update
3873# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3874#endif
3875 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3876 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
3877 & l)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3878 end do
3879 end if
3880
3881
3882# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3883#if defined(MFC_OpenACC)
3884# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3885!$acc atomic update
3886# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3887#elif defined(MFC_OpenMP)
3888# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3889!$omp atomic update
3890# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3891#endif
3892 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3893 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
3894 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
3895
3896
3897# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3898#if defined(MFC_OpenACC)
3899# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3900!$acc atomic update
3901# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3902#elif defined(MFC_OpenMP)
3903# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3904!$omp atomic update
3905# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3906#endif
3907 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3908 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
3909 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
3910
3911
3912# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3913#if defined(MFC_OpenACC)
3914# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3915!$acc atomic update
3916# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3917#elif defined(MFC_OpenMP)
3918# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3919!$omp atomic update
3920# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3921#endif
3922 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3923 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j + 1)) &
3924 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j + 1))), kind=stp)
3925
3926
3927# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3928#if defined(MFC_OpenACC)
3929# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3930!$acc atomic update
3931# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3932#elif defined(MFC_OpenMP)
3933# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3934!$omp atomic update
3935# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3936#endif
3937 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3938 & l) + real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j + 1)) - 0.5_wp*dt*cfl*(e_l) &
3939 & *(1._wp/dx(j + 1))), kind=stp)
3940
3941
3942# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3943#if defined(MFC_OpenACC)
3944# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3945!$acc atomic update
3946# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3947#elif defined(MFC_OpenMP)
3948# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3949!$omp atomic update
3950# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3951#endif
3952 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3953 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
3954 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
3955
3956
3957# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3958#if defined(MFC_OpenACC)
3959# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3960!$acc atomic update
3961# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3962#elif defined(MFC_OpenMP)
3963# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3964!$omp atomic update
3965# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3966#endif
3967 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3968 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
3969 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
3970
3971
3972# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3973#if defined(MFC_OpenACC)
3974# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3975!$acc atomic update
3976# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3977#elif defined(MFC_OpenMP)
3978# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3979!$omp atomic update
3980# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3981#endif
3982 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3983 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j)) &
3984 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j))), kind=stp)
3985
3986
3987# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3988#if defined(MFC_OpenACC)
3989# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3990!$acc atomic update
3991# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3992#elif defined(MFC_OpenMP)
3993# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3994!$omp atomic update
3995# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3996#endif
3997 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3998 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
3999 & *(1._wp/dx(j))), kind=stp)
4000
4001
4002# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4003#if defined(MFC_OpenACC)
4004# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4005!$acc loop seq
4006# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4007#elif defined(MFC_OpenMP)
4008# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4009
4010# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4011#endif
4012 do i = 1, num_fluids
4013
4014# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4015#if defined(MFC_OpenACC)
4016# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4017!$acc atomic update
4018# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4019#elif defined(MFC_OpenMP)
4020# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4021!$omp atomic update
4022# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4023#endif
4024 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
4025 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
4026 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
4027
4028
4029# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4030#if defined(MFC_OpenACC)
4031# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4032!$acc atomic update
4033# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4034#elif defined(MFC_OpenMP)
4035# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4036!$omp atomic update
4037# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4038#endif
4039 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
4040 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
4041 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
4042 end do
4043
4044 if (num_fluids > 1) then
4045
4046# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4047#if defined(MFC_OpenACC)
4048# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4049!$acc loop seq
4050# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4051#elif defined(MFC_OpenMP)
4052# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4053
4054# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4055#endif
4056 do i = 1, num_fluids - 1
4057
4058# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4059#if defined(MFC_OpenACC)
4060# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4061!$acc atomic update
4062# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4063#elif defined(MFC_OpenMP)
4064# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4065!$omp atomic update
4066# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4067#endif
4068 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4069 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
4070 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
4071
4072
4073# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4074#if defined(MFC_OpenACC)
4075# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4076!$acc atomic update
4077# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4078#elif defined(MFC_OpenMP)
4079# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4080!$omp atomic update
4081# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4082#endif
4083 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4084 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4085 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
4086
4087
4088# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4089#if defined(MFC_OpenACC)
4090# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4091!$acc atomic update
4092# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4093#elif defined(MFC_OpenMP)
4094# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4095!$omp atomic update
4096# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4097#endif
4098 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4099 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
4100 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
4101
4102
4103# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4104#if defined(MFC_OpenACC)
4105# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4106!$acc atomic update
4107# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4108#elif defined(MFC_OpenMP)
4109# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4110!$omp atomic update
4111# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4112#endif
4113 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4114 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
4115 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
4116 end do
4117 end if
4118
4119
4120# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4121#if defined(MFC_OpenACC)
4122# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4123!$acc atomic update
4124# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4125#elif defined(MFC_OpenMP)
4126# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4127!$omp atomic update
4128# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4129#endif
4130 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
4131 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
4132 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
4133
4134
4135# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4136#if defined(MFC_OpenACC)
4137# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4138!$acc atomic update
4139# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4140#elif defined(MFC_OpenMP)
4141# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4142!$omp atomic update
4143# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4144#endif
4145 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
4146 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
4147 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
4148
4149
4150# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4151#if defined(MFC_OpenACC)
4152# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4153!$acc atomic update
4154# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4155#elif defined(MFC_OpenMP)
4156# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4157!$omp atomic update
4158# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4159#endif
4160 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
4161 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j + 1)) &
4162 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j + 1))), kind=stp)
4163
4164
4165# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4166#if defined(MFC_OpenACC)
4167# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4168!$acc atomic update
4169# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4170#elif defined(MFC_OpenMP)
4171# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4172!$omp atomic update
4173# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4174#endif
4175 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
4176 & l) + real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j + 1)) + 0.5_wp*dt*cfl*(e_r) &
4177 & *(1._wp/dx(j + 1))), kind=stp)
4178
4179
4180# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4181#if defined(MFC_OpenACC)
4182# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4183!$acc atomic update
4184# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4185#elif defined(MFC_OpenMP)
4186# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4187!$omp atomic update
4188# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4189#endif
4190 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4191 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
4192 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
4193
4194
4195# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4196#if defined(MFC_OpenACC)
4197# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4198!$acc atomic update
4199# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4200#elif defined(MFC_OpenMP)
4201# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4202!$omp atomic update
4203# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4204#endif
4205 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4206 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
4207 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
4208
4209
4210# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4211#if defined(MFC_OpenACC)
4212# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4213!$acc atomic update
4214# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4215#elif defined(MFC_OpenMP)
4216# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4217!$omp atomic update
4218# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4219#endif
4220 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
4221 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j)) &
4222 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j))), kind=stp)
4223
4224
4225# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4226#if defined(MFC_OpenACC)
4227# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4228!$acc atomic update
4229# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4230#elif defined(MFC_OpenMP)
4231# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4232!$omp atomic update
4233# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4234#endif
4235 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4236 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
4237 & *(1._wp/dx(j))), kind=stp)
4238 end do
4239 end do
4240 end do
4241
4242# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4243#if defined(MFC_OpenACC)
4244# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4245!$acc end parallel loop
4246# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4247#elif defined(MFC_OpenMP)
4248# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4249
4250# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4251!$omp end target teams loop
4252# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4253#endif
4254# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4255 end if
4256 else if (idir == 2) then
4257 if (p == 0) then
4258# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4259
4260# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4261
4262# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4263#if defined(MFC_OpenACC)
4264# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4265!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
4266# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4267#elif defined(MFC_OpenMP)
4268# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4269
4270# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4271
4272# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4273
4274# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4275!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
4276# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4277#endif
4278# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4279 do l = 0, p
4280 do k = -1, n
4281 do j = 0, m
4282 if (viscous) then
4283 vflux_l_arr = 0._wp
4284 vflux_r_arr = 0._wp
4285
4286# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4287
4288# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4289#if defined(MFC_OpenACC)
4290# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4291!$acc loop seq
4292# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4293#elif defined(MFC_OpenMP)
4294# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4295
4296# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4297#endif
4298 do q = vidxb, vidxe
4299 ! x-direction contributions
4300
4301# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4302#if defined(MFC_OpenACC)
4303# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4304!$acc loop seq
4305# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4306#elif defined(MFC_OpenMP)
4307# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4308
4309# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4310#endif
4311 do i = -1, 1
4312 rho_l = 0._wp
4313
4314# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4315#if defined(MFC_OpenACC)
4316# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4317!$acc loop seq
4318# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4319#elif defined(MFC_OpenMP)
4320# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4321
4322# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4323#endif
4324 do r = 1, num_fluids
4325 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
4326 end do
4327 rho_sf_small(i) = rho_l
4328 end do
4329
4330 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
4331 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
4332 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
4333 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
4334 & l)/rho_sf_small(-1))
4335
4336 if (q > vidxb) then
4337 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
4338 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
4339 end if
4340 if (q < vidxe) then
4341 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
4342 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
4343 end if
4344
4345 ! y-direction contributions
4346
4347# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4348#if defined(MFC_OpenACC)
4349# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4350!$acc loop seq
4351# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4352#elif defined(MFC_OpenMP)
4353# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4354
4355# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4356#endif
4357 do i = -1, 1
4358 rho_l = 0._wp
4359
4360# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4361#if defined(MFC_OpenACC)
4362# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4363!$acc loop seq
4364# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4365#elif defined(MFC_OpenMP)
4366# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4367
4368# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4369#endif
4370 do r = 1, num_fluids
4371 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
4372 end do
4373 rho_sf_small(i) = rho_l
4374 end do
4375
4376 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
4377 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
4378 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
4379 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
4380 & l)/rho_sf_small(-1))
4381
4382 if (q > vidxb) then
4383 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
4384 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
4385 end if
4386 if (q < vidxe) then
4387 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
4388 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
4389 end if
4390 end do
4391 end if
4392
4393
4394# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4395#if defined(MFC_OpenACC)
4396# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4397!$acc loop seq
4398# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4399#elif defined(MFC_OpenMP)
4400# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4401
4402# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4403#endif
4404 do i = 1, num_fluids
4405 alpha_rho_l(i) = 0._wp
4406 alpha_rho_r(i) = 0._wp
4407 alpha_l(i) = 0._wp
4408 alpha_r(i) = 0._wp
4409 end do
4410
4411# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4412#if defined(MFC_OpenACC)
4413# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4414!$acc loop seq
4415# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4416#elif defined(MFC_OpenMP)
4417# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4418
4419# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4420#endif
4421 do i = 1, num_dims
4422 vel_l(i) = 0._wp
4423 vel_r(i) = 0._wp
4424 end do
4425
4426
4427# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4428#if defined(MFC_OpenACC)
4429# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4430!$acc loop seq
4431# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4432#elif defined(MFC_OpenMP)
4433# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4434
4435# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4436#endif
4437 do q = vidxb + 1, vidxe
4438
4439# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4440#if defined(MFC_OpenACC)
4441# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4442!$acc loop seq
4443# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4444#elif defined(MFC_OpenMP)
4445# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4446
4447# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4448#endif
4449 do i = 1, num_fluids
4450 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
4451 end do
4452
4453 if (num_fluids > 1) then
4454
4455# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4456#if defined(MFC_OpenACC)
4457# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4458!$acc loop seq
4459# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4460#elif defined(MFC_OpenMP)
4461# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4462
4463# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4464#endif
4465 do i = 1, num_fluids - 1
4466 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4467 end do
4468 else
4469 alpha_l(1) = 1._wp
4470 end if
4471
4472
4473# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4474#if defined(MFC_OpenACC)
4475# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4476!$acc loop seq
4477# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4478#elif defined(MFC_OpenMP)
4479# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4480
4481# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4482#endif
4483 do i = 1, num_dims
4484 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4485 end do
4486 end do
4487
4488
4489# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4490#if defined(MFC_OpenACC)
4491# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4492!$acc loop seq
4493# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4494#elif defined(MFC_OpenMP)
4495# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4496
4497# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4498#endif
4499 do q = vidxb, vidxe - 1
4500
4501# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4502#if defined(MFC_OpenACC)
4503# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4504!$acc loop seq
4505# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4506#elif defined(MFC_OpenMP)
4507# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4508
4509# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4510#endif
4511 do i = 1, num_fluids
4512 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
4513 end do
4514
4515 if (num_fluids > 1) then
4516
4517# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4518#if defined(MFC_OpenACC)
4519# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4520!$acc loop seq
4521# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4522#elif defined(MFC_OpenMP)
4523# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4524
4525# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4526#endif
4527 do i = 1, num_fluids - 1
4528 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4529 end do
4530 else
4531 alpha_r(1) = 1._wp
4532 end if
4533
4534
4535# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4536#if defined(MFC_OpenACC)
4537# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4538!$acc loop seq
4539# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4540#elif defined(MFC_OpenMP)
4541# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4542
4543# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4544#endif
4545 do i = 1, num_dims
4546 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4547 end do
4548 end do
4549
4550 if (num_fluids > 1) then
4551 alpha_l(num_fluids) = 1._wp
4552 alpha_r(num_fluids) = 1._wp
4553
4554
4555# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4556#if defined(MFC_OpenACC)
4557# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4558!$acc loop seq
4559# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4560#elif defined(MFC_OpenMP)
4561# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4562
4563# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4564#endif
4565 do i = 1, num_fluids - 1
4566 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
4567 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
4568 end do
4569 end if
4570
4571 rho_l = 0._wp; rho_r = 0._wp
4572 gamma_l = 0._wp; gamma_r = 0._wp
4573 pi_inf_l = 0._wp; pi_inf_r = 0._wp
4574
4575
4576# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4577#if defined(MFC_OpenACC)
4578# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4579!$acc loop seq
4580# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4581#elif defined(MFC_OpenMP)
4582# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4583
4584# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4585#endif
4586 do i = 1, num_fluids
4587 rho_l = rho_l + alpha_rho_l(i)
4588 gamma_l = gamma_l + alpha_l(i)*gammas(i)
4589 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
4590
4591 rho_r = rho_r + alpha_rho_r(i)
4592 gamma_r = gamma_r + alpha_r(i)*gammas(i)
4593 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
4594 end do
4595
4596
4597# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4598#if defined(MFC_OpenACC)
4599# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4600!$acc loop seq
4601# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4602#elif defined(MFC_OpenMP)
4603# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4604
4605# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4606#endif
4607 do i = 1, num_dims
4608 vel_l(i) = vel_l(i)/rho_l
4609 vel_r(i) = vel_r(i)/rho_r
4610 end do
4611
4612 if (viscous) then
4613 mu_l = 0._wp
4614 mu_r = 0._wp
4615
4616# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4617#if defined(MFC_OpenACC)
4618# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4619!$acc loop seq
4620# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4621#elif defined(MFC_OpenMP)
4622# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4623
4624# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4625#endif
4626 do i = 1, num_fluids
4627 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
4628 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
4629 end do
4630
4631
4632# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4633#if defined(MFC_OpenACC)
4634# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4635!$acc atomic update
4636# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4637#elif defined(MFC_OpenMP)
4638# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4639!$omp atomic update
4640# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4641#endif
4642 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4643 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4644
4645# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4646#if defined(MFC_OpenACC)
4647# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4648!$acc atomic update
4649# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4650#elif defined(MFC_OpenMP)
4651# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4652!$omp atomic update
4653# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4654#endif
4655 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4656 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
4657
4658
4659# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4660#if defined(MFC_OpenACC)
4661# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4662!$acc atomic update
4663# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4664#elif defined(MFC_OpenMP)
4665# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4666!$omp atomic update
4667# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4668#endif
4669 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4670 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
4671
4672# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4673#if defined(MFC_OpenACC)
4674# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4675!$acc atomic update
4676# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4677#elif defined(MFC_OpenMP)
4678# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4679!$omp atomic update
4680# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4681#endif
4682 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4683 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
4684
4685
4686# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4687#if defined(MFC_OpenACC)
4688# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4689!$acc atomic update
4690# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4691#elif defined(MFC_OpenMP)
4692# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4693!$omp atomic update
4694# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4695#endif
4696 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4697 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4698
4699# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4700#if defined(MFC_OpenACC)
4701# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4702!$acc atomic update
4703# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4704#elif defined(MFC_OpenMP)
4705# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4706!$omp atomic update
4707# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4708#endif
4709 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4710 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
4711
4712
4713# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4714#if defined(MFC_OpenACC)
4715# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4716!$acc atomic update
4717# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4718#elif defined(MFC_OpenMP)
4719# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4720!$omp atomic update
4721# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4722#endif
4723 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4724 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
4725
4726# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4727#if defined(MFC_OpenACC)
4728# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4729!$acc atomic update
4730# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4731#elif defined(MFC_OpenMP)
4732# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4733!$omp atomic update
4734# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4735#endif
4736 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4737 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
4738
4739
4740# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4741#if defined(MFC_OpenACC)
4742# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4743!$acc atomic update
4744# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4745#elif defined(MFC_OpenMP)
4746# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4747!$omp atomic update
4748# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4749#endif
4750 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4751 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4752
4753# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4754#if defined(MFC_OpenACC)
4755# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4756!$acc atomic update
4757# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4758#elif defined(MFC_OpenMP)
4759# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4760!$omp atomic update
4761# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4762#endif
4763 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4764 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4765
4766
4767# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4768#if defined(MFC_OpenACC)
4769# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4770!$acc atomic update
4771# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4772#elif defined(MFC_OpenMP)
4773# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4774!$omp atomic update
4775# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4776#endif
4777 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4778 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
4779
4780# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4781#if defined(MFC_OpenACC)
4782# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4783!$acc atomic update
4784# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4785#elif defined(MFC_OpenMP)
4786# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4787!$omp atomic update
4788# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4789#endif
4790 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4791 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
4792
4793
4794# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4795#if defined(MFC_OpenACC)
4796# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4797!$acc atomic update
4798# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4799#elif defined(MFC_OpenMP)
4800# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4801!$omp atomic update
4802# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4803#endif
4804 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4805 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4806
4807# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4808#if defined(MFC_OpenACC)
4809# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4810!$acc atomic update
4811# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4812#elif defined(MFC_OpenMP)
4813# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4814!$omp atomic update
4815# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4816#endif
4817 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4818 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
4819
4820
4821# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4822#if defined(MFC_OpenACC)
4823# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4824!$acc atomic update
4825# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4826#elif defined(MFC_OpenMP)
4827# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4828!$omp atomic update
4829# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4830#endif
4831 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4832 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
4833
4834# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4835#if defined(MFC_OpenACC)
4836# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4837!$acc atomic update
4838# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4839#elif defined(MFC_OpenMP)
4840# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4841!$omp atomic update
4842# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4843#endif
4844 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4845 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
4846 end if
4847
4848 e_l = 0._wp; e_r = 0._wp
4849 f_l = 0._wp; f_r = 0._wp
4850
4851
4852# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4853#if defined(MFC_OpenACC)
4854# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4855!$acc loop seq
4856# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4857#elif defined(MFC_OpenMP)
4858# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4859
4860# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4861#endif
4862 do q = vidxb + 1, vidxe
4863 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4864 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
4865 end do
4866
4867
4868# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4869#if defined(MFC_OpenACC)
4870# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4871!$acc loop seq
4872# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4873#elif defined(MFC_OpenMP)
4874# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4875
4876# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4877#endif
4878 do q = vidxb, vidxe - 1
4879 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4880 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
4881 end do
4882
4883 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
4884 & vel_r, pres_l, pres_r, cfl)
4885
4886
4887# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4888#if defined(MFC_OpenACC)
4889# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4890!$acc loop seq
4891# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4892#elif defined(MFC_OpenMP)
4893# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4894
4895# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4896#endif
4897 do i = 1, num_fluids
4898
4899# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4900#if defined(MFC_OpenACC)
4901# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4902!$acc atomic update
4903# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4904#elif defined(MFC_OpenMP)
4905# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4906!$omp atomic update
4907# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4908#endif
4909 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
4910 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4911 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
4912
4913
4914# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4915#if defined(MFC_OpenACC)
4916# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4917!$acc atomic update
4918# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4919#elif defined(MFC_OpenMP)
4920# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4921!$omp atomic update
4922# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4923#endif
4924 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
4925 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
4926 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
4927 end do
4928
4929 if (num_fluids > 1) then
4930
4931# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4932#if defined(MFC_OpenACC)
4933# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4934!$acc loop seq
4935# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4936#elif defined(MFC_OpenMP)
4937# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4938
4939# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4940#endif
4941 do i = 1, num_fluids - 1
4942
4943# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4944#if defined(MFC_OpenACC)
4945# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4946!$acc atomic update
4947# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4948#elif defined(MFC_OpenMP)
4949# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4950!$omp atomic update
4951# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4952#endif
4953 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4954 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4955 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
4956
4957
4958# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4959#if defined(MFC_OpenACC)
4960# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4961!$acc atomic update
4962# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4963#elif defined(MFC_OpenMP)
4964# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4965!$omp atomic update
4966# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4967#endif
4968 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4969 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4970 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4971
4972
4973# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4974#if defined(MFC_OpenACC)
4975# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4976!$acc atomic update
4977# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4978#elif defined(MFC_OpenMP)
4979# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4980!$omp atomic update
4981# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4982#endif
4983 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4984 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
4985 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
4986
4987
4988# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4989#if defined(MFC_OpenACC)
4990# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4991!$acc atomic update
4992# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4993#elif defined(MFC_OpenMP)
4994# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4995!$omp atomic update
4996# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4997#endif
4998 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4999 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
5000 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
5001 end do
5002 end if
5003
5004
5005# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5006#if defined(MFC_OpenACC)
5007# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5008!$acc atomic update
5009# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5010#elif defined(MFC_OpenMP)
5011# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5012!$omp atomic update
5013# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5014#endif
5015 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5016 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
5017 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
5018
5019
5020# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5021#if defined(MFC_OpenACC)
5022# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5023!$acc atomic update
5024# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5025#elif defined(MFC_OpenMP)
5026# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5027!$omp atomic update
5028# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5029#endif
5030 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5031 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
5032 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
5033
5034
5035# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5036#if defined(MFC_OpenACC)
5037# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5038!$acc atomic update
5039# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5040#elif defined(MFC_OpenMP)
5041# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5042!$omp atomic update
5043# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5044#endif
5045 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5046 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
5047 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
5048
5049
5050# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5051#if defined(MFC_OpenACC)
5052# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5053!$acc atomic update
5054# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5055#elif defined(MFC_OpenMP)
5056# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5057!$omp atomic update
5058# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5059#endif
5060 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5061 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
5062 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
5063
5064
5065# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5066#if defined(MFC_OpenACC)
5067# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5068!$acc atomic update
5069# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5070#elif defined(MFC_OpenMP)
5071# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5072!$omp atomic update
5073# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5074#endif
5075 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5076 & l) - real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(rho_l*vel_l(1) &
5077 & )*(1._wp/dy(k)), kind=stp)
5078
5079
5080# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5081#if defined(MFC_OpenACC)
5082# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5083!$acc atomic update
5084# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5085#elif defined(MFC_OpenMP)
5086# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5087!$omp atomic update
5088# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5089#endif
5090 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5091 & l) - real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(e_l) &
5092 & *(1._wp/dy(k)), kind=stp)
5093
5094
5095# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5096#if defined(MFC_OpenACC)
5097# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5098!$acc loop seq
5099# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5100#elif defined(MFC_OpenMP)
5101# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5102
5103# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5104#endif
5105 do i = 1, num_fluids
5106
5107# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5108#if defined(MFC_OpenACC)
5109# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5110!$acc atomic update
5111# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5112#elif defined(MFC_OpenMP)
5113# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5114!$omp atomic update
5115# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5116#endif
5117 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
5118 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5119 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
5120
5121# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5122#if defined(MFC_OpenACC)
5123# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5124!$acc atomic update
5125# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5126#elif defined(MFC_OpenMP)
5127# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5128!$omp atomic update
5129# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5130#endif
5131 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
5132 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
5133 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
5134 end do
5135
5136 if (num_fluids > 1) then
5137
5138# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5139#if defined(MFC_OpenACC)
5140# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5141!$acc loop seq
5142# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5143#elif defined(MFC_OpenMP)
5144# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5145
5146# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5147#endif
5148 do i = 1, num_fluids - 1
5149
5150# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5151#if defined(MFC_OpenACC)
5152# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5153!$acc atomic update
5154# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5155#elif defined(MFC_OpenMP)
5156# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5157!$omp atomic update
5158# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5159#endif
5160 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5161 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5162 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
5163
5164
5165# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5166#if defined(MFC_OpenACC)
5167# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5168!$acc atomic update
5169# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5170#elif defined(MFC_OpenMP)
5171# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5172!$omp atomic update
5173# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5174#endif
5175 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5176 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5177 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
5178
5179
5180# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5181#if defined(MFC_OpenACC)
5182# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5183!$acc atomic update
5184# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5185#elif defined(MFC_OpenMP)
5186# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5187!$omp atomic update
5188# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5189#endif
5190 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5191 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
5192 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
5193
5194
5195# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5196#if defined(MFC_OpenACC)
5197# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5198!$acc atomic update
5199# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5200#elif defined(MFC_OpenMP)
5201# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5202!$omp atomic update
5203# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5204#endif
5205 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5206 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
5207 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
5208 end do
5209 end if
5210
5211# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5212#if defined(MFC_OpenACC)
5213# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5214!$acc atomic update
5215# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5216#elif defined(MFC_OpenMP)
5217# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5218!$omp atomic update
5219# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5220#endif
5221 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5222 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
5223 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
5224
5225# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5226#if defined(MFC_OpenACC)
5227# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5228!$acc atomic update
5229# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5230#elif defined(MFC_OpenMP)
5231# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5232!$omp atomic update
5233# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5234#endif
5235 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5236 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
5237 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
5238
5239# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5240#if defined(MFC_OpenACC)
5241# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5242!$acc atomic update
5243# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5244#elif defined(MFC_OpenMP)
5245# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5246!$omp atomic update
5247# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5248#endif
5249 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5250 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
5251 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
5252
5253# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5254#if defined(MFC_OpenACC)
5255# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5256!$acc atomic update
5257# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5258#elif defined(MFC_OpenMP)
5259# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5260!$omp atomic update
5261# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5262#endif
5263 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5264 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
5265 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
5266
5267# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5268#if defined(MFC_OpenACC)
5269# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5270!$acc atomic update
5271# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5272#elif defined(MFC_OpenMP)
5273# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5274!$omp atomic update
5275# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5276#endif
5277 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5278 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(rho_r*vel_r(1) &
5279 & )*(1._wp/dy(k)), kind=stp)
5280
5281# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5282#if defined(MFC_OpenACC)
5283# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5284!$acc atomic update
5285# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5286#elif defined(MFC_OpenMP)
5287# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5288!$omp atomic update
5289# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5290#endif
5291 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5292 & l) - real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(e_r) &
5293 & *(1._wp/dy(k)), kind=stp)
5294 end do
5295 end do
5296 end do
5297
5298# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5299#if defined(MFC_OpenACC)
5300# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5301!$acc end parallel loop
5302# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5303#elif defined(MFC_OpenMP)
5304# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5305
5306# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5307!$omp end target teams loop
5308# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5309#endif
5310# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5311 else
5312# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5313
5314# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5315
5316# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5317#if defined(MFC_OpenACC)
5318# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5319!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
5320# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5321#elif defined(MFC_OpenMP)
5322# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5323
5324# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5325
5326# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5327
5328# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5329!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
5330# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5331#endif
5332# 1703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5333 do l = 0, p
5334 do k = -1, n
5335 do j = 0, m
5336 if (viscous) then
5337 vflux_l_arr = 0._wp
5338 vflux_r_arr = 0._wp
5339
5340# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5341
5342# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5343#if defined(MFC_OpenACC)
5344# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5345!$acc loop seq
5346# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5347#elif defined(MFC_OpenMP)
5348# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5349
5350# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5351#endif
5352 do q = vidxb, vidxe
5353 ! x-direction contributions
5354
5355# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5356#if defined(MFC_OpenACC)
5357# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5358!$acc loop seq
5359# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5360#elif defined(MFC_OpenMP)
5361# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5362
5363# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5364#endif
5365 do i = -1, 1
5366 rho_l = 0._wp
5367
5368# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5369#if defined(MFC_OpenACC)
5370# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5371!$acc loop seq
5372# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5373#elif defined(MFC_OpenMP)
5374# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5375
5376# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5377#endif
5378 do r = 1, num_fluids
5379 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
5380 end do
5381 rho_sf_small(i) = rho_l
5382 end do
5383
5384 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
5385 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
5386 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
5387 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
5388 & l)/rho_sf_small(-1))
5389
5390 if (q > vidxb) then
5391 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
5392 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
5393 end if
5394 if (q < vidxe) then
5395 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
5396 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
5397 end if
5398
5399 ! y-direction contributions
5400
5401# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5402#if defined(MFC_OpenACC)
5403# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5404!$acc loop seq
5405# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5406#elif defined(MFC_OpenMP)
5407# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5408
5409# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5410#endif
5411 do i = -1, 1
5412 rho_l = 0._wp
5413
5414# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5415#if defined(MFC_OpenACC)
5416# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5417!$acc loop seq
5418# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5419#elif defined(MFC_OpenMP)
5420# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5421
5422# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5423#endif
5424 do r = 1, num_fluids
5425 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
5426 end do
5427 rho_sf_small(i) = rho_l
5428 end do
5429
5430 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
5431 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
5432 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
5433 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
5434 & l)/rho_sf_small(-1))
5435 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1 + q, &
5436 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1 + q, &
5437 & l)/rho_sf_small(-1))
5438
5439 if (q > vidxb) then
5440 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
5441 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
5442 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
5443 end if
5444 if (q < vidxe) then
5445 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
5446 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
5447 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
5448 end if
5449
5450 ! z-direction contributions
5451
5452# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5453#if defined(MFC_OpenACC)
5454# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5455!$acc loop seq
5456# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5457#elif defined(MFC_OpenMP)
5458# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5459
5460# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5461#endif
5462 do i = -1, 1
5463 rho_l = 0._wp
5464
5465# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5466#if defined(MFC_OpenACC)
5467# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5468!$acc loop seq
5469# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5470#elif defined(MFC_OpenMP)
5471# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5472
5473# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5474#endif
5475 do r = 1, num_fluids
5476 rho_l = rho_l + q_cons_vf(r)%sf(j, k + q, l + i)
5477 end do
5478 rho_sf_small(i) = rho_l
5479 end do
5480
5481 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5482 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5483 & l - 1)/rho_sf_small(-1))
5484 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5485 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5486 & l - 1)/rho_sf_small(-1))
5487 if (q > vidxb) then
5488 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
5489 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
5490 end if
5491 if (q < vidxe) then
5492 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
5493 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
5494 end if
5495 end do
5496 end if
5497
5498
5499# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5500#if defined(MFC_OpenACC)
5501# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5502!$acc loop seq
5503# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5504#elif defined(MFC_OpenMP)
5505# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5506
5507# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5508#endif
5509 do i = 1, num_fluids
5510 alpha_rho_l(i) = 0._wp
5511 alpha_rho_r(i) = 0._wp
5512 alpha_l(i) = 0._wp
5513 alpha_r(i) = 0._wp
5514 end do
5515
5516# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5517#if defined(MFC_OpenACC)
5518# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5519!$acc loop seq
5520# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5521#elif defined(MFC_OpenMP)
5522# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5523
5524# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5525#endif
5526 do i = 1, num_dims
5527 vel_l(i) = 0._wp
5528 vel_r(i) = 0._wp
5529 end do
5530
5531
5532# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5533#if defined(MFC_OpenACC)
5534# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5535!$acc loop seq
5536# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5537#elif defined(MFC_OpenMP)
5538# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5539
5540# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5541#endif
5542 do q = vidxb + 1, vidxe
5543
5544# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5545#if defined(MFC_OpenACC)
5546# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5547!$acc loop seq
5548# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5549#elif defined(MFC_OpenMP)
5550# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5551
5552# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5553#endif
5554 do i = 1, num_fluids
5555 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
5556 end do
5557
5558 if (num_fluids > 1) then
5559
5560# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5561#if defined(MFC_OpenACC)
5562# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5563!$acc loop seq
5564# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5565#elif defined(MFC_OpenMP)
5566# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5567
5568# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5569#endif
5570 do i = 1, num_fluids - 1
5571 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5572 end do
5573 else
5574 alpha_l(1) = 1._wp
5575 end if
5576
5577
5578# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5579#if defined(MFC_OpenACC)
5580# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5581!$acc loop seq
5582# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5583#elif defined(MFC_OpenMP)
5584# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5585
5586# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5587#endif
5588 do i = 1, num_dims
5589 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5590 end do
5591 end do
5592
5593
5594# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5595#if defined(MFC_OpenACC)
5596# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5597!$acc loop seq
5598# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5599#elif defined(MFC_OpenMP)
5600# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5601
5602# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5603#endif
5604 do q = vidxb, vidxe - 1
5605
5606# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5607#if defined(MFC_OpenACC)
5608# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5609!$acc loop seq
5610# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5611#elif defined(MFC_OpenMP)
5612# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5613
5614# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5615#endif
5616 do i = 1, num_fluids
5617 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
5618 end do
5619
5620 if (num_fluids > 1) then
5621
5622# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5623#if defined(MFC_OpenACC)
5624# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5625!$acc loop seq
5626# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5627#elif defined(MFC_OpenMP)
5628# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5629
5630# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5631#endif
5632 do i = 1, num_fluids - 1
5633 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5634 end do
5635 else
5636 alpha_r(1) = 1._wp
5637 end if
5638
5639
5640# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5641#if defined(MFC_OpenACC)
5642# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5643!$acc loop seq
5644# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5645#elif defined(MFC_OpenMP)
5646# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5647
5648# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5649#endif
5650 do i = 1, num_dims
5651 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5652 end do
5653 end do
5654
5655 if (num_fluids > 1) then
5656 alpha_l(num_fluids) = 1._wp
5657 alpha_r(num_fluids) = 1._wp
5658
5659
5660# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5661#if defined(MFC_OpenACC)
5662# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5663!$acc loop seq
5664# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5665#elif defined(MFC_OpenMP)
5666# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5667
5668# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5669#endif
5670 do i = 1, num_fluids - 1
5671 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
5672 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
5673 end do
5674 end if
5675
5676 rho_l = 0._wp; rho_r = 0._wp
5677 gamma_l = 0._wp; gamma_r = 0._wp
5678 pi_inf_l = 0._wp; pi_inf_r = 0._wp
5679
5680
5681# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5682#if defined(MFC_OpenACC)
5683# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5684!$acc loop seq
5685# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5686#elif defined(MFC_OpenMP)
5687# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5688
5689# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5690#endif
5691 do i = 1, num_fluids
5692 rho_l = rho_l + alpha_rho_l(i)
5693 gamma_l = gamma_l + alpha_l(i)*gammas(i)
5694 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
5695
5696 rho_r = rho_r + alpha_rho_r(i)
5697 gamma_r = gamma_r + alpha_r(i)*gammas(i)
5698 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
5699 end do
5700
5701
5702# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5703#if defined(MFC_OpenACC)
5704# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5705!$acc loop seq
5706# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5707#elif defined(MFC_OpenMP)
5708# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5709
5710# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5711#endif
5712 do i = 1, num_dims
5713 vel_l(i) = vel_l(i)/rho_l
5714 vel_r(i) = vel_r(i)/rho_r
5715 end do
5716
5717 if (viscous) then
5718 mu_l = 0._wp
5719 mu_r = 0._wp
5720
5721# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5722#if defined(MFC_OpenACC)
5723# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5724!$acc loop seq
5725# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5726#elif defined(MFC_OpenMP)
5727# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5728
5729# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5730#endif
5731 do i = 1, num_fluids
5732 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
5733 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
5734 end do
5735
5736
5737# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5738#if defined(MFC_OpenACC)
5739# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5740!$acc atomic update
5741# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5742#elif defined(MFC_OpenMP)
5743# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5744!$omp atomic update
5745# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5746#endif
5747 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5748 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5749
5750# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5751#if defined(MFC_OpenACC)
5752# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5753!$acc atomic update
5754# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5755#elif defined(MFC_OpenMP)
5756# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5757!$omp atomic update
5758# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5759#endif
5760 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5761 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
5762
5763
5764# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5765#if defined(MFC_OpenACC)
5766# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5767!$acc atomic update
5768# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5769#elif defined(MFC_OpenMP)
5770# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5771!$omp atomic update
5772# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5773#endif
5774 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5775 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
5776
5777# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5778#if defined(MFC_OpenACC)
5779# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5780!$acc atomic update
5781# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5782#elif defined(MFC_OpenMP)
5783# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5784!$omp atomic update
5785# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5786#endif
5787 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5788 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
5789
5790
5791# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5792#if defined(MFC_OpenACC)
5793# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5794!$acc atomic update
5795# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5796#elif defined(MFC_OpenMP)
5797# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5798!$omp atomic update
5799# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5800#endif
5801 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5802 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5803
5804# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5805#if defined(MFC_OpenACC)
5806# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5807!$acc atomic update
5808# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5809#elif defined(MFC_OpenMP)
5810# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5811!$omp atomic update
5812# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5813#endif
5814 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5815 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
5816
5817
5818# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5819#if defined(MFC_OpenACC)
5820# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5821!$acc atomic update
5822# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5823#elif defined(MFC_OpenMP)
5824# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5825!$omp atomic update
5826# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5827#endif
5828 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5829 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
5830
5831# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5832#if defined(MFC_OpenACC)
5833# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5834!$acc atomic update
5835# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5836#elif defined(MFC_OpenMP)
5837# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5838!$omp atomic update
5839# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5840#endif
5841 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5842 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
5843
5844
5845# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5846#if defined(MFC_OpenACC)
5847# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5848!$acc atomic update
5849# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5850#elif defined(MFC_OpenMP)
5851# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5852!$omp atomic update
5853# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5854#endif
5855 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5856 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5857
5858# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5859#if defined(MFC_OpenACC)
5860# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5861!$acc atomic update
5862# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5863#elif defined(MFC_OpenMP)
5864# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5865!$omp atomic update
5866# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5867#endif
5868 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5869 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k + 1)), kind=stp)
5870
5871
5872# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5873#if defined(MFC_OpenACC)
5874# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5875!$acc atomic update
5876# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5877#elif defined(MFC_OpenMP)
5878# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5879!$omp atomic update
5880# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5881#endif
5882 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5883 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k)), kind=stp)
5884
5885# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5886#if defined(MFC_OpenACC)
5887# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5888!$acc atomic update
5889# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5890#elif defined(MFC_OpenMP)
5891# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5892!$omp atomic update
5893# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5894#endif
5895 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5896 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k)), kind=stp)
5897
5898
5899# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5900#if defined(MFC_OpenACC)
5901# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5902!$acc atomic update
5903# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5904#elif defined(MFC_OpenMP)
5905# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5906!$omp atomic update
5907# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5908#endif
5909 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5910 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5911
5912# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5913#if defined(MFC_OpenACC)
5914# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5915!$acc atomic update
5916# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5917#elif defined(MFC_OpenMP)
5918# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5919!$omp atomic update
5920# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5921#endif
5922 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5923 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k + 1)), kind=stp)
5924
5925
5926# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5927#if defined(MFC_OpenACC)
5928# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5929!$acc atomic update
5930# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5931#elif defined(MFC_OpenMP)
5932# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5933!$omp atomic update
5934# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5935#endif
5936 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5937 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k)), kind=stp)
5938
5939# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5940#if defined(MFC_OpenACC)
5941# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5942!$acc atomic update
5943# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5944#elif defined(MFC_OpenMP)
5945# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5946!$omp atomic update
5947# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5948#endif
5949 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5950 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k)), kind=stp)
5951
5952
5953# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5954#if defined(MFC_OpenACC)
5955# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5956!$acc atomic update
5957# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5958#elif defined(MFC_OpenMP)
5959# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5960!$omp atomic update
5961# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5962#endif
5963 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5964 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
5965
5966# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5967#if defined(MFC_OpenACC)
5968# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5969!$acc atomic update
5970# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5971#elif defined(MFC_OpenMP)
5972# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5973!$omp atomic update
5974# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5975#endif
5976 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5977 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
5978
5979
5980# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5981#if defined(MFC_OpenACC)
5982# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5983!$acc atomic update
5984# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5985#elif defined(MFC_OpenMP)
5986# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5987!$omp atomic update
5988# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5989#endif
5990 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5991 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
5992
5993# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5994#if defined(MFC_OpenACC)
5995# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5996!$acc atomic update
5997# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5998#elif defined(MFC_OpenMP)
5999# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6000!$omp atomic update
6001# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6002#endif
6003 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6004 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6005
6006
6007# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6008#if defined(MFC_OpenACC)
6009# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6010!$acc atomic update
6011# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6012#elif defined(MFC_OpenMP)
6013# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6014!$omp atomic update
6015# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6016#endif
6017 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6018 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
6019
6020# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6021#if defined(MFC_OpenACC)
6022# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6023!$acc atomic update
6024# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6025#elif defined(MFC_OpenMP)
6026# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6027!$omp atomic update
6028# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6029#endif
6030 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6031 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6032
6033
6034# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6035#if defined(MFC_OpenACC)
6036# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6037!$acc atomic update
6038# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6039#elif defined(MFC_OpenMP)
6040# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6041!$omp atomic update
6042# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6043#endif
6044 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6045 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
6046
6047# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6048#if defined(MFC_OpenACC)
6049# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6050!$acc atomic update
6051# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6052#elif defined(MFC_OpenMP)
6053# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6054!$omp atomic update
6055# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6056#endif
6057 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6058 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6059 end if
6060
6061 e_l = 0._wp; e_r = 0._wp
6062 f_l = 0._wp; f_r = 0._wp
6063
6064
6065# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6066#if defined(MFC_OpenACC)
6067# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6068!$acc loop seq
6069# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6070#elif defined(MFC_OpenMP)
6071# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6072
6073# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6074#endif
6075 do q = vidxb + 1, vidxe
6076 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
6077 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
6078 end do
6079
6080
6081# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6082#if defined(MFC_OpenACC)
6083# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6084!$acc loop seq
6085# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6086#elif defined(MFC_OpenMP)
6087# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6088
6089# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6090#endif
6091 do q = vidxb, vidxe - 1
6092 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
6093 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
6094 end do
6095
6096 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
6097 & vel_r, pres_l, pres_r, cfl)
6098
6099
6100# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6101#if defined(MFC_OpenACC)
6102# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6103!$acc loop seq
6104# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6105#elif defined(MFC_OpenMP)
6106# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6107
6108# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6109#endif
6110 do i = 1, num_fluids
6111
6112# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6113#if defined(MFC_OpenACC)
6114# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6115!$acc atomic update
6116# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6117#elif defined(MFC_OpenMP)
6118# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6119!$omp atomic update
6120# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6121#endif
6122 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6123 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6124 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
6125
6126
6127# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6128#if defined(MFC_OpenACC)
6129# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6130!$acc atomic update
6131# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6132#elif defined(MFC_OpenMP)
6133# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6134!$omp atomic update
6135# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6136#endif
6137 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6138 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
6139 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
6140 end do
6141
6142 if (num_fluids > 1) then
6143
6144# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6145#if defined(MFC_OpenACC)
6146# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6147!$acc loop seq
6148# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6149#elif defined(MFC_OpenMP)
6150# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6151
6152# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6153#endif
6154 do i = 1, num_fluids - 1
6155
6156# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6157#if defined(MFC_OpenACC)
6158# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6159!$acc atomic update
6160# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6161#elif defined(MFC_OpenMP)
6162# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6163!$omp atomic update
6164# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6165#endif
6166 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6167 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6168 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
6169
6170
6171# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6172#if defined(MFC_OpenACC)
6173# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6174!$acc atomic update
6175# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6176#elif defined(MFC_OpenMP)
6177# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6178!$omp atomic update
6179# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6180#endif
6181 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6182 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6183 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
6184
6185
6186# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6187#if defined(MFC_OpenACC)
6188# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6189!$acc atomic update
6190# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6191#elif defined(MFC_OpenMP)
6192# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6193!$omp atomic update
6194# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6195#endif
6196 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6197 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
6198 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
6199
6200
6201# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6202#if defined(MFC_OpenACC)
6203# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6204!$acc atomic update
6205# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6206#elif defined(MFC_OpenMP)
6207# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6208!$omp atomic update
6209# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6210#endif
6211 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6212 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6213 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6214 end do
6215 end if
6216
6217
6218# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6219#if defined(MFC_OpenACC)
6220# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6221!$acc atomic update
6222# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6223#elif defined(MFC_OpenMP)
6224# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6225!$omp atomic update
6226# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6227#endif
6228 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6229 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
6230 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
6231
6232
6233# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6234#if defined(MFC_OpenACC)
6235# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6236!$acc atomic update
6237# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6238#elif defined(MFC_OpenMP)
6239# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6240!$omp atomic update
6241# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6242#endif
6243 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6244 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
6245 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
6246
6247
6248# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6249#if defined(MFC_OpenACC)
6250# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6251!$acc atomic update
6252# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6253#elif defined(MFC_OpenMP)
6254# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6255!$omp atomic update
6256# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6257#endif
6258 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6259 & l) + real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k + 1)) &
6260 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dy(k + 1)), kind=stp)
6261
6262
6263# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6264#if defined(MFC_OpenACC)
6265# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6266!$acc atomic update
6267# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6268#elif defined(MFC_OpenMP)
6269# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6270!$omp atomic update
6271# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6272#endif
6273 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6274 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
6275 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
6276
6277
6278# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6279#if defined(MFC_OpenACC)
6280# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6281!$acc atomic update
6282# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6283#elif defined(MFC_OpenMP)
6284# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6285!$omp atomic update
6286# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6287#endif
6288 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6289 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
6290 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
6291
6292
6293# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6294#if defined(MFC_OpenACC)
6295# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6296!$acc atomic update
6297# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6298#elif defined(MFC_OpenMP)
6299# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6300!$omp atomic update
6301# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6302#endif
6303 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6304 & l) - real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(rho_l*vel_l(1) &
6305 & )*(1._wp/dy(k)), kind=stp)
6306
6307
6308# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6309#if defined(MFC_OpenACC)
6310# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6311!$acc atomic update
6312# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6313#elif defined(MFC_OpenMP)
6314# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6315!$omp atomic update
6316# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6317#endif
6318 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6319 & l) - real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(rho_l*vel_l(3) &
6320 & )*(1._wp/dy(k)), kind=stp)
6321
6322
6323# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6324#if defined(MFC_OpenACC)
6325# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6326!$acc atomic update
6327# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6328#elif defined(MFC_OpenMP)
6329# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6330!$omp atomic update
6331# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6332#endif
6333 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6334 & l) - real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(e_l) &
6335 & *(1._wp/dy(k)), kind=stp)
6336
6337
6338# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6339#if defined(MFC_OpenACC)
6340# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6341!$acc loop seq
6342# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6343#elif defined(MFC_OpenMP)
6344# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6345
6346# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6347#endif
6348 do i = 1, num_fluids
6349
6350# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6351#if defined(MFC_OpenACC)
6352# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6353!$acc atomic update
6354# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6355#elif defined(MFC_OpenMP)
6356# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6357!$omp atomic update
6358# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6359#endif
6360 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6361 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6362 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
6363
6364
6365# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6366#if defined(MFC_OpenACC)
6367# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6368!$acc atomic update
6369# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6370#elif defined(MFC_OpenMP)
6371# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6372!$omp atomic update
6373# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6374#endif
6375 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6376 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
6377 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
6378 end do
6379
6380 if (num_fluids > 1) then
6381
6382# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6383#if defined(MFC_OpenACC)
6384# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6385!$acc loop seq
6386# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6387#elif defined(MFC_OpenMP)
6388# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6389
6390# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6391#endif
6392 do i = 1, num_fluids - 1
6393
6394# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6395#if defined(MFC_OpenACC)
6396# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6397!$acc atomic update
6398# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6399#elif defined(MFC_OpenMP)
6400# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6401!$omp atomic update
6402# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6403#endif
6404 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6405 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6406 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
6407
6408
6409# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6410#if defined(MFC_OpenACC)
6411# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6412!$acc atomic update
6413# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6414#elif defined(MFC_OpenMP)
6415# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6416!$omp atomic update
6417# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6418#endif
6419 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6420 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6421 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6422
6423
6424# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6425#if defined(MFC_OpenACC)
6426# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6427!$acc atomic update
6428# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6429#elif defined(MFC_OpenMP)
6430# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6431!$omp atomic update
6432# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6433#endif
6434 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6435 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
6436 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
6437
6438
6439# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6440#if defined(MFC_OpenACC)
6441# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6442!$acc atomic update
6443# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6444#elif defined(MFC_OpenMP)
6445# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6446!$omp atomic update
6447# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6448#endif
6449 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6450 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6451 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6452 end do
6453 end if
6454
6455
6456# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6457#if defined(MFC_OpenACC)
6458# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6459!$acc atomic update
6460# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6461#elif defined(MFC_OpenMP)
6462# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6463!$omp atomic update
6464# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6465#endif
6466 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6467 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
6468 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
6469
6470
6471# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6472#if defined(MFC_OpenACC)
6473# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6474!$acc atomic update
6475# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6476#elif defined(MFC_OpenMP)
6477# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6478!$omp atomic update
6479# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6480#endif
6481 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6482 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
6483 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
6484
6485
6486# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6487#if defined(MFC_OpenACC)
6488# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6489!$acc atomic update
6490# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6491#elif defined(MFC_OpenMP)
6492# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6493!$omp atomic update
6494# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6495#endif
6496 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6497 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k + 1)) &
6498 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dy(k + 1)), kind=stp)
6499
6500
6501# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6502#if defined(MFC_OpenACC)
6503# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6504!$acc atomic update
6505# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6506#elif defined(MFC_OpenMP)
6507# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6508!$omp atomic update
6509# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6510#endif
6511 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6512 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
6513 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
6514
6515
6516# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6517#if defined(MFC_OpenACC)
6518# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6519!$acc atomic update
6520# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6521#elif defined(MFC_OpenMP)
6522# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6523!$omp atomic update
6524# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6525#endif
6526 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6527 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
6528 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
6529
6530
6531# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6532#if defined(MFC_OpenACC)
6533# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6534!$acc atomic update
6535# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6536#elif defined(MFC_OpenMP)
6537# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6538!$omp atomic update
6539# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6540#endif
6541 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6542 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(rho_r*vel_r(1) &
6543 & )*(1._wp/dy(k)), kind=stp)
6544
6545
6546# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6547#if defined(MFC_OpenACC)
6548# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6549!$acc atomic update
6550# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6551#elif defined(MFC_OpenMP)
6552# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6553!$omp atomic update
6554# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6555#endif
6556 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6557 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(rho_r*vel_r(3) &
6558 & )*(1._wp/dy(k)), kind=stp)
6559
6560
6561# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6562#if defined(MFC_OpenACC)
6563# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6564!$acc atomic update
6565# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6566#elif defined(MFC_OpenMP)
6567# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6568!$omp atomic update
6569# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6570#endif
6571 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6572 & l) - real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(e_r) &
6573 & *(1._wp/dy(k)), kind=stp)
6574 end do
6575 end do
6576 end do
6577
6578# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6579#if defined(MFC_OpenACC)
6580# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6581!$acc end parallel loop
6582# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6583#elif defined(MFC_OpenMP)
6584# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6585
6586# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6587!$omp end target teams loop
6588# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6589#endif
6590# 2165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6591 end if
6592 else if (idir == 3) then
6593# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6594
6595# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6596
6597# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6598#if defined(MFC_OpenACC)
6599# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6600!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
6601# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6602#elif defined(MFC_OpenMP)
6603# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6604
6605# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6606
6607# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6608
6609# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6610!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
6611# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6612#endif
6613# 2171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6614 do l = -1, p
6615 do k = 0, n
6616 do j = 0, m
6617 if (viscous) then
6618 vflux_l_arr = 0._wp
6619 vflux_r_arr = 0._wp
6620
6621# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6622
6623# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6624#if defined(MFC_OpenACC)
6625# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6626!$acc loop seq
6627# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6628#elif defined(MFC_OpenMP)
6629# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6630
6631# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6632#endif
6633 do q = vidxb, vidxe
6634 ! x-direction contributions
6635
6636# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6637#if defined(MFC_OpenACC)
6638# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6639!$acc loop seq
6640# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6641#elif defined(MFC_OpenMP)
6642# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6643
6644# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6645#endif
6646 do i = -1, 1
6647 rho_l = 0._wp
6648
6649# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6650#if defined(MFC_OpenACC)
6651# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6652!$acc loop seq
6653# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6654#elif defined(MFC_OpenMP)
6655# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6656
6657# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6658#endif
6659 do r = 1, num_fluids
6660 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k, l + q)
6661 end do
6662 rho_sf_small(i) = rho_l
6663 end do
6664
6665 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k, &
6666 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k, l + q)/rho_sf_small(-1))
6667 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1, k, &
6668 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1, k, &
6669 & l + q)/rho_sf_small(-1))
6670
6671 if (q > vidxb) then
6672 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(3))
6673 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
6674 end if
6675 if (q < vidxe) then
6676 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(3))
6677 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
6678 end if
6679
6680 ! y-direction contributions
6681
6682# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6683#if defined(MFC_OpenACC)
6684# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6685!$acc loop seq
6686# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6687#elif defined(MFC_OpenMP)
6688# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6689
6690# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6691#endif
6692 do i = -1, 1
6693 rho_l = 0._wp
6694
6695# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6696#if defined(MFC_OpenACC)
6697# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6698!$acc loop seq
6699# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6700#elif defined(MFC_OpenMP)
6701# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6702
6703# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6704#endif
6705 do r = 1, num_fluids
6706 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i, l + q)
6707 end do
6708 rho_sf_small(i) = rho_l
6709 end do
6710
6711 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1, &
6712 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1, &
6713 & l + q)/rho_sf_small(-1))
6714 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1, &
6715 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1, &
6716 & l + q)/rho_sf_small(-1))
6717
6718 if (q > vidxb) then
6719 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
6720 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
6721 end if
6722 if (q < vidxe) then
6723 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
6724 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
6725 end if
6726
6727 ! z-direction contributions
6728
6729# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6730#if defined(MFC_OpenACC)
6731# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6732!$acc loop seq
6733# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6734#elif defined(MFC_OpenMP)
6735# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6736
6737# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6738#endif
6739 do i = -1, 1
6740 rho_l = 0._wp
6741
6742# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6743#if defined(MFC_OpenACC)
6744# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6745!$acc loop seq
6746# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6747#elif defined(MFC_OpenMP)
6748# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6749
6750# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6751#endif
6752 do r = 1, num_fluids
6753 rho_l = rho_l + q_cons_vf(r)%sf(j, k, l + i + q)
6754 end do
6755 rho_sf_small(i) = rho_l
6756 end do
6757 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j, k, &
6758 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k, &
6759 & l - 1 + q)/rho_sf_small(-1))
6760 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k, &
6761 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k, &
6762 & l - 1 + q)/rho_sf_small(-1))
6763 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k, &
6764 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k, &
6765 & l - 1 + q)/rho_sf_small(-1))
6766 if (q > vidxb) then
6767 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
6768 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
6769 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(3))/3._wp
6770 end if
6771 if (q < vidxe) then
6772 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
6773 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
6774 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(3))/3._wp
6775 end if
6776 end do
6777 end if
6778
6779
6780# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6781#if defined(MFC_OpenACC)
6782# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6783!$acc loop seq
6784# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6785#elif defined(MFC_OpenMP)
6786# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6787
6788# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6789#endif
6790 do i = 1, num_fluids
6791 alpha_rho_l(i) = 0._wp
6792 alpha_rho_r(i) = 0._wp
6793 alpha_l(i) = 0._wp
6794 alpha_r(i) = 0._wp
6795 end do
6796
6797
6798# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6799#if defined(MFC_OpenACC)
6800# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6801!$acc loop seq
6802# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6803#elif defined(MFC_OpenMP)
6804# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6805
6806# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6807#endif
6808 do i = 1, num_dims
6809 vel_l(i) = 0._wp
6810 vel_r(i) = 0._wp
6811 end do
6812
6813
6814# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6815#if defined(MFC_OpenACC)
6816# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6817!$acc loop seq
6818# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6819#elif defined(MFC_OpenMP)
6820# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6821
6822# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6823#endif
6824 do q = vidxb + 1, vidxe
6825
6826# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6827#if defined(MFC_OpenACC)
6828# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6829!$acc loop seq
6830# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6831#elif defined(MFC_OpenMP)
6832# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6833
6834# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6835#endif
6836 do i = 1, num_fluids
6837 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k, l + q)
6838 end do
6839
6840 if (num_fluids > 1) then
6841
6842# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6843#if defined(MFC_OpenACC)
6844# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6845!$acc loop seq
6846# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6847#elif defined(MFC_OpenMP)
6848# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6849
6850# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6851#endif
6852 do i = 1, num_fluids - 1
6853 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6854 end do
6855 else
6856 alpha_l(1) = 1._wp
6857 end if
6858
6859
6860# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6861#if defined(MFC_OpenACC)
6862# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6863!$acc loop seq
6864# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6865#elif defined(MFC_OpenMP)
6866# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6867
6868# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6869#endif
6870 do i = 1, num_dims
6871 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6872 end do
6873 end do
6874
6875
6876# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6877#if defined(MFC_OpenACC)
6878# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6879!$acc loop seq
6880# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6881#elif defined(MFC_OpenMP)
6882# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6883
6884# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6885#endif
6886 do q = vidxb, vidxe - 1
6887
6888# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6889#if defined(MFC_OpenACC)
6890# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6891!$acc loop seq
6892# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6893#elif defined(MFC_OpenMP)
6894# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6895
6896# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6897#endif
6898 do i = 1, num_fluids
6899 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k, l + q)
6900 end do
6901
6902 if (num_fluids > 1) then
6903
6904# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6905#if defined(MFC_OpenACC)
6906# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6907!$acc loop seq
6908# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6909#elif defined(MFC_OpenMP)
6910# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6911
6912# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6913#endif
6914 do i = 1, num_fluids - 1
6915 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6916 end do
6917 else
6918 alpha_r(1) = 1._wp
6919 end if
6920
6921
6922# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6923#if defined(MFC_OpenACC)
6924# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6925!$acc loop seq
6926# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6927#elif defined(MFC_OpenMP)
6928# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6929
6930# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6931#endif
6932 do i = 1, num_dims
6933 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6934 end do
6935 end do
6936
6937 if (num_fluids > 1) then
6938 alpha_l(num_fluids) = 1._wp
6939 alpha_r(num_fluids) = 1._wp
6940
6941
6942# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6943#if defined(MFC_OpenACC)
6944# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6945!$acc loop seq
6946# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6947#elif defined(MFC_OpenMP)
6948# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6949
6950# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6951#endif
6952 do i = 1, num_fluids - 1
6953 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
6954 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
6955 end do
6956 end if
6957
6958 rho_l = 0._wp; rho_r = 0._wp
6959 gamma_l = 0._wp; gamma_r = 0._wp
6960 pi_inf_l = 0._wp; pi_inf_r = 0._wp
6961
6962
6963# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6964#if defined(MFC_OpenACC)
6965# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6966!$acc loop seq
6967# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6968#elif defined(MFC_OpenMP)
6969# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6970
6971# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6972#endif
6973 do i = 1, num_fluids
6974 rho_l = rho_l + alpha_rho_l(i)
6975 gamma_l = gamma_l + alpha_l(i)*gammas(i)
6976 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
6977
6978 rho_r = rho_r + alpha_rho_r(i)
6979 gamma_r = gamma_r + alpha_r(i)*gammas(i)
6980 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
6981 end do
6982
6983
6984# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6985#if defined(MFC_OpenACC)
6986# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6987!$acc loop seq
6988# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6989#elif defined(MFC_OpenMP)
6990# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6991
6992# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6993#endif
6994 do i = 1, num_dims
6995 vel_l(i) = vel_l(i)/rho_l
6996 vel_r(i) = vel_r(i)/rho_r
6997 end do
6998
6999 if (viscous) then
7000 mu_l = 0._wp
7001 mu_r = 0._wp
7002
7003# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7004#if defined(MFC_OpenACC)
7005# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7006!$acc loop seq
7007# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7008#elif defined(MFC_OpenMP)
7009# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7010
7011# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7012#endif
7013 do i = 1, num_fluids
7014 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
7015 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
7016 end do
7017
7018
7019# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7020#if defined(MFC_OpenACC)
7021# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7022!$acc atomic update
7023# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7024#elif defined(MFC_OpenMP)
7025# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7026!$omp atomic update
7027# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7028#endif
7029 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7030 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7031
7032# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7033#if defined(MFC_OpenACC)
7034# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7035!$acc atomic update
7036# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7037#elif defined(MFC_OpenMP)
7038# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7039!$omp atomic update
7040# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7041#endif
7042 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7043 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l + 1)), kind=stp)
7044
7045
7046# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7047#if defined(MFC_OpenACC)
7048# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7049!$acc atomic update
7050# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7051#elif defined(MFC_OpenMP)
7052# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7053!$omp atomic update
7054# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7055#endif
7056 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7057 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l)), kind=stp)
7058
7059# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7060#if defined(MFC_OpenACC)
7061# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7062!$acc atomic update
7063# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7064#elif defined(MFC_OpenMP)
7065# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7066!$omp atomic update
7067# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7068#endif
7069 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7070 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l)), kind=stp)
7071
7072
7073# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7074#if defined(MFC_OpenACC)
7075# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7076!$acc atomic update
7077# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7078#elif defined(MFC_OpenMP)
7079# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7080!$omp atomic update
7081# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7082#endif
7083 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7084 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7085
7086# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7087#if defined(MFC_OpenACC)
7088# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7089!$acc atomic update
7090# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7091#elif defined(MFC_OpenMP)
7092# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7093!$omp atomic update
7094# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7095#endif
7096 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7097 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l + 1)), kind=stp)
7098
7099
7100# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7101#if defined(MFC_OpenACC)
7102# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7103!$acc atomic update
7104# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7105#elif defined(MFC_OpenMP)
7106# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7107!$omp atomic update
7108# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7109#endif
7110 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7111 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l)), kind=stp)
7112
7113# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7114#if defined(MFC_OpenACC)
7115# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7116!$acc atomic update
7117# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7118#elif defined(MFC_OpenMP)
7119# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7120!$omp atomic update
7121# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7122#endif
7123 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7124 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l)), kind=stp)
7125
7126
7127# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7128#if defined(MFC_OpenACC)
7129# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7130!$acc atomic update
7131# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7132#elif defined(MFC_OpenMP)
7133# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7134!$omp atomic update
7135# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7136#endif
7137 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7138 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7139
7140# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7141#if defined(MFC_OpenACC)
7142# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7143!$acc atomic update
7144# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7145#elif defined(MFC_OpenMP)
7146# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7147!$omp atomic update
7148# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7149#endif
7150 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7151 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l + 1)), kind=stp)
7152
7153
7154# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7155#if defined(MFC_OpenACC)
7156# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7157!$acc atomic update
7158# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7159#elif defined(MFC_OpenMP)
7160# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7161!$omp atomic update
7162# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7163#endif
7164 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7165 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l)), kind=stp)
7166
7167# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7168#if defined(MFC_OpenACC)
7169# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7170!$acc atomic update
7171# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7172#elif defined(MFC_OpenMP)
7173# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7174!$omp atomic update
7175# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7176#endif
7177 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7178 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l)), kind=stp)
7179
7180
7181# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7182#if defined(MFC_OpenACC)
7183# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7184!$acc atomic update
7185# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7186#elif defined(MFC_OpenMP)
7187# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7188!$omp atomic update
7189# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7190#endif
7191 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7192 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7193
7194# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7195#if defined(MFC_OpenACC)
7196# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7197!$acc atomic update
7198# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7199#elif defined(MFC_OpenMP)
7200# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7201!$omp atomic update
7202# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7203#endif
7204 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7205 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l + 1)), kind=stp)
7206
7207
7208# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7209#if defined(MFC_OpenACC)
7210# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7211!$acc atomic update
7212# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7213#elif defined(MFC_OpenMP)
7214# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7215!$omp atomic update
7216# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7217#endif
7218 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7219 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l)), kind=stp)
7220
7221# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7222#if defined(MFC_OpenACC)
7223# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7224!$acc atomic update
7225# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7226#elif defined(MFC_OpenMP)
7227# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7228!$omp atomic update
7229# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7230#endif
7231 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7232 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l)), kind=stp)
7233
7234
7235# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7236#if defined(MFC_OpenACC)
7237# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7238!$acc atomic update
7239# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7240#elif defined(MFC_OpenMP)
7241# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7242!$omp atomic update
7243# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7244#endif
7245 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7246 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7247
7248# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7249#if defined(MFC_OpenACC)
7250# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7251!$acc atomic update
7252# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7253#elif defined(MFC_OpenMP)
7254# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7255!$omp atomic update
7256# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7257#endif
7258 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7259 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7260
7261
7262# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7263#if defined(MFC_OpenACC)
7264# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7265!$acc atomic update
7266# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7267#elif defined(MFC_OpenMP)
7268# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7269!$omp atomic update
7270# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7271#endif
7272 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7273 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l)), kind=stp)
7274
7275# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7276#if defined(MFC_OpenACC)
7277# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7278!$acc atomic update
7279# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7280#elif defined(MFC_OpenMP)
7281# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7282!$omp atomic update
7283# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7284#endif
7285 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7286 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l)), kind=stp)
7287
7288
7289# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7290#if defined(MFC_OpenACC)
7291# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7292!$acc atomic update
7293# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7294#elif defined(MFC_OpenMP)
7295# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7296!$omp atomic update
7297# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7298#endif
7299 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7300 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7301
7302# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7303#if defined(MFC_OpenACC)
7304# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7305!$acc atomic update
7306# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7307#elif defined(MFC_OpenMP)
7308# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7309!$omp atomic update
7310# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7311#endif
7312 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7313 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7314
7315
7316# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7317#if defined(MFC_OpenACC)
7318# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7319!$acc atomic update
7320# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7321#elif defined(MFC_OpenMP)
7322# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7323!$omp atomic update
7324# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7325#endif
7326 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7327 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l)), kind=stp)
7328
7329# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7330#if defined(MFC_OpenACC)
7331# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7332!$acc atomic update
7333# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7334#elif defined(MFC_OpenMP)
7335# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7336!$omp atomic update
7337# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7338#endif
7339 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7340 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l)), kind=stp)
7341 end if
7342
7343 e_l = 0._wp; e_r = 0._wp
7344 f_l = 0._wp; f_r = 0._wp
7345
7346
7347# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7348#if defined(MFC_OpenACC)
7349# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7350!$acc loop seq
7351# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7352#elif defined(MFC_OpenMP)
7353# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7354
7355# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7356#endif
7357 do q = vidxb + 1, vidxe
7358 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7359 f_l = f_l + coeff_l(q)*jac(j, k, l + q)
7360 end do
7361
7362
7363# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7364#if defined(MFC_OpenACC)
7365# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7366!$acc loop seq
7367# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7368#elif defined(MFC_OpenMP)
7369# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7370
7371# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7372#endif
7373 do q = vidxb, vidxe - 1
7374 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7375 f_r = f_r + coeff_r(q)*jac(j, k, l + q)
7376 end do
7377
7378 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, vel_r, &
7379 & pres_l, pres_r, cfl)
7380
7381
7382# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7383#if defined(MFC_OpenACC)
7384# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7385!$acc loop seq
7386# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7387#elif defined(MFC_OpenMP)
7388# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7389
7390# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7391#endif
7392 do i = 1, num_fluids
7393
7394# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7395#if defined(MFC_OpenACC)
7396# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7397!$acc atomic update
7398# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7399#elif defined(MFC_OpenMP)
7400# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7401!$omp atomic update
7402# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7403#endif
7404 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7405 & l + 1) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7406 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l + 1)), kind=stp)
7407
7408
7409# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7410#if defined(MFC_OpenACC)
7411# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7412!$acc atomic update
7413# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7414#elif defined(MFC_OpenMP)
7415# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7416!$omp atomic update
7417# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7418#endif
7419 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7420 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l)) &
7421 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l)), kind=stp)
7422 end do
7423
7424 if (num_fluids > 1) then
7425
7426# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7427#if defined(MFC_OpenACC)
7428# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7429!$acc loop seq
7430# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7431#elif defined(MFC_OpenMP)
7432# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7433
7434# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7435#endif
7436 do i = 1, num_fluids - 1
7437
7438# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7439#if defined(MFC_OpenACC)
7440# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7441!$acc atomic update
7442# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7443#elif defined(MFC_OpenMP)
7444# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7445!$omp atomic update
7446# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7447#endif
7448 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7449 & l + 1) + real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7450 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dz(l + 1)), kind=stp)
7451
7452
7453# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7454#if defined(MFC_OpenACC)
7455# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7456!$acc atomic update
7457# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7458#elif defined(MFC_OpenMP)
7459# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7460!$omp atomic update
7461# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7462#endif
7463 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7464 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7465 & l + 1)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7466
7467
7468# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7469#if defined(MFC_OpenACC)
7470# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7471!$acc atomic update
7472# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7473#elif defined(MFC_OpenMP)
7474# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7475!$omp atomic update
7476# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7477#endif
7478 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7479 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(alpha_l(i)) &
7480 & *(1._wp/dz(l)), kind=stp)
7481
7482
7483# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7484#if defined(MFC_OpenACC)
7485# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7486!$acc atomic update
7487# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7488#elif defined(MFC_OpenMP)
7489# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7490!$omp atomic update
7491# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7492#endif
7493 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7494 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_l(3)*(1._wp/dz(l)), &
7495 & kind=stp)
7496 end do
7497 end if
7498
7499
7500# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7501#if defined(MFC_OpenACC)
7502# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7503!$acc atomic update
7504# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7505#elif defined(MFC_OpenMP)
7506# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7507!$omp atomic update
7508# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7509#endif
7510 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7511 & l + 1) + real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l + 1)) &
7512 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l + 1)), kind=stp)
7513
7514
7515# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7516#if defined(MFC_OpenACC)
7517# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7518!$acc atomic update
7519# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7520#elif defined(MFC_OpenMP)
7521# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7522!$omp atomic update
7523# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7524#endif
7525 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7526 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l + 1)) &
7527 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dz(l + 1)), kind=stp)
7528
7529
7530# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7531#if defined(MFC_OpenACC)
7532# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7533!$acc atomic update
7534# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7535#elif defined(MFC_OpenMP)
7536# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7537!$omp atomic update
7538# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7539#endif
7540 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7541 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l + 1)) &
7542 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dz(l + 1)), kind=stp)
7543
7544
7545# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7546#if defined(MFC_OpenACC)
7547# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7548!$acc atomic update
7549# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7550#elif defined(MFC_OpenMP)
7551# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7552!$omp atomic update
7553# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7554#endif
7555 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7556 & l + 1) + real(0.5_wp*dt*(vel_l(3)*(e_l + pres_l + f_l))*(1._wp/dz(l + 1)) &
7557 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dz(l + 1)), kind=stp)
7558
7559
7560# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7561#if defined(MFC_OpenACC)
7562# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7563!$acc atomic update
7564# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7565#elif defined(MFC_OpenMP)
7566# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7567!$omp atomic update
7568# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7569#endif
7570 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7571 & l) - real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l)) &
7572 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l)), kind=stp)
7573
7574
7575# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7576#if defined(MFC_OpenACC)
7577# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7578!$acc atomic update
7579# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7580#elif defined(MFC_OpenMP)
7581# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7582!$omp atomic update
7583# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7584#endif
7585 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7586 & l) - real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(rho_l*vel_l(1)) &
7587 & *(1._wp/dz(l)), kind=stp)
7588
7589
7590# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7591#if defined(MFC_OpenACC)
7592# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7593!$acc atomic update
7594# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7595#elif defined(MFC_OpenMP)
7596# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7597!$omp atomic update
7598# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7599#endif
7600 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7601 & l) - real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(rho_l*vel_l(2)) &
7602 & *(1._wp/dz(l)), kind=stp)
7603
7604
7605# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7606#if defined(MFC_OpenACC)
7607# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7608!$acc atomic update
7609# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7610#elif defined(MFC_OpenMP)
7611# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7612!$omp atomic update
7613# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7614#endif
7615 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7616 & l) - real(0.5_wp*dt*(vel_l(3)*(e_l + pres_l + f_l))*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(e_l) &
7617 & *(1._wp/dz(l)), kind=stp)
7618
7619
7620# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7621#if defined(MFC_OpenACC)
7622# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7623!$acc loop seq
7624# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7625#elif defined(MFC_OpenMP)
7626# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7627
7628# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7629#endif
7630 do i = 1, num_fluids
7631
7632# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7633#if defined(MFC_OpenACC)
7634# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7635!$acc atomic update
7636# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7637#elif defined(MFC_OpenMP)
7638# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7639!$omp atomic update
7640# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7641#endif
7642 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7643 & l + 1) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7644 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l + 1)), kind=stp)
7645
7646
7647# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7648#if defined(MFC_OpenACC)
7649# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7650!$acc atomic update
7651# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7652#elif defined(MFC_OpenMP)
7653# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7654!$omp atomic update
7655# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7656#endif
7657 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7658 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l)) &
7659 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l)), kind=stp)
7660 end do
7661
7662 if (num_fluids > 1) then
7663
7664# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7665#if defined(MFC_OpenACC)
7666# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7667!$acc loop seq
7668# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7669#elif defined(MFC_OpenMP)
7670# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7671
7672# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7673#endif
7674 do i = 1, num_fluids - 1
7675
7676# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7677#if defined(MFC_OpenACC)
7678# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7679!$acc atomic update
7680# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7681#elif defined(MFC_OpenMP)
7682# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7683!$omp atomic update
7684# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7685#endif
7686 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7687 & l + 1) + real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7688 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dz(l + 1)), kind=stp)
7689
7690
7691# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7692#if defined(MFC_OpenACC)
7693# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7694!$acc atomic update
7695# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7696#elif defined(MFC_OpenMP)
7697# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7698!$omp atomic update
7699# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7700#endif
7701 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7702 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7703 & l + 1)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7704
7705
7706# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7707#if defined(MFC_OpenACC)
7708# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7709!$acc atomic update
7710# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7711#elif defined(MFC_OpenMP)
7712# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7713!$omp atomic update
7714# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7715#endif
7716 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7717 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(alpha_r(i)) &
7718 & *(1._wp/dz(l)), kind=stp)
7719
7720
7721# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7722#if defined(MFC_OpenACC)
7723# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7724!$acc atomic update
7725# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7726#elif defined(MFC_OpenMP)
7727# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7728!$omp atomic update
7729# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7730#endif
7731 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7732 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_r(3)*(1._wp/dz(l)), &
7733 & kind=stp)
7734 end do
7735 end if
7736
7737
7738# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7739#if defined(MFC_OpenACC)
7740# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7741!$acc atomic update
7742# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7743#elif defined(MFC_OpenMP)
7744# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7745!$omp atomic update
7746# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7747#endif
7748 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7749 & l + 1) + real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l + 1)) &
7750 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l + 1)), kind=stp)
7751
7752
7753# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7754#if defined(MFC_OpenACC)
7755# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7756!$acc atomic update
7757# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7758#elif defined(MFC_OpenMP)
7759# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7760!$omp atomic update
7761# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7762#endif
7763 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7764 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l + 1)) &
7765 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dz(l + 1)), kind=stp)
7766
7767
7768# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7769#if defined(MFC_OpenACC)
7770# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7771!$acc atomic update
7772# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7773#elif defined(MFC_OpenMP)
7774# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7775!$omp atomic update
7776# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7777#endif
7778 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7779 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l + 1)) &
7780 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dz(l + 1)), kind=stp)
7781
7782
7783# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7784#if defined(MFC_OpenACC)
7785# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7786!$acc atomic update
7787# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7788#elif defined(MFC_OpenMP)
7789# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7790!$omp atomic update
7791# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7792#endif
7793 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7794 & l + 1) + real(0.5_wp*dt*(vel_r(3)*(e_r + pres_r + f_r))*(1._wp/dz(l + 1)) &
7795 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dz(l + 1)), kind=stp)
7796
7797
7798# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7799#if defined(MFC_OpenACC)
7800# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7801!$acc atomic update
7802# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7803#elif defined(MFC_OpenMP)
7804# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7805!$omp atomic update
7806# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7807#endif
7808 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7809 & l) - real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l)) &
7810 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l)), kind=stp)
7811
7812
7813# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7814#if defined(MFC_OpenACC)
7815# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7816!$acc atomic update
7817# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7818#elif defined(MFC_OpenMP)
7819# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7820!$omp atomic update
7821# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7822#endif
7823 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7824 & l) - real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(rho_r*vel_r(1)) &
7825 & *(1._wp/dz(l)), kind=stp)
7826
7827
7828# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7829#if defined(MFC_OpenACC)
7830# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7831!$acc atomic update
7832# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7833#elif defined(MFC_OpenMP)
7834# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7835!$omp atomic update
7836# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7837#endif
7838 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7839 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(rho_r*vel_r(2)) &
7840 & *(1._wp/dz(l)), kind=stp)
7841
7842
7843# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7844#if defined(MFC_OpenACC)
7845# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7846!$acc atomic update
7847# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7848#elif defined(MFC_OpenMP)
7849# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7850!$omp atomic update
7851# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7852#endif
7853 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7854 & l) - real(0.5_wp*dt*(vel_r(3)*(e_r + pres_r + f_r))*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(e_r) &
7855 & *(1._wp/dz(l)), kind=stp)
7856 end do
7857 end do
7858 end do
7859
7860# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7861#if defined(MFC_OpenACC)
7862# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7863!$acc end parallel loop
7864# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7865#elif defined(MFC_OpenMP)
7866# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7867
7868# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7869!$omp end target teams loop
7870# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7871#endif
7872# 2634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7873 end if
7874
7875 end subroutine s_igr_riemann_solver
7876
7877 !> Compute pressure and maximum wavespeed from left and right reconstructed states
7878 subroutine s_get_derived_states(E_L, gamma_L, pi_inf_L, rho_L, vel_L, E_R, gamma_R, pi_inf_R, rho_R, vel_R, pres_L, pres_R, cfl)
7879
7880
7881# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7882#if MFC_OpenACC
7883# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7884!$acc routine seq
7885# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7886#elif MFC_OpenMP
7887# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7888
7889# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7890
7891# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7892!$omp declare target device_type(any)
7893# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7894#endif
7895
7896 real(wp), intent(in) :: E_L, gamma_L, pi_inf_L, rho_L
7897 real(wp), intent(in) :: E_R, gamma_R, pi_inf_R, rho_R
7898 real(wp), dimension(num_dims), intent(in) :: vel_L, vel_R
7899 real(wp), intent(out) :: pres_L, pres_R, cfl
7900 real(wp) :: a_L, a_R
7901
7902 if (num_dims == 2) then
7903 pres_l = (e_l - pi_inf_l - 0.5_wp*rho_l*(vel_l(1)**2._wp + vel_l(2)**2._wp))/gamma_l
7904 pres_r = (e_r - pi_inf_r - 0.5_wp*rho_r*(vel_r(1)**2._wp + vel_r(2)**2._wp))/gamma_r
7905
7906 if (igr_pres_lim) then
7907 pres_l = max(pres_l, 0._wp)
7908 pres_r = max(pres_r, 0._wp)
7909 end if
7910
7911 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
7912 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
7913
7914 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp), sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp)) + max(a_l, a_r)
7915 else if (num_dims == 3) then
7916# 2664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7917 pres_l = (e_l - pi_inf_l - 0.5_wp*rho_l*(vel_l(1)**2._wp + vel_l(2)**2._wp + vel_l(3)**2._wp))/gamma_l
7918 pres_r = (e_r - pi_inf_r - 0.5_wp*rho_r*(vel_r(1)**2._wp + vel_r(2)**2._wp + vel_r(3)**2._wp))/gamma_r
7919
7920 if (igr_pres_lim) then
7921 pres_l = max(pres_l, 0._wp)
7922 pres_r = max(pres_r, 0._wp)
7923 end if
7924
7925 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
7926 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
7927
7928 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp + vel_l(3)**2._wp), &
7929 & sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp + vel_r(3)**2._wp)) + max(a_l, a_r)
7930# 2678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7931 end if
7932
7933 end subroutine s_get_derived_states
7934
7935 !> Accumulate the IGR numerical flux divergence into the RHS along the specified direction
7936 subroutine s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
7937
7938 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf, flux_vf, rhs_vf
7939 integer, intent(in) :: idir
7940
7941 if (idir == 1) then
7942
7943# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7944
7945# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7946#if defined(MFC_OpenACC)
7947# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7948!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
7949# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7950#elif defined(MFC_OpenMP)
7951# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7952
7953# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7954
7955# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7956
7957# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7958!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l)
7959# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7960#endif
7961 do i = 1, sys_size
7962 do l = 0, p
7963 do k = 0, n
7964 do j = 0, m
7965 rhs_vf(i)%sf(j, k, l) = 1._wp/dx(j)*(flux_vf(i)%sf(j - 1, k, l) - flux_vf(i)%sf(j, k, l))
7966 end do
7967 end do
7968 end do
7969 end do
7970
7971# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7972#if defined(MFC_OpenACC)
7973# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7974!$acc end parallel loop
7975# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7976#elif defined(MFC_OpenMP)
7977# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7978
7979# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7980!$omp end target teams loop
7981# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7982#endif
7983 else if (idir == 2) then
7984
7985# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7986
7987# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7988#if defined(MFC_OpenACC)
7989# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7990!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
7991# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7992#elif defined(MFC_OpenMP)
7993# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7994
7995# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7996
7997# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7998
7999# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8000!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l)
8001# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8002#endif
8003 do i = 1, sys_size
8004 do l = 0, p
8005 do k = 0, n
8006 do j = 0, m
8007 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) + 1._wp/dy(k)*(flux_vf(i)%sf(j, k - 1, &
8008 & l) - flux_vf(i)%sf(j, k, l))
8009 end do
8010 end do
8011 end do
8012 end do
8013
8014# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8015#if defined(MFC_OpenACC)
8016# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8017!$acc end parallel loop
8018# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8019#elif defined(MFC_OpenMP)
8020# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8021
8022# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8023!$omp end target teams loop
8024# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8025#endif
8026 else if (idir == 3) then
8027
8028# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8029
8030# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8031#if defined(MFC_OpenACC)
8032# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8033!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8034# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8035#elif defined(MFC_OpenMP)
8036# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8037
8038# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8039
8040# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8041
8042# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8043!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l)
8044# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8045#endif
8046 do i = 1, sys_size
8047 do l = 0, p
8048 do k = 0, n
8049 do j = 0, m
8050 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) + 1._wp/dz(l)*(flux_vf(i)%sf(j, k, &
8051 & l - 1) - flux_vf(i)%sf(j, k, l))
8052 end do
8053 end do
8054 end do
8055 end do
8056
8057# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8058#if defined(MFC_OpenACC)
8059# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8060!$acc end parallel loop
8061# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8062#elif defined(MFC_OpenMP)
8063# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8064
8065# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8066!$omp end target teams loop
8067# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8068#endif
8069 end if
8070
8071 end subroutine s_igr_flux_add
8072
8073 !> Finalize the IGR module
8075
8076 if (viscous) then
8077#ifdef MFC_DEBUG
8078# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8079 block
8080# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8081 use iso_fortran_env, only: output_unit
8082# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8083
8084# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8085 print *, 'm_igr.fpp:2734: ', '@:DEALLOCATE(Res_igr)'
8086# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8087
8088# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8089 call flush (output_unit)
8090# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8091 end block
8092# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8093#endif
8094# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8095
8096# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8097#if defined(MFC_OpenACC)
8098# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8099!$acc exit data delete(Res_igr)
8100# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8101#elif defined(MFC_OpenMP)
8102# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8103!$omp target exit data map(release:Res_igr)
8104# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8105#endif
8106# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8107 deallocate (res_igr)
8108 end if
8109
8110#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
8111#ifdef MFC_DEBUG
8112# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8113 block
8114# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8115 use iso_fortran_env, only: output_unit
8116# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8117
8118# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8119 print *, 'm_igr.fpp:2738: ', '@:DEALLOCATE(jac, jac_rhs)'
8120# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8121
8122# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8123 call flush (output_unit)
8124# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8125 end block
8126# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8127#endif
8128# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8129
8130# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8131#if defined(MFC_OpenACC)
8132# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8133!$acc exit data delete(jac, jac_rhs)
8134# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8135#elif defined(MFC_OpenMP)
8136# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8137!$omp target exit data map(release:jac, jac_rhs)
8138# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8139#endif
8140# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8141 deallocate (jac, jac_rhs)
8142
8143 if (igr_iter_solver == 1) then ! Jacobi iteration
8144#ifdef MFC_DEBUG
8145# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8146 block
8147# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8148 use iso_fortran_env, only: output_unit
8149# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8150
8151# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8152 print *, 'm_igr.fpp:2741: ', '@:DEALLOCATE(jac_old)'
8153# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8154
8155# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8156 call flush (output_unit)
8157# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8158 end block
8159# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8160#endif
8161# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8162
8163# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8164#if defined(MFC_OpenACC)
8165# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8166!$acc exit data delete(jac_old)
8167# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8168#elif defined(MFC_OpenMP)
8169# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8170!$omp target exit data map(release:jac_old)
8171# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8172#endif
8173# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8174 deallocate (jac_old)
8175 end if
8176#else
8177 if (nv_uvm_temp_on_gpu(1) == 1) then
8178#ifdef MFC_DEBUG
8179# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8180 block
8181# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8182 use iso_fortran_env, only: output_unit
8183# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8184
8185# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8186 print *, 'm_igr.fpp:2745: ', '@:DEALLOCATE(jac)'
8187# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8188
8189# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8190 call flush (output_unit)
8191# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8192 end block
8193# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8194#endif
8195# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8196
8197# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8198#if defined(MFC_OpenACC)
8199# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8200!$acc exit data delete(jac)
8201# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8202#elif defined(MFC_OpenMP)
8203# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8204!$omp target exit data map(release:jac)
8205# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8206#endif
8207# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8208 deallocate (jac)
8209 else
8210 nullify (jac)
8211 deallocate (jac_host)
8212 end if
8213
8214 if (nv_uvm_temp_on_gpu(2) == 1) then
8215#ifdef MFC_DEBUG
8216# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8217 block
8218# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8219 use iso_fortran_env, only: output_unit
8220# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8221
8222# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8223 print *, 'm_igr.fpp:2752: ', '@:DEALLOCATE(jac_rhs)'
8224# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8225
8226# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8227 call flush (output_unit)
8228# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8229 end block
8230# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8231#endif
8232# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8233
8234# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8235#if defined(MFC_OpenACC)
8236# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8237!$acc exit data delete(jac_rhs)
8238# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8239#elif defined(MFC_OpenMP)
8240# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8241!$omp target exit data map(release:jac_rhs)
8242# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8243#endif
8244# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8245 deallocate (jac_rhs)
8246 else
8247 nullify (jac_rhs)
8248 deallocate (jac_rhs_host)
8249 end if
8250
8251 if (igr_iter_solver == 1) then ! Jacobi iteration
8252 if (nv_uvm_temp_on_gpu(3) == 1) then
8253#ifdef MFC_DEBUG
8254# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8255 block
8256# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8257 use iso_fortran_env, only: output_unit
8258# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8259
8260# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8261 print *, 'm_igr.fpp:2760: ', '@:DEALLOCATE(jac_old)'
8262# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8263
8264# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8265 call flush (output_unit)
8266# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8267 end block
8268# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8269#endif
8270# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8271
8272# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8273#if defined(MFC_OpenACC)
8274# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8275!$acc exit data delete(jac_old)
8276# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8277#elif defined(MFC_OpenMP)
8278# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8279!$omp target exit data map(release:jac_old)
8280# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8281#endif
8282# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8283 deallocate (jac_old)
8284 else
8285 nullify (jac_old)
8286 deallocate (jac_old_host)
8287 end if
8288 end if
8289#endif
8290
8291# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8292#ifdef MFC_DEBUG
8293# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8294 block
8295# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8296 use iso_fortran_env, only: output_unit
8297# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8298
8299# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8300 print *, 'm_igr.fpp:2769: ', '@:DEALLOCATE(coeff_L, coeff_R)'
8301# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8302
8303# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8304 call flush (output_unit)
8305# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8306 end block
8307# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8308#endif
8309# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8310
8311# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8312#if defined(MFC_OpenACC)
8313# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8314!$acc exit data delete(coeff_L, coeff_R)
8315# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8316#elif defined(MFC_OpenMP)
8317# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8318!$omp target exit data map(release:coeff_L, coeff_R)
8319# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8320#endif
8321# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8322 deallocate (coeff_l, coeff_r)
8323# 2771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8324
8325 end subroutine s_finalize_igr_module
8326
8327end module m_igr
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer, dimension(2) re_size
integer, dimension(:,:), allocatable re_idx
logical viscous
Viscous effects.
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Stiffened gas EOS parameters and Reynolds numbers per fluid.
logical nv_uvm_pref_gpu
Enable explicit gpu memory hints (default FALSE).
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Iterative ghost rasterization (IGR) for sharp immersed boundary treatment.
integer vidxe
subroutine, public s_initialize_igr_module()
Initialize the IGR module.
real(wp), dimension(:,:,:), allocatable jac_rhs
integer(kind=8) q
integer(kind=8) j
integer igr_momxb
real(wp), dimension(:), allocatable coeff_l
subroutine, public s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
Accumulate the IGR numerical flux divergence into the RHS along the specified direction.
real(wp), dimension(:,:), allocatable res_igr
integer(kind=8) i
integer(kind=8) l
type(scalar_field), dimension(1) jac_sf
subroutine, public s_igr_sigma_x(q_cons_vf, rhs_vf)
Compute the IGR viscous stress contribution in the x-direction and accumulate into the RHS.
integer vidxb
integer(kind=8) r
integer(kind=8) k
subroutine s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, vel_r, pres_l, pres_r, cfl)
Compute pressure and maximum wavespeed from left and right reconstructed states.
subroutine, public s_finalize_igr_module()
Finalize the IGR module.
integer igr_advxb
integer igr_e_idx
real(wp), dimension(:,:,:), allocatable jac_old
real(wp), dimension(:), allocatable coeff_r
subroutine, public s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
Evaluate the approximate Riemann solver for the IGR scheme along a given direction.
real(wp), dimension(:,:,:), allocatable, target jac
real(wp) alf_igr
subroutine, public s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
Iteratively solve the implicit gradient reconstruction system.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
Derived type annexing a scalar field (SF).