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# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 245 "/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# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 376 "/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# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 308 "/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# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238
239# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240
241# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242
243# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244
245# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246
247# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252
253# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258
259# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264
265# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274
275# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277! New line at end of file is required for FYPP
278# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
279
280# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
281
282! Caution:
283! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
284! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
285! For an example see misc/nvidia_uvm/bind.sh.
286# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287
288# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289
290# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291
292# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
293
294# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
295
296# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
297
298# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299
300# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
301! New line at end of file is required for FYPP
302# 7 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp" 2
303
304!> @brief Iterative ghost rasterization (IGR) for sharp immersed boundary treatment
305module m_igr
306
307 use m_derived_types !< definitions of the derived types
308
310
312
313 use m_mpi_proxy
314
315 use m_helper
316
318
319 implicit none
320
321 private; public :: s_initialize_igr_module, &
327
328!> @cond
329#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
330 integer, dimension(3) :: nv_uvm_temp_on_gpu
331 real(wp), pointer, contiguous, dimension(:, :, :) :: jac, jac_rhs, jac_old
332 real(wp), allocatable, dimension(:, :, :), pinned, target :: jac_host
333 real(wp), allocatable, dimension(:, :, :), pinned, target :: jac_rhs_host
334 real(wp), allocatable, dimension(:, :, :), pinned, target :: jac_old_host
335#else
336!> @endcond
337 real(wp), allocatable, target, dimension(:, :, :) :: jac
338 real(wp), allocatable, dimension(:, :, :) :: jac_rhs, jac_old
339
340# 43 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
341#if defined(MFC_OpenACC)
342# 43 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
343!$acc declare create(jac, jac_rhs, jac_old)
344# 43 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
345#elif defined(MFC_OpenMP)
346# 43 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
347!$omp declare target (jac, jac_rhs, jac_old)
348# 43 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
349#endif
350!> @cond
351#endif
352!> @endcond
353 type(scalar_field), dimension(1) :: jac_sf
354
355# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
356#if defined(MFC_OpenACC)
357# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
358!$acc declare create(jac_sf)
359# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
360#elif defined(MFC_OpenMP)
361# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
362!$omp declare target (jac_sf)
363# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
364#endif
365
366 real(wp), allocatable, dimension(:, :) :: res_igr
367
368# 51 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
369#if defined(MFC_OpenACC)
370# 51 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
371!$acc declare create(Res_igr)
372# 51 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
373#elif defined(MFC_OpenMP)
374# 51 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
375!$omp declare target (Res_igr)
376# 51 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
377#endif
378
379 real(wp) :: alf_igr
380
381# 54 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
382#if defined(MFC_OpenACC)
383# 54 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
384!$acc declare create(alf_igr)
385# 54 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
386#elif defined(MFC_OpenMP)
387# 54 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
388!$omp declare target (alf_igr)
389# 54 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
390#endif
391
392# 57 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
393 integer :: vidxb, vidxe
394
395# 58 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
396#if defined(MFC_OpenACC)
397# 58 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
398!$acc declare create(vidxb, vidxe)
399# 58 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
400#elif defined(MFC_OpenMP)
401# 58 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
402!$omp declare target (vidxb, vidxe)
403# 58 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
404#endif
405
406 real(wp), allocatable, dimension(:) :: coeff_l, coeff_r
407
408# 61 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
409#if defined(MFC_OpenACC)
410# 61 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
411!$acc declare create(coeff_L, coeff_R)
412# 61 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
413#elif defined(MFC_OpenMP)
414# 61 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
415!$omp declare target (coeff_L, coeff_R)
416# 61 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
417#endif
418# 133 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
419
420 integer(kind=8) :: i, j, k, l, q, r
421
422contains
423
424 !> @brief Allocates and initializes arrays, coefficients, and GPU data structures for the implicit gradient reconstruction module.
426
427 if (viscous) then
428#ifdef MFC_DEBUG
429# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
430 block
431# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
432 use iso_fortran_env, only: output_unit
433# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
434
435# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
436 print *, 'm_igr.fpp:142: ', '@:ALLOCATE(Res_igr(1:2, 1:maxval(Re_size)))'
437# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
438
439# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
440 call flush (output_unit)
441# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
442 end block
443# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
444#endif
445# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
446 allocate (res_igr(1:2, 1:maxval(re_size)))
447# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
448
449# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
450
451# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
452#if defined(MFC_OpenACC)
453# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
454!$acc enter data create(Res_igr)
455# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
456#elif defined(MFC_OpenMP)
457# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
458!$omp target enter data map(always,alloc:Res_igr)
459# 142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
460#endif
461 do i = 1, 2
462 do j = 1, re_size(i)
463 res_igr(i, j) = fluid_pp(re_idx(i, j))%Re(i)
464 end do
465 end do
466
467# 148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
468#if defined(MFC_OpenACC)
469# 148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
470!$acc update device(Res_igr, Re_idx, Re_size)
471# 148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
472#elif defined(MFC_OpenMP)
473# 148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
474!$omp target update to(Res_igr, Re_idx, Re_size)
475# 148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
476#endif
477#ifdef MFC_SIMULATION
478# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
479#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
480# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
481 block
482# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
483! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
484# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
485! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
486# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
487! The cudafor functionality has not changed. But for new users, or users who have needed to
488# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
489! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
490# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
491! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
492# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
493! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
494# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
495#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
496# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
497 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
498# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
499#else
500# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
501 use cuda_runtime_api
502# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
503#endif
504# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
505 integer :: istat
506# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
507
508# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
509 if (nv_uvm_pref_gpu) then
510# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
511 !print*, "Moving Res_igr to GPU => ", SHAPE(Res_igr)
512# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
513 ! set preferred location GPU
514# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
515 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetpreferredlocation, 0)
516# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
517 if (istat /= cudasuccess) then
518# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
519 write (*, "('Error code: ',I0, ': ')") istat
520# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
521 !write(*,*) cudaGetErrorString(istat)
522# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
523 end if
524# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
525 ! set accessed by CPU
526# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
527 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetaccessedby, cudacpudeviceid)
528# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
529 if (istat /= cudasuccess) then
530# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
531 write (*, "('Error code: ',I0, ': ')") istat
532# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
533 !write(*,*) cudaGetErrorString(istat)
534# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
535 end if
536# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
537 ! prefetch to GPU - physically populate memory pages
538# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
539 istat = cudamemprefetchasync(c_devloc(res_igr), sizeof(res_igr), 0, 0)
540# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
541 if (istat /= cudasuccess) then
542# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
543 write (*, "('Error code: ',I0, ': ')") istat
544# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
545 !write(*,*) cudaGetErrorString(istat)
546# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
547 end if
548# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
549 end if
550# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
551 end block
552# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
553#endif
554# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
555#endif
556#ifdef MFC_SIMULATION
557# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
558#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
559# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
560 block
561# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
562! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
563# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
564! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
565# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
566! The cudafor functionality has not changed. But for new users, or users who have needed to
567# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
568! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
569# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
570! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
571# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
572! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
573# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
574#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
575# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
576 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
577# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
578#else
579# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
580 use cuda_runtime_api
581# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
582#endif
583# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
584 integer :: istat
585# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
586
587# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
588 if (nv_uvm_pref_gpu) then
589# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
590 !print*, "Moving Re_idx to GPU => ", SHAPE(Re_idx)
591# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
592 ! set preferred location GPU
593# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
594 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetpreferredlocation, 0)
595# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
596 if (istat /= cudasuccess) then
597# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
598 write (*, "('Error code: ',I0, ': ')") istat
599# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
600 !write(*,*) cudaGetErrorString(istat)
601# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
602 end if
603# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
604 ! set accessed by CPU
605# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
606 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetaccessedby, cudacpudeviceid)
607# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
608 if (istat /= cudasuccess) then
609# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
610 write (*, "('Error code: ',I0, ': ')") istat
611# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
612 !write(*,*) cudaGetErrorString(istat)
613# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
614 end if
615# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
616 ! prefetch to GPU - physically populate memory pages
617# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
618 istat = cudamemprefetchasync(c_devloc(re_idx), sizeof(re_idx), 0, 0)
619# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
620 if (istat /= cudasuccess) then
621# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
622 write (*, "('Error code: ',I0, ': ')") istat
623# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
624 !write(*,*) cudaGetErrorString(istat)
625# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
626 end if
627# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
628 end if
629# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
630 end block
631# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
632#endif
633# 150 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
634#endif
635 end if
636
637#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
638#ifdef MFC_DEBUG
639# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
640 block
641# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
642 use iso_fortran_env, only: output_unit
643# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
644
645# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
646 print *, 'm_igr.fpp:154: ', '@:ALLOCATE(jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
647# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
648
649# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
650 call flush (output_unit)
651# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
652 end block
653# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
654#endif
655# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
656 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
657# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
658
659# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
660
661# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
662#if defined(MFC_OpenACC)
663# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
664!$acc enter data create(jac)
665# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
666#elif defined(MFC_OpenMP)
667# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
668!$omp target enter data map(always,alloc:jac)
669# 154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
670#endif
671# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
672#ifdef MFC_DEBUG
673# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
674 block
675# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
676 use iso_fortran_env, only: output_unit
677# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
678
679# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
680 print *, 'm_igr.fpp:157: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
681# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
682
683# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
684 call flush (output_unit)
685# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
686 end block
687# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
688#endif
689# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
690 allocate (jac_rhs(-1:m,-1:n,-1:p))
691# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
692
693# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
694
695# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
696#if defined(MFC_OpenACC)
697# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
698!$acc enter data create(jac_rhs)
699# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
700#elif defined(MFC_OpenMP)
701# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
702!$omp target enter data map(always,alloc:jac_rhs)
703# 157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
704#endif
705
706 if (igr_iter_solver == 1) then ! Jacobi iteration
707#ifdef MFC_DEBUG
708# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
709 block
710# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
711 use iso_fortran_env, only: output_unit
712# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
713
714# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
715 print *, 'm_igr.fpp:160: ', '@:ALLOCATE(jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
716# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
717
718# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
719 call flush (output_unit)
720# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
721 end block
722# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
723#endif
724# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
725 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
726# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
727
728# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
729
730# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
731#if defined(MFC_OpenACC)
732# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
733!$acc enter data create(jac_old)
734# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
735#elif defined(MFC_OpenMP)
736# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
737!$omp target enter data map(always,alloc:jac_old)
738# 160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
739#endif
740# 163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
741 end if
742#else
743 ! create map
744 nv_uvm_temp_on_gpu(1:3) = 0
745 nv_uvm_temp_on_gpu(1:nv_uvm_igr_temps_on_gpu) = 1
746
747 if (nv_uvm_temp_on_gpu(1) == 1) then
748#ifdef MFC_DEBUG
749# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
750 block
751# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
752 use iso_fortran_env, only: output_unit
753# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
754
755# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
756 print *, 'm_igr.fpp:170: ', '@:ALLOCATE(jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
757# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
758
759# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
760 call flush (output_unit)
761# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
762 end block
763# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
764#endif
765# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
766 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
767# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
768
769# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
770
771# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
772#if defined(MFC_OpenACC)
773# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
774!$acc enter data create(jac)
775# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
776#elif defined(MFC_OpenMP)
777# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
778!$omp target enter data map(always,alloc:jac)
779# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
780#endif
781# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
782#ifdef MFC_SIMULATION
783# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
784#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
785# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
786 block
787# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
788! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
789# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
790! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
791# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
792! The cudafor functionality has not changed. But for new users, or users who have needed to
793# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
794! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
795# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
796! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
797# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
798! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
799# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
800#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
801# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
802 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
803# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
804#else
805# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
806 use cuda_runtime_api
807# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
808#endif
809# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
810 integer :: istat
811# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
812
813# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
814 if (nv_uvm_pref_gpu) then
815# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
816 !print*, "Moving jac to GPU => ", SHAPE(jac)
817# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
818 ! set preferred location GPU
819# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
820 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetpreferredlocation, 0)
821# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
822 if (istat /= cudasuccess) then
823# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
824 write (*, "('Error code: ',I0, ': ')") istat
825# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
826 !write(*,*) cudaGetErrorString(istat)
827# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
828 end if
829# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
830 ! set accessed by CPU
831# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
832 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetaccessedby, cudacpudeviceid)
833# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
834 if (istat /= cudasuccess) then
835# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
836 write (*, "('Error code: ',I0, ': ')") istat
837# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
838 !write(*,*) cudaGetErrorString(istat)
839# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
840 end if
841# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
842 ! prefetch to GPU - physically populate memory pages
843# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
844 istat = cudamemprefetchasync(c_devloc(jac), sizeof(jac), 0, 0)
845# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
846 if (istat /= cudasuccess) then
847# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
848 write (*, "('Error code: ',I0, ': ')") istat
849# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
850 !write(*,*) cudaGetErrorString(istat)
851# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
852 end if
853# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
854 end if
855# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
856 end block
857# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
858#endif
859# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
860#endif
861 else
862 allocate (jac_host(idwbuff(1)%beg:idwbuff(1)%end, &
863 idwbuff(2)%beg:idwbuff(2)%end, &
864 idwbuff(3)%beg:idwbuff(3)%end))
865
866 jac(idwbuff(1)%beg:idwbuff(1)%end, &
867 idwbuff(2)%beg:idwbuff(2)%end, &
868 idwbuff(3)%beg:idwbuff(3)%end) => jac_host(:, :, :)
869 end if
870
871 if (nv_uvm_temp_on_gpu(2) == 1) then
872#ifdef MFC_DEBUG
873# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
874 block
875# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
876 use iso_fortran_env, only: output_unit
877# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
878
879# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
880 print *, 'm_igr.fpp:185: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
881# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
882
883# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
884 call flush (output_unit)
885# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
886 end block
887# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
888#endif
889# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
890 allocate (jac_rhs(-1:m,-1:n,-1:p))
891# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
892
893# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
894
895# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
896#if defined(MFC_OpenACC)
897# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
898!$acc enter data create(jac_rhs)
899# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
900#elif defined(MFC_OpenMP)
901# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
902!$omp target enter data map(always,alloc:jac_rhs)
903# 185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
904#endif
905#ifdef MFC_SIMULATION
906# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
907#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
908# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
909 block
910# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
911! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
912# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
913! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
914# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
915! The cudafor functionality has not changed. But for new users, or users who have needed to
916# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
917! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
918# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
919! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
920# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
921! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
922# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
923#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
924# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
925 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
926# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
927#else
928# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
929 use cuda_runtime_api
930# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
931#endif
932# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
933 integer :: istat
934# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
935
936# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
937 if (nv_uvm_pref_gpu) then
938# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
939 !print*, "Moving jac_rhs to GPU => ", SHAPE(jac_rhs)
940# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
941 ! set preferred location GPU
942# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
943 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetpreferredlocation, 0)
944# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
945 if (istat /= cudasuccess) then
946# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
947 write (*, "('Error code: ',I0, ': ')") istat
948# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
949 !write(*,*) cudaGetErrorString(istat)
950# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
951 end if
952# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
953 ! set accessed by CPU
954# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
955 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetaccessedby, cudacpudeviceid)
956# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
957 if (istat /= cudasuccess) then
958# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
959 write (*, "('Error code: ',I0, ': ')") istat
960# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
961 !write(*,*) cudaGetErrorString(istat)
962# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
963 end if
964# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
965 ! prefetch to GPU - physically populate memory pages
966# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
967 istat = cudamemprefetchasync(c_devloc(jac_rhs), sizeof(jac_rhs), 0, 0)
968# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
969 if (istat /= cudasuccess) then
970# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
971 write (*, "('Error code: ',I0, ': ')") istat
972# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
973 !write(*,*) cudaGetErrorString(istat)
974# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
975 end if
976# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
977 end if
978# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
979 end block
980# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
981#endif
982# 186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
983#endif
984 else
985 allocate (jac_rhs_host(-1:m, -1:n, -1:p))
986 jac_rhs(-1:m, -1:n, -1:p) => jac_rhs_host(:, :, :)
987 end if
988
989 if (igr_iter_solver == 1) then ! Jacobi iteration
990 if (nv_uvm_temp_on_gpu(3) == 1) then
991#ifdef MFC_DEBUG
992# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
993 block
994# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
995 use iso_fortran_env, only: output_unit
996# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
997
998# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
999 print *, 'm_igr.fpp:194: ', '@:ALLOCATE(jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
1000# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1001
1002# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1003 call flush (output_unit)
1004# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1005 end block
1006# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1007#endif
1008# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1009 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
1010# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1011
1012# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1013
1014# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1015#if defined(MFC_OpenACC)
1016# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1017!$acc enter data create(jac_old)
1018# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1019#elif defined(MFC_OpenMP)
1020# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1021!$omp target enter data map(always,alloc:jac_old)
1022# 194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1023#endif
1024# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1025#ifdef MFC_SIMULATION
1026# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1027#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
1028# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1029 block
1030# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1031! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
1032# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1033! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
1034# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1035! The cudafor functionality has not changed. But for new users, or users who have needed to
1036# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1037! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
1038# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1039! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
1040# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1041! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
1042# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1043#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
1044# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1045 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
1046# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1047#else
1048# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1049 use cuda_runtime_api
1050# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1051#endif
1052# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1053 integer :: istat
1054# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1055
1056# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1057 if (nv_uvm_pref_gpu) then
1058# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1059 !print*, "Moving jac_old to GPU => ", SHAPE(jac_old)
1060# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1061 ! set preferred location GPU
1062# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1063 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetpreferredlocation, 0)
1064# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1065 if (istat /= cudasuccess) then
1066# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1067 write (*, "('Error code: ',I0, ': ')") istat
1068# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1069 !write(*,*) cudaGetErrorString(istat)
1070# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1071 end if
1072# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1073 ! set accessed by CPU
1074# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1075 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetaccessedby, cudacpudeviceid)
1076# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1077 if (istat /= cudasuccess) then
1078# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1079 write (*, "('Error code: ',I0, ': ')") istat
1080# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1081 !write(*,*) cudaGetErrorString(istat)
1082# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1083 end if
1084# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1085 ! prefetch to GPU - physically populate memory pages
1086# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1087 istat = cudamemprefetchasync(c_devloc(jac_old), sizeof(jac_old), 0, 0)
1088# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1089 if (istat /= cudasuccess) then
1090# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1091 write (*, "('Error code: ',I0, ': ')") istat
1092# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1093 !write(*,*) cudaGetErrorString(istat)
1094# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1095 end if
1096# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1097 end if
1098# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1099 end block
1100# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1101#endif
1102# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1103#endif
1104 else
1105 allocate (jac_old_host(idwbuff(1)%beg:idwbuff(1)%end, &
1106 idwbuff(2)%beg:idwbuff(2)%end, &
1107 idwbuff(3)%beg:idwbuff(3)%end))
1108
1109 jac_old(idwbuff(1)%beg:idwbuff(1)%end, &
1110 idwbuff(2)%beg:idwbuff(2)%end, &
1111 idwbuff(3)%beg:idwbuff(3)%end) => jac_old_host(:, :, :)
1112 end if
1113 end if
1114#endif
1115
1116
1117# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1118
1119# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1120#if defined(MFC_OpenACC)
1121# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1122!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1123# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1124#elif defined(MFC_OpenMP)
1125# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1126
1127# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1128
1129# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1130
1131# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1132!$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)
1133# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1134#endif
1135# 210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1136
1137 do l = idwbuff(3)%beg, idwbuff(3)%end
1138 do k = idwbuff(2)%beg, idwbuff(2)%end
1139 do j = idwbuff(1)%beg, idwbuff(1)%end
1140 jac(j, k, l) = 0._stp
1141 if (igr_iter_solver == 1) jac_old(j, k, l) = 0._stp
1142 end do
1143 end do
1144 end do
1145
1146# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1147
1148# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1149#if defined(MFC_OpenACC)
1150# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1151!$acc end parallel loop
1152# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1153#elif defined(MFC_OpenMP)
1154# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1155
1156# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1157
1158# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1159!$omp end target teams loop
1160# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1161#endif
1162# 219 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1163
1164
1165 if (p == 0) then
1166 alf_igr = alf_factor*max(dx(1), dy(1))**2._wp
1167 else
1168 alf_igr = alf_factor*max(dx(1), dy(1), dz(1))**2._wp
1169 end if
1170
1171# 226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1172#if defined(MFC_OpenACC)
1173# 226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1174!$acc update device(alf_igr)
1175# 226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1176#elif defined(MFC_OpenMP)
1177# 226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1178!$omp target update to(alf_igr)
1179# 226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1180#endif
1181
1182# 229 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1183 if (igr_order == 3) then
1184 vidxb = -1; vidxe = 2;
1185
1186# 231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1187#if defined(MFC_OpenACC)
1188# 231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1189!$acc update device(vidxb, vidxe)
1190# 231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1191#elif defined(MFC_OpenMP)
1192# 231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1193!$omp target update to(vidxb, vidxe)
1194# 231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1195#endif
1196
1197#ifdef MFC_DEBUG
1198# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1199 block
1200# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1201 use iso_fortran_env, only: output_unit
1202# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1203
1204# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1205 print *, 'm_igr.fpp:233: ', '@:ALLOCATE(coeff_L(0:2))'
1206# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1207
1208# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1209 call flush (output_unit)
1210# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1211 end block
1212# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1213#endif
1214# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1215 allocate (coeff_l(0:2))
1216# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1217
1218# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1219
1220# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1221#if defined(MFC_OpenACC)
1222# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1223!$acc enter data create(coeff_L)
1224# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1225#elif defined(MFC_OpenMP)
1226# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1227!$omp target enter data map(always,alloc:coeff_L)
1228# 233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1229#endif
1230 coeff_l(0) = (2._wp/6._wp)
1231 coeff_l(1) = (5._wp/6._wp)
1232 coeff_l(2) = (-1._wp/6._wp)
1233
1234#ifdef MFC_DEBUG
1235# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1236 block
1237# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1238 use iso_fortran_env, only: output_unit
1239# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1240
1241# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1242 print *, 'm_igr.fpp:238: ', '@:ALLOCATE(coeff_R(-1:1))'
1243# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1244
1245# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1246 call flush (output_unit)
1247# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1248 end block
1249# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1250#endif
1251# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1252 allocate (coeff_r(-1:1))
1253# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1254
1255# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1256
1257# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1258#if defined(MFC_OpenACC)
1259# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1260!$acc enter data create(coeff_R)
1261# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1262#elif defined(MFC_OpenMP)
1263# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1264!$omp target enter data map(always,alloc:coeff_R)
1265# 238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1266#endif
1267 coeff_r(1) = (2._wp/6._wp)
1268 coeff_r(0) = (5._wp/6._wp)
1269 coeff_r(-1) = (-1._wp/6._wp)
1270
1271 elseif (igr_order == 5) then
1272 vidxb = -2; vidxe = 3;
1273
1274# 245 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1275#if defined(MFC_OpenACC)
1276# 245 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1277!$acc update device(vidxb, vidxe)
1278# 245 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1279#elif defined(MFC_OpenMP)
1280# 245 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1281!$omp target update to(vidxb, vidxe)
1282# 245 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1283#endif
1284
1285#ifdef MFC_DEBUG
1286# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1287 block
1288# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1289 use iso_fortran_env, only: output_unit
1290# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1291
1292# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1293 print *, 'm_igr.fpp:247: ', '@:ALLOCATE(coeff_L(-1:3))'
1294# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1295
1296# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1297 call flush (output_unit)
1298# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1299 end block
1300# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1301#endif
1302# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1303 allocate (coeff_l(-1:3))
1304# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1305
1306# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1307
1308# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1309#if defined(MFC_OpenACC)
1310# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1311!$acc enter data create(coeff_L)
1312# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1313#elif defined(MFC_OpenMP)
1314# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1315!$omp target enter data map(always,alloc:coeff_L)
1316# 247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1317#endif
1318 coeff_l(-1) = (-3._wp/60._wp)
1319 coeff_l(0) = (27._wp/60._wp)
1320 coeff_l(1) = (47._wp/60._wp)
1321 coeff_l(2) = (-13._wp/60._wp)
1322 coeff_l(3) = (2._wp/60._wp)
1323
1324#ifdef MFC_DEBUG
1325# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1326 block
1327# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1328 use iso_fortran_env, only: output_unit
1329# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1330
1331# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1332 print *, 'm_igr.fpp:254: ', '@:ALLOCATE(coeff_R(-2:2))'
1333# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1334
1335# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1336 call flush (output_unit)
1337# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1338 end block
1339# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1340#endif
1341# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1342 allocate (coeff_r(-2:2))
1343# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1344
1345# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1346
1347# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1348#if defined(MFC_OpenACC)
1349# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1350!$acc enter data create(coeff_R)
1351# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1352#elif defined(MFC_OpenMP)
1353# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1354!$omp target enter data map(always,alloc:coeff_R)
1355# 254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1356#endif
1357 coeff_r(2) = (-3._wp/60._wp)
1358 coeff_r(1) = (27._wp/60._wp)
1359 coeff_r(0) = (47._wp/60._wp)
1360 coeff_r(-1) = (-13._wp/60._wp)
1361 coeff_r(-2) = (2._wp/60._wp)
1362 end if
1363
1364
1365# 262 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1366#if defined(MFC_OpenACC)
1367# 262 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1368!$acc update device(coeff_L)
1369# 262 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1370#elif defined(MFC_OpenMP)
1371# 262 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1372!$omp target update to(coeff_L)
1373# 262 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1374#endif
1375
1376# 263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1377#if defined(MFC_OpenACC)
1378# 263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1379!$acc update device(coeff_R)
1380# 263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1381#elif defined(MFC_OpenMP)
1382# 263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1383!$omp target update to(coeff_R)
1384# 263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1385#endif
1386# 270 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1387 jac_sf(1)%sf => jac
1388
1389# 271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1390#if defined(MFC_OpenACC)
1391# 271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1392!$acc enter data copyin(jac_sf(1)%sf)
1393# 271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1394#elif defined(MFC_OpenMP)
1395# 271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1396!$omp target enter data map(to:jac_sf(1)%sf)
1397# 271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1398#endif
1399
1400# 272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1401#if defined(MFC_OpenACC)
1402# 272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1403!$acc enter data attach(jac_sf(1)%sf)
1404# 272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1405#elif defined(MFC_OpenMP)
1406# 272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1407!$omp target enter data map(always,to:jac_sf(1)%sf)
1408# 272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1409#endif
1410
1411 end subroutine s_initialize_igr_module
1412
1413 !> @brief Iteratively solves the implicit gradient reconstruction system using Jacobi or Gauss-Seidel relaxation.
1414 subroutine s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
1415#ifdef _CRAYFTN
1416 !DIR$ OPTIMIZE (-haggress)
1417#endif
1418 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1419 type(integer_field), dimension(1:num_dims, 1:2), intent(in) :: bc_type
1420 integer, intent(in) :: t_step
1421
1422 real(wp) :: rho_rx, rho_ry, rho_rz, rho_lx, rho_ly, rho_lz
1423 real(wp) :: fd_coeff
1424 integer :: num_iters
1425
1426 if (t_step == t_step_start) then
1427 num_iters = num_igr_warm_start_iters
1428 else
1429 num_iters = num_igr_iters
1430 end if
1431
1432 do q = 1, num_iters
1433
1434# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1435
1436# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1437#if defined(MFC_OpenACC)
1438# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1439!$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)
1440# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1441#elif defined(MFC_OpenMP)
1442# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1443
1444# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1445
1446# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1447
1448# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1449!$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)
1450# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1451#endif
1452# 296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1453
1454 do l = 0, p
1455 do k = 0, n
1456 do j = 0, m
1457 rho_lx = 0._wp
1458 rho_rx = 0._wp
1459 rho_ly = 0._wp
1460 rho_ry = 0._wp
1461 rho_lz = 0._wp
1462 rho_rz = 0._wp
1463 fd_coeff = 0._wp
1464
1465
1466# 308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1467#if defined(MFC_OpenACC)
1468# 308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1469!$acc loop seq
1470# 308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1471#elif defined(MFC_OpenMP)
1472# 308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1473
1474# 308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1475#endif
1476 do i = 1, num_fluids
1477 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
1478 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
1479 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
1480 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
1481 if (p > 0) then
1482 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
1483 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
1484 end if
1485 fd_coeff = fd_coeff + q_cons_vf(i)%sf(j, k, l)
1486 end do
1487
1488 fd_coeff = 1._wp/fd_coeff + alf_igr* &
1489 ((1._wp/dx(j)**2._wp)*(1._wp/rho_lx + 1._wp/rho_rx) + &
1490 (1._wp/dy(k)**2._wp)*(1._wp/rho_ly + 1._wp/rho_ry))
1491
1492 if (num_dims == 3) then
1493 fd_coeff = fd_coeff + alf_igr*(1._wp/dz(l)**2._wp)*(1._wp/rho_lz + 1._wp/rho_rz)
1494 end if
1495
1496 if (igr_iter_solver == 1) then ! Jacobi iteration
1497 if (num_dims == 3) then
1498 jac(j, k, l) = real((alf_igr/fd_coeff)* &
1499 ((1._wp/dx(j)**2._wp)*(jac_old(j - 1, k, l)/rho_lx + jac_old(j + 1, k, l)/rho_rx) + &
1500 (1._wp/dy(k)**2._wp)*(jac_old(j, k - 1, l)/rho_ly + jac_old(j, k + 1, l)/rho_ry) + &
1501 (1._wp/dz(l)**2._wp)*(jac_old(j, k, l - 1)/rho_lz + jac_old(j, k, l + 1)/rho_rz)) + &
1502 real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1503 else
1504 jac(j, k, l) = real((alf_igr/fd_coeff)* &
1505 ((1._wp/dx(j)**2._wp)*(real(jac_old(j - 1, k, l), kind=wp)/rho_lx + real(jac_old(j + 1, k, l), kind=wp)/rho_rx) + &
1506 (1._wp/dy(k)**2._wp)*(real(jac_old(j, k - 1, l), kind=wp)/rho_ly + real(jac_old(j, k + 1, l), kind=wp)/rho_ry)) + &
1507 real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1508 end if
1509 else ! Gauss Seidel iteration
1510 if (num_dims == 3) then
1511 jac(j, k, l) = real((alf_igr/fd_coeff)* &
1512 ((1._wp/dx(j)**2._wp)*(jac(j - 1, k, l)/rho_lx + jac(j + 1, k, l)/rho_rx) + &
1513 (1._wp/dy(k)**2._wp)*(jac(j, k - 1, l)/rho_ly + jac(j, k + 1, l)/rho_ry) + &
1514 (1._wp/dz(l)**2._wp)*(jac(j, k, l - 1)/rho_lz + jac(j, k, l + 1)/rho_rz)) + &
1515 real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1516 else
1517 jac(j, k, l) = real((alf_igr/fd_coeff)* &
1518 ((1._wp/dx(j)**2._wp)*(jac(j - 1, k, l)/rho_lx + jac(j + 1, k, l)/rho_rx) + &
1519 (1._wp/dy(k)**2._wp)*(jac(j, k - 1, l)/rho_ly + jac(j, k + 1, l)/rho_ry)) + &
1520 real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1521 end if
1522 end if
1523 end do
1524 end do
1525 end do
1526
1527# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1528
1529# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1530#if defined(MFC_OpenACC)
1531# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1532!$acc end parallel loop
1533# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1534#elif defined(MFC_OpenMP)
1535# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1536
1537# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1538
1539# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1540!$omp end target teams loop
1541# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1542#endif
1543# 359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1544
1545
1546 call s_populate_f_igr_buffers(bc_type, jac_sf)
1547
1548 if (igr_iter_solver == 1 .or. dummy) then ! Jacobi iteration
1549
1550# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1551
1552# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1553#if defined(MFC_OpenACC)
1554# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1555!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1556# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1557#elif defined(MFC_OpenMP)
1558# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1559
1560# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1561
1562# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1563
1564# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1565!$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)
1566# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1567#endif
1568# 364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1569
1570 do l = idwbuff(3)%beg, idwbuff(3)%end
1571 do k = idwbuff(2)%beg, idwbuff(2)%end
1572 do j = idwbuff(1)%beg, idwbuff(1)%end
1573 jac_old(j, k, l) = jac(j, k, l)
1574 end do
1575 end do
1576 end do
1577
1578# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1579
1580# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1581#if defined(MFC_OpenACC)
1582# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1583!$acc end parallel loop
1584# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1585#elif defined(MFC_OpenMP)
1586# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1587
1588# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1589
1590# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1591!$omp end target teams loop
1592# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1593#endif
1594# 372 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1595
1596 end if
1597 end do
1598
1599 end subroutine s_igr_iterative_solve
1600
1601 !> @brief Computes the IGR viscous stress contribution in the x-direction and accumulates it into the RHS.
1602 subroutine s_igr_sigma_x(q_cons_vf, rhs_vf)
1603#ifdef _CRAYFTN
1604 !DIR$ OPTIMIZE (-haggress)
1605#endif
1606 type(scalar_field), &
1607 dimension(sys_size), &
1608 intent(inout) :: rhs_vf
1609 type(scalar_field), &
1610 dimension(sys_size), &
1611 intent(inout) :: q_cons_vf
1612
1613 real(wp) :: f_l, vel_l, rho_l, f_r, vel_r, rho_r
1614# 392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1615 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_rho_r
1616# 396 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1617
1618
1619# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1620
1621# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1622#if defined(MFC_OpenACC)
1623# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1624!$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)
1625# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1626#elif defined(MFC_OpenMP)
1627# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1628
1629# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1630
1631# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1632
1633# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1634!$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)
1635# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1636#endif
1637# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1638
1639 do l = 0, p
1640 do k = 0, n
1641 do j = -1, m
1642
1643 f_l = 0._wp; f_r = 0._wp
1644 vel_l = 0._wp; vel_r = 0._wp
1645 rho_l = 0._wp; rho_r = 0._wp
1646
1647
1648# 406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1649#if defined(MFC_OpenACC)
1650# 406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1651!$acc loop seq
1652# 406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1653#elif defined(MFC_OpenMP)
1654# 406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1655
1656# 406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1657#endif
1658 do i = 1, num_fluids
1659 alpha_rho_l(i) = 0._wp
1660 alpha_rho_r(i) = 0._wp
1661 end do
1662
1663
1664# 412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1665#if defined(MFC_OpenACC)
1666# 412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1667!$acc loop seq
1668# 412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1669#elif defined(MFC_OpenMP)
1670# 412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1671
1672# 412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1673#endif
1674 do q = vidxb + 1, vidxe
1675
1676# 414 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1677#if defined(MFC_OpenACC)
1678# 414 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1679!$acc loop seq
1680# 414 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1681#elif defined(MFC_OpenMP)
1682# 414 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1683
1684# 414 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1685#endif
1686 do i = 1, num_fluids
1687 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
1688 end do
1689
1690 vel_l = vel_l + coeff_l(q)*q_cons_vf(momxb)%sf(j + q, k, l)
1691 f_l = f_l + coeff_l(q)*jac(j + q, k, l)
1692 end do
1693
1694
1695# 423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1696#if defined(MFC_OpenACC)
1697# 423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1698!$acc loop seq
1699# 423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1700#elif defined(MFC_OpenMP)
1701# 423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1702
1703# 423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1704#endif
1705 do q = vidxb, vidxe - 1
1706
1707# 425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1708#if defined(MFC_OpenACC)
1709# 425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1710!$acc loop seq
1711# 425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1712#elif defined(MFC_OpenMP)
1713# 425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1714
1715# 425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1716#endif
1717 do i = 1, num_fluids
1718 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
1719 end do
1720
1721 vel_r = vel_r + coeff_r(q)*q_cons_vf(momxb)%sf(j + q, k, l)
1722 f_r = f_r + coeff_r(q)*jac(j + q, k, l)
1723 end do
1724
1725
1726# 434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1727#if defined(MFC_OpenACC)
1728# 434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1729!$acc loop seq
1730# 434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1731#elif defined(MFC_OpenMP)
1732# 434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1733
1734# 434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1735#endif
1736 do i = 1, num_fluids
1737 rho_l = rho_l + alpha_rho_l(i)
1738 rho_r = rho_r + alpha_rho_r(i)
1739 end do
1740
1741 vel_l = vel_l/rho_l
1742 vel_r = vel_r/rho_r
1743
1744# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1745
1746# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1747#if defined(MFC_OpenACC)
1748# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1749!$acc atomic update
1750# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1751#elif defined(MFC_OpenMP)
1752# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1753!$omp atomic update
1754# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1755#endif
1756 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) + &
1757 real(0.5_wp*dt*f_l*(1._wp/dx(j + 1)), kind=stp)
1758
1759# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1760#if defined(MFC_OpenACC)
1761# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1762!$acc atomic update
1763# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1764#elif defined(MFC_OpenMP)
1765# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1766!$omp atomic update
1767# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1768#endif
1769 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) + &
1770 real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j + 1)), kind=stp)
1771
1772# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1773#if defined(MFC_OpenACC)
1774# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1775!$acc atomic update
1776# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1777#elif defined(MFC_OpenMP)
1778# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1779!$omp atomic update
1780# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1781#endif
1782 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
1783 real(0.5_wp*dt*f_l*(1._wp/dx(j)), kind=stp)
1784
1785# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1786#if defined(MFC_OpenACC)
1787# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1788!$acc atomic update
1789# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1790#elif defined(MFC_OpenMP)
1791# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1792!$omp atomic update
1793# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1794#endif
1795 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
1796 real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j)), kind=stp)
1797# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1798
1799# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1800#if defined(MFC_OpenACC)
1801# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1802!$acc atomic update
1803# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1804#elif defined(MFC_OpenMP)
1805# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1806!$omp atomic update
1807# 444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1808#endif
1809 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) + &
1810 real(0.5_wp*dt*f_r*(1._wp/dx(j + 1)), kind=stp)
1811
1812# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1813#if defined(MFC_OpenACC)
1814# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1815!$acc atomic update
1816# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1817#elif defined(MFC_OpenMP)
1818# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1819!$omp atomic update
1820# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1821#endif
1822 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) + &
1823 real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j + 1)), kind=stp)
1824
1825# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1826#if defined(MFC_OpenACC)
1827# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1828!$acc atomic update
1829# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1830#elif defined(MFC_OpenMP)
1831# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1832!$omp atomic update
1833# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1834#endif
1835 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
1836 real(0.5_wp*dt*f_r*(1._wp/dx(j)), kind=stp)
1837
1838# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1839#if defined(MFC_OpenACC)
1840# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1841!$acc atomic update
1842# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1843#elif defined(MFC_OpenMP)
1844# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1845!$omp atomic update
1846# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1847#endif
1848 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
1849 real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j)), kind=stp)
1850# 457 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1851 end do
1852 end do
1853 end do
1854
1855# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1856
1857# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1858#if defined(MFC_OpenACC)
1859# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1860!$acc end parallel loop
1861# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1862#elif defined(MFC_OpenMP)
1863# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1864
1865# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1866
1867# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1868!$omp end target teams loop
1869# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1870#endif
1871# 460 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1872
1873
1874 end subroutine s_igr_sigma_x
1875
1876 !> @brief Evaluates the approximate Riemann solver for the IGR scheme along a given coordinate direction.
1877 subroutine s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
1878#ifdef _CRAYFTN
1879 !DIR$ OPTIMIZE (-haggress)
1880#endif
1881 type(scalar_field), &
1882 dimension(sys_size), &
1883 intent(inout) :: rhs_vf
1884 type(scalar_field), &
1885 dimension(sys_size), &
1886 intent(inout) :: q_cons_vf
1887 integer, intent(in) :: idir
1888
1889 real(wp) :: cfl
1890 real(wp) :: rho_l, gamma_l, pi_inf_l, e_l, mu_l, f_l, pres_l
1891 real(wp) :: rho_r, gamma_r, pi_inf_r, e_r, mu_r, f_r, pres_r
1892 real(wp), dimension(3) :: vflux_l_arr, vflux_r_arr
1893 real(wp), dimension(-1:1) :: rho_sf_small
1894# 483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1895 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_l, alpha_r, alpha_rho_r
1896 real(wp), dimension(3) :: vel_l, vel_r
1897 real(wp), dimension(3, 3) :: dvel
1898 real(wp), dimension(3) :: dvel_small
1899# 493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1900
1901 if (idir == 1) then
1902 if (p == 0) then
1903# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1904
1905# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1906
1907# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1908#if defined(MFC_OpenACC)
1909# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1910!$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)
1911# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1912#elif defined(MFC_OpenMP)
1913# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1914
1915# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1916
1917# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1918
1919# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1920!$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)
1921# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1922#endif
1923# 497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1924
1925 do l = 0, p
1926 do k = 0, n
1927 do j = -1, m
1928
1929 vflux_l_arr = 0._wp
1930 vflux_r_arr = 0._wp
1931
1932# 512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1933
1934# 512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1935#if defined(MFC_OpenACC)
1936# 512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1937!$acc loop seq
1938# 512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1939#elif defined(MFC_OpenMP)
1940# 512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1941
1942# 512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1943#endif
1944 do q = vidxb, vidxe
1945 !x-direction contributions
1946
1947# 515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1948#if defined(MFC_OpenACC)
1949# 515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1950!$acc loop seq
1951# 515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1952#elif defined(MFC_OpenMP)
1953# 515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1954
1955# 515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1956#endif
1957 do i = -1, 1
1958 rho_l = 0._wp
1959
1960# 518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1961#if defined(MFC_OpenACC)
1962# 518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1963!$acc loop seq
1964# 518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1965#elif defined(MFC_OpenMP)
1966# 518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1967
1968# 518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1969#endif
1970 do r = 1, num_fluids
1971 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
1972 end do
1973 rho_sf_small(i) = rho_l
1974 end do
1975
1976 dvel_small(1) = (1/(2._wp*dx(j)))*( &
1977 1._wp*q_cons_vf(momxb)%sf(j + 1 + q, k, l)/rho_sf_small(1) - &
1978 1._wp*q_cons_vf(momxb)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
1979 dvel_small(2) = (1/(2._wp*dx(j)))*( &
1980 q_cons_vf(momxb + 1)%sf(j + 1 + q, k, l)/rho_sf_small(1) - &
1981 q_cons_vf(momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
1982
1983 if (q == 0) then
1984
1985# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1986#if defined(MFC_OpenACC)
1987# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1988!$acc loop seq
1989# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1990#elif defined(MFC_OpenMP)
1991# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1992
1993# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1994#endif
1995 do i = 1, num_dims
1996 dvel(i, 1) = dvel_small(i)
1997 end do
1998 end if
1999
2000 if (q > vidxb) then
2001 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
2002 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
2003 end if
2004 if (q < vidxe) then
2005 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
2006 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
2007 end if
2008
2009 !y-direction contributions
2010
2011# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2012#if defined(MFC_OpenACC)
2013# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2014!$acc loop seq
2015# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2016#elif defined(MFC_OpenMP)
2017# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2018
2019# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2020#endif
2021 do i = -1, 1
2022 rho_l = 0._wp
2023
2024# 552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2025#if defined(MFC_OpenACC)
2026# 552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2027!$acc loop seq
2028# 552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2029#elif defined(MFC_OpenMP)
2030# 552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2031
2032# 552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2033#endif
2034 do r = 1, num_fluids
2035 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
2036 end do
2037 rho_sf_small(i) = rho_l
2038 end do
2039
2040 dvel_small(1) = (1/(2._wp*dy(k)))*( &
2041 q_cons_vf(momxb)%sf(j + q, k + 1, l)/rho_sf_small(1) - &
2042 q_cons_vf(momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
2043 dvel_small(2) = (1/(2._wp*dy(k)))*( &
2044 q_cons_vf(momxb + 1)%sf(j + q, k + 1, l)/rho_sf_small(1) - &
2045 q_cons_vf(momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
2046
2047 if (q == 0) then
2048
2049# 567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2050#if defined(MFC_OpenACC)
2051# 567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2052!$acc loop seq
2053# 567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2054#elif defined(MFC_OpenMP)
2055# 567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2056
2057# 567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2058#endif
2059 do i = 1, num_dims
2060 dvel(i, 2) = dvel_small(i)
2061 end do
2062 end if
2063
2064 if (q > vidxb) then
2065 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
2066 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
2067 end if
2068 if (q < vidxe) then
2069 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
2070 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
2071 end if
2072
2073 if (q == 0) then
2074 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1)) &
2075 + dvel(1, 1)**2._wp + dvel(2, 2)**2._wp &
2076 + (dvel(1, 1) + dvel(2, 2))**2._wp), kind=stp)
2077 end if
2078 end do
2079
2080
2081# 589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2082#if defined(MFC_OpenACC)
2083# 589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2084!$acc loop seq
2085# 589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2086#elif defined(MFC_OpenMP)
2087# 589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2088
2089# 589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2090#endif
2091 do i = 1, num_fluids
2092 alpha_rho_l(i) = 0._wp
2093 alpha_rho_r(i) = 0._wp
2094 alpha_l(i) = 0._wp
2095 alpha_r(i) = 0._wp
2096 end do
2097
2098# 596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2099#if defined(MFC_OpenACC)
2100# 596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2101!$acc loop seq
2102# 596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2103#elif defined(MFC_OpenMP)
2104# 596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2105
2106# 596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2107#endif
2108 do i = 1, num_dims
2109 vel_l(i) = 0._wp
2110 vel_r(i) = 0._wp
2111 end do
2112
2113
2114# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2115#if defined(MFC_OpenACC)
2116# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2117!$acc loop seq
2118# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2119#elif defined(MFC_OpenMP)
2120# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2121
2122# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2123#endif
2124 do q = vidxb + 1, vidxe
2125
2126# 604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2127#if defined(MFC_OpenACC)
2128# 604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2129!$acc loop seq
2130# 604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2131#elif defined(MFC_OpenMP)
2132# 604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2133
2134# 604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2135#endif
2136 do i = 1, num_fluids
2137 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
2138 end do
2139
2140 if (num_fluids > 1) then
2141
2142# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2143#if defined(MFC_OpenACC)
2144# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2145!$acc loop seq
2146# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2147#elif defined(MFC_OpenMP)
2148# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2149
2150# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2151#endif
2152 do i = 1, num_fluids - 1
2153 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(e_idx + i)%sf(j + q, k, l)
2154 end do
2155 else
2156 alpha_l(1) = 1._wp
2157 end if
2158
2159
2160# 618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2161#if defined(MFC_OpenACC)
2162# 618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2163!$acc loop seq
2164# 618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2165#elif defined(MFC_OpenMP)
2166# 618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2167
2168# 618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2169#endif
2170 do i = 1, num_dims
2171 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(momxb + i - 1)%sf(j + q, k, l)
2172 end do
2173 end do
2174
2175
2176# 624 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2177#if defined(MFC_OpenACC)
2178# 624 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2179!$acc loop seq
2180# 624 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2181#elif defined(MFC_OpenMP)
2182# 624 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2183
2184# 624 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2185#endif
2186 do q = vidxb, vidxe - 1
2187
2188# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2189#if defined(MFC_OpenACC)
2190# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2191!$acc loop seq
2192# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2193#elif defined(MFC_OpenMP)
2194# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2195
2196# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2197#endif
2198 do i = 1, num_fluids
2199 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
2200 end do
2201
2202 if (num_fluids > 1) then
2203
2204# 632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2205#if defined(MFC_OpenACC)
2206# 632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2207!$acc loop seq
2208# 632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2209#elif defined(MFC_OpenMP)
2210# 632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2211
2212# 632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2213#endif
2214 do i = 1, num_fluids - 1
2215 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(e_idx + i)%sf(j + q, k, l)
2216 end do
2217 else
2218 alpha_r(1) = 1._wp
2219 end if
2220
2221
2222# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2223#if defined(MFC_OpenACC)
2224# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2225!$acc loop seq
2226# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2227#elif defined(MFC_OpenMP)
2228# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2229
2230# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2231#endif
2232 do i = 1, num_dims
2233 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(momxb + i - 1)%sf(j + q, k, l)
2234 end do
2235 end do
2236
2237 if (num_fluids > 1) then
2238
2239 alpha_l(num_fluids) = 1._wp
2240 alpha_r(num_fluids) = 1._wp
2241
2242
2243# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2244#if defined(MFC_OpenACC)
2245# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2246!$acc loop seq
2247# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2248#elif defined(MFC_OpenMP)
2249# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2250
2251# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2252#endif
2253 do i = 1, num_fluids - 1
2254 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
2255 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
2256 end do
2257 end if
2258
2259 rho_l = 0._wp; rho_r = 0._wp
2260 gamma_l = 0._wp; gamma_r = 0._wp
2261 pi_inf_l = 0._wp; pi_inf_r = 0._wp
2262
2263
2264# 662 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2265#if defined(MFC_OpenACC)
2266# 662 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2267!$acc loop seq
2268# 662 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2269#elif defined(MFC_OpenMP)
2270# 662 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2271
2272# 662 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2273#endif
2274 do i = 1, num_fluids
2275 rho_l = rho_l + alpha_rho_l(i)
2276 gamma_l = gamma_l + alpha_l(i)*gammas(i)
2277 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
2278
2279 rho_r = rho_r + alpha_rho_r(i)
2280 gamma_r = gamma_r + alpha_r(i)*gammas(i)
2281 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
2282 end do
2283
2284
2285# 673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2286#if defined(MFC_OpenACC)
2287# 673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2288!$acc loop seq
2289# 673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2290#elif defined(MFC_OpenMP)
2291# 673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2292
2293# 673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2294#endif
2295 do i = 1, num_dims
2296 vel_l(i) = vel_l(i)/rho_l
2297 vel_r(i) = vel_r(i)/rho_r
2298 end do
2299
2300 if (viscous) then
2301 mu_l = 0._wp; mu_r = 0._wp
2302
2303# 681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2304#if defined(MFC_OpenACC)
2305# 681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2306!$acc loop seq
2307# 681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2308#elif defined(MFC_OpenMP)
2309# 681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2310
2311# 681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2312#endif
2313 do i = 1, num_fluids
2314 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
2315 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
2316 end do
2317
2318
2319# 687 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2320#if defined(MFC_OpenACC)
2321# 687 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2322!$acc atomic update
2323# 687 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2324#elif defined(MFC_OpenMP)
2325# 687 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2326!$omp atomic update
2327# 687 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2328#endif
2329 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) - &
2330 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2331
2332# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2333#if defined(MFC_OpenACC)
2334# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2335!$acc atomic update
2336# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2337#elif defined(MFC_OpenMP)
2338# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2339!$omp atomic update
2340# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2341#endif
2342 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
2343 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
2344
2345
2346# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2347#if defined(MFC_OpenACC)
2348# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2349!$acc atomic update
2350# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2351#elif defined(MFC_OpenMP)
2352# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2353!$omp atomic update
2354# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2355#endif
2356 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
2357 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
2358
2359# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2360#if defined(MFC_OpenACC)
2361# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2362!$acc atomic update
2363# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2364#elif defined(MFC_OpenMP)
2365# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2366!$omp atomic update
2367# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2368#endif
2369 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
2370 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
2371
2372
2373# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2374#if defined(MFC_OpenACC)
2375# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2376!$acc atomic update
2377# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2378#elif defined(MFC_OpenMP)
2379# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2380!$omp atomic update
2381# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2382#endif
2383 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) - &
2384 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2385
2386# 704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2387#if defined(MFC_OpenACC)
2388# 704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2389!$acc atomic update
2390# 704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2391#elif defined(MFC_OpenMP)
2392# 704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2393!$omp atomic update
2394# 704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2395#endif
2396 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
2397 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
2398
2399
2400# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2401#if defined(MFC_OpenACC)
2402# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2403!$acc atomic update
2404# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2405#elif defined(MFC_OpenMP)
2406# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2407!$omp atomic update
2408# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2409#endif
2410 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
2411 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
2412
2413# 711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2414#if defined(MFC_OpenACC)
2415# 711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2416!$acc atomic update
2417# 711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2418#elif defined(MFC_OpenMP)
2419# 711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2420!$omp atomic update
2421# 711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2422#endif
2423 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
2424 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
2425
2426
2427# 715 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2428#if defined(MFC_OpenACC)
2429# 715 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2430!$acc atomic update
2431# 715 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2432#elif defined(MFC_OpenMP)
2433# 715 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2434!$omp atomic update
2435# 715 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2436#endif
2437 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) - &
2438 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2439
2440# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2441#if defined(MFC_OpenACC)
2442# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2443!$acc atomic update
2444# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2445#elif defined(MFC_OpenMP)
2446# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2447!$omp atomic update
2448# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2449#endif
2450 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
2451 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
2452
2453
2454# 722 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2455#if defined(MFC_OpenACC)
2456# 722 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2457!$acc atomic update
2458# 722 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2459#elif defined(MFC_OpenMP)
2460# 722 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2461!$omp atomic update
2462# 722 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2463#endif
2464 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
2465 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
2466
2467# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2468#if defined(MFC_OpenACC)
2469# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2470!$acc atomic update
2471# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2472#elif defined(MFC_OpenMP)
2473# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2474!$omp atomic update
2475# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2476#endif
2477 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
2478 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
2479
2480
2481# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2482#if defined(MFC_OpenACC)
2483# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2484!$acc atomic update
2485# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2486#elif defined(MFC_OpenMP)
2487# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2488!$omp atomic update
2489# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2490#endif
2491 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) - &
2492 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2493
2494# 732 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2495#if defined(MFC_OpenACC)
2496# 732 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2497!$acc atomic update
2498# 732 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2499#elif defined(MFC_OpenMP)
2500# 732 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2501!$omp atomic update
2502# 732 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2503#endif
2504 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
2505 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
2506
2507
2508# 736 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2509#if defined(MFC_OpenACC)
2510# 736 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2511!$acc atomic update
2512# 736 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2513#elif defined(MFC_OpenMP)
2514# 736 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2515!$omp atomic update
2516# 736 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2517#endif
2518 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
2519 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
2520
2521# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2522#if defined(MFC_OpenACC)
2523# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2524!$acc atomic update
2525# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2526#elif defined(MFC_OpenMP)
2527# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2528!$omp atomic update
2529# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2530#endif
2531 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
2532 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
2533 end if
2534
2535 e_l = 0._wp; e_r = 0._wp
2536
2537
2538# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2539#if defined(MFC_OpenACC)
2540# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2541!$acc loop seq
2542# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2543#elif defined(MFC_OpenMP)
2544# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2545
2546# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2547#endif
2548 do q = vidxb + 1, vidxe
2549 e_l = e_l + coeff_l(q)*q_cons_vf(e_idx)%sf(j + q, k, l)
2550 end do
2551
2552
2553# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2554#if defined(MFC_OpenACC)
2555# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2556!$acc loop seq
2557# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2558#elif defined(MFC_OpenMP)
2559# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2560
2561# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2562#endif
2563 do q = vidxb, vidxe - 1
2564 e_r = e_r + coeff_r(q)*q_cons_vf(e_idx)%sf(j + q, k, l)
2565 end do
2566
2567 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, &
2568 e_r, gamma_r, pi_inf_r, rho_r, vel_r, &
2569 pres_l, pres_r, cfl)
2570
2571 do i = 1, num_fluids
2572
2573# 761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2574#if defined(MFC_OpenACC)
2575# 761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2576!$acc atomic update
2577# 761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2578#elif defined(MFC_OpenMP)
2579# 761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2580!$omp atomic update
2581# 761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2582#endif
2583 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, l) + &
2584 real((0.5_wp*dt*(alpha_rho_l(i)* &
2585 vel_l(1))*(1._wp/dx(j + 1)) - &
2586 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
2587
2588
2589# 767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2590#if defined(MFC_OpenACC)
2591# 767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2592!$acc atomic update
2593# 767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2594#elif defined(MFC_OpenMP)
2595# 767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2596!$omp atomic update
2597# 767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2598#endif
2599 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
2600 real((0.5_wp*dt*(alpha_rho_l(i)* &
2601 vel_l(1))*(1._wp/dx(j)) - &
2602 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
2603 end do
2604
2605 if (num_fluids > 1) then
2606
2607# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2608#if defined(MFC_OpenACC)
2609# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2610!$acc loop seq
2611# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2612#elif defined(MFC_OpenMP)
2613# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2614
2615# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2616#endif
2617 do i = 1, num_fluids - 1
2618
2619# 777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2620#if defined(MFC_OpenACC)
2621# 777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2622!$acc atomic update
2623# 777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2624#elif defined(MFC_OpenMP)
2625# 777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2626!$omp atomic update
2627# 777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2628#endif
2629 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) + &
2630 real((0.5_wp*dt*(alpha_l(i)* &
2631 vel_l(1))*(1._wp/dx(j + 1)) - &
2632 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
2633
2634
2635# 783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2636#if defined(MFC_OpenACC)
2637# 783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2638!$acc atomic update
2639# 783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2640#elif defined(MFC_OpenMP)
2641# 783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2642!$omp atomic update
2643# 783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2644#endif
2645 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) &
2646 - real((0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j + 1, k, l)*vel_l(1)*(1._wp/dx(j + 1))), kind=stp)
2647
2648
2649# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2650#if defined(MFC_OpenACC)
2651# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2652!$acc atomic update
2653# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2654#elif defined(MFC_OpenMP)
2655# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2656!$omp atomic update
2657# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2658#endif
2659 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
2660 real((0.5_wp*dt*(alpha_l(i)* &
2661 vel_l(1))*(1._wp/dx(j)) - &
2662 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j))), kind=stp)
2663
2664
2665# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2666#if defined(MFC_OpenACC)
2667# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2668!$acc atomic update
2669# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2670#elif defined(MFC_OpenMP)
2671# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2672!$omp atomic update
2673# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2674#endif
2675 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
2676 + real((0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_l(1)*(1._wp/dx(j))), kind=stp)
2677 end do
2678 end if
2679
2680
2681# 799 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2682#if defined(MFC_OpenACC)
2683# 799 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2684!$acc atomic update
2685# 799 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2686#elif defined(MFC_OpenMP)
2687# 799 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2688!$omp atomic update
2689# 799 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2690#endif
2691 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) + &
2692 real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + &
2693 pres_l)*(1._wp/dx(j + 1)) - &
2694 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
2695
2696
2697# 805 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2698#if defined(MFC_OpenACC)
2699# 805 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2700!$acc atomic update
2701# 805 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2702#elif defined(MFC_OpenMP)
2703# 805 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2704!$omp atomic update
2705# 805 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2706#endif
2707 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) + &
2708 real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) - &
2709 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
2710
2711
2712# 810 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2713#if defined(MFC_OpenACC)
2714# 810 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2715!$acc atomic update
2716# 810 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2717#elif defined(MFC_OpenMP)
2718# 810 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2719!$omp atomic update
2720# 810 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2721#endif
2722 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) + &
2723 real((0.5_wp*dt*(vel_l(1)*(e_l + &
2724 pres_l))*(1._wp/dx(j + 1)) - &
2725 0.5_wp*dt*cfl*(e_l)*(1._wp/dx(j + 1))), kind=stp)
2726
2727
2728# 816 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2729#if defined(MFC_OpenACC)
2730# 816 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2731!$acc atomic update
2732# 816 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2733#elif defined(MFC_OpenMP)
2734# 816 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2735!$omp atomic update
2736# 816 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2737#endif
2738 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
2739 real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + &
2740 pres_l)*(1._wp/dx(j)) - &
2741 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
2742
2743
2744# 822 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2745#if defined(MFC_OpenACC)
2746# 822 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2747!$acc atomic update
2748# 822 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2749#elif defined(MFC_OpenMP)
2750# 822 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2751!$omp atomic update
2752# 822 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2753#endif
2754 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
2755 real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) - &
2756 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
2757
2758
2759# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2760#if defined(MFC_OpenACC)
2761# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2762!$acc atomic update
2763# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2764#elif defined(MFC_OpenMP)
2765# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2766!$omp atomic update
2767# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2768#endif
2769 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
2770 real((0.5_wp*dt*(vel_l(1)*(e_l + &
2771 pres_l))*(1._wp/dx(j)) - &
2772 0.5_wp*dt*cfl*(e_l)*(1._wp/dx(j))), kind=stp)
2773
2774
2775# 833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2776#if defined(MFC_OpenACC)
2777# 833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2778!$acc loop seq
2779# 833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2780#elif defined(MFC_OpenMP)
2781# 833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2782
2783# 833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2784#endif
2785 do i = 1, num_fluids
2786
2787# 835 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2788#if defined(MFC_OpenACC)
2789# 835 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2790!$acc atomic update
2791# 835 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2792#elif defined(MFC_OpenMP)
2793# 835 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2794!$omp atomic update
2795# 835 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2796#endif
2797 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, l) + &
2798 real((0.5_wp*dt*(alpha_rho_r(i)* &
2799 vel_r(1))*(1._wp/dx(j + 1)) + &
2800 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
2801
2802
2803# 841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2804#if defined(MFC_OpenACC)
2805# 841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2806!$acc atomic update
2807# 841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2808#elif defined(MFC_OpenMP)
2809# 841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2810!$omp atomic update
2811# 841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2812#endif
2813 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
2814 real((0.5_wp*dt*(alpha_rho_r(i)* &
2815 vel_r(1))*(1._wp/dx(j)) + &
2816 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
2817 end do
2818
2819 if (num_fluids > 1) then
2820
2821# 849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2822#if defined(MFC_OpenACC)
2823# 849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2824!$acc loop seq
2825# 849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2826#elif defined(MFC_OpenMP)
2827# 849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2828
2829# 849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2830#endif
2831 do i = 1, num_fluids - 1
2832
2833# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2834#if defined(MFC_OpenACC)
2835# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2836!$acc atomic update
2837# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2838#elif defined(MFC_OpenMP)
2839# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2840!$omp atomic update
2841# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2842#endif
2843 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) + &
2844 real((0.5_wp*dt*(alpha_r(i)* &
2845 vel_r(1))*(1._wp/dx(j + 1)) + &
2846 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
2847
2848
2849# 857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2850#if defined(MFC_OpenACC)
2851# 857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2852!$acc atomic update
2853# 857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2854#elif defined(MFC_OpenMP)
2855# 857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2856!$omp atomic update
2857# 857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2858#endif
2859 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) &
2860 - real((0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j + 1, k, l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
2861
2862
2863# 861 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2864#if defined(MFC_OpenACC)
2865# 861 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2866!$acc atomic update
2867# 861 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2868#elif defined(MFC_OpenMP)
2869# 861 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2870!$omp atomic update
2871# 861 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2872#endif
2873 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
2874 real((0.5_wp*dt*(alpha_r(i)* &
2875 vel_r(1))*(1._wp/dx(j)) + &
2876 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
2877
2878
2879# 867 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2880#if defined(MFC_OpenACC)
2881# 867 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2882!$acc atomic update
2883# 867 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2884#elif defined(MFC_OpenMP)
2885# 867 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2886!$omp atomic update
2887# 867 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2888#endif
2889 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
2890 + real((0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
2891 end do
2892 end if
2893
2894
2895# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2896#if defined(MFC_OpenACC)
2897# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2898!$acc atomic update
2899# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2900#elif defined(MFC_OpenMP)
2901# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2902!$omp atomic update
2903# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2904#endif
2905 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) + &
2906 real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + &
2907 pres_r)*(1._wp/dx(j + 1)) + &
2908 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
2909
2910
2911# 879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2912#if defined(MFC_OpenACC)
2913# 879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2914!$acc atomic update
2915# 879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2916#elif defined(MFC_OpenMP)
2917# 879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2918!$omp atomic update
2919# 879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2920#endif
2921 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) + &
2922 real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) + &
2923 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
2924
2925
2926# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2927#if defined(MFC_OpenACC)
2928# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2929!$acc atomic update
2930# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2931#elif defined(MFC_OpenMP)
2932# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2933!$omp atomic update
2934# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2935#endif
2936 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) + &
2937 real((0.5_wp*dt*(vel_r(1)*(e_r + &
2938 pres_r))*(1._wp/dx(j + 1)) + &
2939 0.5_wp*dt*cfl*(e_r)*(1._wp/dx(j + 1))), kind=stp)
2940
2941
2942# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2943#if defined(MFC_OpenACC)
2944# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2945!$acc atomic update
2946# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2947#elif defined(MFC_OpenMP)
2948# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2949!$omp atomic update
2950# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2951#endif
2952 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
2953 real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + &
2954 pres_r)*(1._wp/dx(j)) + &
2955 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
2956
2957
2958# 896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2959#if defined(MFC_OpenACC)
2960# 896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2961!$acc atomic update
2962# 896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2963#elif defined(MFC_OpenMP)
2964# 896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2965!$omp atomic update
2966# 896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2967#endif
2968 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
2969 real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) + &
2970 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
2971
2972
2973# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2974#if defined(MFC_OpenACC)
2975# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2976!$acc atomic update
2977# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2978#elif defined(MFC_OpenMP)
2979# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2980!$omp atomic update
2981# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2982#endif
2983 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
2984 real((0.5_wp*dt*(vel_r(1)*(e_r + &
2985 pres_r))*(1._wp/dx(j)) + &
2986 0.5_wp*dt*cfl*(e_r)*(1._wp/dx(j))), kind=stp)
2987
2988 end do
2989 end do
2990 end do
2991
2992# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2993
2994# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2995#if defined(MFC_OpenACC)
2996# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2997!$acc end parallel loop
2998# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2999#elif defined(MFC_OpenMP)
3000# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3001
3002# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3003
3004# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3005!$omp end target teams loop
3006# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3007#endif
3008# 910 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3009
3010# 912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3011 else
3012# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3013
3014# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3015
3016# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3017#if defined(MFC_OpenACC)
3018# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3019!$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)
3020# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3021#elif defined(MFC_OpenMP)
3022# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3023
3024# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3025
3026# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3027
3028# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3029!$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)
3030# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3031#endif
3032# 914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3033
3034 do l = 0, p
3035 do k = 0, n
3036 do j = -1, m
3037
3038 vflux_l_arr = 0._wp
3039 vflux_r_arr = 0._wp
3040
3041# 929 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3042
3043# 929 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3044#if defined(MFC_OpenACC)
3045# 929 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3046!$acc loop seq
3047# 929 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3048#elif defined(MFC_OpenMP)
3049# 929 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3050
3051# 929 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3052#endif
3053 do q = vidxb, vidxe
3054
3055 !x-direction contributions
3056
3057# 933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3058#if defined(MFC_OpenACC)
3059# 933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3060!$acc loop seq
3061# 933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3062#elif defined(MFC_OpenMP)
3063# 933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3064
3065# 933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3066#endif
3067 do i = -1, 1
3068 rho_l = 0._wp
3069
3070# 936 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3071#if defined(MFC_OpenACC)
3072# 936 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3073!$acc loop seq
3074# 936 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3075#elif defined(MFC_OpenMP)
3076# 936 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3077
3078# 936 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3079#endif
3080 do r = 1, num_fluids
3081 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
3082 end do
3083 rho_sf_small(i) = rho_l
3084 end do
3085
3086 dvel_small(1) = (1/(2._wp*dx(j)))*( &
3087 q_cons_vf(momxb)%sf(j + 1 + q, k, l)/rho_sf_small(1) - &
3088 q_cons_vf(momxb)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3089 dvel_small(2) = (1/(2._wp*dx(j)))*( &
3090 q_cons_vf(momxb + 1)%sf(j + 1 + q, k, l)/rho_sf_small(1) - &
3091 q_cons_vf(momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3092 dvel_small(3) = (1/(2._wp*dx(j)))*( &
3093 q_cons_vf(momxb + 2)%sf(j + 1 + q, k, l)/rho_sf_small(1) - &
3094 q_cons_vf(momxb + 2)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3095
3096 if (q == 0) then
3097
3098# 954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3099#if defined(MFC_OpenACC)
3100# 954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3101!$acc loop seq
3102# 954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3103#elif defined(MFC_OpenMP)
3104# 954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3105
3106# 954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3107#endif
3108 do i = 1, num_dims
3109 dvel(i, 1) = dvel_small(i)
3110 end do
3111 end if
3112
3113 if (q > vidxb) then
3114 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
3115 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
3116 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
3117 end if
3118 if (q < vidxe) then
3119 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
3120 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
3121 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
3122 end if
3123
3124 !y-direction contributions
3125
3126# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3127#if defined(MFC_OpenACC)
3128# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3129!$acc loop seq
3130# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3131#elif defined(MFC_OpenMP)
3132# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3133
3134# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3135#endif
3136 do i = -1, 1
3137 rho_l = 0._wp
3138
3139# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3140#if defined(MFC_OpenACC)
3141# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3142!$acc loop seq
3143# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3144#elif defined(MFC_OpenMP)
3145# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3146
3147# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3148#endif
3149 do r = 1, num_fluids
3150 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
3151 end do
3152 rho_sf_small(i) = rho_l
3153 end do
3154
3155 dvel_small(1) = (1/(2._wp*dy(k)))*( &
3156 q_cons_vf(momxb)%sf(j + q, k + 1, l)/rho_sf_small(1) - &
3157 q_cons_vf(momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3158 dvel_small(2) = (1/(2._wp*dy(k)))*( &
3159 q_cons_vf(momxb + 1)%sf(j + q, k + 1, l)/rho_sf_small(1) - &
3160 q_cons_vf(momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3161 if (q == 0) dvel_small(3) = (1/(2._wp*dy(k)))*( &
3162 q_cons_vf(momxb + 2)%sf(j + q, k + 1, l)/rho_sf_small(1) - &
3163 q_cons_vf(momxb + 2)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3164 if (q == 0) then
3165
3166# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3167#if defined(MFC_OpenACC)
3168# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3169!$acc loop seq
3170# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3171#elif defined(MFC_OpenMP)
3172# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3173
3174# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3175#endif
3176 do i = 1, num_dims
3177 dvel(i, 2) = dvel_small(i)
3178 end do
3179 end if
3180
3181 if (q > vidxb) then
3182 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
3183 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
3184 end if
3185 if (q < vidxe) then
3186 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
3187 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
3188 end if
3189
3190 !z-direction contributions
3191
3192# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3193#if defined(MFC_OpenACC)
3194# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3195!$acc loop seq
3196# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3197#elif defined(MFC_OpenMP)
3198# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3199
3200# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3201#endif
3202 do i = -1, 1
3203 rho_l = 0._wp
3204
3205# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3206#if defined(MFC_OpenACC)
3207# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3208!$acc loop seq
3209# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3210#elif defined(MFC_OpenMP)
3211# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3212
3213# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3214#endif
3215 do r = 1, num_fluids
3216 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k, l + i)
3217 end do
3218 rho_sf_small(i) = rho_l
3219 end do
3220
3221 dvel_small(1) = (1/(2._wp*dz(l)))*( &
3222 q_cons_vf(momxb)%sf(j + q, k, l + 1)/rho_sf_small(1) - &
3223 q_cons_vf(momxb)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3224 if (q == 0) dvel_small(2) = (1/(2._wp*dz(l)))*( &
3225 q_cons_vf(momxb + 1)%sf(j + q, k, l + 1)/rho_sf_small(1) - &
3226 q_cons_vf(momxb + 1)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3227 dvel_small(3) = (1/(2._wp*dz(l)))*( &
3228 q_cons_vf(momxb + 2)%sf(j + q, k, l + 1)/rho_sf_small(1) - &
3229 q_cons_vf(momxb + 2)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3230 if (q == 0) then
3231
3232# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3233#if defined(MFC_OpenACC)
3234# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3235!$acc loop seq
3236# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3237#elif defined(MFC_OpenMP)
3238# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3239
3240# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3241#endif
3242 do i = 1, num_dims
3243 dvel(i, 3) = dvel_small(i)
3244 end do
3245 end if
3246
3247 if (q > vidxb) then
3248 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(1))
3249 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
3250 end if
3251 if (q < vidxe) then
3252 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(1))
3253 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
3254 end if
3255
3256 if (q == 0) then
3257 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1) &
3258 + dvel(1, 3)*dvel(3, 1) &
3259 + dvel(2, 3)*dvel(3, 2)) &
3260 + dvel(1, 1)**2._wp + dvel(2, 2)**2._wp &
3261 + dvel(3, 3)**2._wp &
3262 + (dvel(1, 1) + dvel(2, 2) + dvel(3, 3))**2._wp), kind=stp)
3263 end if
3264 end do
3265
3266
3267# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3268#if defined(MFC_OpenACC)
3269# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3270!$acc loop seq
3271# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3272#elif defined(MFC_OpenMP)
3273# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3274
3275# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3276#endif
3277 do i = 1, num_fluids
3278 alpha_rho_l(i) = 0._wp
3279 alpha_rho_r(i) = 0._wp
3280 alpha_l(i) = 0._wp
3281 alpha_r(i) = 0._wp
3282 end do
3283
3284# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3285#if defined(MFC_OpenACC)
3286# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3287!$acc loop seq
3288# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3289#elif defined(MFC_OpenMP)
3290# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3291
3292# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3293#endif
3294 do i = 1, num_dims
3295 vel_l(i) = 0._wp
3296 vel_r(i) = 0._wp
3297 end do
3298
3299
3300# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3301#if defined(MFC_OpenACC)
3302# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3303!$acc loop seq
3304# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3305#elif defined(MFC_OpenMP)
3306# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3307
3308# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3309#endif
3310 do q = vidxb + 1, vidxe
3311
3312# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3313#if defined(MFC_OpenACC)
3314# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3315!$acc loop seq
3316# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3317#elif defined(MFC_OpenMP)
3318# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3319
3320# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3321#endif
3322 do i = 1, num_fluids
3323 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
3324 end do
3325
3326 if (num_fluids > 1) then
3327
3328# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3329#if defined(MFC_OpenACC)
3330# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3331!$acc loop seq
3332# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3333#elif defined(MFC_OpenMP)
3334# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3335
3336# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3337#endif
3338 do i = 1, num_fluids - 1
3339 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(e_idx + i)%sf(j + q, k, l)
3340 end do
3341 else
3342 alpha_l(1) = 1._wp
3343 end if
3344
3345
3346# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3347#if defined(MFC_OpenACC)
3348# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3349!$acc loop seq
3350# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3351#elif defined(MFC_OpenMP)
3352# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3353
3354# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3355#endif
3356 do i = 1, num_dims
3357 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(momxb + i - 1)%sf(j + q, k, l)
3358 end do
3359 end do
3360
3361
3362# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3363#if defined(MFC_OpenACC)
3364# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3365!$acc loop seq
3366# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3367#elif defined(MFC_OpenMP)
3368# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3369
3370# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3371#endif
3372 do q = vidxb, vidxe - 1
3373
3374# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3375#if defined(MFC_OpenACC)
3376# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3377!$acc loop seq
3378# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3379#elif defined(MFC_OpenMP)
3380# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3381
3382# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3383#endif
3384 do i = 1, num_fluids
3385 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
3386 end do
3387
3388 if (num_fluids > 1) then
3389
3390# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3391#if defined(MFC_OpenACC)
3392# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3393!$acc loop seq
3394# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3395#elif defined(MFC_OpenMP)
3396# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3397
3398# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3399#endif
3400 do i = 1, num_fluids - 1
3401 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(e_idx + i)%sf(j + q, k, l)
3402 end do
3403 else
3404 alpha_r(1) = 1._wp
3405 end if
3406
3407
3408# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3409#if defined(MFC_OpenACC)
3410# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3411!$acc loop seq
3412# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3413#elif defined(MFC_OpenMP)
3414# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3415
3416# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3417#endif
3418 do i = 1, num_dims
3419 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(momxb + i - 1)%sf(j + q, k, l)
3420 end do
3421 end do
3422
3423 if (num_fluids > 1) then
3424
3425 alpha_l(num_fluids) = 1._wp
3426 alpha_r(num_fluids) = 1._wp
3427
3428
3429# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3430#if defined(MFC_OpenACC)
3431# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3432!$acc loop seq
3433# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3434#elif defined(MFC_OpenMP)
3435# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3436
3437# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3438#endif
3439 do i = 1, num_fluids - 1
3440 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
3441 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
3442 end do
3443 end if
3444
3445 rho_l = 0._wp; rho_r = 0._wp
3446 gamma_l = 0._wp; gamma_r = 0._wp
3447 pi_inf_l = 0._wp; pi_inf_r = 0._wp
3448
3449
3450# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3451#if defined(MFC_OpenACC)
3452# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3453!$acc loop seq
3454# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3455#elif defined(MFC_OpenMP)
3456# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3457
3458# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3459#endif
3460 do i = 1, num_fluids
3461 rho_l = rho_l + alpha_rho_l(i)
3462 gamma_l = gamma_l + alpha_l(i)*gammas(i)
3463 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
3464
3465 rho_r = rho_r + alpha_rho_r(i)
3466 gamma_r = gamma_r + alpha_r(i)*gammas(i)
3467 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
3468 end do
3469
3470
3471# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3472#if defined(MFC_OpenACC)
3473# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3474!$acc loop seq
3475# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3476#elif defined(MFC_OpenMP)
3477# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3478
3479# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3480#endif
3481 do i = 1, num_dims
3482 vel_l(i) = vel_l(i)/rho_l
3483 vel_r(i) = vel_r(i)/rho_r
3484 end do
3485
3486 if (viscous) then
3487 mu_l = 0._wp
3488 mu_r = 0._wp
3489
3490# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3491#if defined(MFC_OpenACC)
3492# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3493!$acc loop seq
3494# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3495#elif defined(MFC_OpenMP)
3496# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3497
3498# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3499#endif
3500 do i = 1, num_fluids
3501 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
3502 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
3503 end do
3504
3505
3506# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3507#if defined(MFC_OpenACC)
3508# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3509!$acc atomic update
3510# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3511#elif defined(MFC_OpenMP)
3512# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3513!$omp atomic update
3514# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3515#endif
3516 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) - &
3517 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3518
3519# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3520#if defined(MFC_OpenACC)
3521# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3522!$acc atomic update
3523# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3524#elif defined(MFC_OpenMP)
3525# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3526!$omp atomic update
3527# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3528#endif
3529 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
3530 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
3531
3532
3533# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3534#if defined(MFC_OpenACC)
3535# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3536!$acc atomic update
3537# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3538#elif defined(MFC_OpenMP)
3539# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3540!$omp atomic update
3541# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3542#endif
3543 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
3544 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
3545
3546# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3547#if defined(MFC_OpenACC)
3548# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3549!$acc atomic update
3550# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3551#elif defined(MFC_OpenMP)
3552# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3553!$omp atomic update
3554# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3555#endif
3556 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
3557 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
3558
3559
3560# 1166 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3561#if defined(MFC_OpenACC)
3562# 1166 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3563!$acc atomic update
3564# 1166 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3565#elif defined(MFC_OpenMP)
3566# 1166 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3567!$omp atomic update
3568# 1166 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3569#endif
3570 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) - &
3571 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3572
3573# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3574#if defined(MFC_OpenACC)
3575# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3576!$acc atomic update
3577# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3578#elif defined(MFC_OpenMP)
3579# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3580!$omp atomic update
3581# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3582#endif
3583 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
3584 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
3585
3586
3587# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3588#if defined(MFC_OpenACC)
3589# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3590!$acc atomic update
3591# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3592#elif defined(MFC_OpenMP)
3593# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3594!$omp atomic update
3595# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3596#endif
3597 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
3598 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
3599
3600# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3601#if defined(MFC_OpenACC)
3602# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3603!$acc atomic update
3604# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3605#elif defined(MFC_OpenMP)
3606# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3607!$omp atomic update
3608# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3609#endif
3610 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
3611 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
3612
3613
3614# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3615#if defined(MFC_OpenACC)
3616# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3617!$acc atomic update
3618# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3619#elif defined(MFC_OpenMP)
3620# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3621!$omp atomic update
3622# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3623#endif
3624 rhs_vf(momxb + 2)%sf(j + 1, k, l) = rhs_vf(momxb + 2)%sf(j + 1, k, l) - &
3625 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3626
3627# 1183 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3628#if defined(MFC_OpenACC)
3629# 1183 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3630!$acc atomic update
3631# 1183 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3632#elif defined(MFC_OpenMP)
3633# 1183 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3634!$omp atomic update
3635# 1183 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3636#endif
3637 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
3638 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j + 1)), kind=stp)
3639
3640
3641# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3642#if defined(MFC_OpenACC)
3643# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3644!$acc atomic update
3645# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3646#elif defined(MFC_OpenMP)
3647# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3648!$omp atomic update
3649# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3650#endif
3651 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) + &
3652 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j)), kind=stp)
3653
3654# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3655#if defined(MFC_OpenACC)
3656# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3657!$acc atomic update
3658# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3659#elif defined(MFC_OpenMP)
3660# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3661!$omp atomic update
3662# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3663#endif
3664 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
3665 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j)), kind=stp)
3666
3667
3668# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3669#if defined(MFC_OpenACC)
3670# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3671!$acc atomic update
3672# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3673#elif defined(MFC_OpenMP)
3674# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3675!$omp atomic update
3676# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3677#endif
3678 rhs_vf(momxb + 2)%sf(j + 1, k, l) = rhs_vf(momxb + 2)%sf(j + 1, k, l) - &
3679 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3680
3681# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3682#if defined(MFC_OpenACC)
3683# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3684!$acc atomic update
3685# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3686#elif defined(MFC_OpenMP)
3687# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3688!$omp atomic update
3689# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3690#endif
3691 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
3692 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j + 1)), kind=stp)
3693
3694
3695# 1201 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3696#if defined(MFC_OpenACC)
3697# 1201 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3698!$acc atomic update
3699# 1201 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3700#elif defined(MFC_OpenMP)
3701# 1201 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3702!$omp atomic update
3703# 1201 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3704#endif
3705 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) + &
3706 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j)), kind=stp)
3707
3708# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3709#if defined(MFC_OpenACC)
3710# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3711!$acc atomic update
3712# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3713#elif defined(MFC_OpenMP)
3714# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3715!$omp atomic update
3716# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3717#endif
3718 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
3719 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j)), kind=stp)
3720
3721
3722# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3723#if defined(MFC_OpenACC)
3724# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3725!$acc atomic update
3726# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3727#elif defined(MFC_OpenMP)
3728# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3729!$omp atomic update
3730# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3731#endif
3732 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) - &
3733 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3734
3735# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3736#if defined(MFC_OpenACC)
3737# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3738!$acc atomic update
3739# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3740#elif defined(MFC_OpenMP)
3741# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3742!$omp atomic update
3743# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3744#endif
3745 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
3746 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3747
3748
3749# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3750#if defined(MFC_OpenACC)
3751# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3752!$acc atomic update
3753# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3754#elif defined(MFC_OpenMP)
3755# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3756!$omp atomic update
3757# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3758#endif
3759 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
3760 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
3761
3762# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3763#if defined(MFC_OpenACC)
3764# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3765!$acc atomic update
3766# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3767#elif defined(MFC_OpenMP)
3768# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3769!$omp atomic update
3770# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3771#endif
3772 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
3773 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3774
3775
3776# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3777#if defined(MFC_OpenACC)
3778# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3779!$acc atomic update
3780# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3781#elif defined(MFC_OpenMP)
3782# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3783!$omp atomic update
3784# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3785#endif
3786 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) - &
3787 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3788
3789# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3790#if defined(MFC_OpenACC)
3791# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3792!$acc atomic update
3793# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3794#elif defined(MFC_OpenMP)
3795# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3796!$omp atomic update
3797# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3798#endif
3799 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) - &
3800 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
3801
3802
3803# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3804#if defined(MFC_OpenACC)
3805# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3806!$acc atomic update
3807# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3808#elif defined(MFC_OpenMP)
3809# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3810!$omp atomic update
3811# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3812#endif
3813 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
3814 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
3815
3816# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3817#if defined(MFC_OpenACC)
3818# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3819!$acc atomic update
3820# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3821#elif defined(MFC_OpenMP)
3822# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3823!$omp atomic update
3824# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3825#endif
3826 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
3827 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
3828 end if
3829
3830 e_l = 0._wp; e_r = 0._wp
3831
3832
3833# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3834#if defined(MFC_OpenACC)
3835# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3836!$acc loop seq
3837# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3838#elif defined(MFC_OpenMP)
3839# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3840
3841# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3842#endif
3843 do q = vidxb + 1, vidxe
3844 e_l = e_l + coeff_l(q)*q_cons_vf(e_idx)%sf(j + q, k, l)
3845 end do
3846
3847
3848# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3849#if defined(MFC_OpenACC)
3850# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3851!$acc loop seq
3852# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3853#elif defined(MFC_OpenMP)
3854# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3855
3856# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3857#endif
3858 do q = vidxb, vidxe - 1
3859 e_r = e_r + coeff_r(q)*q_cons_vf(e_idx)%sf(j + q, k, l)
3860 end do
3861
3862 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, &
3863 e_r, gamma_r, pi_inf_r, rho_r, vel_r, &
3864 pres_l, pres_r, cfl)
3865
3866
3867# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3868#if defined(MFC_OpenACC)
3869# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3870!$acc loop seq
3871# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3872#elif defined(MFC_OpenMP)
3873# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3874
3875# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3876#endif
3877 do i = 1, num_fluids
3878
3879# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3880#if defined(MFC_OpenACC)
3881# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3882!$acc atomic update
3883# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3884#elif defined(MFC_OpenMP)
3885# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3886!$omp atomic update
3887# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3888#endif
3889 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, l) + &
3890 real((0.5_wp*dt*(alpha_rho_l(i)* &
3891 vel_l(1))*(1._wp/dx(j + 1)) - &
3892 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
3893
3894
3895# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3896#if defined(MFC_OpenACC)
3897# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3898!$acc atomic update
3899# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3900#elif defined(MFC_OpenMP)
3901# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3902!$omp atomic update
3903# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3904#endif
3905 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
3906 real((0.5_wp*dt*(alpha_rho_l(i)* &
3907 vel_l(1))*(1._wp/dx(j)) - &
3908 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
3909 end do
3910
3911 if (num_fluids > 1) then
3912
3913# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3914#if defined(MFC_OpenACC)
3915# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3916!$acc loop seq
3917# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3918#elif defined(MFC_OpenMP)
3919# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3920
3921# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3922#endif
3923 do i = 1, num_fluids - 1
3924
3925# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3926#if defined(MFC_OpenACC)
3927# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3928!$acc atomic update
3929# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3930#elif defined(MFC_OpenMP)
3931# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3932!$omp atomic update
3933# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3934#endif
3935 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) + &
3936 real((0.5_wp*dt*(alpha_l(i)* &
3937 vel_l(1))*(1._wp/dx(j + 1)) - &
3938 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
3939
3940
3941# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3942#if defined(MFC_OpenACC)
3943# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3944!$acc atomic update
3945# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3946#elif defined(MFC_OpenMP)
3947# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3948!$omp atomic update
3949# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3950#endif
3951 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) &
3952 - real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j + 1, k, l)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3953
3954
3955# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3956#if defined(MFC_OpenACC)
3957# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3958!$acc atomic update
3959# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3960#elif defined(MFC_OpenMP)
3961# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3962!$omp atomic update
3963# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3964#endif
3965 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
3966 real(0.5_wp*dt*(alpha_l(i)* &
3967 vel_l(1))*(1._wp/dx(j)) - &
3968 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j)), kind=stp)
3969
3970
3971# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3972#if defined(MFC_OpenACC)
3973# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3974!$acc atomic update
3975# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3976#elif defined(MFC_OpenMP)
3977# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3978!$omp atomic update
3979# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3980#endif
3981 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
3982 + real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3983 end do
3984 end if
3985
3986
3987# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3988#if defined(MFC_OpenACC)
3989# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3990!$acc atomic update
3991# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3992#elif defined(MFC_OpenMP)
3993# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3994!$omp atomic update
3995# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3996#endif
3997 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) + &
3998 real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + &
3999 pres_l)*(1._wp/dx(j + 1)) - &
4000 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
4001
4002
4003# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4004#if defined(MFC_OpenACC)
4005# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4006!$acc atomic update
4007# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4008#elif defined(MFC_OpenMP)
4009# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4010!$omp atomic update
4011# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4012#endif
4013 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) + &
4014 real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) - &
4015 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
4016
4017
4018# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4019#if defined(MFC_OpenACC)
4020# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4021!$acc atomic update
4022# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4023#elif defined(MFC_OpenMP)
4024# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4025!$omp atomic update
4026# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4027#endif
4028 rhs_vf(momxb + 2)%sf(j + 1, k, l) = rhs_vf(momxb + 2)%sf(j + 1, k, l) + &
4029 real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j + 1)) - &
4030 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j + 1))), kind=stp)
4031
4032
4033# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4034#if defined(MFC_OpenACC)
4035# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4036!$acc atomic update
4037# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4038#elif defined(MFC_OpenMP)
4039# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4040!$omp atomic update
4041# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4042#endif
4043 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) + &
4044 real((0.5_wp*dt*(vel_l(1)*(e_l + &
4045 pres_l))*(1._wp/dx(j + 1)) - &
4046 0.5_wp*dt*cfl*(e_l)*(1._wp/dx(j + 1))), kind=stp)
4047
4048
4049# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4050#if defined(MFC_OpenACC)
4051# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4052!$acc atomic update
4053# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4054#elif defined(MFC_OpenMP)
4055# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4056!$omp atomic update
4057# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4058#endif
4059 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
4060 real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + &
4061 pres_l)*(1._wp/dx(j)) - &
4062 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
4063
4064
4065# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4066#if defined(MFC_OpenACC)
4067# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4068!$acc atomic update
4069# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4070#elif defined(MFC_OpenMP)
4071# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4072!$omp atomic update
4073# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4074#endif
4075 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
4076 real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) - &
4077 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
4078
4079
4080# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4081#if defined(MFC_OpenACC)
4082# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4083!$acc atomic update
4084# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4085#elif defined(MFC_OpenMP)
4086# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4087!$omp atomic update
4088# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4089#endif
4090 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) - &
4091 real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j)) - &
4092 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j))), kind=stp)
4093
4094
4095# 1331 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4096#if defined(MFC_OpenACC)
4097# 1331 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4098!$acc atomic update
4099# 1331 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4100#elif defined(MFC_OpenMP)
4101# 1331 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4102!$omp atomic update
4103# 1331 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4104#endif
4105 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
4106 real((0.5_wp*dt*(vel_l(1)*(e_l + &
4107 pres_l))*(1._wp/dx(j)) - &
4108 0.5_wp*dt*cfl*(e_l)*(1._wp/dx(j))), kind=stp)
4109
4110
4111# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4112#if defined(MFC_OpenACC)
4113# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4114!$acc loop seq
4115# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4116#elif defined(MFC_OpenMP)
4117# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4118
4119# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4120#endif
4121 do i = 1, num_fluids
4122
4123# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4124#if defined(MFC_OpenACC)
4125# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4126!$acc atomic update
4127# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4128#elif defined(MFC_OpenMP)
4129# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4130!$omp atomic update
4131# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4132#endif
4133 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, l) + &
4134 real((0.5_wp*dt*(alpha_rho_r(i)* &
4135 vel_r(1))*(1._wp/dx(j + 1)) + &
4136 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
4137
4138
4139# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4140#if defined(MFC_OpenACC)
4141# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4142!$acc atomic update
4143# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4144#elif defined(MFC_OpenMP)
4145# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4146!$omp atomic update
4147# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4148#endif
4149 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
4150 real((0.5_wp*dt*(alpha_rho_r(i)* &
4151 vel_r(1))*(1._wp/dx(j)) + &
4152 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
4153 end do
4154
4155 if (num_fluids > 1) then
4156
4157# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4158#if defined(MFC_OpenACC)
4159# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4160!$acc loop seq
4161# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4162#elif defined(MFC_OpenMP)
4163# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4164
4165# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4166#endif
4167 do i = 1, num_fluids - 1
4168
4169# 1355 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4170#if defined(MFC_OpenACC)
4171# 1355 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4172!$acc atomic update
4173# 1355 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4174#elif defined(MFC_OpenMP)
4175# 1355 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4176!$omp atomic update
4177# 1355 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4178#endif
4179 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) + &
4180 real((0.5_wp*dt*(alpha_r(i)* &
4181 vel_r(1))*(1._wp/dx(j + 1)) + &
4182 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
4183
4184
4185# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4186#if defined(MFC_OpenACC)
4187# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4188!$acc atomic update
4189# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4190#elif defined(MFC_OpenMP)
4191# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4192!$omp atomic update
4193# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4194#endif
4195 rhs_vf(advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(advxb + i - 1)%sf(j + 1, k, l) &
4196 - real((0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j + 1, k, l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
4197
4198
4199# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4200#if defined(MFC_OpenACC)
4201# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4202!$acc atomic update
4203# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4204#elif defined(MFC_OpenMP)
4205# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4206!$omp atomic update
4207# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4208#endif
4209 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
4210 real((0.5_wp*dt*(alpha_r(i)* &
4211 vel_r(1))*(1._wp/dx(j)) + &
4212 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
4213
4214
4215# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4216#if defined(MFC_OpenACC)
4217# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4218!$acc atomic update
4219# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4220#elif defined(MFC_OpenMP)
4221# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4222!$omp atomic update
4223# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4224#endif
4225 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
4226 + real((0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
4227 end do
4228 end if
4229
4230
4231# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4232#if defined(MFC_OpenACC)
4233# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4234!$acc atomic update
4235# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4236#elif defined(MFC_OpenMP)
4237# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4238!$omp atomic update
4239# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4240#endif
4241 rhs_vf(momxb)%sf(j + 1, k, l) = rhs_vf(momxb)%sf(j + 1, k, l) + &
4242 real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + &
4243 pres_r)*(1._wp/dx(j + 1)) + &
4244 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
4245
4246
4247# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4248#if defined(MFC_OpenACC)
4249# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4250!$acc atomic update
4251# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4252#elif defined(MFC_OpenMP)
4253# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4254!$omp atomic update
4255# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4256#endif
4257 rhs_vf(momxb + 1)%sf(j + 1, k, l) = rhs_vf(momxb + 1)%sf(j + 1, k, l) + &
4258 real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) + &
4259 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
4260
4261
4262# 1388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4263#if defined(MFC_OpenACC)
4264# 1388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4265!$acc atomic update
4266# 1388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4267#elif defined(MFC_OpenMP)
4268# 1388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4269!$omp atomic update
4270# 1388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4271#endif
4272 rhs_vf(momxb + 2)%sf(j + 1, k, l) = rhs_vf(momxb + 2)%sf(j + 1, k, l) + &
4273 real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j + 1)) + &
4274 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j + 1))), kind=stp)
4275
4276
4277# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4278#if defined(MFC_OpenACC)
4279# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4280!$acc atomic update
4281# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4282#elif defined(MFC_OpenMP)
4283# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4284!$omp atomic update
4285# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4286#endif
4287 rhs_vf(e_idx)%sf(j + 1, k, l) = rhs_vf(e_idx)%sf(j + 1, k, l) + &
4288 real((0.5_wp*dt*(vel_r(1)*(e_r + &
4289 pres_r))*(1._wp/dx(j + 1)) + &
4290 0.5_wp*dt*cfl*(e_r)*(1._wp/dx(j + 1))), kind=stp)
4291
4292
4293# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4294#if defined(MFC_OpenACC)
4295# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4296!$acc atomic update
4297# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4298#elif defined(MFC_OpenMP)
4299# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4300!$omp atomic update
4301# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4302#endif
4303 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
4304 real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + &
4305 pres_r)*(1._wp/dx(j)) + &
4306 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
4307
4308
4309# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4310#if defined(MFC_OpenACC)
4311# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4312!$acc atomic update
4313# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4314#elif defined(MFC_OpenMP)
4315# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4316!$omp atomic update
4317# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4318#endif
4319 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
4320 real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) + &
4321 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
4322
4323
4324# 1410 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4325#if defined(MFC_OpenACC)
4326# 1410 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4327!$acc atomic update
4328# 1410 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4329#elif defined(MFC_OpenMP)
4330# 1410 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4331!$omp atomic update
4332# 1410 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4333#endif
4334 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) - &
4335 real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j)) + &
4336 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j))), kind=stp)
4337
4338
4339# 1415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4340#if defined(MFC_OpenACC)
4341# 1415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4342!$acc atomic update
4343# 1415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4344#elif defined(MFC_OpenMP)
4345# 1415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4346!$omp atomic update
4347# 1415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4348#endif
4349 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
4350 real((0.5_wp*dt*(vel_r(1)*(e_r + &
4351 pres_r))*(1._wp/dx(j)) + &
4352 0.5_wp*dt*cfl*(e_r)*(1._wp/dx(j))), kind=stp)
4353
4354 end do
4355 end do
4356 end do
4357
4358# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4359
4360# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4361#if defined(MFC_OpenACC)
4362# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4363!$acc end parallel loop
4364# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4365#elif defined(MFC_OpenMP)
4366# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4367
4368# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4369
4370# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4371!$omp end target teams loop
4372# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4373#endif
4374# 1424 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4375
4376# 1426 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4377 end if
4378 else if (idir == 2) then
4379 if (p == 0) then
4380# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4381
4382# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4383
4384# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4385#if defined(MFC_OpenACC)
4386# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4387!$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)
4388# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4389#elif defined(MFC_OpenMP)
4390# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4391
4392# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4393
4394# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4395
4396# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4397!$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)
4398# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4399#endif
4400# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4401
4402 do l = 0, p
4403 do k = -1, n
4404 do j = 0, m
4405
4406 if (viscous) then
4407 vflux_l_arr = 0._wp
4408 vflux_r_arr = 0._wp
4409
4410# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4411
4412# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4413#if defined(MFC_OpenACC)
4414# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4415!$acc loop seq
4416# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4417#elif defined(MFC_OpenMP)
4418# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4419
4420# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4421#endif
4422 do q = vidxb, vidxe
4423
4424 !x-direction contributions
4425
4426# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4427#if defined(MFC_OpenACC)
4428# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4429!$acc loop seq
4430# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4431#elif defined(MFC_OpenMP)
4432# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4433
4434# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4435#endif
4436 do i = -1, 1
4437 rho_l = 0._wp
4438
4439# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4440#if defined(MFC_OpenACC)
4441# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4442!$acc loop seq
4443# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4444#elif defined(MFC_OpenMP)
4445# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4446
4447# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4448#endif
4449 do r = 1, num_fluids
4450 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
4451 end do
4452 rho_sf_small(i) = rho_l
4453 end do
4454
4455 dvel_small(1) = (1/(2._wp*dx(j)))*( &
4456 q_cons_vf(momxb)%sf(j + 1, k + q, l)/rho_sf_small(1) - &
4457 q_cons_vf(momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
4458 dvel_small(2) = (1/(2._wp*dx(j)))*( &
4459 q_cons_vf(momxb + 1)%sf(j + 1, k + q, l)/rho_sf_small(1) - &
4460 q_cons_vf(momxb + 1)%sf(j - 1, k + q, l)/rho_sf_small(-1))
4461
4462 if (q > vidxb) then
4463 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
4464 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
4465 end if
4466 if (q < vidxe) then
4467 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
4468 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
4469 end if
4470
4471 !y-direction contributions
4472
4473# 1477 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4474#if defined(MFC_OpenACC)
4475# 1477 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4476!$acc loop seq
4477# 1477 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4478#elif defined(MFC_OpenMP)
4479# 1477 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4480
4481# 1477 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4482#endif
4483 do i = -1, 1
4484 rho_l = 0._wp
4485
4486# 1480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4487#if defined(MFC_OpenACC)
4488# 1480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4489!$acc loop seq
4490# 1480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4491#elif defined(MFC_OpenMP)
4492# 1480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4493
4494# 1480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4495#endif
4496 do r = 1, num_fluids
4497 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
4498 end do
4499 rho_sf_small(i) = rho_l
4500 end do
4501
4502 dvel_small(1) = (1/(2._wp*dy(k)))*( &
4503 q_cons_vf(momxb)%sf(j, k + 1 + q, l)/rho_sf_small(1) - &
4504 q_cons_vf(momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
4505 dvel_small(2) = (1/(2._wp*dy(k)))*( &
4506 q_cons_vf(momxb + 1)%sf(j, k + 1 + q, l)/rho_sf_small(1) - &
4507 q_cons_vf(momxb + 1)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
4508
4509 if (q > vidxb) then
4510 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
4511 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
4512 end if
4513 if (q < vidxe) then
4514 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
4515 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
4516 end if
4517 end do
4518 end if
4519
4520
4521# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4522#if defined(MFC_OpenACC)
4523# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4524!$acc loop seq
4525# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4526#elif defined(MFC_OpenMP)
4527# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4528
4529# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4530#endif
4531 do i = 1, num_fluids
4532 alpha_rho_l(i) = 0._wp
4533 alpha_rho_r(i) = 0._wp
4534 alpha_l(i) = 0._wp
4535 alpha_r(i) = 0._wp
4536 end do
4537
4538# 1512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4539#if defined(MFC_OpenACC)
4540# 1512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4541!$acc loop seq
4542# 1512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4543#elif defined(MFC_OpenMP)
4544# 1512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4545
4546# 1512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4547#endif
4548 do i = 1, num_dims
4549 vel_l(i) = 0._wp
4550 vel_r(i) = 0._wp
4551 end do
4552
4553
4554# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4555#if defined(MFC_OpenACC)
4556# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4557!$acc loop seq
4558# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4559#elif defined(MFC_OpenMP)
4560# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4561
4562# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4563#endif
4564 do q = vidxb + 1, vidxe
4565
4566# 1520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4567#if defined(MFC_OpenACC)
4568# 1520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4569!$acc loop seq
4570# 1520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4571#elif defined(MFC_OpenMP)
4572# 1520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4573
4574# 1520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4575#endif
4576 do i = 1, num_fluids
4577 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
4578 end do
4579
4580 if (num_fluids > 1) then
4581
4582# 1526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4583#if defined(MFC_OpenACC)
4584# 1526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4585!$acc loop seq
4586# 1526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4587#elif defined(MFC_OpenMP)
4588# 1526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4589
4590# 1526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4591#endif
4592 do i = 1, num_fluids - 1
4593 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(e_idx + i)%sf(j, k + q, l)
4594 end do
4595 else
4596 alpha_l(1) = 1._wp
4597 end if
4598
4599
4600# 1534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4601#if defined(MFC_OpenACC)
4602# 1534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4603!$acc loop seq
4604# 1534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4605#elif defined(MFC_OpenMP)
4606# 1534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4607
4608# 1534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4609#endif
4610 do i = 1, num_dims
4611 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(momxb + i - 1)%sf(j, k + q, l)
4612 end do
4613 end do
4614
4615
4616# 1540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4617#if defined(MFC_OpenACC)
4618# 1540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4619!$acc loop seq
4620# 1540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4621#elif defined(MFC_OpenMP)
4622# 1540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4623
4624# 1540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4625#endif
4626 do q = vidxb, vidxe - 1
4627
4628# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4629#if defined(MFC_OpenACC)
4630# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4631!$acc loop seq
4632# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4633#elif defined(MFC_OpenMP)
4634# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4635
4636# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4637#endif
4638 do i = 1, num_fluids
4639 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
4640 end do
4641
4642 if (num_fluids > 1) then
4643
4644# 1548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4645#if defined(MFC_OpenACC)
4646# 1548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4647!$acc loop seq
4648# 1548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4649#elif defined(MFC_OpenMP)
4650# 1548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4651
4652# 1548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4653#endif
4654 do i = 1, num_fluids - 1
4655 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(e_idx + i)%sf(j, k + q, l)
4656 end do
4657 else
4658 alpha_r(1) = 1._wp
4659 end if
4660
4661
4662# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4663#if defined(MFC_OpenACC)
4664# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4665!$acc loop seq
4666# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4667#elif defined(MFC_OpenMP)
4668# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4669
4670# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4671#endif
4672 do i = 1, num_dims
4673 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(momxb + i - 1)%sf(j, k + q, l)
4674 end do
4675 end do
4676
4677 if (num_fluids > 1) then
4678
4679 alpha_l(num_fluids) = 1._wp
4680 alpha_r(num_fluids) = 1._wp
4681
4682
4683# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4684#if defined(MFC_OpenACC)
4685# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4686!$acc loop seq
4687# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4688#elif defined(MFC_OpenMP)
4689# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4690
4691# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4692#endif
4693 do i = 1, num_fluids - 1
4694 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
4695 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
4696 end do
4697 end if
4698
4699 rho_l = 0._wp; rho_r = 0._wp
4700 gamma_l = 0._wp; gamma_r = 0._wp
4701 pi_inf_l = 0._wp; pi_inf_r = 0._wp
4702
4703
4704# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4705#if defined(MFC_OpenACC)
4706# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4707!$acc loop seq
4708# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4709#elif defined(MFC_OpenMP)
4710# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4711
4712# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4713#endif
4714 do i = 1, num_fluids
4715 rho_l = rho_l + alpha_rho_l(i)
4716 gamma_l = gamma_l + alpha_l(i)*gammas(i)
4717 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
4718
4719 rho_r = rho_r + alpha_rho_r(i)
4720 gamma_r = gamma_r + alpha_r(i)*gammas(i)
4721 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
4722 end do
4723
4724
4725# 1589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4726#if defined(MFC_OpenACC)
4727# 1589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4728!$acc loop seq
4729# 1589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4730#elif defined(MFC_OpenMP)
4731# 1589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4732
4733# 1589 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4734#endif
4735 do i = 1, num_dims
4736 vel_l(i) = vel_l(i)/rho_l
4737 vel_r(i) = vel_r(i)/rho_r
4738 end do
4739
4740 if (viscous) then
4741 mu_l = 0._wp
4742 mu_r = 0._wp
4743
4744# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4745#if defined(MFC_OpenACC)
4746# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4747!$acc loop seq
4748# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4749#elif defined(MFC_OpenMP)
4750# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4751
4752# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4753#endif
4754 do i = 1, num_fluids
4755 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
4756 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
4757 end do
4758
4759
4760# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4761#if defined(MFC_OpenACC)
4762# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4763!$acc atomic update
4764# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4765#elif defined(MFC_OpenMP)
4766# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4767!$omp atomic update
4768# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4769#endif
4770 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) - &
4771 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4772
4773# 1607 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4774#if defined(MFC_OpenACC)
4775# 1607 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4776!$acc atomic update
4777# 1607 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4778#elif defined(MFC_OpenMP)
4779# 1607 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4780!$omp atomic update
4781# 1607 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4782#endif
4783 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
4784 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
4785
4786
4787# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4788#if defined(MFC_OpenACC)
4789# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4790!$acc atomic update
4791# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4792#elif defined(MFC_OpenMP)
4793# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4794!$omp atomic update
4795# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4796#endif
4797 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
4798 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
4799
4800# 1614 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4801#if defined(MFC_OpenACC)
4802# 1614 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4803!$acc atomic update
4804# 1614 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4805#elif defined(MFC_OpenMP)
4806# 1614 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4807!$omp atomic update
4808# 1614 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4809#endif
4810 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
4811 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
4812
4813
4814# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4815#if defined(MFC_OpenACC)
4816# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4817!$acc atomic update
4818# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4819#elif defined(MFC_OpenMP)
4820# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4821!$omp atomic update
4822# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4823#endif
4824 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) - &
4825 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4826
4827# 1621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4828#if defined(MFC_OpenACC)
4829# 1621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4830!$acc atomic update
4831# 1621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4832#elif defined(MFC_OpenMP)
4833# 1621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4834!$omp atomic update
4835# 1621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4836#endif
4837 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
4838 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
4839
4840
4841# 1625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4842#if defined(MFC_OpenACC)
4843# 1625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4844!$acc atomic update
4845# 1625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4846#elif defined(MFC_OpenMP)
4847# 1625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4848!$omp atomic update
4849# 1625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4850#endif
4851 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
4852 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
4853
4854# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4855#if defined(MFC_OpenACC)
4856# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4857!$acc atomic update
4858# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4859#elif defined(MFC_OpenMP)
4860# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4861!$omp atomic update
4862# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4863#endif
4864 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
4865 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
4866
4867
4868# 1632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4869#if defined(MFC_OpenACC)
4870# 1632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4871!$acc atomic update
4872# 1632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4873#elif defined(MFC_OpenMP)
4874# 1632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4875!$omp atomic update
4876# 1632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4877#endif
4878 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) - &
4879 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4880
4881# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4882#if defined(MFC_OpenACC)
4883# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4884!$acc atomic update
4885# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4886#elif defined(MFC_OpenMP)
4887# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4888!$omp atomic update
4889# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4890#endif
4891 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
4892 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4893
4894
4895# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4896#if defined(MFC_OpenACC)
4897# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4898!$acc atomic update
4899# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4900#elif defined(MFC_OpenMP)
4901# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4902!$omp atomic update
4903# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4904#endif
4905 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
4906 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
4907
4908# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4909#if defined(MFC_OpenACC)
4910# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4911!$acc atomic update
4912# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4913#elif defined(MFC_OpenMP)
4914# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4915!$omp atomic update
4916# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4917#endif
4918 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
4919 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
4920
4921
4922# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4923#if defined(MFC_OpenACC)
4924# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4925!$acc atomic update
4926# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4927#elif defined(MFC_OpenMP)
4928# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4929!$omp atomic update
4930# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4931#endif
4932 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) - &
4933 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4934
4935# 1649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4936#if defined(MFC_OpenACC)
4937# 1649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4938!$acc atomic update
4939# 1649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4940#elif defined(MFC_OpenMP)
4941# 1649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4942!$omp atomic update
4943# 1649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4944#endif
4945 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
4946 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
4947
4948
4949# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4950#if defined(MFC_OpenACC)
4951# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4952!$acc atomic update
4953# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4954#elif defined(MFC_OpenMP)
4955# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4956!$omp atomic update
4957# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4958#endif
4959 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
4960 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
4961
4962# 1656 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4963#if defined(MFC_OpenACC)
4964# 1656 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4965!$acc atomic update
4966# 1656 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4967#elif defined(MFC_OpenMP)
4968# 1656 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4969!$omp atomic update
4970# 1656 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4971#endif
4972 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
4973 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
4974 end if
4975
4976 e_l = 0._wp; e_r = 0._wp
4977 f_l = 0._wp; f_r = 0._wp
4978
4979
4980# 1664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4981#if defined(MFC_OpenACC)
4982# 1664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4983!$acc loop seq
4984# 1664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4985#elif defined(MFC_OpenMP)
4986# 1664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4987
4988# 1664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4989#endif
4990 do q = vidxb + 1, vidxe
4991 e_l = e_l + coeff_l(q)*q_cons_vf(e_idx)%sf(j, k + q, l)
4992 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
4993 end do
4994
4995
4996# 1670 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4997#if defined(MFC_OpenACC)
4998# 1670 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4999!$acc loop seq
5000# 1670 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5001#elif defined(MFC_OpenMP)
5002# 1670 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5003
5004# 1670 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5005#endif
5006 do q = vidxb, vidxe - 1
5007 e_r = e_r + coeff_r(q)*q_cons_vf(e_idx)%sf(j, k + q, l)
5008 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
5009 end do
5010
5011 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, &
5012 e_r, gamma_r, pi_inf_r, rho_r, vel_r, &
5013 pres_l, pres_r, cfl)
5014
5015
5016# 1680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5017#if defined(MFC_OpenACC)
5018# 1680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5019!$acc loop seq
5020# 1680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5021#elif defined(MFC_OpenMP)
5022# 1680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5023
5024# 1680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5025#endif
5026 do i = 1, num_fluids
5027
5028# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5029#if defined(MFC_OpenACC)
5030# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5031!$acc atomic update
5032# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5033#elif defined(MFC_OpenMP)
5034# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5035!$omp atomic update
5036# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5037#endif
5038 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, l) + &
5039 real(0.5_wp*dt*(alpha_rho_l(i)* &
5040 vel_l(2))*(1._wp/dy(k + 1)) - &
5041 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
5042
5043
5044# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5045#if defined(MFC_OpenACC)
5046# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5047!$acc atomic update
5048# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5049#elif defined(MFC_OpenMP)
5050# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5051!$omp atomic update
5052# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5053#endif
5054 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
5055 real(0.5_wp*dt*(alpha_rho_l(i)* &
5056 vel_l(2))*(1._wp/dy(k)) - &
5057 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
5058 end do
5059
5060 if (num_fluids > 1) then
5061
5062# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5063#if defined(MFC_OpenACC)
5064# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5065!$acc loop seq
5066# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5067#elif defined(MFC_OpenMP)
5068# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5069
5070# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5071#endif
5072 do i = 1, num_fluids - 1
5073
5074# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5075#if defined(MFC_OpenACC)
5076# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5077!$acc atomic update
5078# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5079#elif defined(MFC_OpenMP)
5080# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5081!$omp atomic update
5082# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5083#endif
5084 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) + &
5085 real(0.5_wp*dt*(alpha_l(i)* &
5086 vel_l(2))*(1._wp/dy(k + 1)) - &
5087 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
5088
5089
5090# 1704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5091#if defined(MFC_OpenACC)
5092# 1704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5093!$acc atomic update
5094# 1704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5095#elif defined(MFC_OpenMP)
5096# 1704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5097!$omp atomic update
5098# 1704 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5099#endif
5100 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) &
5101 - real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k + 1, l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
5102
5103
5104# 1708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5105#if defined(MFC_OpenACC)
5106# 1708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5107!$acc atomic update
5108# 1708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5109#elif defined(MFC_OpenMP)
5110# 1708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5111!$omp atomic update
5112# 1708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5113#endif
5114 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
5115 real(0.5_wp*dt*(alpha_l(i)* &
5116 vel_l(2))*(1._wp/dy(k)) - &
5117 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
5118
5119
5120# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5121#if defined(MFC_OpenACC)
5122# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5123!$acc atomic update
5124# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5125#elif defined(MFC_OpenMP)
5126# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5127!$omp atomic update
5128# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5129#endif
5130 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
5131 + real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
5132 end do
5133 end if
5134
5135
5136# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5137#if defined(MFC_OpenACC)
5138# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5139!$acc atomic update
5140# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5141#elif defined(MFC_OpenMP)
5142# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5143!$omp atomic update
5144# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5145#endif
5146 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) + &
5147 real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + &
5148 pres_l + f_l)*(1._wp/dy(k + 1)) - &
5149 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
5150
5151
5152# 1726 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5153#if defined(MFC_OpenACC)
5154# 1726 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5155!$acc atomic update
5156# 1726 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5157#elif defined(MFC_OpenMP)
5158# 1726 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5159!$omp atomic update
5160# 1726 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5161#endif
5162 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) + &
5163 real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) - &
5164 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
5165
5166
5167# 1731 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5168#if defined(MFC_OpenACC)
5169# 1731 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5170!$acc atomic update
5171# 1731 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5172#elif defined(MFC_OpenMP)
5173# 1731 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5174!$omp atomic update
5175# 1731 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5176#endif
5177 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) + &
5178 real(0.5_wp*dt*(vel_l(2)*(e_l + &
5179 pres_l + f_l))*(1._wp/dy(k + 1)) - &
5180 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
5181
5182
5183# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5184#if defined(MFC_OpenACC)
5185# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5186!$acc atomic update
5187# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5188#elif defined(MFC_OpenMP)
5189# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5190!$omp atomic update
5191# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5192#endif
5193 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
5194 real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + &
5195 pres_l + f_l)*(1._wp/dy(k)) - &
5196 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
5197
5198
5199# 1743 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5200#if defined(MFC_OpenACC)
5201# 1743 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5202!$acc atomic update
5203# 1743 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5204#elif defined(MFC_OpenMP)
5205# 1743 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5206!$omp atomic update
5207# 1743 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5208#endif
5209 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
5210 real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k)) - &
5211 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k)), kind=stp)
5212
5213
5214# 1748 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5215#if defined(MFC_OpenACC)
5216# 1748 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5217!$acc atomic update
5218# 1748 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5219#elif defined(MFC_OpenMP)
5220# 1748 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5221!$omp atomic update
5222# 1748 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5223#endif
5224 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
5225 real(0.5_wp*dt*(vel_l(2)*(e_l + &
5226 pres_l + f_l))*(1._wp/dy(k)) - &
5227 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k)), kind=stp)
5228
5229
5230# 1754 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5231#if defined(MFC_OpenACC)
5232# 1754 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5233!$acc loop seq
5234# 1754 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5235#elif defined(MFC_OpenMP)
5236# 1754 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5237
5238# 1754 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5239#endif
5240 do i = 1, num_fluids
5241
5242# 1756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5243#if defined(MFC_OpenACC)
5244# 1756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5245!$acc atomic update
5246# 1756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5247#elif defined(MFC_OpenMP)
5248# 1756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5249!$omp atomic update
5250# 1756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5251#endif
5252 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, l) + &
5253 real(0.5_wp*dt*(alpha_rho_r(i)* &
5254 vel_r(2))*(1._wp/dy(k + 1)) + &
5255 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
5256
5257# 1761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5258#if defined(MFC_OpenACC)
5259# 1761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5260!$acc atomic update
5261# 1761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5262#elif defined(MFC_OpenMP)
5263# 1761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5264!$omp atomic update
5265# 1761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5266#endif
5267 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
5268 real(0.5_wp*dt*(alpha_rho_r(i)* &
5269 vel_r(2))*(1._wp/dy(k)) + &
5270 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
5271 end do
5272
5273 if (num_fluids > 1) then
5274
5275# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5276#if defined(MFC_OpenACC)
5277# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5278!$acc loop seq
5279# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5280#elif defined(MFC_OpenMP)
5281# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5282
5283# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5284#endif
5285 do i = 1, num_fluids - 1
5286
5287# 1771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5288#if defined(MFC_OpenACC)
5289# 1771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5290!$acc atomic update
5291# 1771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5292#elif defined(MFC_OpenMP)
5293# 1771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5294!$omp atomic update
5295# 1771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5296#endif
5297 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) + &
5298 real(0.5_wp*dt*(alpha_r(i)* &
5299 vel_r(2))*(1._wp/dy(k + 1)) + &
5300 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
5301
5302
5303# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5304#if defined(MFC_OpenACC)
5305# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5306!$acc atomic update
5307# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5308#elif defined(MFC_OpenMP)
5309# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5310!$omp atomic update
5311# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5312#endif
5313 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) &
5314 - real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k + 1, l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
5315
5316
5317# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5318#if defined(MFC_OpenACC)
5319# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5320!$acc atomic update
5321# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5322#elif defined(MFC_OpenMP)
5323# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5324!$omp atomic update
5325# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5326#endif
5327 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
5328 real(0.5_wp*dt*(alpha_r(i)* &
5329 vel_r(2))*(1._wp/dy(k)) + &
5330 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
5331
5332
5333# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5334#if defined(MFC_OpenACC)
5335# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5336!$acc atomic update
5337# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5338#elif defined(MFC_OpenMP)
5339# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5340!$omp atomic update
5341# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5342#endif
5343 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
5344 + real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
5345 end do
5346 end if
5347
5348# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5349#if defined(MFC_OpenACC)
5350# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5351!$acc atomic update
5352# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5353#elif defined(MFC_OpenMP)
5354# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5355!$omp atomic update
5356# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5357#endif
5358 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) + &
5359 real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + &
5360 pres_r + f_r)*(1._wp/dy(k + 1)) + &
5361 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
5362
5363# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5364#if defined(MFC_OpenACC)
5365# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5366!$acc atomic update
5367# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5368#elif defined(MFC_OpenMP)
5369# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5370!$omp atomic update
5371# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5372#endif
5373 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) + &
5374 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) + &
5375 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
5376
5377# 1801 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5378#if defined(MFC_OpenACC)
5379# 1801 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5380!$acc atomic update
5381# 1801 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5382#elif defined(MFC_OpenMP)
5383# 1801 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5384!$omp atomic update
5385# 1801 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5386#endif
5387 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) + &
5388 real(0.5_wp*dt*(vel_r(2)*(e_r + &
5389 pres_r + f_r))*(1._wp/dy(k + 1)) + &
5390 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
5391
5392# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5393#if defined(MFC_OpenACC)
5394# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5395!$acc atomic update
5396# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5397#elif defined(MFC_OpenMP)
5398# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5399!$omp atomic update
5400# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5401#endif
5402 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
5403 real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + &
5404 pres_r + f_r)*(1._wp/dy(k)) + &
5405 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
5406
5407# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5408#if defined(MFC_OpenACC)
5409# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5410!$acc atomic update
5411# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5412#elif defined(MFC_OpenMP)
5413# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5414!$omp atomic update
5415# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5416#endif
5417 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
5418 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k)) + &
5419 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k)), kind=stp)
5420
5421# 1815 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5422#if defined(MFC_OpenACC)
5423# 1815 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5424!$acc atomic update
5425# 1815 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5426#elif defined(MFC_OpenMP)
5427# 1815 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5428!$omp atomic update
5429# 1815 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5430#endif
5431 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
5432 real(0.5_wp*dt*(vel_r(2)*(e_r + &
5433 pres_r + f_r))*(1._wp/dy(k)) + &
5434 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k)), kind=stp)
5435 end do
5436 end do
5437 end do
5438
5439# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5440
5441# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5442#if defined(MFC_OpenACC)
5443# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5444!$acc end parallel loop
5445# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5446#elif defined(MFC_OpenMP)
5447# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5448
5449# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5450
5451# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5452!$omp end target teams loop
5453# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5454#endif
5455# 1823 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5456
5457# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5458 else
5459# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5460
5461# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5462
5463# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5464#if defined(MFC_OpenACC)
5465# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5466!$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)
5467# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5468#elif defined(MFC_OpenMP)
5469# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5470
5471# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5472
5473# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5474
5475# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5476!$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)
5477# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5478#endif
5479# 1827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5480
5481 do l = 0, p
5482 do k = -1, n
5483 do j = 0, m
5484
5485 if (viscous) then
5486 vflux_l_arr = 0._wp
5487 vflux_r_arr = 0._wp
5488
5489# 1843 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5490
5491# 1843 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5492#if defined(MFC_OpenACC)
5493# 1843 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5494!$acc loop seq
5495# 1843 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5496#elif defined(MFC_OpenMP)
5497# 1843 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5498
5499# 1843 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5500#endif
5501 do q = vidxb, vidxe
5502
5503 !x-direction contributions
5504
5505# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5506#if defined(MFC_OpenACC)
5507# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5508!$acc loop seq
5509# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5510#elif defined(MFC_OpenMP)
5511# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5512
5513# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5514#endif
5515 do i = -1, 1
5516 rho_l = 0._wp
5517
5518# 1850 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5519#if defined(MFC_OpenACC)
5520# 1850 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5521!$acc loop seq
5522# 1850 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5523#elif defined(MFC_OpenMP)
5524# 1850 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5525
5526# 1850 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5527#endif
5528 do r = 1, num_fluids
5529 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
5530 end do
5531 rho_sf_small(i) = rho_l
5532 end do
5533
5534 dvel_small(1) = (1/(2._wp*dx(j)))*( &
5535 q_cons_vf(momxb)%sf(j + 1, k + q, l)/rho_sf_small(1) - &
5536 q_cons_vf(momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
5537 dvel_small(2) = (1/(2._wp*dx(j)))*( &
5538 q_cons_vf(momxb + 1)%sf(j + 1, k + q, l)/rho_sf_small(1) - &
5539 q_cons_vf(momxb + 1)%sf(j - 1, k + q, l)/rho_sf_small(-1))
5540
5541 if (q > vidxb) then
5542 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
5543 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
5544 end if
5545 if (q < vidxe) then
5546 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
5547 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
5548 end if
5549
5550 !y-direction contributions
5551
5552# 1874 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5553#if defined(MFC_OpenACC)
5554# 1874 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5555!$acc loop seq
5556# 1874 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5557#elif defined(MFC_OpenMP)
5558# 1874 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5559
5560# 1874 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5561#endif
5562 do i = -1, 1
5563 rho_l = 0._wp
5564
5565# 1877 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5566#if defined(MFC_OpenACC)
5567# 1877 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5568!$acc loop seq
5569# 1877 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5570#elif defined(MFC_OpenMP)
5571# 1877 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5572
5573# 1877 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5574#endif
5575 do r = 1, num_fluids
5576 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
5577 end do
5578 rho_sf_small(i) = rho_l
5579 end do
5580
5581 dvel_small(1) = (1/(2._wp*dy(k)))*( &
5582 q_cons_vf(momxb)%sf(j, k + 1 + q, l)/rho_sf_small(1) - &
5583 q_cons_vf(momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
5584 dvel_small(2) = (1/(2._wp*dy(k)))*( &
5585 q_cons_vf(momxb + 1)%sf(j, k + 1 + q, l)/rho_sf_small(1) - &
5586 q_cons_vf(momxb + 1)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
5587 dvel_small(3) = (1/(2._wp*dy(k)))*( &
5588 q_cons_vf(momxb + 2)%sf(j, k + 1 + q, l)/rho_sf_small(1) - &
5589 q_cons_vf(momxb + 2)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
5590
5591 if (q > vidxb) then
5592 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
5593 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
5594 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
5595 end if
5596 if (q < vidxe) then
5597 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
5598 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
5599 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
5600 end if
5601
5602 !z-direction contributions
5603
5604# 1906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5605#if defined(MFC_OpenACC)
5606# 1906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5607!$acc loop seq
5608# 1906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5609#elif defined(MFC_OpenMP)
5610# 1906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5611
5612# 1906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5613#endif
5614 do i = -1, 1
5615 rho_l = 0._wp
5616
5617# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5618#if defined(MFC_OpenACC)
5619# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5620!$acc loop seq
5621# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5622#elif defined(MFC_OpenMP)
5623# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5624
5625# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5626#endif
5627 do r = 1, num_fluids
5628 rho_l = rho_l + q_cons_vf(r)%sf(j, k + q, l + i)
5629 end do
5630 rho_sf_small(i) = rho_l
5631 end do
5632
5633 dvel_small(2) = (1/(2._wp*dz(l)))*( &
5634 q_cons_vf(momxb + 1)%sf(j, k + q, l + 1)/rho_sf_small(1) - &
5635 q_cons_vf(momxb + 1)%sf(j, k + q, l - 1)/rho_sf_small(-1))
5636 dvel_small(3) = (1/(2._wp*dz(l)))*( &
5637 q_cons_vf(momxb + 2)%sf(j, k + q, l + 1)/rho_sf_small(1) - &
5638 q_cons_vf(momxb + 2)%sf(j, k + q, l - 1)/rho_sf_small(-1))
5639 if (q > vidxb) then
5640 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
5641 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
5642 end if
5643 if (q < vidxe) then
5644 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
5645 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
5646 end if
5647 end do
5648 end if
5649
5650
5651# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5652#if defined(MFC_OpenACC)
5653# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5654!$acc loop seq
5655# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5656#elif defined(MFC_OpenMP)
5657# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5658
5659# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5660#endif
5661 do i = 1, num_fluids
5662 alpha_rho_l(i) = 0._wp
5663 alpha_rho_r(i) = 0._wp
5664 alpha_l(i) = 0._wp
5665 alpha_r(i) = 0._wp
5666 end do
5667
5668# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5669#if defined(MFC_OpenACC)
5670# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5671!$acc loop seq
5672# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5673#elif defined(MFC_OpenMP)
5674# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5675
5676# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5677#endif
5678 do i = 1, num_dims
5679 vel_l(i) = 0._wp
5680 vel_r(i) = 0._wp
5681 end do
5682
5683
5684# 1946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5685#if defined(MFC_OpenACC)
5686# 1946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5687!$acc loop seq
5688# 1946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5689#elif defined(MFC_OpenMP)
5690# 1946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5691
5692# 1946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5693#endif
5694 do q = vidxb + 1, vidxe
5695
5696# 1948 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5697#if defined(MFC_OpenACC)
5698# 1948 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5699!$acc loop seq
5700# 1948 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5701#elif defined(MFC_OpenMP)
5702# 1948 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5703
5704# 1948 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5705#endif
5706 do i = 1, num_fluids
5707 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
5708 end do
5709
5710 if (num_fluids > 1) then
5711
5712# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5713#if defined(MFC_OpenACC)
5714# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5715!$acc loop seq
5716# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5717#elif defined(MFC_OpenMP)
5718# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5719
5720# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5721#endif
5722 do i = 1, num_fluids - 1
5723 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(e_idx + i)%sf(j, k + q, l)
5724 end do
5725 else
5726 alpha_l(1) = 1._wp
5727 end if
5728
5729
5730# 1962 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5731#if defined(MFC_OpenACC)
5732# 1962 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5733!$acc loop seq
5734# 1962 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5735#elif defined(MFC_OpenMP)
5736# 1962 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5737
5738# 1962 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5739#endif
5740 do i = 1, num_dims
5741 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(momxb + i - 1)%sf(j, k + q, l)
5742 end do
5743 end do
5744
5745
5746# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5747#if defined(MFC_OpenACC)
5748# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5749!$acc loop seq
5750# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5751#elif defined(MFC_OpenMP)
5752# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5753
5754# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5755#endif
5756 do q = vidxb, vidxe - 1
5757
5758# 1970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5759#if defined(MFC_OpenACC)
5760# 1970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5761!$acc loop seq
5762# 1970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5763#elif defined(MFC_OpenMP)
5764# 1970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5765
5766# 1970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5767#endif
5768 do i = 1, num_fluids
5769 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
5770 end do
5771
5772 if (num_fluids > 1) then
5773
5774# 1976 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5775#if defined(MFC_OpenACC)
5776# 1976 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5777!$acc loop seq
5778# 1976 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5779#elif defined(MFC_OpenMP)
5780# 1976 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5781
5782# 1976 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5783#endif
5784 do i = 1, num_fluids - 1
5785 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(e_idx + i)%sf(j, k + q, l)
5786 end do
5787 else
5788 alpha_r(1) = 1._wp
5789 end if
5790
5791
5792# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5793#if defined(MFC_OpenACC)
5794# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5795!$acc loop seq
5796# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5797#elif defined(MFC_OpenMP)
5798# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5799
5800# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5801#endif
5802 do i = 1, num_dims
5803 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(momxb + i - 1)%sf(j, k + q, l)
5804 end do
5805 end do
5806
5807 if (num_fluids > 1) then
5808
5809 alpha_l(num_fluids) = 1._wp
5810 alpha_r(num_fluids) = 1._wp
5811
5812
5813# 1995 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5814#if defined(MFC_OpenACC)
5815# 1995 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5816!$acc loop seq
5817# 1995 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5818#elif defined(MFC_OpenMP)
5819# 1995 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5820
5821# 1995 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5822#endif
5823 do i = 1, num_fluids - 1
5824 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
5825 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
5826 end do
5827 end if
5828
5829 rho_l = 0._wp; rho_r = 0._wp
5830 gamma_l = 0._wp; gamma_r = 0._wp
5831 pi_inf_l = 0._wp; pi_inf_r = 0._wp
5832
5833
5834# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5835#if defined(MFC_OpenACC)
5836# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5837!$acc loop seq
5838# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5839#elif defined(MFC_OpenMP)
5840# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5841
5842# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5843#endif
5844 do i = 1, num_fluids
5845 rho_l = rho_l + alpha_rho_l(i)
5846 gamma_l = gamma_l + alpha_l(i)*gammas(i)
5847 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
5848
5849 rho_r = rho_r + alpha_rho_r(i)
5850 gamma_r = gamma_r + alpha_r(i)*gammas(i)
5851 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
5852 end do
5853
5854
5855# 2017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5856#if defined(MFC_OpenACC)
5857# 2017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5858!$acc loop seq
5859# 2017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5860#elif defined(MFC_OpenMP)
5861# 2017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5862
5863# 2017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5864#endif
5865 do i = 1, num_dims
5866 vel_l(i) = vel_l(i)/rho_l
5867 vel_r(i) = vel_r(i)/rho_r
5868 end do
5869
5870 if (viscous) then
5871 mu_l = 0._wp
5872 mu_r = 0._wp
5873
5874# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5875#if defined(MFC_OpenACC)
5876# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5877!$acc loop seq
5878# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5879#elif defined(MFC_OpenMP)
5880# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5881
5882# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5883#endif
5884 do i = 1, num_fluids
5885 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
5886 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
5887 end do
5888
5889
5890# 2032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5891#if defined(MFC_OpenACC)
5892# 2032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5893!$acc atomic update
5894# 2032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5895#elif defined(MFC_OpenMP)
5896# 2032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5897!$omp atomic update
5898# 2032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5899#endif
5900 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) - &
5901 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5902
5903# 2035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5904#if defined(MFC_OpenACC)
5905# 2035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5906!$acc atomic update
5907# 2035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5908#elif defined(MFC_OpenMP)
5909# 2035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5910!$omp atomic update
5911# 2035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5912#endif
5913 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
5914 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
5915
5916
5917# 2039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5918#if defined(MFC_OpenACC)
5919# 2039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5920!$acc atomic update
5921# 2039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5922#elif defined(MFC_OpenMP)
5923# 2039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5924!$omp atomic update
5925# 2039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5926#endif
5927 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
5928 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
5929
5930# 2042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5931#if defined(MFC_OpenACC)
5932# 2042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5933!$acc atomic update
5934# 2042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5935#elif defined(MFC_OpenMP)
5936# 2042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5937!$omp atomic update
5938# 2042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5939#endif
5940 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
5941 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
5942
5943
5944# 2046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5945#if defined(MFC_OpenACC)
5946# 2046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5947!$acc atomic update
5948# 2046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5949#elif defined(MFC_OpenMP)
5950# 2046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5951!$omp atomic update
5952# 2046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5953#endif
5954 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) - &
5955 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5956
5957# 2049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5958#if defined(MFC_OpenACC)
5959# 2049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5960!$acc atomic update
5961# 2049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5962#elif defined(MFC_OpenMP)
5963# 2049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5964!$omp atomic update
5965# 2049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5966#endif
5967 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
5968 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
5969
5970
5971# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5972#if defined(MFC_OpenACC)
5973# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5974!$acc atomic update
5975# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5976#elif defined(MFC_OpenMP)
5977# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5978!$omp atomic update
5979# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5980#endif
5981 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
5982 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
5983
5984# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5985#if defined(MFC_OpenACC)
5986# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5987!$acc atomic update
5988# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5989#elif defined(MFC_OpenMP)
5990# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5991!$omp atomic update
5992# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5993#endif
5994 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
5995 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
5996
5997
5998# 2060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5999#if defined(MFC_OpenACC)
6000# 2060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6001!$acc atomic update
6002# 2060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6003#elif defined(MFC_OpenMP)
6004# 2060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6005!$omp atomic update
6006# 2060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6007#endif
6008 rhs_vf(momxb + 2)%sf(j, k + 1, l) = rhs_vf(momxb + 2)%sf(j, k + 1, l) - &
6009 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k + 1)), kind=stp)
6010
6011# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6012#if defined(MFC_OpenACC)
6013# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6014!$acc atomic update
6015# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6016#elif defined(MFC_OpenMP)
6017# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6018!$omp atomic update
6019# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6020#endif
6021 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
6022 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k + 1)), kind=stp)
6023
6024
6025# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6026#if defined(MFC_OpenACC)
6027# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6028!$acc atomic update
6029# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6030#elif defined(MFC_OpenMP)
6031# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6032!$omp atomic update
6033# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6034#endif
6035 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) + &
6036 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k)), kind=stp)
6037
6038# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6039#if defined(MFC_OpenACC)
6040# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6041!$acc atomic update
6042# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6043#elif defined(MFC_OpenMP)
6044# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6045!$omp atomic update
6046# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6047#endif
6048 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
6049 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k)), kind=stp)
6050
6051
6052# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6053#if defined(MFC_OpenACC)
6054# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6055!$acc atomic update
6056# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6057#elif defined(MFC_OpenMP)
6058# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6059!$omp atomic update
6060# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6061#endif
6062 rhs_vf(momxb + 2)%sf(j, k + 1, l) = rhs_vf(momxb + 2)%sf(j, k + 1, l) - &
6063 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k + 1)), kind=stp)
6064
6065# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6066#if defined(MFC_OpenACC)
6067# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6068!$acc atomic update
6069# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6070#elif defined(MFC_OpenMP)
6071# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6072!$omp atomic update
6073# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6074#endif
6075 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
6076 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k + 1)), kind=stp)
6077
6078
6079# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6080#if defined(MFC_OpenACC)
6081# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6082!$acc atomic update
6083# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6084#elif defined(MFC_OpenMP)
6085# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6086!$omp atomic update
6087# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6088#endif
6089 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) + &
6090 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k)), kind=stp)
6091
6092# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6093#if defined(MFC_OpenACC)
6094# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6095!$acc atomic update
6096# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6097#elif defined(MFC_OpenMP)
6098# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6099!$omp atomic update
6100# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6101#endif
6102 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
6103 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k)), kind=stp)
6104
6105
6106# 2088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6107#if defined(MFC_OpenACC)
6108# 2088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6109!$acc atomic update
6110# 2088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6111#elif defined(MFC_OpenMP)
6112# 2088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6113!$omp atomic update
6114# 2088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6115#endif
6116 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) - &
6117 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
6118
6119# 2091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6120#if defined(MFC_OpenACC)
6121# 2091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6122!$acc atomic update
6123# 2091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6124#elif defined(MFC_OpenMP)
6125# 2091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6126!$omp atomic update
6127# 2091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6128#endif
6129 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
6130 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
6131
6132
6133# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6134#if defined(MFC_OpenACC)
6135# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6136!$acc atomic update
6137# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6138#elif defined(MFC_OpenMP)
6139# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6140!$omp atomic update
6141# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6142#endif
6143 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
6144 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
6145
6146# 2098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6147#if defined(MFC_OpenACC)
6148# 2098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6149!$acc atomic update
6150# 2098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6151#elif defined(MFC_OpenMP)
6152# 2098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6153!$omp atomic update
6154# 2098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6155#endif
6156 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
6157 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6158
6159
6160# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6161#if defined(MFC_OpenACC)
6162# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6163!$acc atomic update
6164# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6165#elif defined(MFC_OpenMP)
6166# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6167!$omp atomic update
6168# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6169#endif
6170 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) - &
6171 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
6172
6173# 2105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6174#if defined(MFC_OpenACC)
6175# 2105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6176!$acc atomic update
6177# 2105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6178#elif defined(MFC_OpenMP)
6179# 2105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6180!$omp atomic update
6181# 2105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6182#endif
6183 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) - &
6184 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6185
6186
6187# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6188#if defined(MFC_OpenACC)
6189# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6190!$acc atomic update
6191# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6192#elif defined(MFC_OpenMP)
6193# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6194!$omp atomic update
6195# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6196#endif
6197 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
6198 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
6199
6200# 2112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6201#if defined(MFC_OpenACC)
6202# 2112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6203!$acc atomic update
6204# 2112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6205#elif defined(MFC_OpenMP)
6206# 2112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6207!$omp atomic update
6208# 2112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6209#endif
6210 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
6211 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6212 end if
6213
6214 e_l = 0._wp; e_r = 0._wp
6215 f_l = 0._wp; f_r = 0._wp
6216
6217
6218# 2120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6219#if defined(MFC_OpenACC)
6220# 2120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6221!$acc loop seq
6222# 2120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6223#elif defined(MFC_OpenMP)
6224# 2120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6225
6226# 2120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6227#endif
6228 do q = vidxb + 1, vidxe
6229 e_l = e_l + coeff_l(q)*q_cons_vf(e_idx)%sf(j, k + q, l)
6230 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
6231 end do
6232
6233
6234# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6235#if defined(MFC_OpenACC)
6236# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6237!$acc loop seq
6238# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6239#elif defined(MFC_OpenMP)
6240# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6241
6242# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6243#endif
6244 do q = vidxb, vidxe - 1
6245 e_r = e_r + coeff_r(q)*q_cons_vf(e_idx)%sf(j, k + q, l)
6246 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
6247 end do
6248
6249 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, &
6250 e_r, gamma_r, pi_inf_r, rho_r, vel_r, &
6251 pres_l, pres_r, cfl)
6252
6253
6254# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6255#if defined(MFC_OpenACC)
6256# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6257!$acc loop seq
6258# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6259#elif defined(MFC_OpenMP)
6260# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6261
6262# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6263#endif
6264 do i = 1, num_fluids
6265
6266# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6267#if defined(MFC_OpenACC)
6268# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6269!$acc atomic update
6270# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6271#elif defined(MFC_OpenMP)
6272# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6273!$omp atomic update
6274# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6275#endif
6276 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, l) + &
6277 real(0.5_wp*dt*(alpha_rho_l(i)* &
6278 vel_l(2))*(1._wp/dy(k + 1)) - &
6279 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
6280
6281
6282# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6283#if defined(MFC_OpenACC)
6284# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6285!$acc atomic update
6286# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6287#elif defined(MFC_OpenMP)
6288# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6289!$omp atomic update
6290# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6291#endif
6292 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
6293 real(0.5_wp*dt*(alpha_rho_l(i)* &
6294 vel_l(2))*(1._wp/dy(k)) - &
6295 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
6296 end do
6297
6298 if (num_fluids > 1) then
6299
6300# 2152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6301#if defined(MFC_OpenACC)
6302# 2152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6303!$acc loop seq
6304# 2152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6305#elif defined(MFC_OpenMP)
6306# 2152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6307
6308# 2152 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6309#endif
6310 do i = 1, num_fluids - 1
6311
6312# 2154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6313#if defined(MFC_OpenACC)
6314# 2154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6315!$acc atomic update
6316# 2154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6317#elif defined(MFC_OpenMP)
6318# 2154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6319!$omp atomic update
6320# 2154 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6321#endif
6322 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) + &
6323 real(0.5_wp*dt*(alpha_l(i)* &
6324 vel_l(2))*(1._wp/dy(k + 1)) - &
6325 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
6326
6327
6328# 2160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6329#if defined(MFC_OpenACC)
6330# 2160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6331!$acc atomic update
6332# 2160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6333#elif defined(MFC_OpenMP)
6334# 2160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6335!$omp atomic update
6336# 2160 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6337#endif
6338 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) &
6339 - real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k + 1, l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
6340
6341
6342# 2164 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6343#if defined(MFC_OpenACC)
6344# 2164 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6345!$acc atomic update
6346# 2164 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6347#elif defined(MFC_OpenMP)
6348# 2164 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6349!$omp atomic update
6350# 2164 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6351#endif
6352 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
6353 real(0.5_wp*dt*(alpha_l(i)* &
6354 vel_l(2))*(1._wp/dy(k)) - &
6355 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
6356
6357
6358# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6359#if defined(MFC_OpenACC)
6360# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6361!$acc atomic update
6362# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6363#elif defined(MFC_OpenMP)
6364# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6365!$omp atomic update
6366# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6367#endif
6368 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
6369 + real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6370 end do
6371 end if
6372
6373
6374# 2176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6375#if defined(MFC_OpenACC)
6376# 2176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6377!$acc atomic update
6378# 2176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6379#elif defined(MFC_OpenMP)
6380# 2176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6381!$omp atomic update
6382# 2176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6383#endif
6384 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) + &
6385 real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + &
6386 pres_l + f_l)*(1._wp/dy(k + 1)) - &
6387 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
6388
6389
6390# 2182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6391#if defined(MFC_OpenACC)
6392# 2182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6393!$acc atomic update
6394# 2182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6395#elif defined(MFC_OpenMP)
6396# 2182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6397!$omp atomic update
6398# 2182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6399#endif
6400 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) + &
6401 real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) - &
6402 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
6403
6404
6405# 2187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6406#if defined(MFC_OpenACC)
6407# 2187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6408!$acc atomic update
6409# 2187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6410#elif defined(MFC_OpenMP)
6411# 2187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6412!$omp atomic update
6413# 2187 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6414#endif
6415 rhs_vf(momxb + 2)%sf(j, k + 1, l) = rhs_vf(momxb + 2)%sf(j, k + 1, l) + &
6416 real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k + 1)) - &
6417 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dy(k + 1)), kind=stp)
6418
6419
6420# 2192 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6421#if defined(MFC_OpenACC)
6422# 2192 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6423!$acc atomic update
6424# 2192 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6425#elif defined(MFC_OpenMP)
6426# 2192 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6427!$omp atomic update
6428# 2192 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6429#endif
6430 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) + &
6431 real(0.5_wp*dt*(vel_l(2)*(e_l + &
6432 pres_l + f_l))*(1._wp/dy(k + 1)) - &
6433 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
6434
6435
6436# 2198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6437#if defined(MFC_OpenACC)
6438# 2198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6439!$acc atomic update
6440# 2198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6441#elif defined(MFC_OpenMP)
6442# 2198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6443!$omp atomic update
6444# 2198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6445#endif
6446 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
6447 real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + &
6448 pres_l + f_l)*(1._wp/dy(k)) - &
6449 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
6450
6451
6452# 2204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6453#if defined(MFC_OpenACC)
6454# 2204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6455!$acc atomic update
6456# 2204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6457#elif defined(MFC_OpenMP)
6458# 2204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6459!$omp atomic update
6460# 2204 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6461#endif
6462 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
6463 real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k)) - &
6464 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k)), kind=stp)
6465
6466
6467# 2209 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6468#if defined(MFC_OpenACC)
6469# 2209 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6470!$acc atomic update
6471# 2209 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6472#elif defined(MFC_OpenMP)
6473# 2209 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6474!$omp atomic update
6475# 2209 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6476#endif
6477 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) - &
6478 real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k)) - &
6479 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dy(k)), kind=stp)
6480
6481
6482# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6483#if defined(MFC_OpenACC)
6484# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6485!$acc atomic update
6486# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6487#elif defined(MFC_OpenMP)
6488# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6489!$omp atomic update
6490# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6491#endif
6492 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
6493 real(0.5_wp*dt*(vel_l(2)*(e_l + &
6494 pres_l + f_l))*(1._wp/dy(k)) - &
6495 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k)), kind=stp)
6496
6497
6498# 2220 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6499#if defined(MFC_OpenACC)
6500# 2220 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6501!$acc loop seq
6502# 2220 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6503#elif defined(MFC_OpenMP)
6504# 2220 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6505
6506# 2220 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6507#endif
6508 do i = 1, num_fluids
6509
6510# 2222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6511#if defined(MFC_OpenACC)
6512# 2222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6513!$acc atomic update
6514# 2222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6515#elif defined(MFC_OpenMP)
6516# 2222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6517!$omp atomic update
6518# 2222 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6519#endif
6520 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, l) + &
6521 real(0.5_wp*dt*(alpha_rho_r(i)* &
6522 vel_r(2))*(1._wp/dy(k + 1)) + &
6523 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
6524
6525
6526# 2228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6527#if defined(MFC_OpenACC)
6528# 2228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6529!$acc atomic update
6530# 2228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6531#elif defined(MFC_OpenMP)
6532# 2228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6533!$omp atomic update
6534# 2228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6535#endif
6536 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
6537 real(0.5_wp*dt*(alpha_rho_r(i)* &
6538 vel_r(2))*(1._wp/dy(k)) + &
6539 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
6540 end do
6541
6542 if (num_fluids > 1) then
6543
6544# 2236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6545#if defined(MFC_OpenACC)
6546# 2236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6547!$acc loop seq
6548# 2236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6549#elif defined(MFC_OpenMP)
6550# 2236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6551
6552# 2236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6553#endif
6554 do i = 1, num_fluids - 1
6555
6556# 2238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6557#if defined(MFC_OpenACC)
6558# 2238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6559!$acc atomic update
6560# 2238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6561#elif defined(MFC_OpenMP)
6562# 2238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6563!$omp atomic update
6564# 2238 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6565#endif
6566 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) + &
6567 real(0.5_wp*dt*(alpha_r(i)* &
6568 vel_r(2))*(1._wp/dy(k + 1)) + &
6569 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
6570
6571
6572# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6573#if defined(MFC_OpenACC)
6574# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6575!$acc atomic update
6576# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6577#elif defined(MFC_OpenMP)
6578# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6579!$omp atomic update
6580# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6581#endif
6582 rhs_vf(advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(advxb + i - 1)%sf(j, k + 1, l) &
6583 - real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k + 1, l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6584
6585
6586# 2248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6587#if defined(MFC_OpenACC)
6588# 2248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6589!$acc atomic update
6590# 2248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6591#elif defined(MFC_OpenMP)
6592# 2248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6593!$omp atomic update
6594# 2248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6595#endif
6596 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
6597 real(0.5_wp*dt*(alpha_r(i)* &
6598 vel_r(2))*(1._wp/dy(k)) + &
6599 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
6600
6601
6602# 2254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6603#if defined(MFC_OpenACC)
6604# 2254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6605!$acc atomic update
6606# 2254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6607#elif defined(MFC_OpenMP)
6608# 2254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6609!$omp atomic update
6610# 2254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6611#endif
6612 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
6613 + real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6614 end do
6615 end if
6616
6617
6618# 2260 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6619#if defined(MFC_OpenACC)
6620# 2260 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6621!$acc atomic update
6622# 2260 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6623#elif defined(MFC_OpenMP)
6624# 2260 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6625!$omp atomic update
6626# 2260 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6627#endif
6628 rhs_vf(momxb + 1)%sf(j, k + 1, l) = rhs_vf(momxb + 1)%sf(j, k + 1, l) + &
6629 real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + &
6630 pres_r + f_r)*(1._wp/dy(k + 1)) + &
6631 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
6632
6633
6634# 2266 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6635#if defined(MFC_OpenACC)
6636# 2266 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6637!$acc atomic update
6638# 2266 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6639#elif defined(MFC_OpenMP)
6640# 2266 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6641!$omp atomic update
6642# 2266 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6643#endif
6644 rhs_vf(momxb)%sf(j, k + 1, l) = rhs_vf(momxb)%sf(j, k + 1, l) + &
6645 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) + &
6646 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
6647
6648
6649# 2271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6650#if defined(MFC_OpenACC)
6651# 2271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6652!$acc atomic update
6653# 2271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6654#elif defined(MFC_OpenMP)
6655# 2271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6656!$omp atomic update
6657# 2271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6658#endif
6659 rhs_vf(momxb + 2)%sf(j, k + 1, l) = rhs_vf(momxb + 2)%sf(j, k + 1, l) + &
6660 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k + 1)) + &
6661 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dy(k + 1)), kind=stp)
6662
6663
6664# 2276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6665#if defined(MFC_OpenACC)
6666# 2276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6667!$acc atomic update
6668# 2276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6669#elif defined(MFC_OpenMP)
6670# 2276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6671!$omp atomic update
6672# 2276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6673#endif
6674 rhs_vf(e_idx)%sf(j, k + 1, l) = rhs_vf(e_idx)%sf(j, k + 1, l) + &
6675 real(0.5_wp*dt*(vel_r(2)*(e_r + &
6676 pres_r + f_r))*(1._wp/dy(k + 1)) + &
6677 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
6678
6679
6680# 2282 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6681#if defined(MFC_OpenACC)
6682# 2282 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6683!$acc atomic update
6684# 2282 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6685#elif defined(MFC_OpenMP)
6686# 2282 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6687!$omp atomic update
6688# 2282 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6689#endif
6690 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
6691 real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + &
6692 pres_r + f_r)*(1._wp/dy(k)) + &
6693 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
6694
6695
6696# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6697#if defined(MFC_OpenACC)
6698# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6699!$acc atomic update
6700# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6701#elif defined(MFC_OpenMP)
6702# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6703!$omp atomic update
6704# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6705#endif
6706 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
6707 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k)) + &
6708 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k)), kind=stp)
6709
6710
6711# 2293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6712#if defined(MFC_OpenACC)
6713# 2293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6714!$acc atomic update
6715# 2293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6716#elif defined(MFC_OpenMP)
6717# 2293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6718!$omp atomic update
6719# 2293 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6720#endif
6721 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) - &
6722 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k)) + &
6723 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dy(k)), kind=stp)
6724
6725
6726# 2298 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6727#if defined(MFC_OpenACC)
6728# 2298 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6729!$acc atomic update
6730# 2298 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6731#elif defined(MFC_OpenMP)
6732# 2298 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6733!$omp atomic update
6734# 2298 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6735#endif
6736 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
6737 real(0.5_wp*dt*(vel_r(2)*(e_r + &
6738 pres_r + f_r))*(1._wp/dy(k)) + &
6739 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k)), kind=stp)
6740
6741 end do
6742 end do
6743 end do
6744
6745# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6746
6747# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6748#if defined(MFC_OpenACC)
6749# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6750!$acc end parallel loop
6751# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6752#elif defined(MFC_OpenMP)
6753# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6754
6755# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6756
6757# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6758!$omp end target teams loop
6759# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6760#endif
6761# 2307 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6762
6763# 2309 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6764 end if
6765 elseif (idir == 3) then
6766# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6767
6768# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6769
6770# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6771#if defined(MFC_OpenACC)
6772# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6773!$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)
6774# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6775#elif defined(MFC_OpenMP)
6776# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6777
6778# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6779
6780# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6781
6782# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6783!$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)
6784# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6785#endif
6786# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6787
6788 do l = -1, p
6789 do k = 0, n
6790 do j = 0, m
6791
6792 if (viscous) then
6793 vflux_l_arr = 0._wp
6794 vflux_r_arr = 0._wp
6795
6796# 2328 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6797
6798# 2328 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6799#if defined(MFC_OpenACC)
6800# 2328 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6801!$acc loop seq
6802# 2328 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6803#elif defined(MFC_OpenMP)
6804# 2328 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6805
6806# 2328 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6807#endif
6808 do q = vidxb, vidxe
6809
6810 !x-direction contributions
6811
6812# 2332 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6813#if defined(MFC_OpenACC)
6814# 2332 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6815!$acc loop seq
6816# 2332 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6817#elif defined(MFC_OpenMP)
6818# 2332 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6819
6820# 2332 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6821#endif
6822 do i = -1, 1
6823 rho_l = 0._wp
6824
6825# 2335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6826#if defined(MFC_OpenACC)
6827# 2335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6828!$acc loop seq
6829# 2335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6830#elif defined(MFC_OpenMP)
6831# 2335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6832
6833# 2335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6834#endif
6835 do r = 1, num_fluids
6836 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k, l + q)
6837 end do
6838 rho_sf_small(i) = rho_l
6839 end do
6840
6841 dvel_small(1) = (1/(2._wp*dx(j)))*( &
6842 q_cons_vf(momxb)%sf(j + 1, k, l + q)/rho_sf_small(1) - &
6843 q_cons_vf(momxb)%sf(j - 1, k, l + q)/rho_sf_small(-1))
6844 dvel_small(3) = (1/(2._wp*dx(j)))*( &
6845 q_cons_vf(momxb + 2)%sf(j + 1, k, l + q)/rho_sf_small(1) - &
6846 q_cons_vf(momxb + 2)%sf(j - 1, k, l + q)/rho_sf_small(-1))
6847
6848 if (q > vidxb) then
6849 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(3))
6850 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
6851 end if
6852 if (q < vidxe) then
6853 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(3))
6854 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
6855 end if
6856
6857 !y-direction contributions
6858
6859# 2359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6860#if defined(MFC_OpenACC)
6861# 2359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6862!$acc loop seq
6863# 2359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6864#elif defined(MFC_OpenMP)
6865# 2359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6866
6867# 2359 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6868#endif
6869 do i = -1, 1
6870 rho_l = 0._wp
6871
6872# 2362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6873#if defined(MFC_OpenACC)
6874# 2362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6875!$acc loop seq
6876# 2362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6877#elif defined(MFC_OpenMP)
6878# 2362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6879
6880# 2362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6881#endif
6882 do r = 1, num_fluids
6883 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i, l + q)
6884 end do
6885 rho_sf_small(i) = rho_l
6886 end do
6887
6888 dvel_small(2) = (1/(2._wp*dy(k)))*( &
6889 q_cons_vf(momxb + 1)%sf(j, k + 1, l + q)/rho_sf_small(1) - &
6890 q_cons_vf(momxb + 1)%sf(j, k - 1, l + q)/rho_sf_small(-1))
6891 dvel_small(3) = (1/(2._wp*dy(k)))*( &
6892 q_cons_vf(momxb + 2)%sf(j, k + 1, l + q)/rho_sf_small(1) - &
6893 q_cons_vf(momxb + 2)%sf(j, k - 1, l + q)/rho_sf_small(-1))
6894
6895 if (q > vidxb) then
6896 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
6897 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
6898 end if
6899 if (q < vidxe) then
6900 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
6901 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
6902 end if
6903
6904 !z-direction contributions
6905
6906# 2386 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6907#if defined(MFC_OpenACC)
6908# 2386 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6909!$acc loop seq
6910# 2386 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6911#elif defined(MFC_OpenMP)
6912# 2386 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6913
6914# 2386 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6915#endif
6916 do i = -1, 1
6917 rho_l = 0._wp
6918
6919# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6920#if defined(MFC_OpenACC)
6921# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6922!$acc loop seq
6923# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6924#elif defined(MFC_OpenMP)
6925# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6926
6927# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6928#endif
6929 do r = 1, num_fluids
6930 rho_l = rho_l + q_cons_vf(r)%sf(j, k, l + i + q)
6931 end do
6932 rho_sf_small(i) = rho_l
6933 end do
6934 dvel_small(1) = (1/(2._wp*dz(l)))*( &
6935 q_cons_vf(momxb)%sf(j, k, l + 1 + q)/rho_sf_small(1) - &
6936 q_cons_vf(momxb)%sf(j, k, l - 1 + q)/rho_sf_small(-1))
6937 dvel_small(2) = (1/(2._wp*dz(l)))*( &
6938 q_cons_vf(momxb + 1)%sf(j, k, l + 1 + q)/rho_sf_small(1) - &
6939 q_cons_vf(momxb + 1)%sf(j, k, l - 1 + q)/rho_sf_small(-1))
6940 dvel_small(3) = (1/(2._wp*dz(l)))*( &
6941 q_cons_vf(momxb + 2)%sf(j, k, l + 1 + q)/rho_sf_small(1) - &
6942 q_cons_vf(momxb + 2)%sf(j, k, l - 1 + q)/rho_sf_small(-1))
6943 if (q > vidxb) then
6944 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
6945 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
6946 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(3))/3._wp
6947 end if
6948 if (q < vidxe) then
6949 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
6950 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
6951 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(3))/3._wp
6952 end if
6953 end do
6954 end if
6955
6956
6957# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6958#if defined(MFC_OpenACC)
6959# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6960!$acc loop seq
6961# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6962#elif defined(MFC_OpenMP)
6963# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6964
6965# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6966#endif
6967 do i = 1, num_fluids
6968 alpha_rho_l(i) = 0._wp
6969 alpha_rho_r(i) = 0._wp
6970 alpha_l(i) = 0._wp
6971 alpha_r(i) = 0._wp
6972 end do
6973
6974
6975# 2425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6976#if defined(MFC_OpenACC)
6977# 2425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6978!$acc loop seq
6979# 2425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6980#elif defined(MFC_OpenMP)
6981# 2425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6982
6983# 2425 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6984#endif
6985 do i = 1, num_dims
6986 vel_l(i) = 0._wp
6987 vel_r(i) = 0._wp
6988 end do
6989
6990
6991# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6992#if defined(MFC_OpenACC)
6993# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6994!$acc loop seq
6995# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6996#elif defined(MFC_OpenMP)
6997# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6998
6999# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7000#endif
7001 do q = vidxb + 1, vidxe
7002
7003# 2433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7004#if defined(MFC_OpenACC)
7005# 2433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7006!$acc loop seq
7007# 2433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7008#elif defined(MFC_OpenMP)
7009# 2433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7010
7011# 2433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7012#endif
7013 do i = 1, num_fluids
7014 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k, l + q)
7015 end do
7016
7017 if (num_fluids > 1) then
7018
7019# 2439 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7020#if defined(MFC_OpenACC)
7021# 2439 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7022!$acc loop seq
7023# 2439 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7024#elif defined(MFC_OpenMP)
7025# 2439 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7026
7027# 2439 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7028#endif
7029 do i = 1, num_fluids - 1
7030 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(e_idx + i)%sf(j, k, l + q)
7031 end do
7032 else
7033 alpha_l(1) = 1._wp
7034 end if
7035
7036
7037# 2447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7038#if defined(MFC_OpenACC)
7039# 2447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7040!$acc loop seq
7041# 2447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7042#elif defined(MFC_OpenMP)
7043# 2447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7044
7045# 2447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7046#endif
7047 do i = 1, num_dims
7048 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(momxb + i - 1)%sf(j, k, l + q)
7049 end do
7050 end do
7051
7052
7053# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7054#if defined(MFC_OpenACC)
7055# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7056!$acc loop seq
7057# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7058#elif defined(MFC_OpenMP)
7059# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7060
7061# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7062#endif
7063 do q = vidxb, vidxe - 1
7064
7065# 2455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7066#if defined(MFC_OpenACC)
7067# 2455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7068!$acc loop seq
7069# 2455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7070#elif defined(MFC_OpenMP)
7071# 2455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7072
7073# 2455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7074#endif
7075 do i = 1, num_fluids
7076 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k, l + q)
7077 end do
7078
7079 if (num_fluids > 1) then
7080
7081# 2461 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7082#if defined(MFC_OpenACC)
7083# 2461 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7084!$acc loop seq
7085# 2461 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7086#elif defined(MFC_OpenMP)
7087# 2461 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7088
7089# 2461 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7090#endif
7091 do i = 1, num_fluids - 1
7092 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(e_idx + i)%sf(j, k, l + q)
7093 end do
7094 else
7095 alpha_r(1) = 1._wp
7096 end if
7097
7098
7099# 2469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7100#if defined(MFC_OpenACC)
7101# 2469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7102!$acc loop seq
7103# 2469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7104#elif defined(MFC_OpenMP)
7105# 2469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7106
7107# 2469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7108#endif
7109 do i = 1, num_dims
7110 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(momxb + i - 1)%sf(j, k, l + q)
7111 end do
7112 end do
7113
7114 if (num_fluids > 1) then
7115
7116 alpha_l(num_fluids) = 1._wp
7117 alpha_r(num_fluids) = 1._wp
7118
7119
7120# 2480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7121#if defined(MFC_OpenACC)
7122# 2480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7123!$acc loop seq
7124# 2480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7125#elif defined(MFC_OpenMP)
7126# 2480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7127
7128# 2480 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7129#endif
7130 do i = 1, num_fluids - 1
7131 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
7132 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
7133 end do
7134 end if
7135
7136 rho_l = 0._wp; rho_r = 0._wp
7137 gamma_l = 0._wp; gamma_r = 0._wp
7138 pi_inf_l = 0._wp; pi_inf_r = 0._wp
7139
7140
7141# 2491 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7142#if defined(MFC_OpenACC)
7143# 2491 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7144!$acc loop seq
7145# 2491 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7146#elif defined(MFC_OpenMP)
7147# 2491 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7148
7149# 2491 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7150#endif
7151 do i = 1, num_fluids
7152 rho_l = rho_l + alpha_rho_l(i)
7153 gamma_l = gamma_l + alpha_l(i)*gammas(i)
7154 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
7155
7156 rho_r = rho_r + alpha_rho_r(i)
7157 gamma_r = gamma_r + alpha_r(i)*gammas(i)
7158 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
7159 end do
7160
7161
7162# 2502 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7163#if defined(MFC_OpenACC)
7164# 2502 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7165!$acc loop seq
7166# 2502 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7167#elif defined(MFC_OpenMP)
7168# 2502 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7169
7170# 2502 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7171#endif
7172 do i = 1, num_dims
7173 vel_l(i) = vel_l(i)/rho_l
7174 vel_r(i) = vel_r(i)/rho_r
7175 end do
7176
7177 if (viscous) then
7178 mu_l = 0._wp
7179 mu_r = 0._wp
7180
7181# 2511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7182#if defined(MFC_OpenACC)
7183# 2511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7184!$acc loop seq
7185# 2511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7186#elif defined(MFC_OpenMP)
7187# 2511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7188
7189# 2511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7190#endif
7191 do i = 1, num_fluids
7192 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
7193 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
7194 end do
7195
7196
7197# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7198#if defined(MFC_OpenACC)
7199# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7200!$acc atomic update
7201# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7202#elif defined(MFC_OpenMP)
7203# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7204!$omp atomic update
7205# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7206#endif
7207 rhs_vf(momxb)%sf(j, k, l + 1) = rhs_vf(momxb)%sf(j, k, l + 1) - &
7208 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7209
7210# 2520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7211#if defined(MFC_OpenACC)
7212# 2520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7213!$acc atomic update
7214# 2520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7215#elif defined(MFC_OpenMP)
7216# 2520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7217!$omp atomic update
7218# 2520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7219#endif
7220 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) - &
7221 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l + 1)), kind=stp)
7222
7223
7224# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7225#if defined(MFC_OpenACC)
7226# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7227!$acc atomic update
7228# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7229#elif defined(MFC_OpenMP)
7230# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7231!$omp atomic update
7232# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7233#endif
7234 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
7235 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l)), kind=stp)
7236
7237# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7238#if defined(MFC_OpenACC)
7239# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7240!$acc atomic update
7241# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7242#elif defined(MFC_OpenMP)
7243# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7244!$omp atomic update
7245# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7246#endif
7247 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
7248 real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l)), kind=stp)
7249
7250
7251# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7252#if defined(MFC_OpenACC)
7253# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7254!$acc atomic update
7255# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7256#elif defined(MFC_OpenMP)
7257# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7258!$omp atomic update
7259# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7260#endif
7261 rhs_vf(momxb)%sf(j, k, l + 1) = rhs_vf(momxb)%sf(j, k, l + 1) - &
7262 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7263
7264# 2534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7265#if defined(MFC_OpenACC)
7266# 2534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7267!$acc atomic update
7268# 2534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7269#elif defined(MFC_OpenMP)
7270# 2534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7271!$omp atomic update
7272# 2534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7273#endif
7274 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) - &
7275 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l + 1)), kind=stp)
7276
7277
7278# 2538 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7279#if defined(MFC_OpenACC)
7280# 2538 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7281!$acc atomic update
7282# 2538 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7283#elif defined(MFC_OpenMP)
7284# 2538 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7285!$omp atomic update
7286# 2538 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7287#endif
7288 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) + &
7289 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l)), kind=stp)
7290
7291# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7292#if defined(MFC_OpenACC)
7293# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7294!$acc atomic update
7295# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7296#elif defined(MFC_OpenMP)
7297# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7298!$omp atomic update
7299# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7300#endif
7301 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
7302 real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l)), kind=stp)
7303
7304
7305# 2545 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7306#if defined(MFC_OpenACC)
7307# 2545 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7308!$acc atomic update
7309# 2545 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7310#elif defined(MFC_OpenMP)
7311# 2545 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7312!$omp atomic update
7313# 2545 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7314#endif
7315 rhs_vf(momxb + 1)%sf(j, k, l + 1) = rhs_vf(momxb + 1)%sf(j, k, l + 1) - &
7316 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7317
7318# 2548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7319#if defined(MFC_OpenACC)
7320# 2548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7321!$acc atomic update
7322# 2548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7323#elif defined(MFC_OpenMP)
7324# 2548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7325!$omp atomic update
7326# 2548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7327#endif
7328 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) - &
7329 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l + 1)), kind=stp)
7330
7331
7332# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7333#if defined(MFC_OpenACC)
7334# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7335!$acc atomic update
7336# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7337#elif defined(MFC_OpenMP)
7338# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7339!$omp atomic update
7340# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7341#endif
7342 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
7343 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l)), kind=stp)
7344
7345# 2555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7346#if defined(MFC_OpenACC)
7347# 2555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7348!$acc atomic update
7349# 2555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7350#elif defined(MFC_OpenMP)
7351# 2555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7352!$omp atomic update
7353# 2555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7354#endif
7355 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
7356 real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l)), kind=stp)
7357
7358
7359# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7360#if defined(MFC_OpenACC)
7361# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7362!$acc atomic update
7363# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7364#elif defined(MFC_OpenMP)
7365# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7366!$omp atomic update
7367# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7368#endif
7369 rhs_vf(momxb + 1)%sf(j, k, l + 1) = rhs_vf(momxb + 1)%sf(j, k, l + 1) - &
7370 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7371
7372# 2562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7373#if defined(MFC_OpenACC)
7374# 2562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7375!$acc atomic update
7376# 2562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7377#elif defined(MFC_OpenMP)
7378# 2562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7379!$omp atomic update
7380# 2562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7381#endif
7382 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) - &
7383 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l + 1)), kind=stp)
7384
7385
7386# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7387#if defined(MFC_OpenACC)
7388# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7389!$acc atomic update
7390# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7391#elif defined(MFC_OpenMP)
7392# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7393!$omp atomic update
7394# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7395#endif
7396 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) + &
7397 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l)), kind=stp)
7398
7399# 2569 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7400#if defined(MFC_OpenACC)
7401# 2569 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7402!$acc atomic update
7403# 2569 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7404#elif defined(MFC_OpenMP)
7405# 2569 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7406!$omp atomic update
7407# 2569 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7408#endif
7409 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
7410 real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l)), kind=stp)
7411
7412
7413# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7414#if defined(MFC_OpenACC)
7415# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7416!$acc atomic update
7417# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7418#elif defined(MFC_OpenMP)
7419# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7420!$omp atomic update
7421# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7422#endif
7423 rhs_vf(momxb + 2)%sf(j, k, l + 1) = rhs_vf(momxb + 2)%sf(j, k, l + 1) - &
7424 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7425
7426# 2576 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7427#if defined(MFC_OpenACC)
7428# 2576 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7429!$acc atomic update
7430# 2576 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7431#elif defined(MFC_OpenMP)
7432# 2576 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7433!$omp atomic update
7434# 2576 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7435#endif
7436 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) - &
7437 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7438
7439
7440# 2580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7441#if defined(MFC_OpenACC)
7442# 2580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7443!$acc atomic update
7444# 2580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7445#elif defined(MFC_OpenMP)
7446# 2580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7447!$omp atomic update
7448# 2580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7449#endif
7450 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) + &
7451 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l)), kind=stp)
7452
7453# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7454#if defined(MFC_OpenACC)
7455# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7456!$acc atomic update
7457# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7458#elif defined(MFC_OpenMP)
7459# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7460!$omp atomic update
7461# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7462#endif
7463 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
7464 real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l)), kind=stp)
7465
7466
7467# 2587 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7468#if defined(MFC_OpenACC)
7469# 2587 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7470!$acc atomic update
7471# 2587 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7472#elif defined(MFC_OpenMP)
7473# 2587 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7474!$omp atomic update
7475# 2587 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7476#endif
7477 rhs_vf(momxb + 2)%sf(j, k, l + 1) = rhs_vf(momxb + 2)%sf(j, k, l + 1) - &
7478 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7479
7480# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7481#if defined(MFC_OpenACC)
7482# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7483!$acc atomic update
7484# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7485#elif defined(MFC_OpenMP)
7486# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7487!$omp atomic update
7488# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7489#endif
7490 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) - &
7491 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7492
7493
7494# 2594 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7495#if defined(MFC_OpenACC)
7496# 2594 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7497!$acc atomic update
7498# 2594 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7499#elif defined(MFC_OpenMP)
7500# 2594 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7501!$omp atomic update
7502# 2594 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7503#endif
7504 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) + &
7505 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l)), kind=stp)
7506
7507# 2597 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7508#if defined(MFC_OpenACC)
7509# 2597 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7510!$acc atomic update
7511# 2597 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7512#elif defined(MFC_OpenMP)
7513# 2597 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7514!$omp atomic update
7515# 2597 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7516#endif
7517 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) + &
7518 real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l)), kind=stp)
7519 end if
7520
7521 e_l = 0._wp; e_r = 0._wp
7522 f_l = 0._wp; f_r = 0._wp
7523
7524
7525# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7526#if defined(MFC_OpenACC)
7527# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7528!$acc loop seq
7529# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7530#elif defined(MFC_OpenMP)
7531# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7532
7533# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7534#endif
7535 do q = vidxb + 1, vidxe
7536 e_l = e_l + coeff_l(q)*q_cons_vf(e_idx)%sf(j, k, l + q)
7537 f_l = f_l + coeff_l(q)*jac(j, k, l + q)
7538 end do
7539
7540
7541# 2611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7542#if defined(MFC_OpenACC)
7543# 2611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7544!$acc loop seq
7545# 2611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7546#elif defined(MFC_OpenMP)
7547# 2611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7548
7549# 2611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7550#endif
7551 do q = vidxb, vidxe - 1
7552 e_r = e_r + coeff_r(q)*q_cons_vf(e_idx)%sf(j, k, l + q)
7553 f_r = f_r + coeff_r(q)*jac(j, k, l + q)
7554 end do
7555
7556 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, &
7557 e_r, gamma_r, pi_inf_r, rho_r, vel_r, &
7558 pres_l, pres_r, cfl)
7559
7560
7561# 2621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7562#if defined(MFC_OpenACC)
7563# 2621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7564!$acc loop seq
7565# 2621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7566#elif defined(MFC_OpenMP)
7567# 2621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7568
7569# 2621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7570#endif
7571 do i = 1, num_fluids
7572
7573# 2623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7574#if defined(MFC_OpenACC)
7575# 2623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7576!$acc atomic update
7577# 2623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7578#elif defined(MFC_OpenMP)
7579# 2623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7580!$omp atomic update
7581# 2623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7582#endif
7583 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, l + 1) + &
7584 real(0.5_wp*dt*(alpha_rho_l(i)* &
7585 vel_l(3))*(1._wp/dz(l + 1)) - &
7586 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l + 1)), kind=stp)
7587
7588
7589# 2629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7590#if defined(MFC_OpenACC)
7591# 2629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7592!$acc atomic update
7593# 2629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7594#elif defined(MFC_OpenMP)
7595# 2629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7596!$omp atomic update
7597# 2629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7598#endif
7599 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
7600 real(0.5_wp*dt*(alpha_rho_l(i)* &
7601 vel_l(3))*(1._wp/dz(l)) - &
7602 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l)), kind=stp)
7603 end do
7604
7605 if (num_fluids > 1) then
7606
7607# 2637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7608#if defined(MFC_OpenACC)
7609# 2637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7610!$acc loop seq
7611# 2637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7612#elif defined(MFC_OpenMP)
7613# 2637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7614
7615# 2637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7616#endif
7617 do i = 1, num_fluids - 1
7618
7619# 2639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7620#if defined(MFC_OpenACC)
7621# 2639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7622!$acc atomic update
7623# 2639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7624#elif defined(MFC_OpenMP)
7625# 2639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7626!$omp atomic update
7627# 2639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7628#endif
7629 rhs_vf(advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(advxb + i - 1)%sf(j, k, l + 1) + &
7630 real(0.5_wp*dt*(alpha_l(i)* &
7631 vel_l(3))*(1._wp/dz(l + 1)) - &
7632 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dz(l + 1)), kind=stp)
7633
7634
7635# 2645 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7636#if defined(MFC_OpenACC)
7637# 2645 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7638!$acc atomic update
7639# 2645 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7640#elif defined(MFC_OpenMP)
7641# 2645 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7642!$omp atomic update
7643# 2645 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7644#endif
7645 rhs_vf(advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(advxb + i - 1)%sf(j, k, l + 1) &
7646 - real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l + 1)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7647
7648
7649# 2649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7650#if defined(MFC_OpenACC)
7651# 2649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7652!$acc atomic update
7653# 2649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7654#elif defined(MFC_OpenMP)
7655# 2649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7656!$omp atomic update
7657# 2649 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7658#endif
7659 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
7660 real(0.5_wp*dt*(alpha_l(i)* &
7661 vel_l(3))*(1._wp/dz(l)) - &
7662 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dz(l)), kind=stp)
7663
7664
7665# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7666#if defined(MFC_OpenACC)
7667# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7668!$acc atomic update
7669# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7670#elif defined(MFC_OpenMP)
7671# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7672!$omp atomic update
7673# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7674#endif
7675 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
7676 + real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_l(3)*(1._wp/dz(l)), kind=stp)
7677 end do
7678 end if
7679
7680
7681# 2661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7682#if defined(MFC_OpenACC)
7683# 2661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7684!$acc atomic update
7685# 2661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7686#elif defined(MFC_OpenMP)
7687# 2661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7688!$omp atomic update
7689# 2661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7690#endif
7691 rhs_vf(momxb + 2)%sf(j, k, l + 1) = rhs_vf(momxb + 2)%sf(j, k, l + 1) + &
7692 real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + &
7693 pres_l + f_l)*(1._wp/dz(l + 1)) - &
7694 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l + 1)), kind=stp)
7695
7696
7697# 2667 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7698#if defined(MFC_OpenACC)
7699# 2667 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7700!$acc atomic update
7701# 2667 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7702#elif defined(MFC_OpenMP)
7703# 2667 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7704!$omp atomic update
7705# 2667 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7706#endif
7707 rhs_vf(momxb)%sf(j, k, l + 1) = rhs_vf(momxb)%sf(j, k, l + 1) + &
7708 real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l + 1)) - &
7709 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dz(l + 1)), kind=stp)
7710
7711
7712# 2672 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7713#if defined(MFC_OpenACC)
7714# 2672 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7715!$acc atomic update
7716# 2672 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7717#elif defined(MFC_OpenMP)
7718# 2672 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7719!$omp atomic update
7720# 2672 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7721#endif
7722 rhs_vf(momxb + 1)%sf(j, k, l + 1) = rhs_vf(momxb + 1)%sf(j, k, l + 1) + &
7723 real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l + 1)) - &
7724 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dz(l + 1)), kind=stp)
7725
7726
7727# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7728#if defined(MFC_OpenACC)
7729# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7730!$acc atomic update
7731# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7732#elif defined(MFC_OpenMP)
7733# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7734!$omp atomic update
7735# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7736#endif
7737 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) + &
7738 real(0.5_wp*dt*(vel_l(3)*(e_l + &
7739 pres_l + f_l))*(1._wp/dz(l + 1)) - &
7740 0.5_wp*dt*cfl*(e_l)*(1._wp/dz(l + 1)), kind=stp)
7741
7742
7743# 2683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7744#if defined(MFC_OpenACC)
7745# 2683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7746!$acc atomic update
7747# 2683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7748#elif defined(MFC_OpenMP)
7749# 2683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7750!$omp atomic update
7751# 2683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7752#endif
7753 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) - &
7754 real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + &
7755 pres_l + f_l)*(1._wp/dz(l)) - &
7756 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l)), kind=stp)
7757
7758
7759# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7760#if defined(MFC_OpenACC)
7761# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7762!$acc atomic update
7763# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7764#elif defined(MFC_OpenMP)
7765# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7766!$omp atomic update
7767# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7768#endif
7769 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
7770 real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l)) - &
7771 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dz(l)), kind=stp)
7772
7773
7774# 2694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7775#if defined(MFC_OpenACC)
7776# 2694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7777!$acc atomic update
7778# 2694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7779#elif defined(MFC_OpenMP)
7780# 2694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7781!$omp atomic update
7782# 2694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7783#endif
7784 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
7785 real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l)) - &
7786 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dz(l)), kind=stp)
7787
7788
7789# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7790#if defined(MFC_OpenACC)
7791# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7792!$acc atomic update
7793# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7794#elif defined(MFC_OpenMP)
7795# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7796!$omp atomic update
7797# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7798#endif
7799 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
7800 real(0.5_wp*dt*(vel_l(3)*(e_l + &
7801 pres_l + f_l))*(1._wp/dz(l)) - &
7802 0.5_wp*dt*cfl*(e_l)*(1._wp/dz(l)), kind=stp)
7803
7804
7805# 2705 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7806#if defined(MFC_OpenACC)
7807# 2705 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7808!$acc loop seq
7809# 2705 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7810#elif defined(MFC_OpenMP)
7811# 2705 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7812
7813# 2705 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7814#endif
7815 do i = 1, num_fluids
7816
7817# 2707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7818#if defined(MFC_OpenACC)
7819# 2707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7820!$acc atomic update
7821# 2707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7822#elif defined(MFC_OpenMP)
7823# 2707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7824!$omp atomic update
7825# 2707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7826#endif
7827 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, l + 1) + &
7828 real(0.5_wp*dt*(alpha_rho_r(i)* &
7829 vel_r(3))*(1._wp/dz(l + 1)) + &
7830 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l + 1)), kind=stp)
7831
7832
7833# 2713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7834#if defined(MFC_OpenACC)
7835# 2713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7836!$acc atomic update
7837# 2713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7838#elif defined(MFC_OpenMP)
7839# 2713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7840!$omp atomic update
7841# 2713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7842#endif
7843 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) - &
7844 real(0.5_wp*dt*(alpha_rho_r(i)* &
7845 vel_r(3))*(1._wp/dz(l)) + &
7846 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l)), kind=stp)
7847 end do
7848
7849 if (num_fluids > 1) then
7850
7851# 2721 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7852#if defined(MFC_OpenACC)
7853# 2721 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7854!$acc loop seq
7855# 2721 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7856#elif defined(MFC_OpenMP)
7857# 2721 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7858
7859# 2721 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7860#endif
7861 do i = 1, num_fluids - 1
7862
7863# 2723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7864#if defined(MFC_OpenACC)
7865# 2723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7866!$acc atomic update
7867# 2723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7868#elif defined(MFC_OpenMP)
7869# 2723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7870!$omp atomic update
7871# 2723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7872#endif
7873 rhs_vf(advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(advxb + i - 1)%sf(j, k, l + 1) + &
7874 real(0.5_wp*dt*(alpha_r(i)* &
7875 vel_r(3))*(1._wp/dz(l + 1)) + &
7876 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dz(l + 1)), kind=stp)
7877
7878
7879# 2729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7880#if defined(MFC_OpenACC)
7881# 2729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7882!$acc atomic update
7883# 2729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7884#elif defined(MFC_OpenMP)
7885# 2729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7886!$omp atomic update
7887# 2729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7888#endif
7889 rhs_vf(advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(advxb + i - 1)%sf(j, k, l + 1) &
7890 - real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l + 1)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7891
7892
7893# 2733 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7894#if defined(MFC_OpenACC)
7895# 2733 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7896!$acc atomic update
7897# 2733 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7898#elif defined(MFC_OpenMP)
7899# 2733 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7900!$omp atomic update
7901# 2733 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7902#endif
7903 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) - &
7904 real(0.5_wp*dt*(alpha_r(i)* &
7905 vel_r(3))*(1._wp/dz(l)) + &
7906 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dz(l)), kind=stp)
7907
7908
7909# 2739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7910#if defined(MFC_OpenACC)
7911# 2739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7912!$acc atomic update
7913# 2739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7914#elif defined(MFC_OpenMP)
7915# 2739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7916!$omp atomic update
7917# 2739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7918#endif
7919 rhs_vf(advxb + i - 1)%sf(j, k, l) = rhs_vf(advxb + i - 1)%sf(j, k, l) &
7920 + real(0.5_wp*dt*q_cons_vf(advxb + i - 1)%sf(j, k, l)*vel_r(3)*(1._wp/dz(l)), kind=stp)
7921 end do
7922 end if
7923
7924
7925# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7926#if defined(MFC_OpenACC)
7927# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7928!$acc atomic update
7929# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7930#elif defined(MFC_OpenMP)
7931# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7932!$omp atomic update
7933# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7934#endif
7935 rhs_vf(momxb + 2)%sf(j, k, l + 1) = rhs_vf(momxb + 2)%sf(j, k, l + 1) + &
7936 real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + &
7937 pres_r + f_r)*(1._wp/dz(l + 1)) + &
7938 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l + 1)), kind=stp)
7939
7940
7941# 2751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7942#if defined(MFC_OpenACC)
7943# 2751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7944!$acc atomic update
7945# 2751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7946#elif defined(MFC_OpenMP)
7947# 2751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7948!$omp atomic update
7949# 2751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7950#endif
7951 rhs_vf(momxb)%sf(j, k, l + 1) = rhs_vf(momxb)%sf(j, k, l + 1) + &
7952 real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l + 1)) + &
7953 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dz(l + 1)), kind=stp)
7954
7955
7956# 2756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7957#if defined(MFC_OpenACC)
7958# 2756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7959!$acc atomic update
7960# 2756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7961#elif defined(MFC_OpenMP)
7962# 2756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7963!$omp atomic update
7964# 2756 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7965#endif
7966 rhs_vf(momxb + 1)%sf(j, k, l + 1) = rhs_vf(momxb + 1)%sf(j, k, l + 1) + &
7967 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l + 1)) + &
7968 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dz(l + 1)), kind=stp)
7969
7970
7971# 2761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7972#if defined(MFC_OpenACC)
7973# 2761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7974!$acc atomic update
7975# 2761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7976#elif defined(MFC_OpenMP)
7977# 2761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7978!$omp atomic update
7979# 2761 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7980#endif
7981 rhs_vf(e_idx)%sf(j, k, l + 1) = rhs_vf(e_idx)%sf(j, k, l + 1) + &
7982 real(0.5_wp*dt*(vel_r(3)*(e_r + &
7983 pres_r + f_r))*(1._wp/dz(l + 1)) + &
7984 0.5_wp*dt*cfl*(e_r)*(1._wp/dz(l + 1)), kind=stp)
7985
7986
7987# 2767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7988#if defined(MFC_OpenACC)
7989# 2767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7990!$acc atomic update
7991# 2767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7992#elif defined(MFC_OpenMP)
7993# 2767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7994!$omp atomic update
7995# 2767 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7996#endif
7997 rhs_vf(momxb + 2)%sf(j, k, l) = rhs_vf(momxb + 2)%sf(j, k, l) - &
7998 real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + &
7999 pres_r + f_r)*(1._wp/dz(l)) + &
8000 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l)), kind=stp)
8001
8002
8003# 2773 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8004#if defined(MFC_OpenACC)
8005# 2773 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8006!$acc atomic update
8007# 2773 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8008#elif defined(MFC_OpenMP)
8009# 2773 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8010!$omp atomic update
8011# 2773 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8012#endif
8013 rhs_vf(momxb)%sf(j, k, l) = rhs_vf(momxb)%sf(j, k, l) - &
8014 real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l)) + &
8015 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dz(l)), kind=stp)
8016
8017
8018# 2778 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8019#if defined(MFC_OpenACC)
8020# 2778 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8021!$acc atomic update
8022# 2778 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8023#elif defined(MFC_OpenMP)
8024# 2778 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8025!$omp atomic update
8026# 2778 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8027#endif
8028 rhs_vf(momxb + 1)%sf(j, k, l) = rhs_vf(momxb + 1)%sf(j, k, l) - &
8029 real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l)) + &
8030 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dz(l)), kind=stp)
8031
8032
8033# 2783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8034#if defined(MFC_OpenACC)
8035# 2783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8036!$acc atomic update
8037# 2783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8038#elif defined(MFC_OpenMP)
8039# 2783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8040!$omp atomic update
8041# 2783 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8042#endif
8043 rhs_vf(e_idx)%sf(j, k, l) = rhs_vf(e_idx)%sf(j, k, l) - &
8044 real(0.5_wp*dt*(vel_r(3)*(e_r + &
8045 pres_r + f_r))*(1._wp/dz(l)) + &
8046 0.5_wp*dt*cfl*(e_r)*(1._wp/dz(l)), kind=stp)
8047
8048 end do
8049 end do
8050 end do
8051
8052# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8053
8054# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8055#if defined(MFC_OpenACC)
8056# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8057!$acc end parallel loop
8058# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8059#elif defined(MFC_OpenMP)
8060# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8061
8062# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8063
8064# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8065!$omp end target teams loop
8066# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8067#endif
8068# 2792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8069
8070# 2794 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8071 end if
8072
8073 end subroutine s_igr_riemann_solver
8074
8075 !> @brief Computes pressure and maximum wavespeed from left and right reconstructed states for the IGR Riemann solver.
8076 subroutine s_get_derived_states(E_L, gamma_L, pi_inf_L, rho_L, vel_L, &
8077 E_R, gamma_R, pi_inf_R, rho_R, vel_R, &
8078 pres_L, pres_R, cfl)
8079
8080# 2802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8081#if MFC_OpenACC
8082# 2802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8083!$acc routine seq
8084# 2802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8085#elif MFC_OpenMP
8086# 2802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8087
8088# 2802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8089
8090# 2802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8091!$omp declare target device_type(any)
8092# 2802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8093#endif
8094
8095 real(wp), intent(in) :: E_L, gamma_L, pi_inf_L, rho_L
8096 real(wp), intent(in) :: E_R, gamma_R, pi_inf_R, rho_R
8097 real(wp), dimension(num_dims), intent(in) :: vel_L, vel_R
8098 real(wp), intent(out) :: pres_L, pres_R, cfl
8099
8100 real(wp) :: a_L, a_R
8101
8102 if (num_dims == 2) then
8103 pres_l = (e_l - pi_inf_l - 0.5_wp*rho_l*(vel_l(1)**2._wp + vel_l(2)**2._wp))/gamma_l
8104 pres_r = (e_r - pi_inf_r - 0.5_wp*rho_r*(vel_r(1)**2._wp + vel_r(2)**2._wp))/gamma_r
8105
8106 if (igr_pres_lim) then
8107 pres_l = max(pres_l, 0._wp)
8108 pres_r = max(pres_r, 0._wp)
8109 end if
8110
8111 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
8112 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
8113
8114 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp), &
8115 sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp)) + &
8116 max(a_l, a_r)
8117 elseif (num_dims == 3) then
8118# 2828 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8119 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
8120 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
8121
8122 if (igr_pres_lim) then
8123 pres_l = max(pres_l, 0._wp)
8124 pres_r = max(pres_r, 0._wp)
8125 end if
8126
8127 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
8128 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
8129
8130 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp + vel_l(3)**2._wp), &
8131 sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp + vel_r(3)**2._wp)) + &
8132 max(a_l, a_r)
8133# 2843 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8134 end if
8135
8136 end subroutine s_get_derived_states
8137
8138 !> @brief Accumulates the IGR numerical flux divergence into the right-hand side along the specified coordinate direction.
8139 subroutine s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
8140
8141 type(scalar_field), &
8142 dimension(sys_size), &
8143 intent(inout) :: q_cons_vf, flux_vf, rhs_vf
8144
8145 integer, intent(in) :: idir
8146
8147 if (idir == 1) then
8148
8149# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8150
8151# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8152#if defined(MFC_OpenACC)
8153# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8154!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8155# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8156#elif defined(MFC_OpenMP)
8157# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8158
8159# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8160
8161# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8162
8163# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8164!$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)
8165# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8166#endif
8167# 2857 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8168
8169 do i = 1, sys_size
8170 do l = 0, p
8171 do k = 0, n
8172 do j = 0, m
8173 rhs_vf(i)%sf(j, k, l) = 1._wp/dx(j)* &
8174 (flux_vf(i)%sf(j - 1, k, l) &
8175 - flux_vf(i)%sf(j, k, l))
8176 end do
8177 end do
8178 end do
8179 end do
8180
8181# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8182
8183# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8184#if defined(MFC_OpenACC)
8185# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8186!$acc end parallel loop
8187# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8188#elif defined(MFC_OpenMP)
8189# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8190
8191# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8192
8193# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8194!$omp end target teams loop
8195# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8196#endif
8197# 2869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8198
8199 elseif (idir == 2) then
8200
8201# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8202
8203# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8204#if defined(MFC_OpenACC)
8205# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8206!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8207# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8208#elif defined(MFC_OpenMP)
8209# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8210
8211# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8212
8213# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8214
8215# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8216!$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)
8217# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8218#endif
8219# 2871 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8220
8221 do i = 1, sys_size
8222 do l = 0, p
8223 do k = 0, n
8224 do j = 0, m
8225 rhs_vf(i)%sf(j, k, l) = &
8226 rhs_vf(i)%sf(j, k, l) + 1._wp/dy(k)* &
8227 (flux_vf(i)%sf(j, k - 1, l) &
8228 - flux_vf(i)%sf(j, k, l))
8229 end do
8230 end do
8231 end do
8232 end do
8233
8234# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8235
8236# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8237#if defined(MFC_OpenACC)
8238# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8239!$acc end parallel loop
8240# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8241#elif defined(MFC_OpenMP)
8242# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8243
8244# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8245
8246# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8247!$omp end target teams loop
8248# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8249#endif
8250# 2884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8251
8252 elseif (idir == 3) then
8253
8254# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8255
8256# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8257#if defined(MFC_OpenACC)
8258# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8259!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8260# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8261#elif defined(MFC_OpenMP)
8262# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8263
8264# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8265
8266# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8267
8268# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8269!$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)
8270# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8271#endif
8272# 2886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8273
8274 do i = 1, sys_size
8275 do l = 0, p
8276 do k = 0, n
8277 do j = 0, m
8278 rhs_vf(i)%sf(j, k, l) = &
8279 rhs_vf(i)%sf(j, k, l) + 1._wp/dz(l)* &
8280 (flux_vf(i)%sf(j, k, l - 1) &
8281 - flux_vf(i)%sf(j, k, l))
8282 end do
8283 end do
8284 end do
8285 end do
8286
8287# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8288
8289# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8290#if defined(MFC_OpenACC)
8291# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8292!$acc end parallel loop
8293# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8294#elif defined(MFC_OpenMP)
8295# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8296
8297# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8298
8299# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8300!$omp end target teams loop
8301# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8302#endif
8303# 2899 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8304
8305 end if
8306
8307 end subroutine s_igr_flux_add
8308
8309 !> @brief Deallocates all arrays and GPU resources allocated by the IGR module.
8311
8312 if (viscous) then
8313#ifdef MFC_DEBUG
8314# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8315 block
8316# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8317 use iso_fortran_env, only: output_unit
8318# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8319
8320# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8321 print *, 'm_igr.fpp:2908: ', '@:DEALLOCATE(Res_igr)'
8322# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8323
8324# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8325 call flush (output_unit)
8326# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8327 end block
8328# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8329#endif
8330# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8331
8332# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8333#if defined(MFC_OpenACC)
8334# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8335!$acc exit data delete(Res_igr)
8336# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8337#elif defined(MFC_OpenMP)
8338# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8339!$omp target exit data map(release:Res_igr)
8340# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8341#endif
8342# 2908 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8343 deallocate (res_igr)
8344 end if
8345
8346#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
8347#ifdef MFC_DEBUG
8348# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8349 block
8350# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8351 use iso_fortran_env, only: output_unit
8352# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8353
8354# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8355 print *, 'm_igr.fpp:2912: ', '@:DEALLOCATE(jac, jac_rhs)'
8356# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8357
8358# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8359 call flush (output_unit)
8360# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8361 end block
8362# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8363#endif
8364# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8365
8366# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8367#if defined(MFC_OpenACC)
8368# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8369!$acc exit data delete(jac, jac_rhs)
8370# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8371#elif defined(MFC_OpenMP)
8372# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8373!$omp target exit data map(release:jac, jac_rhs)
8374# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8375#endif
8376# 2912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8377 deallocate (jac, jac_rhs)
8378
8379 if (igr_iter_solver == 1) then ! Jacobi iteration
8380#ifdef MFC_DEBUG
8381# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8382 block
8383# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8384 use iso_fortran_env, only: output_unit
8385# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8386
8387# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8388 print *, 'm_igr.fpp:2915: ', '@:DEALLOCATE(jac_old)'
8389# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8390
8391# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8392 call flush (output_unit)
8393# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8394 end block
8395# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8396#endif
8397# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8398
8399# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8400#if defined(MFC_OpenACC)
8401# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8402!$acc exit data delete(jac_old)
8403# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8404#elif defined(MFC_OpenMP)
8405# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8406!$omp target exit data map(release:jac_old)
8407# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8408#endif
8409# 2915 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8410 deallocate (jac_old)
8411 end if
8412#else
8413 if (nv_uvm_temp_on_gpu(1) == 1) then
8414#ifdef MFC_DEBUG
8415# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8416 block
8417# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8418 use iso_fortran_env, only: output_unit
8419# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8420
8421# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8422 print *, 'm_igr.fpp:2919: ', '@:DEALLOCATE(jac)'
8423# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8424
8425# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8426 call flush (output_unit)
8427# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8428 end block
8429# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8430#endif
8431# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8432
8433# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8434#if defined(MFC_OpenACC)
8435# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8436!$acc exit data delete(jac)
8437# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8438#elif defined(MFC_OpenMP)
8439# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8440!$omp target exit data map(release:jac)
8441# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8442#endif
8443# 2919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8444 deallocate (jac)
8445 else
8446 nullify (jac)
8447 deallocate (jac_host)
8448 end if
8449
8450 if (nv_uvm_temp_on_gpu(2) == 1) then
8451#ifdef MFC_DEBUG
8452# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8453 block
8454# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8455 use iso_fortran_env, only: output_unit
8456# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8457
8458# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8459 print *, 'm_igr.fpp:2926: ', '@:DEALLOCATE(jac_rhs)'
8460# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8461
8462# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8463 call flush (output_unit)
8464# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8465 end block
8466# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8467#endif
8468# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8469
8470# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8471#if defined(MFC_OpenACC)
8472# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8473!$acc exit data delete(jac_rhs)
8474# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8475#elif defined(MFC_OpenMP)
8476# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8477!$omp target exit data map(release:jac_rhs)
8478# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8479#endif
8480# 2926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8481 deallocate (jac_rhs)
8482 else
8483 nullify (jac_rhs)
8484 deallocate (jac_rhs_host)
8485 end if
8486
8487 if (igr_iter_solver == 1) then ! Jacobi iteration
8488 if (nv_uvm_temp_on_gpu(3) == 1) then
8489#ifdef MFC_DEBUG
8490# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8491 block
8492# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8493 use iso_fortran_env, only: output_unit
8494# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8495
8496# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8497 print *, 'm_igr.fpp:2934: ', '@:DEALLOCATE(jac_old)'
8498# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8499
8500# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8501 call flush (output_unit)
8502# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8503 end block
8504# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8505#endif
8506# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8507
8508# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8509#if defined(MFC_OpenACC)
8510# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8511!$acc exit data delete(jac_old)
8512# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8513#elif defined(MFC_OpenMP)
8514# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8515!$omp target exit data map(release:jac_old)
8516# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8517#endif
8518# 2934 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8519 deallocate (jac_old)
8520 else
8521 nullify (jac_old)
8522 deallocate (jac_old_host)
8523 end if
8524 end if
8525#endif
8526
8527# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8528#ifdef MFC_DEBUG
8529# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8530 block
8531# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8532 use iso_fortran_env, only: output_unit
8533# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8534
8535# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8536 print *, 'm_igr.fpp:2943: ', '@:DEALLOCATE(coeff_L, coeff_R)'
8537# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8538
8539# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8540 call flush (output_unit)
8541# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8542 end block
8543# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8544#endif
8545# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8546
8547# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8548#if defined(MFC_OpenACC)
8549# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8550!$acc exit data delete(coeff_L, coeff_R)
8551# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8552#elif defined(MFC_OpenMP)
8553# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8554!$omp target exit data map(release:coeff_L, coeff_R)
8555# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8556#endif
8557# 2943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8558 deallocate (coeff_l, coeff_r)
8559# 2945 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8560
8561 end subroutine s_finalize_igr_module
8562
8563end 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
logical viscous
Viscous effects.
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Database of the physical parameters of each of the fluids that is present in the flow....
integer, dimension(:, :), allocatable re_idx
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()
Allocates and initializes arrays, coefficients, and GPU data structures for the implicit gradient rec...
integer(kind=8) q
integer(kind=8) j
real(wp), dimension(:), allocatable coeff_l
subroutine, public s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
Accumulates the IGR numerical flux divergence into the right-hand side along the specified coordinate...
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)
Computes the IGR viscous stress contribution in the x-direction and accumulates it into the RHS.
integer vidxb
real(wp), dimension(:, :, :), allocatable jac_rhs
integer(kind=8) r
integer(kind=8) k
real(wp), dimension(:, :, :), allocatable, target jac
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)
Computes pressure and maximum wavespeed from left and right reconstructed states for the IGR Riemann ...
subroutine, public s_finalize_igr_module()
Deallocates all arrays and GPU resources allocated by the IGR module.
real(wp), dimension(:), allocatable coeff_r
subroutine, public s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
Evaluates the approximate Riemann solver for the IGR scheme along a given coordinate direction.
real(wp) alf_igr
subroutine, public s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
Iteratively solves the implicit gradient reconstruction system using Jacobi or Gauss-Seidel relaxatio...
real(wp), dimension(:, :), allocatable res_igr
real(wp), dimension(:, :, :), allocatable jac_old
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).