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# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 12 "/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
44# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45! New line at end of file is required for FYPP
46# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
47# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
48# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
49# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54
55# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72
73# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74! New line at end of file is required for FYPP
75# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
76
77# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153! New line at end of file is required for FYPP
154# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
155# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
156# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
157# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176
177# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178
179# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180
181# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182! New line at end of file is required for FYPP
183# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
184
185# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240! New line at end of file is required for FYPP
241# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
242
243! GPU parallel region (scalar reductions, maxval/minval)
244# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246! GPU parallel loop over threads (most common GPU macro)
247# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249! Required closing for GPU_PARALLEL_LOOP
250# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252! Mark routine for device compilation
253# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255! Declare device-resident data
256# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! Inner loop within a GPU parallel region
259# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Scoped GPU data region
262# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Host code with device pointers (for MPI with GPU buffers)
265# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Allocate device memory (unscoped)
268# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! Free device memory
271# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Atomic operation on device
274# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! End atomic capture block
277# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Copy data between host and device
280# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Synchronization barrier
283# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Import GPU library module (openacc or omp_lib)
286# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! Emit code only for AMD compiler
289# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Emit code for non-Cray compilers
292# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294! Emit code only for Cray compiler
295# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296
297! Emit code for non-NVIDIA compilers
298# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299
300# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302! New line at end of file is required for FYPP
303# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
304
305# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
306
307! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
308! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
309! example see misc/nvidia_uvm/bind.sh. NVIDIA unified memory page placement hint
310# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312! Allocate and create GPU device memory
313# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Free GPU device memory and deallocate
316# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Cray-specific GPU pointer setup for vector fields
319# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321! Cray-specific GPU pointer setup for scalar fields
322# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323
324! Cray-specific GPU pointer setup for acoustic source spatials
325# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326
327# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
330! New line at end of file is required for FYPP
331# 7 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp" 2
332
333!> @brief Iterative ghost rasterization (IGR) for sharp immersed boundary treatment
334module m_igr
335
339 use m_mpi_proxy
340 use m_helper
342
343 implicit none
344
347
348 !> @cond
349#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
350 integer, dimension(3) :: nv_uvm_temp_on_gpu
351 real(wp), pointer, contiguous, dimension(:,:,:) :: jac, jac_rhs, jac_old
352 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_host
353 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_rhs_host
354 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_old_host
355#else
356 !> @endcond
357 real(wp), allocatable, target, dimension(:,:,:) :: jac
358 real(wp), allocatable, dimension(:,:,:) :: jac_rhs, jac_old
359
360# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
361#if defined(MFC_OpenACC)
362# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
363!$acc declare create(jac, jac_rhs, jac_old)
364# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
365#elif defined(MFC_OpenMP)
366# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
367!$omp declare target (jac, jac_rhs, jac_old)
368# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
369#endif
370 !> @cond
371#endif
372 !> @endcond
373 type(scalar_field), dimension(1) :: jac_sf
374
375# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
376#if defined(MFC_OpenACC)
377# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
378!$acc declare create(jac_sf)
379# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
380#elif defined(MFC_OpenMP)
381# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
382!$omp declare target (jac_sf)
383# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
384#endif
385
386 real(wp), allocatable, dimension(:,:) :: res_igr
387
388# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
389#if defined(MFC_OpenACC)
390# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
391!$acc declare create(Res_igr)
392# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
393#elif defined(MFC_OpenMP)
394# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
395!$omp declare target (Res_igr)
396# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
397#endif
398
399 real(wp) :: alf_igr
400
401# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
402#if defined(MFC_OpenACC)
403# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
404!$acc declare create(alf_igr)
405# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
406#elif defined(MFC_OpenMP)
407# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
408!$omp declare target (alf_igr)
409# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
410#endif
411
412# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
413 integer :: vidxb, vidxe
414
415# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
416#if defined(MFC_OpenACC)
417# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
418!$acc declare create(vidxb, vidxe)
419# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
420#elif defined(MFC_OpenMP)
421# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
422!$omp declare target (vidxb, vidxe)
423# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
424#endif
425
426 real(wp), allocatable, dimension(:) :: coeff_l, coeff_r
427
428# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
429#if defined(MFC_OpenACC)
430# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
431!$acc declare create(coeff_L, coeff_R)
432# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
433#elif defined(MFC_OpenMP)
434# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
435!$omp declare target (coeff_L, coeff_R)
436# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
437#endif
438# 82 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
439
440 integer(kind=8) :: i, j, k, l, q, r
441
442 ! Scalar copies of eqn_idx fields used in GPU atomics. nvfortran OpenMP does not support derived-type member indexing on the LHS
443 ! of atomic updates; plain integers work.
445
446# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
447#if defined(MFC_OpenACC)
448# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
449!$acc declare create(igr_momxb, igr_E_idx, igr_advxb)
450# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
451#elif defined(MFC_OpenMP)
452# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
453!$omp declare target (igr_momxb, igr_E_idx, igr_advxb)
454# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
455#endif
456
457contains
458
459 !> Initialize the IGR module
461
462 if (viscous) then
463#ifdef MFC_DEBUG
464# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
465 block
466# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
467 use iso_fortran_env, only: output_unit
468# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
469
470# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
471 print *, 'm_igr.fpp:96: ', '@:ALLOCATE(Res_igr(1:2, 1:maxval(Re_size)))'
472# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
473
474# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
475 call flush (output_unit)
476# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
477 end block
478# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
479#endif
480# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
481 allocate (res_igr(1:2, 1:maxval(re_size)))
482# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
483
484# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
485
486# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
487#if defined(MFC_OpenACC)
488# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
489!$acc enter data create(Res_igr)
490# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
491#elif defined(MFC_OpenMP)
492# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
493!$omp target enter data map(always,alloc:Res_igr)
494# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
495#endif
496 do i = 1, 2
497 do j = 1, re_size(i)
498 res_igr(i, j) = fluid_pp(re_idx(i, j))%Re(i)
499 end do
500 end do
501
502# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
503#if defined(MFC_OpenACC)
504# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
505!$acc update device(Res_igr, Re_idx, Re_size)
506# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
507#elif defined(MFC_OpenMP)
508# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
509!$omp target update to(Res_igr, Re_idx, Re_size)
510# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
511#endif
512#ifdef MFC_SIMULATION
513# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
514#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
515# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
516 block
517# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
518 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
519# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
520 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
521# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
522#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
523# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
524 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
525# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
526#else
527# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
528 use cuda_runtime_api
529# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
530#endif
531# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
532 integer :: istat
533# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
534
535# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
536 if (nv_uvm_pref_gpu) then
537# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
538 ! print*, "Moving Res_igr to GPU => ", SHAPE(Res_igr) set preferred location GPU
539# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
540 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetpreferredlocation, 0)
541# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
542 if (istat /= cudasuccess) then
543# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
544 write (*, "('Error code: ',I0, ': ')") istat
545# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
546 ! write(*,*) cudaGetErrorString(istat)
547# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
548 end if
549# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
550 ! set accessed by CPU
551# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
552 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetaccessedby, cudacpudeviceid)
553# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
554 if (istat /= cudasuccess) then
555# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
556 write (*, "('Error code: ',I0, ': ')") istat
557# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
558 ! write(*,*) cudaGetErrorString(istat)
559# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
560 end if
561# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
562 ! prefetch to GPU - physically populate memory pages
563# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
564 istat = cudamemprefetchasync(c_devloc(res_igr), sizeof(res_igr), 0, 0)
565# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
566 if (istat /= cudasuccess) then
567# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
568 write (*, "('Error code: ',I0, ': ')") istat
569# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
570 ! write(*,*) cudaGetErrorString(istat)
571# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
572 end if
573# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
574 end if
575# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
576 end block
577# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
578#endif
579# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
580#endif
581#ifdef MFC_SIMULATION
582# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
583#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
584# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
585 block
586# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
587 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
588# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
589 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
590# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
591#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
592# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
593 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
594# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
595#else
596# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
597 use cuda_runtime_api
598# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
599#endif
600# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
601 integer :: istat
602# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
603
604# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
605 if (nv_uvm_pref_gpu) then
606# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
607 ! print*, "Moving Re_idx to GPU => ", SHAPE(Re_idx) set preferred location GPU
608# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
609 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetpreferredlocation, 0)
610# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
611 if (istat /= cudasuccess) then
612# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
613 write (*, "('Error code: ',I0, ': ')") istat
614# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
615 ! write(*,*) cudaGetErrorString(istat)
616# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
617 end if
618# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
619 ! set accessed by CPU
620# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
621 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetaccessedby, cudacpudeviceid)
622# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
623 if (istat /= cudasuccess) then
624# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
625 write (*, "('Error code: ',I0, ': ')") istat
626# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
627 ! write(*,*) cudaGetErrorString(istat)
628# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
629 end if
630# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
631 ! prefetch to GPU - physically populate memory pages
632# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
633 istat = cudamemprefetchasync(c_devloc(re_idx), sizeof(re_idx), 0, 0)
634# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
635 if (istat /= cudasuccess) then
636# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
637 write (*, "('Error code: ',I0, ': ')") istat
638# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
639 ! write(*,*) cudaGetErrorString(istat)
640# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
641 end if
642# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
643 end if
644# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
645 end block
646# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
647#endif
648# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
649#endif
650 end if
651
652#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
653#ifdef MFC_DEBUG
654# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
655 block
656# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
657 use iso_fortran_env, only: output_unit
658# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
659
660# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
661 print *, 'm_igr.fpp:108: ', '@:ALLOCATE(jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
662# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
663
664# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
665 call flush (output_unit)
666# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
667 end block
668# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
669#endif
670# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
671 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
672# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
673
674# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
675
676# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
677#if defined(MFC_OpenACC)
678# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
679!$acc enter data create(jac)
680# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
681#elif defined(MFC_OpenMP)
682# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
683!$omp target enter data map(always,alloc:jac)
684# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
685#endif
686#ifdef MFC_DEBUG
687# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
688 block
689# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
690 use iso_fortran_env, only: output_unit
691# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
692
693# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
694 print *, 'm_igr.fpp:109: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
695# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
696
697# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
698 call flush (output_unit)
699# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
700 end block
701# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
702#endif
703# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
704 allocate (jac_rhs(-1:m,-1:n,-1:p))
705# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
706
707# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
708
709# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
710#if defined(MFC_OpenACC)
711# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
712!$acc enter data create(jac_rhs)
713# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
714#elif defined(MFC_OpenMP)
715# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
716!$omp target enter data map(always,alloc:jac_rhs)
717# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
718#endif
719
720 if (igr_iter_solver == 1) then ! Jacobi iteration
721#ifdef MFC_DEBUG
722# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
723 block
724# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
725 use iso_fortran_env, only: output_unit
726# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
727
728# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
729 print *, 'm_igr.fpp:112: ', '@:ALLOCATE(jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
730# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
731
732# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
733 call flush (output_unit)
734# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
735 end block
736# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
737#endif
738# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
739 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
740# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
741
742# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
743
744# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
745#if defined(MFC_OpenACC)
746# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
747!$acc enter data create(jac_old)
748# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
749#elif defined(MFC_OpenMP)
750# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
751!$omp target enter data map(always,alloc:jac_old)
752# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
753#endif
754 end if
755#else
756 ! create map
757 nv_uvm_temp_on_gpu(1:3) = 0
758 nv_uvm_temp_on_gpu(1:nv_uvm_igr_temps_on_gpu) = 1
759
760 if (nv_uvm_temp_on_gpu(1) == 1) then
761#ifdef MFC_DEBUG
762# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
763 block
764# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
765 use iso_fortran_env, only: output_unit
766# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
767
768# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
769 print *, 'm_igr.fpp:120: ', '@:ALLOCATE(jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
770# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
771
772# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
773 call flush (output_unit)
774# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
775 end block
776# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
777#endif
778# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
779 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
780# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
781
782# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
783
784# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
785#if defined(MFC_OpenACC)
786# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
787!$acc enter data create(jac)
788# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
789#elif defined(MFC_OpenMP)
790# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
791!$omp target enter data map(always,alloc:jac)
792# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
793#endif
794#ifdef MFC_SIMULATION
795# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
796#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
797# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
798 block
799# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
800 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
801# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
802 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
803# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
804#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
805# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
806 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
807# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
808#else
809# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
810 use cuda_runtime_api
811# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
812#endif
813# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
814 integer :: istat
815# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
816
817# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
818 if (nv_uvm_pref_gpu) then
819# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
820 ! print*, "Moving jac to GPU => ", SHAPE(jac) set preferred location GPU
821# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
822 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetpreferredlocation, 0)
823# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
824 if (istat /= cudasuccess) then
825# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
826 write (*, "('Error code: ',I0, ': ')") istat
827# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
828 ! write(*,*) cudaGetErrorString(istat)
829# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
830 end if
831# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
832 ! set accessed by CPU
833# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
834 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetaccessedby, cudacpudeviceid)
835# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
836 if (istat /= cudasuccess) then
837# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
838 write (*, "('Error code: ',I0, ': ')") istat
839# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
840 ! write(*,*) cudaGetErrorString(istat)
841# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
842 end if
843# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
844 ! prefetch to GPU - physically populate memory pages
845# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
846 istat = cudamemprefetchasync(c_devloc(jac), sizeof(jac), 0, 0)
847# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
848 if (istat /= cudasuccess) then
849# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
850 write (*, "('Error code: ',I0, ': ')") istat
851# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
852 ! write(*,*) cudaGetErrorString(istat)
853# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
854 end if
855# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
856 end if
857# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
858 end block
859# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
860#endif
861# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
862#endif
863 else
864 allocate (jac_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
865
866 jac(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end) => jac_host(:,:,:)
867 end if
868
869 if (nv_uvm_temp_on_gpu(2) == 1) then
870#ifdef MFC_DEBUG
871# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
872 block
873# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
874 use iso_fortran_env, only: output_unit
875# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
876
877# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
878 print *, 'm_igr.fpp:129: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
879# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
880
881# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
882 call flush (output_unit)
883# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
884 end block
885# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
886#endif
887# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
888 allocate (jac_rhs(-1:m,-1:n,-1:p))
889# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
890
891# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
892
893# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
894#if defined(MFC_OpenACC)
895# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
896!$acc enter data create(jac_rhs)
897# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
898#elif defined(MFC_OpenMP)
899# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
900!$omp target enter data map(always,alloc:jac_rhs)
901# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
902#endif
903#ifdef MFC_SIMULATION
904# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
905#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
906# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
907 block
908# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
909 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
910# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
911 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
912# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
913#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
914# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
915 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
916# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
917#else
918# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
919 use cuda_runtime_api
920# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
921#endif
922# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
923 integer :: istat
924# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
925
926# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
927 if (nv_uvm_pref_gpu) then
928# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
929 ! print*, "Moving jac_rhs to GPU => ", SHAPE(jac_rhs) set preferred location GPU
930# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
931 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetpreferredlocation, 0)
932# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
933 if (istat /= cudasuccess) then
934# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
935 write (*, "('Error code: ',I0, ': ')") istat
936# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
937 ! write(*,*) cudaGetErrorString(istat)
938# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
939 end if
940# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
941 ! set accessed by CPU
942# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
943 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetaccessedby, cudacpudeviceid)
944# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
945 if (istat /= cudasuccess) then
946# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
947 write (*, "('Error code: ',I0, ': ')") istat
948# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
949 ! write(*,*) cudaGetErrorString(istat)
950# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
951 end if
952# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
953 ! prefetch to GPU - physically populate memory pages
954# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
955 istat = cudamemprefetchasync(c_devloc(jac_rhs), sizeof(jac_rhs), 0, 0)
956# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
957 if (istat /= cudasuccess) then
958# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
959 write (*, "('Error code: ',I0, ': ')") istat
960# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
961 ! write(*,*) cudaGetErrorString(istat)
962# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
963 end if
964# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
965 end if
966# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
967 end block
968# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
969#endif
970# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
971#endif
972 else
973 allocate (jac_rhs_host(-1:m,-1:n,-1:p))
974 jac_rhs(-1:m,-1:n,-1:p) => jac_rhs_host(:,:,:)
975 end if
976
977 if (igr_iter_solver == 1) then ! Jacobi iteration
978 if (nv_uvm_temp_on_gpu(3) == 1) then
979#ifdef MFC_DEBUG
980# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
981 block
982# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
983 use iso_fortran_env, only: output_unit
984# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
985
986# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
987 print *, 'm_igr.fpp:138: ', '@:ALLOCATE(jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
988# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
989
990# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
991 call flush (output_unit)
992# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
993 end block
994# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
995#endif
996# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
997 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
998# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
999
1000# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1001
1002# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1003#if defined(MFC_OpenACC)
1004# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1005!$acc enter data create(jac_old)
1006# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1007#elif defined(MFC_OpenMP)
1008# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1009!$omp target enter data map(always,alloc:jac_old)
1010# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1011#endif
1012#ifdef MFC_SIMULATION
1013# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1014#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
1015# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1016 block
1017# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1018 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
1019# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1020 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
1021# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1022#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
1023# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1024 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
1025# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1026#else
1027# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1028 use cuda_runtime_api
1029# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1030#endif
1031# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1032 integer :: istat
1033# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1034
1035# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1036 if (nv_uvm_pref_gpu) then
1037# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1038 ! print*, "Moving jac_old to GPU => ", SHAPE(jac_old) set preferred location GPU
1039# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1040 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetpreferredlocation, 0)
1041# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1042 if (istat /= cudasuccess) then
1043# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1044 write (*, "('Error code: ',I0, ': ')") istat
1045# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1046 ! write(*,*) cudaGetErrorString(istat)
1047# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1048 end if
1049# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1050 ! set accessed by CPU
1051# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1052 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetaccessedby, cudacpudeviceid)
1053# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1054 if (istat /= cudasuccess) then
1055# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1056 write (*, "('Error code: ',I0, ': ')") istat
1057# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1058 ! write(*,*) cudaGetErrorString(istat)
1059# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1060 end if
1061# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1062 ! prefetch to GPU - physically populate memory pages
1063# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1064 istat = cudamemprefetchasync(c_devloc(jac_old), sizeof(jac_old), 0, 0)
1065# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1066 if (istat /= cudasuccess) then
1067# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1068 write (*, "('Error code: ',I0, ': ')") istat
1069# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1070 ! write(*,*) cudaGetErrorString(istat)
1071# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1072 end if
1073# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1074 end if
1075# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1076 end block
1077# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1078#endif
1079# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1080#endif
1081 else
1082 allocate (jac_old_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
1083
1084 jac_old(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end, &
1085 & idwbuff(3)%beg:idwbuff(3)%end) => jac_old_host(:,:,:)
1086 end if
1087 end if
1088#endif
1089
1090
1091# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1092
1093# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1094#if defined(MFC_OpenACC)
1095# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1096!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1097# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1098#elif defined(MFC_OpenMP)
1099# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1100
1101# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1102
1103# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1104
1105# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1106!$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)
1107# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1108#endif
1109 do l = idwbuff(3)%beg, idwbuff(3)%end
1110 do k = idwbuff(2)%beg, idwbuff(2)%end
1111 do j = idwbuff(1)%beg, idwbuff(1)%end
1112 jac(j, k, l) = 0._stp
1113 if (igr_iter_solver == 1) jac_old(j, k, l) = 0._stp
1114 end do
1115 end do
1116 end do
1117
1118# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1119#if defined(MFC_OpenACC)
1120# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1121!$acc end parallel loop
1122# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1123#elif defined(MFC_OpenMP)
1124# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1125
1126# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1127!$omp end target teams loop
1128# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1129#endif
1130
1131 if (p == 0) then
1132 alf_igr = alf_factor*max(dx(1), dy(1))**2._wp
1133 else
1134 alf_igr = alf_factor*max(dx(1), dy(1), dz(1))**2._wp
1135 end if
1136
1137# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1138#if defined(MFC_OpenACC)
1139# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1140!$acc update device(alf_igr)
1141# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1142#elif defined(MFC_OpenMP)
1143# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1144!$omp target update to(alf_igr)
1145# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1146#endif
1147
1148 igr_momxb = eqn_idx%mom%beg
1149 igr_e_idx = eqn_idx%E
1150 igr_advxb = eqn_idx%adv%beg
1151
1152# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1153#if defined(MFC_OpenACC)
1154# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1155!$acc update device(igr_momxb, igr_E_idx, igr_advxb)
1156# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1157#elif defined(MFC_OpenMP)
1158# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1159!$omp target update to(igr_momxb, igr_E_idx, igr_advxb)
1160# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1161#endif
1162
1163# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1164 if (igr_order == 3) then
1165 vidxb = -1; vidxe = 2
1166
1167# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1168#if defined(MFC_OpenACC)
1169# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1170!$acc update device(vidxb, vidxe)
1171# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1172#elif defined(MFC_OpenMP)
1173# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1174!$omp target update to(vidxb, vidxe)
1175# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1176#endif
1177
1178#ifdef MFC_DEBUG
1179# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1180 block
1181# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1182 use iso_fortran_env, only: output_unit
1183# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1184
1185# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1186 print *, 'm_igr.fpp:177: ', '@:ALLOCATE(coeff_L(0:2))'
1187# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1188
1189# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1190 call flush (output_unit)
1191# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1192 end block
1193# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1194#endif
1195# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1196 allocate (coeff_l(0:2))
1197# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1198
1199# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1200
1201# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1202#if defined(MFC_OpenACC)
1203# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1204!$acc enter data create(coeff_L)
1205# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1206#elif defined(MFC_OpenMP)
1207# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1208!$omp target enter data map(always,alloc:coeff_L)
1209# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1210#endif
1211 coeff_l(0) = (2._wp/6._wp)
1212 coeff_l(1) = (5._wp/6._wp)
1213 coeff_l(2) = (-1._wp/6._wp)
1214
1215#ifdef MFC_DEBUG
1216# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1217 block
1218# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1219 use iso_fortran_env, only: output_unit
1220# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1221
1222# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1223 print *, 'm_igr.fpp:182: ', '@:ALLOCATE(coeff_R(-1:1))'
1224# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1225
1226# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1227 call flush (output_unit)
1228# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1229 end block
1230# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1231#endif
1232# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1233 allocate (coeff_r(-1:1))
1234# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1235
1236# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1237
1238# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1239#if defined(MFC_OpenACC)
1240# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1241!$acc enter data create(coeff_R)
1242# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1243#elif defined(MFC_OpenMP)
1244# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1245!$omp target enter data map(always,alloc:coeff_R)
1246# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1247#endif
1248 coeff_r(1) = (2._wp/6._wp)
1249 coeff_r(0) = (5._wp/6._wp)
1250 coeff_r(-1) = (-1._wp/6._wp)
1251 else if (igr_order == 5) then
1252 vidxb = -2; vidxe = 3
1253
1254# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1255#if defined(MFC_OpenACC)
1256# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1257!$acc update device(vidxb, vidxe)
1258# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1259#elif defined(MFC_OpenMP)
1260# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1261!$omp target update to(vidxb, vidxe)
1262# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1263#endif
1264
1265#ifdef MFC_DEBUG
1266# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1267 block
1268# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1269 use iso_fortran_env, only: output_unit
1270# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1271
1272# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1273 print *, 'm_igr.fpp:190: ', '@:ALLOCATE(coeff_L(-1:3))'
1274# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1275
1276# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1277 call flush (output_unit)
1278# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1279 end block
1280# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1281#endif
1282# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1283 allocate (coeff_l(-1:3))
1284# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1285
1286# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1287
1288# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1289#if defined(MFC_OpenACC)
1290# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1291!$acc enter data create(coeff_L)
1292# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1293#elif defined(MFC_OpenMP)
1294# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1295!$omp target enter data map(always,alloc:coeff_L)
1296# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1297#endif
1298 coeff_l(-1) = (-3._wp/60._wp)
1299 coeff_l(0) = (27._wp/60._wp)
1300 coeff_l(1) = (47._wp/60._wp)
1301 coeff_l(2) = (-13._wp/60._wp)
1302 coeff_l(3) = (2._wp/60._wp)
1303
1304#ifdef MFC_DEBUG
1305# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1306 block
1307# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1308 use iso_fortran_env, only: output_unit
1309# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1310
1311# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1312 print *, 'm_igr.fpp:197: ', '@:ALLOCATE(coeff_R(-2:2))'
1313# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1314
1315# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1316 call flush (output_unit)
1317# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1318 end block
1319# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1320#endif
1321# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1322 allocate (coeff_r(-2:2))
1323# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1324
1325# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1326
1327# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1328#if defined(MFC_OpenACC)
1329# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1330!$acc enter data create(coeff_R)
1331# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1332#elif defined(MFC_OpenMP)
1333# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1334!$omp target enter data map(always,alloc:coeff_R)
1335# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1336#endif
1337 coeff_r(2) = (-3._wp/60._wp)
1338 coeff_r(1) = (27._wp/60._wp)
1339 coeff_r(0) = (47._wp/60._wp)
1340 coeff_r(-1) = (-13._wp/60._wp)
1341 coeff_r(-2) = (2._wp/60._wp)
1342 end if
1343
1344
1345# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1346#if defined(MFC_OpenACC)
1347# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1348!$acc update device(coeff_L)
1349# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1350#elif defined(MFC_OpenMP)
1351# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1352!$omp target update to(coeff_L)
1353# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1354#endif
1355
1356# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1357#if defined(MFC_OpenACC)
1358# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1359!$acc update device(coeff_R)
1360# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1361#elif defined(MFC_OpenMP)
1362# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1363!$omp target update to(coeff_R)
1364# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1365#endif
1366# 213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1367 jac_sf(1)%sf => jac
1368
1369# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1370#if defined(MFC_OpenACC)
1371# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1372!$acc enter data copyin(jac_sf(1)%sf)
1373# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1374#elif defined(MFC_OpenMP)
1375# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1376!$omp target enter data map(to:jac_sf(1)%sf)
1377# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1378#endif
1379
1380# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1381#if defined(MFC_OpenACC)
1382# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1383!$acc enter data attach(jac_sf(1)%sf)
1384# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1385#elif defined(MFC_OpenMP)
1386# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1387!$omp target enter data map(always,to:jac_sf(1)%sf)
1388# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1389#endif
1390
1391 end subroutine s_initialize_igr_module
1392
1393 !> Iteratively solve the implicit gradient reconstruction system
1394 subroutine s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
1395
1396#ifdef _CRAYFTN
1397 ! DIR$ OPTIMIZE (-haggress)
1398#endif
1399 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1400 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
1401 integer, intent(in) :: t_step
1402 real(wp) :: rho_rx, rho_ry, rho_rz, rho_lx, rho_ly, rho_lz
1403 real(wp) :: fd_coeff
1404 integer :: num_iters
1405
1406 if (t_step == t_step_start) then
1407 num_iters = num_igr_warm_start_iters
1408 else
1409 num_iters = num_igr_iters
1410 end if
1411
1412 do q = 1, num_iters
1413
1414# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1415
1416# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1417#if defined(MFC_OpenACC)
1418# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1419!$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)
1420# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1421#elif defined(MFC_OpenMP)
1422# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1423
1424# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1425
1426# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1427
1428# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1429!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1430# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1431!$omp& private(j, k, l, rho_lx, rho_rx, rho_ly, rho_ry, rho_lz, rho_rz, fd_coeff)
1432# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1433#endif
1434 do l = 0, p
1435 do k = 0, n
1436 do j = 0, m
1437 rho_lx = 0._wp
1438 rho_rx = 0._wp
1439 rho_ly = 0._wp
1440 rho_ry = 0._wp
1441 rho_lz = 0._wp
1442 rho_rz = 0._wp
1443 fd_coeff = 0._wp
1444
1445
1446# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1447#if defined(MFC_OpenACC)
1448# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1449!$acc loop seq
1450# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1451#elif defined(MFC_OpenMP)
1452# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1453
1454# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1455#endif
1456 do i = 1, num_fluids
1457 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
1458 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
1459 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
1460 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
1461 if (p > 0) then
1462 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
1463 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
1464 end if
1465 fd_coeff = fd_coeff + q_cons_vf(i)%sf(j, k, l)
1466 end do
1467
1468 fd_coeff = 1._wp/fd_coeff + alf_igr*((1._wp/dx(j)**2._wp)*(1._wp/rho_lx + 1._wp/rho_rx) + (1._wp/dy(k) &
1469 & **2._wp)*(1._wp/rho_ly + 1._wp/rho_ry))
1470
1471 if (num_dims == 3) then
1472 fd_coeff = fd_coeff + alf_igr*(1._wp/dz(l)**2._wp)*(1._wp/rho_lz + 1._wp/rho_rz)
1473 end if
1474
1475 if (igr_iter_solver == 1) then ! Jacobi iteration
1476 if (num_dims == 3) then
1477 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac_old(j - 1, k, &
1478 & l)/rho_lx + jac_old(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac_old(j, k - 1, &
1479 & l)/rho_ly + jac_old(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac_old(j, k, &
1480 & l - 1)/rho_lz + jac_old(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1481 & kind=stp)
1482 else
1483 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(real(jac_old(j - 1, k, l), &
1484 & kind=wp)/rho_lx + real(jac_old(j + 1, k, l), &
1485 & kind=wp)/rho_rx) + (1._wp/dy(k)**2._wp)*(real(jac_old(j, k - 1, l), &
1486 & kind=wp)/rho_ly + real(jac_old(j, k + 1, l), kind=wp)/rho_ry)) + real(jac_rhs(j, k, l), &
1487 & kind=wp)/fd_coeff, kind=stp)
1488 end if
1489 else ! Gauss Seidel iteration
1490 if (num_dims == 3) then
1491 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1492 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1493 & l)/rho_ly + jac(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac(j, k, &
1494 & l - 1)/rho_lz + jac(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1495 & kind=stp)
1496 else
1497 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1498 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1499 & l)/rho_ly + jac(j, k + 1, l)/rho_ry)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1500 end if
1501 end if
1502 end do
1503 end do
1504 end do
1505
1506# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1507#if defined(MFC_OpenACC)
1508# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1509!$acc end parallel loop
1510# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1511#elif defined(MFC_OpenMP)
1512# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1513
1514# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1515!$omp end target teams loop
1516# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1517#endif
1518
1519 call s_populate_f_igr_buffers(bc_type, jac_sf)
1520
1521 if (igr_iter_solver == 1) then ! Jacobi iteration
1522
1523# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1524
1525# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1526#if defined(MFC_OpenACC)
1527# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1528!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1529# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1530#elif defined(MFC_OpenMP)
1531# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1532
1533# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1534
1535# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1536
1537# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1538!$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)
1539# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1540#endif
1541 do l = idwbuff(3)%beg, idwbuff(3)%end
1542 do k = idwbuff(2)%beg, idwbuff(2)%end
1543 do j = idwbuff(1)%beg, idwbuff(1)%end
1544 jac_old(j, k, l) = jac(j, k, l)
1545 end do
1546 end do
1547 end do
1548
1549# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1550#if defined(MFC_OpenACC)
1551# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1552!$acc end parallel loop
1553# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1554#elif defined(MFC_OpenMP)
1555# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1556
1557# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1558!$omp end target teams loop
1559# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1560#endif
1561 end if
1562 end do
1563
1564 end subroutine s_igr_iterative_solve
1565
1566 !> Compute the IGR viscous stress contribution in the x-direction and accumulate into the RHS
1567 subroutine s_igr_sigma_x(q_cons_vf, rhs_vf)
1568
1569#ifdef _CRAYFTN
1570 ! DIR$ OPTIMIZE (-haggress)
1571#endif
1572 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1573 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1574 real(wp) :: f_l, vel_l, rho_l, f_r, vel_r, rho_r
1575# 330 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1576 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_rho_r
1577# 334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1578
1579
1580# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1581
1582# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1583#if defined(MFC_OpenACC)
1584# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1585!$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)
1586# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1587#elif defined(MFC_OpenMP)
1588# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1589
1590# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1591
1592# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1593
1594# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1595!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1596# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1597!$omp& private(j, k, l, F_L, vel_L, alpha_rho_L, F_R, vel_R, alpha_rho_R, rho_L, rho_R)
1598# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1599#endif
1600 do l = 0, p
1601 do k = 0, n
1602 do j = -1, m
1603 f_l = 0._wp; f_r = 0._wp
1604 vel_l = 0._wp; vel_r = 0._wp
1605 rho_l = 0._wp; rho_r = 0._wp
1606
1607
1608# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1609#if defined(MFC_OpenACC)
1610# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1611!$acc loop seq
1612# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1613#elif defined(MFC_OpenMP)
1614# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1615
1616# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1617#endif
1618 do i = 1, num_fluids
1619 alpha_rho_l(i) = 0._wp
1620 alpha_rho_r(i) = 0._wp
1621 end do
1622
1623
1624# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1625#if defined(MFC_OpenACC)
1626# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1627!$acc loop seq
1628# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1629#elif defined(MFC_OpenMP)
1630# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1631
1632# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1633#endif
1634 do q = vidxb + 1, vidxe
1635
1636# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1637#if defined(MFC_OpenACC)
1638# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1639!$acc loop seq
1640# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1641#elif defined(MFC_OpenMP)
1642# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1643
1644# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1645#endif
1646 do i = 1, num_fluids
1647 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
1648 end do
1649
1650 vel_l = vel_l + coeff_l(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1651 f_l = f_l + coeff_l(q)*jac(j + q, k, l)
1652 end do
1653
1654
1655# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1656#if defined(MFC_OpenACC)
1657# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1658!$acc loop seq
1659# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1660#elif defined(MFC_OpenMP)
1661# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1662
1663# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1664#endif
1665 do q = vidxb, vidxe - 1
1666
1667# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1668#if defined(MFC_OpenACC)
1669# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1670!$acc loop seq
1671# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1672#elif defined(MFC_OpenMP)
1673# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1674
1675# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1676#endif
1677 do i = 1, num_fluids
1678 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
1679 end do
1680
1681 vel_r = vel_r + coeff_r(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1682 f_r = f_r + coeff_r(q)*jac(j + q, k, l)
1683 end do
1684
1685
1686# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1687#if defined(MFC_OpenACC)
1688# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1689!$acc loop seq
1690# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1691#elif defined(MFC_OpenMP)
1692# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1693
1694# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1695#endif
1696 do i = 1, num_fluids
1697 rho_l = rho_l + alpha_rho_l(i)
1698 rho_r = rho_r + alpha_rho_r(i)
1699 end do
1700
1701 vel_l = vel_l/rho_l
1702 vel_r = vel_r/rho_r
1703
1704# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1705
1706# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1707#if defined(MFC_OpenACC)
1708# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1709!$acc atomic update
1710# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1711#elif defined(MFC_OpenMP)
1712# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1713!$omp atomic update
1714# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1715#endif
1716 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1717 & l) + real(0.5_wp*dt*f_l*(1._wp/dx(j + 1)), kind=stp)
1718
1719# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1720#if defined(MFC_OpenACC)
1721# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1722!$acc atomic update
1723# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1724#elif defined(MFC_OpenMP)
1725# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1726!$omp atomic update
1727# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1728#endif
1729 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1730 & l) + real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j + 1)), kind=stp)
1731
1732# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1733#if defined(MFC_OpenACC)
1734# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1735!$acc atomic update
1736# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1737#elif defined(MFC_OpenMP)
1738# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1739!$omp atomic update
1740# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1741#endif
1742 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, l) - real(0.5_wp*dt*f_l*(1._wp/dx(j)), &
1743 & kind=stp)
1744
1745# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1746#if defined(MFC_OpenACC)
1747# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1748!$acc atomic update
1749# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1750#elif defined(MFC_OpenMP)
1751# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1752!$omp atomic update
1753# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1754#endif
1755 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1756 & l) - real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j)), kind=stp)
1757# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1758
1759# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1760#if defined(MFC_OpenACC)
1761# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1762!$acc atomic update
1763# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1764#elif defined(MFC_OpenMP)
1765# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1766!$omp atomic update
1767# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1768#endif
1769 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1770 & l) + real(0.5_wp*dt*f_r*(1._wp/dx(j + 1)), kind=stp)
1771
1772# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1773#if defined(MFC_OpenACC)
1774# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1775!$acc atomic update
1776# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1777#elif defined(MFC_OpenMP)
1778# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1779!$omp atomic update
1780# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1781#endif
1782 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1783 & l) + real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j + 1)), kind=stp)
1784
1785# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1786#if defined(MFC_OpenACC)
1787# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1788!$acc atomic update
1789# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1790#elif defined(MFC_OpenMP)
1791# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1792!$omp atomic update
1793# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1794#endif
1795 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, l) - real(0.5_wp*dt*f_r*(1._wp/dx(j)), &
1796 & kind=stp)
1797
1798# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1799#if defined(MFC_OpenACC)
1800# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1801!$acc atomic update
1802# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1803#elif defined(MFC_OpenMP)
1804# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1805!$omp atomic update
1806# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1807#endif
1808 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1809 & l) - real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j)), kind=stp)
1810# 394 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1811 end do
1812 end do
1813 end do
1814
1815# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1816#if defined(MFC_OpenACC)
1817# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1818!$acc end parallel loop
1819# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1820#elif defined(MFC_OpenMP)
1821# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1822
1823# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1824!$omp end target teams loop
1825# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1826#endif
1827
1828 end subroutine s_igr_sigma_x
1829
1830 !> Evaluate the approximate Riemann solver for the IGR scheme along a given direction
1831 subroutine s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
1832
1833#ifdef _CRAYFTN
1834 ! DIR$ OPTIMIZE (-haggress)
1835#endif
1836 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1837 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1838 integer, intent(in) :: idir
1839 real(wp) :: cfl
1840 real(wp) :: rho_l, gamma_l, pi_inf_l, e_l, mu_l, f_l, pres_l
1841 real(wp) :: rho_r, gamma_r, pi_inf_r, e_r, mu_r, f_r, pres_r
1842 real(wp), dimension(3) :: vflux_l_arr, vflux_r_arr
1843 real(wp), dimension(-1:1) :: rho_sf_small
1844# 416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1845 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_l, alpha_r, alpha_rho_r
1846 real(wp), dimension(3) :: vel_l, vel_r
1847 real(wp), dimension(3, 3) :: dvel
1848 real(wp), dimension(3) :: dvel_small
1849# 426 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1850
1851 if (idir == 1) then
1852 if (p == 0) then
1853# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1854
1855# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1856
1857# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1858#if defined(MFC_OpenACC)
1859# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1860!$acc parallel loop collapse(3) gang vector default(present) &
1861# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1862!$acc& 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)
1863# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1864#elif defined(MFC_OpenMP)
1865# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1866
1867# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1868
1869# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1870
1871# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1872!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1873# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1874!$omp& 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)
1875# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1876#endif
1877# 433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1878 do l = 0, p
1879 do k = 0, n
1880 do j = -1, m
1881 vflux_l_arr = 0._wp
1882 vflux_r_arr = 0._wp
1883
1884# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1885
1886# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1887#if defined(MFC_OpenACC)
1888# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1889!$acc loop seq
1890# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1891#elif defined(MFC_OpenMP)
1892# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1893
1894# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1895#endif
1896 do q = vidxb, vidxe
1897 ! x-direction contributions
1898
1899# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1900#if defined(MFC_OpenACC)
1901# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1902!$acc loop seq
1903# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1904#elif defined(MFC_OpenMP)
1905# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1906
1907# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1908#endif
1909 do i = -1, 1
1910 rho_l = 0._wp
1911
1912# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1913#if defined(MFC_OpenACC)
1914# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1915!$acc loop seq
1916# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1917#elif defined(MFC_OpenMP)
1918# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1919
1920# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1921#endif
1922 do r = 1, num_fluids
1923 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
1924 end do
1925 rho_sf_small(i) = rho_l
1926 end do
1927
1928 dvel_small(1) = (1/(2._wp*dx(j)))*(1._wp*q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
1929 & l)/rho_sf_small(1) - 1._wp*q_cons_vf(igr_momxb)%sf(j - 1 + q, k, &
1930 & l)/rho_sf_small(-1))
1931 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
1932 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
1933
1934 if (q == 0) then
1935
1936# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1937#if defined(MFC_OpenACC)
1938# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1939!$acc loop seq
1940# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1941#elif defined(MFC_OpenMP)
1942# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1943
1944# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1945#endif
1946 do i = 1, num_dims
1947 dvel(i, 1) = dvel_small(i)
1948 end do
1949 end if
1950
1951 if (q > vidxb) then
1952 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
1953 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
1954 end if
1955 if (q < vidxe) then
1956 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
1957 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
1958 end if
1959
1960 ! y-direction contributions
1961
1962# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1963#if defined(MFC_OpenACC)
1964# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1965!$acc loop seq
1966# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1967#elif defined(MFC_OpenMP)
1968# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1969
1970# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1971#endif
1972 do i = -1, 1
1973 rho_l = 0._wp
1974
1975# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1976#if defined(MFC_OpenACC)
1977# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1978!$acc loop seq
1979# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1980#elif defined(MFC_OpenMP)
1981# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1982
1983# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1984#endif
1985 do r = 1, num_fluids
1986 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
1987 end do
1988 rho_sf_small(i) = rho_l
1989 end do
1990
1991 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
1992 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1993 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
1994 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1995
1996 if (q == 0) then
1997
1998# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1999#if defined(MFC_OpenACC)
2000# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2001!$acc loop seq
2002# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2003#elif defined(MFC_OpenMP)
2004# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2005
2006# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2007#endif
2008 do i = 1, num_dims
2009 dvel(i, 2) = dvel_small(i)
2010 end do
2011 end if
2012
2013 if (q > vidxb) then
2014 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
2015 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
2016 end if
2017 if (q < vidxe) then
2018 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
2019 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
2020 end if
2021
2022 if (q == 0) then
2023 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1)) + dvel(1, &
2024 & 1)**2._wp + dvel(2, 2)**2._wp + (dvel(1, 1) + dvel(2, 2))**2._wp), kind=stp)
2025 end if
2026 end do
2027
2028
2029# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2030#if defined(MFC_OpenACC)
2031# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2032!$acc loop seq
2033# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2034#elif defined(MFC_OpenMP)
2035# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2036
2037# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2038#endif
2039 do i = 1, num_fluids
2040 alpha_rho_l(i) = 0._wp
2041 alpha_rho_r(i) = 0._wp
2042 alpha_l(i) = 0._wp
2043 alpha_r(i) = 0._wp
2044 end do
2045
2046# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2047#if defined(MFC_OpenACC)
2048# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2049!$acc loop seq
2050# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2051#elif defined(MFC_OpenMP)
2052# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2053
2054# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2055#endif
2056 do i = 1, num_dims
2057 vel_l(i) = 0._wp
2058 vel_r(i) = 0._wp
2059 end do
2060
2061
2062# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2063#if defined(MFC_OpenACC)
2064# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2065!$acc loop seq
2066# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2067#elif defined(MFC_OpenMP)
2068# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2069
2070# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2071#endif
2072 do q = vidxb + 1, vidxe
2073
2074# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2075#if defined(MFC_OpenACC)
2076# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2077!$acc loop seq
2078# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2079#elif defined(MFC_OpenMP)
2080# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2081
2082# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2083#endif
2084 do i = 1, num_fluids
2085 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
2086 end do
2087
2088 if (num_fluids > 1) then
2089
2090# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2091#if defined(MFC_OpenACC)
2092# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2093!$acc loop seq
2094# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2095#elif defined(MFC_OpenMP)
2096# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2097
2098# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2099#endif
2100 do i = 1, num_fluids - 1
2101 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2102 end do
2103 else
2104 alpha_l(1) = 1._wp
2105 end if
2106
2107
2108# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2109#if defined(MFC_OpenACC)
2110# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2111!$acc loop seq
2112# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2113#elif defined(MFC_OpenMP)
2114# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2115
2116# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2117#endif
2118 do i = 1, num_dims
2119 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2120 end do
2121 end do
2122
2123
2124# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2125#if defined(MFC_OpenACC)
2126# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2127!$acc loop seq
2128# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2129#elif defined(MFC_OpenMP)
2130# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2131
2132# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2133#endif
2134 do q = vidxb, vidxe - 1
2135
2136# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2137#if defined(MFC_OpenACC)
2138# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2139!$acc loop seq
2140# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2141#elif defined(MFC_OpenMP)
2142# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2143
2144# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2145#endif
2146 do i = 1, num_fluids
2147 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
2148 end do
2149
2150 if (num_fluids > 1) then
2151
2152# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2153#if defined(MFC_OpenACC)
2154# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2155!$acc loop seq
2156# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2157#elif defined(MFC_OpenMP)
2158# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2159
2160# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2161#endif
2162 do i = 1, num_fluids - 1
2163 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2164 end do
2165 else
2166 alpha_r(1) = 1._wp
2167 end if
2168
2169
2170# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2171#if defined(MFC_OpenACC)
2172# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2173!$acc loop seq
2174# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2175#elif defined(MFC_OpenMP)
2176# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2177
2178# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2179#endif
2180 do i = 1, num_dims
2181 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2182 end do
2183 end do
2184
2185 if (num_fluids > 1) then
2186 alpha_l(num_fluids) = 1._wp
2187 alpha_r(num_fluids) = 1._wp
2188
2189
2190# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2191#if defined(MFC_OpenACC)
2192# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2193!$acc loop seq
2194# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2195#elif defined(MFC_OpenMP)
2196# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2197
2198# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2199#endif
2200 do i = 1, num_fluids - 1
2201 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
2202 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
2203 end do
2204 end if
2205
2206 rho_l = 0._wp; rho_r = 0._wp
2207 gamma_l = 0._wp; gamma_r = 0._wp
2208 pi_inf_l = 0._wp; pi_inf_r = 0._wp
2209
2210
2211# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2212#if defined(MFC_OpenACC)
2213# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2214!$acc loop seq
2215# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2216#elif defined(MFC_OpenMP)
2217# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2218
2219# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2220#endif
2221 do i = 1, num_fluids
2222 rho_l = rho_l + alpha_rho_l(i)
2223 gamma_l = gamma_l + alpha_l(i)*gammas(i)
2224 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
2225
2226 rho_r = rho_r + alpha_rho_r(i)
2227 gamma_r = gamma_r + alpha_r(i)*gammas(i)
2228 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
2229 end do
2230
2231
2232# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2233#if defined(MFC_OpenACC)
2234# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2235!$acc loop seq
2236# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2237#elif defined(MFC_OpenMP)
2238# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2239
2240# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2241#endif
2242 do i = 1, num_dims
2243 vel_l(i) = vel_l(i)/rho_l
2244 vel_r(i) = vel_r(i)/rho_r
2245 end do
2246
2247 if (viscous) then
2248 mu_l = 0._wp; mu_r = 0._wp
2249
2250# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2251#if defined(MFC_OpenACC)
2252# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2253!$acc loop seq
2254# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2255#elif defined(MFC_OpenMP)
2256# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2257
2258# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2259#endif
2260 do i = 1, num_fluids
2261 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
2262 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
2263 end do
2264
2265
2266# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2267#if defined(MFC_OpenACC)
2268# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2269!$acc atomic update
2270# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2271#elif defined(MFC_OpenMP)
2272# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2273!$omp atomic update
2274# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2275#endif
2276 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2277 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2278
2279# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2280#if defined(MFC_OpenACC)
2281# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2282!$acc atomic update
2283# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2284#elif defined(MFC_OpenMP)
2285# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2286!$omp atomic update
2287# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2288#endif
2289 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2290 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
2291
2292
2293# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2294#if defined(MFC_OpenACC)
2295# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2296!$acc atomic update
2297# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2298#elif defined(MFC_OpenMP)
2299# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2300!$omp atomic update
2301# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2302#endif
2303 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2304 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
2305
2306# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2307#if defined(MFC_OpenACC)
2308# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2309!$acc atomic update
2310# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2311#elif defined(MFC_OpenMP)
2312# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2313!$omp atomic update
2314# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2315#endif
2316 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2317 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
2318
2319
2320# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2321#if defined(MFC_OpenACC)
2322# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2323!$acc atomic update
2324# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2325#elif defined(MFC_OpenMP)
2326# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2327!$omp atomic update
2328# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2329#endif
2330 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2331 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2332
2333# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2334#if defined(MFC_OpenACC)
2335# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2336!$acc atomic update
2337# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2338#elif defined(MFC_OpenMP)
2339# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2340!$omp atomic update
2341# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2342#endif
2343 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2344 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
2345
2346
2347# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2348#if defined(MFC_OpenACC)
2349# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2350!$acc atomic update
2351# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2352#elif defined(MFC_OpenMP)
2353# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2354!$omp atomic update
2355# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2356#endif
2357 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2358 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
2359
2360# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2361#if defined(MFC_OpenACC)
2362# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2363!$acc atomic update
2364# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2365#elif defined(MFC_OpenMP)
2366# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2367!$omp atomic update
2368# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2369#endif
2370 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2371 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
2372
2373
2374# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2375#if defined(MFC_OpenACC)
2376# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2377!$acc atomic update
2378# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2379#elif defined(MFC_OpenMP)
2380# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2381!$omp atomic update
2382# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2383#endif
2384 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2385 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2386
2387# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2388#if defined(MFC_OpenACC)
2389# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2390!$acc atomic update
2391# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2392#elif defined(MFC_OpenMP)
2393# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2394!$omp atomic update
2395# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2396#endif
2397 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2398 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
2399
2400
2401# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2402#if defined(MFC_OpenACC)
2403# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2404!$acc atomic update
2405# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2406#elif defined(MFC_OpenMP)
2407# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2408!$omp atomic update
2409# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2410#endif
2411 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2412 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
2413
2414# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2415#if defined(MFC_OpenACC)
2416# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2417!$acc atomic update
2418# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2419#elif defined(MFC_OpenMP)
2420# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2421!$omp atomic update
2422# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2423#endif
2424 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2425 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
2426
2427
2428# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2429#if defined(MFC_OpenACC)
2430# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2431!$acc atomic update
2432# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2433#elif defined(MFC_OpenMP)
2434# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2435!$omp atomic update
2436# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2437#endif
2438 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2439 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2440
2441# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2442#if defined(MFC_OpenACC)
2443# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2444!$acc atomic update
2445# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2446#elif defined(MFC_OpenMP)
2447# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2448!$omp atomic update
2449# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2450#endif
2451 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2452 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
2453
2454
2455# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2456#if defined(MFC_OpenACC)
2457# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2458!$acc atomic update
2459# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2460#elif defined(MFC_OpenMP)
2461# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2462!$omp atomic update
2463# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2464#endif
2465 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2466 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
2467
2468# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2469#if defined(MFC_OpenACC)
2470# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2471!$acc atomic update
2472# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2473#elif defined(MFC_OpenMP)
2474# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2475!$omp atomic update
2476# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2477#endif
2478 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2479 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
2480 end if
2481
2482 e_l = 0._wp; e_r = 0._wp
2483
2484
2485# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2486#if defined(MFC_OpenACC)
2487# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2488!$acc loop seq
2489# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2490#elif defined(MFC_OpenMP)
2491# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2492
2493# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2494#endif
2495 do q = vidxb + 1, vidxe
2496 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2497 end do
2498
2499
2500# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2501#if defined(MFC_OpenACC)
2502# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2503!$acc loop seq
2504# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2505#elif defined(MFC_OpenMP)
2506# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2507
2508# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2509#endif
2510 do q = vidxb, vidxe - 1
2511 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2512 end do
2513
2514 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
2515 & vel_r, pres_l, pres_r, cfl)
2516
2517 do i = 1, num_fluids
2518
2519# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2520#if defined(MFC_OpenACC)
2521# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2522!$acc atomic update
2523# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2524#elif defined(MFC_OpenMP)
2525# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2526!$omp atomic update
2527# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2528#endif
2529 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2530 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2531 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
2532
2533
2534# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2535#if defined(MFC_OpenACC)
2536# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2537!$acc atomic update
2538# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2539#elif defined(MFC_OpenMP)
2540# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2541!$omp atomic update
2542# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2543#endif
2544 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2545 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
2546 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
2547 end do
2548
2549 if (num_fluids > 1) then
2550
2551# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2552#if defined(MFC_OpenACC)
2553# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2554!$acc loop seq
2555# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2556#elif defined(MFC_OpenMP)
2557# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2558
2559# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2560#endif
2561 do i = 1, num_fluids - 1
2562
2563# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2564#if defined(MFC_OpenACC)
2565# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2566!$acc atomic update
2567# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2568#elif defined(MFC_OpenMP)
2569# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2570!$omp atomic update
2571# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2572#endif
2573 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2574 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2575 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
2576
2577
2578# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2579#if defined(MFC_OpenACC)
2580# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2581!$acc atomic update
2582# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2583#elif defined(MFC_OpenMP)
2584# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2585!$omp atomic update
2586# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2587#endif
2588 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2589 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2590 & l)*vel_l(1)*(1._wp/dx(j + 1))), kind=stp)
2591
2592
2593# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2594#if defined(MFC_OpenACC)
2595# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2596!$acc atomic update
2597# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2598#elif defined(MFC_OpenMP)
2599# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2600!$omp atomic update
2601# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2602#endif
2603 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2604 & l) - real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
2605 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j))), kind=stp)
2606
2607
2608# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2609#if defined(MFC_OpenACC)
2610# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2611!$acc atomic update
2612# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2613#elif defined(MFC_OpenMP)
2614# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2615!$omp atomic update
2616# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2617#endif
2618 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2619 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2620 & l)*vel_l(1)*(1._wp/dx(j))), kind=stp)
2621 end do
2622 end if
2623
2624
2625# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2626#if defined(MFC_OpenACC)
2627# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2628!$acc atomic update
2629# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2630#elif defined(MFC_OpenMP)
2631# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2632!$omp atomic update
2633# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2634#endif
2635 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2636 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
2637 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
2638
2639
2640# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2641#if defined(MFC_OpenACC)
2642# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2643!$acc atomic update
2644# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2645#elif defined(MFC_OpenMP)
2646# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2647!$omp atomic update
2648# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2649#endif
2650 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2651 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
2652 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
2653
2654
2655# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2656#if defined(MFC_OpenACC)
2657# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2658!$acc atomic update
2659# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2660#elif defined(MFC_OpenMP)
2661# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2662!$omp atomic update
2663# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2664#endif
2665 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2666 & l) + real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j + 1)) - 0.5_wp*dt*cfl*(e_l) &
2667 & *(1._wp/dx(j + 1))), kind=stp)
2668
2669
2670# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2671#if defined(MFC_OpenACC)
2672# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2673!$acc atomic update
2674# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2675#elif defined(MFC_OpenMP)
2676# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2677!$omp atomic update
2678# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2679#endif
2680 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2681 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
2682 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
2683
2684
2685# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2686#if defined(MFC_OpenACC)
2687# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2688!$acc atomic update
2689# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2690#elif defined(MFC_OpenMP)
2691# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2692!$omp atomic update
2693# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2694#endif
2695 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2696 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
2697 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
2698
2699
2700# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2701#if defined(MFC_OpenACC)
2702# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2703!$acc atomic update
2704# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2705#elif defined(MFC_OpenMP)
2706# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2707!$omp atomic update
2708# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2709#endif
2710 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2711 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
2712 & *(1._wp/dx(j))), kind=stp)
2713
2714
2715# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2716#if defined(MFC_OpenACC)
2717# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2718!$acc loop seq
2719# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2720#elif defined(MFC_OpenMP)
2721# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2722
2723# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2724#endif
2725 do i = 1, num_fluids
2726
2727# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2728#if defined(MFC_OpenACC)
2729# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2730!$acc atomic update
2731# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2732#elif defined(MFC_OpenMP)
2733# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2734!$omp atomic update
2735# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2736#endif
2737 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2738 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2739 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
2740
2741
2742# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2743#if defined(MFC_OpenACC)
2744# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2745!$acc atomic update
2746# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2747#elif defined(MFC_OpenMP)
2748# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2749!$omp atomic update
2750# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2751#endif
2752 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2753 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
2754 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
2755 end do
2756
2757 if (num_fluids > 1) then
2758
2759# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2760#if defined(MFC_OpenACC)
2761# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2762!$acc loop seq
2763# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2764#elif defined(MFC_OpenMP)
2765# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2766
2767# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2768#endif
2769 do i = 1, num_fluids - 1
2770
2771# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2772#if defined(MFC_OpenACC)
2773# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2774!$acc atomic update
2775# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2776#elif defined(MFC_OpenMP)
2777# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2778!$omp atomic update
2779# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2780#endif
2781 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2782 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2783 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
2784
2785
2786# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2787#if defined(MFC_OpenACC)
2788# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2789!$acc atomic update
2790# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2791#elif defined(MFC_OpenMP)
2792# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2793!$omp atomic update
2794# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2795#endif
2796 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2797 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2798 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
2799
2800
2801# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2802#if defined(MFC_OpenACC)
2803# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2804!$acc atomic update
2805# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2806#elif defined(MFC_OpenMP)
2807# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2808!$omp atomic update
2809# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2810#endif
2811 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2812 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
2813 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
2814
2815
2816# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2817#if defined(MFC_OpenACC)
2818# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2819!$acc atomic update
2820# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2821#elif defined(MFC_OpenMP)
2822# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2823!$omp atomic update
2824# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2825#endif
2826 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2827 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2828 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
2829 end do
2830 end if
2831
2832
2833# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2834#if defined(MFC_OpenACC)
2835# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2836!$acc atomic update
2837# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2838#elif defined(MFC_OpenMP)
2839# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2840!$omp atomic update
2841# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2842#endif
2843 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2844 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
2845 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
2846
2847
2848# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2849#if defined(MFC_OpenACC)
2850# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2851!$acc atomic update
2852# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2853#elif defined(MFC_OpenMP)
2854# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2855!$omp atomic update
2856# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2857#endif
2858 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2859 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
2860 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
2861
2862
2863# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2864#if defined(MFC_OpenACC)
2865# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2866!$acc atomic update
2867# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2868#elif defined(MFC_OpenMP)
2869# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2870!$omp atomic update
2871# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2872#endif
2873 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2874 & l) + real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j + 1)) + 0.5_wp*dt*cfl*(e_r) &
2875 & *(1._wp/dx(j + 1))), kind=stp)
2876
2877
2878# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2879#if defined(MFC_OpenACC)
2880# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2881!$acc atomic update
2882# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2883#elif defined(MFC_OpenMP)
2884# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2885!$omp atomic update
2886# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2887#endif
2888 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2889 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
2890 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
2891
2892
2893# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2894#if defined(MFC_OpenACC)
2895# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2896!$acc atomic update
2897# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2898#elif defined(MFC_OpenMP)
2899# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2900!$omp atomic update
2901# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2902#endif
2903 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2904 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
2905 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
2906
2907
2908# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2909#if defined(MFC_OpenACC)
2910# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2911!$acc atomic update
2912# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2913#elif defined(MFC_OpenMP)
2914# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2915!$omp atomic update
2916# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2917#endif
2918 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2919 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
2920 & *(1._wp/dx(j))), kind=stp)
2921 end do
2922 end do
2923 end do
2924
2925# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2926#if defined(MFC_OpenACC)
2927# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2928!$acc end parallel loop
2929# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2930#elif defined(MFC_OpenMP)
2931# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2932
2933# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2934!$omp end target teams loop
2935# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2936#endif
2937# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2938 else
2939# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2940
2941# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2942
2943# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2944#if defined(MFC_OpenACC)
2945# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2946!$acc parallel loop collapse(3) gang vector default(present) &
2947# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2948!$acc& 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)
2949# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2950#elif defined(MFC_OpenMP)
2951# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2952
2953# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2954
2955# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2956
2957# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2958!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
2959# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2960!$omp& 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)
2961# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2962#endif
2963# 832 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2964 do l = 0, p
2965 do k = 0, n
2966 do j = -1, m
2967 vflux_l_arr = 0._wp
2968 vflux_r_arr = 0._wp
2969
2970# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2971
2972# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2973#if defined(MFC_OpenACC)
2974# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2975!$acc loop seq
2976# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2977#elif defined(MFC_OpenMP)
2978# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2979
2980# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2981#endif
2982 do q = vidxb, vidxe
2983 ! x-direction contributions
2984
2985# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2986#if defined(MFC_OpenACC)
2987# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2988!$acc loop seq
2989# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2990#elif defined(MFC_OpenMP)
2991# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2992
2993# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2994#endif
2995 do i = -1, 1
2996 rho_l = 0._wp
2997
2998# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2999#if defined(MFC_OpenACC)
3000# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3001!$acc loop seq
3002# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3003#elif defined(MFC_OpenMP)
3004# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3005
3006# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3007#endif
3008 do r = 1, num_fluids
3009 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
3010 end do
3011 rho_sf_small(i) = rho_l
3012 end do
3013
3014 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
3015 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3016 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
3017 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3018 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1 + q, k, &
3019 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3020
3021 if (q == 0) then
3022
3023# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3024#if defined(MFC_OpenACC)
3025# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3026!$acc loop seq
3027# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3028#elif defined(MFC_OpenMP)
3029# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3030
3031# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3032#endif
3033 do i = 1, num_dims
3034 dvel(i, 1) = dvel_small(i)
3035 end do
3036 end if
3037
3038 if (q > vidxb) then
3039 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
3040 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
3041 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
3042 end if
3043 if (q < vidxe) then
3044 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
3045 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
3046 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
3047 end if
3048
3049 ! y-direction contributions
3050
3051# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3052#if defined(MFC_OpenACC)
3053# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3054!$acc loop seq
3055# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3056#elif defined(MFC_OpenMP)
3057# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3058
3059# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3060#endif
3061 do i = -1, 1
3062 rho_l = 0._wp
3063
3064# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3065#if defined(MFC_OpenACC)
3066# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3067!$acc loop seq
3068# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3069#elif defined(MFC_OpenMP)
3070# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3071
3072# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3073#endif
3074 do r = 1, num_fluids
3075 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
3076 end do
3077 rho_sf_small(i) = rho_l
3078 end do
3079
3080 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
3081 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3082 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
3083 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3084 if (q == 0) dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k + 1, &
3085 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3086 if (q == 0) then
3087
3088# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3089#if defined(MFC_OpenACC)
3090# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3091!$acc loop seq
3092# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3093#elif defined(MFC_OpenMP)
3094# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3095
3096# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3097#endif
3098 do i = 1, num_dims
3099 dvel(i, 2) = dvel_small(i)
3100 end do
3101 end if
3102
3103 if (q > vidxb) then
3104 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
3105 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
3106 end if
3107 if (q < vidxe) then
3108 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
3109 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
3110 end if
3111
3112 ! z-direction contributions
3113
3114# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3115#if defined(MFC_OpenACC)
3116# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3117!$acc loop seq
3118# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3119#elif defined(MFC_OpenMP)
3120# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3121
3122# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3123#endif
3124 do i = -1, 1
3125 rho_l = 0._wp
3126
3127# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3128#if defined(MFC_OpenACC)
3129# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3130!$acc loop seq
3131# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3132#elif defined(MFC_OpenMP)
3133# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3134
3135# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3136#endif
3137 do r = 1, num_fluids
3138 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k, l + i)
3139 end do
3140 rho_sf_small(i) = rho_l
3141 end do
3142
3143 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j + q, k, &
3144 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3145 if (q == 0) dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k, &
3146 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3147 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3148 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3149 & l - 1)/rho_sf_small(-1))
3150 if (q == 0) then
3151
3152# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3153#if defined(MFC_OpenACC)
3154# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3155!$acc loop seq
3156# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3157#elif defined(MFC_OpenMP)
3158# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3159
3160# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3161#endif
3162 do i = 1, num_dims
3163 dvel(i, 3) = dvel_small(i)
3164 end do
3165 end if
3166
3167 if (q > vidxb) then
3168 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(1))
3169 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
3170 end if
3171 if (q < vidxe) then
3172 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(1))
3173 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
3174 end if
3175
3176 if (q == 0) then
3177 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1) + dvel(1, 3)*dvel(3, &
3178 & 1) + dvel(2, 3)*dvel(3, 2)) + dvel(1, 1)**2._wp + dvel(2, 2)**2._wp + dvel(3, &
3179 & 3)**2._wp + (dvel(1, 1) + dvel(2, 2) + dvel(3, 3))**2._wp), kind=stp)
3180 end if
3181 end do
3182
3183
3184# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3185#if defined(MFC_OpenACC)
3186# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3187!$acc loop seq
3188# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3189#elif defined(MFC_OpenMP)
3190# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3191
3192# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3193#endif
3194 do i = 1, num_fluids
3195 alpha_rho_l(i) = 0._wp
3196 alpha_rho_r(i) = 0._wp
3197 alpha_l(i) = 0._wp
3198 alpha_r(i) = 0._wp
3199 end do
3200
3201# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3202#if defined(MFC_OpenACC)
3203# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3204!$acc loop seq
3205# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3206#elif defined(MFC_OpenMP)
3207# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3208
3209# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3210#endif
3211 do i = 1, num_dims
3212 vel_l(i) = 0._wp
3213 vel_r(i) = 0._wp
3214 end do
3215
3216
3217# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3218#if defined(MFC_OpenACC)
3219# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3220!$acc loop seq
3221# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3222#elif defined(MFC_OpenMP)
3223# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3224
3225# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3226#endif
3227 do q = vidxb + 1, vidxe
3228
3229# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3230#if defined(MFC_OpenACC)
3231# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3232!$acc loop seq
3233# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3234#elif defined(MFC_OpenMP)
3235# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3236
3237# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3238#endif
3239 do i = 1, num_fluids
3240 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
3241 end do
3242
3243 if (num_fluids > 1) then
3244
3245# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3246#if defined(MFC_OpenACC)
3247# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3248!$acc loop seq
3249# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3250#elif defined(MFC_OpenMP)
3251# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3252
3253# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3254#endif
3255 do i = 1, num_fluids - 1
3256 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3257 end do
3258 else
3259 alpha_l(1) = 1._wp
3260 end if
3261
3262
3263# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3264#if defined(MFC_OpenACC)
3265# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3266!$acc loop seq
3267# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3268#elif defined(MFC_OpenMP)
3269# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3270
3271# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3272#endif
3273 do i = 1, num_dims
3274 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3275 end do
3276 end do
3277
3278
3279# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3280#if defined(MFC_OpenACC)
3281# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3282!$acc loop seq
3283# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3284#elif defined(MFC_OpenMP)
3285# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3286
3287# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3288#endif
3289 do q = vidxb, vidxe - 1
3290
3291# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3292#if defined(MFC_OpenACC)
3293# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3294!$acc loop seq
3295# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3296#elif defined(MFC_OpenMP)
3297# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3298
3299# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3300#endif
3301 do i = 1, num_fluids
3302 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
3303 end do
3304
3305 if (num_fluids > 1) then
3306
3307# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3308#if defined(MFC_OpenACC)
3309# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3310!$acc loop seq
3311# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3312#elif defined(MFC_OpenMP)
3313# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3314
3315# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3316#endif
3317 do i = 1, num_fluids - 1
3318 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3319 end do
3320 else
3321 alpha_r(1) = 1._wp
3322 end if
3323
3324
3325# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3326#if defined(MFC_OpenACC)
3327# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3328!$acc loop seq
3329# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3330#elif defined(MFC_OpenMP)
3331# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3332
3333# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3334#endif
3335 do i = 1, num_dims
3336 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3337 end do
3338 end do
3339
3340 if (num_fluids > 1) then
3341 alpha_l(num_fluids) = 1._wp
3342 alpha_r(num_fluids) = 1._wp
3343
3344
3345# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3346#if defined(MFC_OpenACC)
3347# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3348!$acc loop seq
3349# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3350#elif defined(MFC_OpenMP)
3351# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3352
3353# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3354#endif
3355 do i = 1, num_fluids - 1
3356 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
3357 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
3358 end do
3359 end if
3360
3361 rho_l = 0._wp; rho_r = 0._wp
3362 gamma_l = 0._wp; gamma_r = 0._wp
3363 pi_inf_l = 0._wp; pi_inf_r = 0._wp
3364
3365
3366# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3367#if defined(MFC_OpenACC)
3368# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3369!$acc loop seq
3370# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3371#elif defined(MFC_OpenMP)
3372# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3373
3374# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3375#endif
3376 do i = 1, num_fluids
3377 rho_l = rho_l + alpha_rho_l(i)
3378 gamma_l = gamma_l + alpha_l(i)*gammas(i)
3379 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
3380
3381 rho_r = rho_r + alpha_rho_r(i)
3382 gamma_r = gamma_r + alpha_r(i)*gammas(i)
3383 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
3384 end do
3385
3386
3387# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3388#if defined(MFC_OpenACC)
3389# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3390!$acc loop seq
3391# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3392#elif defined(MFC_OpenMP)
3393# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3394
3395# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3396#endif
3397 do i = 1, num_dims
3398 vel_l(i) = vel_l(i)/rho_l
3399 vel_r(i) = vel_r(i)/rho_r
3400 end do
3401
3402 if (viscous) then
3403 mu_l = 0._wp
3404 mu_r = 0._wp
3405
3406# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3407#if defined(MFC_OpenACC)
3408# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3409!$acc loop seq
3410# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3411#elif defined(MFC_OpenMP)
3412# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3413
3414# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3415#endif
3416 do i = 1, num_fluids
3417 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
3418 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
3419 end do
3420
3421
3422# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3423#if defined(MFC_OpenACC)
3424# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3425!$acc atomic update
3426# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3427#elif defined(MFC_OpenMP)
3428# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3429!$omp atomic update
3430# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3431#endif
3432 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3433 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3434
3435# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3436#if defined(MFC_OpenACC)
3437# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3438!$acc atomic update
3439# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3440#elif defined(MFC_OpenMP)
3441# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3442!$omp atomic update
3443# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3444#endif
3445 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3446 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
3447
3448
3449# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3450#if defined(MFC_OpenACC)
3451# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3452!$acc atomic update
3453# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3454#elif defined(MFC_OpenMP)
3455# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3456!$omp atomic update
3457# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3458#endif
3459 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3460 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
3461
3462# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3463#if defined(MFC_OpenACC)
3464# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3465!$acc atomic update
3466# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3467#elif defined(MFC_OpenMP)
3468# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3469!$omp atomic update
3470# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3471#endif
3472 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3473 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
3474
3475
3476# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3477#if defined(MFC_OpenACC)
3478# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3479!$acc atomic update
3480# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3481#elif defined(MFC_OpenMP)
3482# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3483!$omp atomic update
3484# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3485#endif
3486 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3487 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3488
3489# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3490#if defined(MFC_OpenACC)
3491# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3492!$acc atomic update
3493# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3494#elif defined(MFC_OpenMP)
3495# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3496!$omp atomic update
3497# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3498#endif
3499 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3500 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
3501
3502
3503# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3504#if defined(MFC_OpenACC)
3505# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3506!$acc atomic update
3507# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3508#elif defined(MFC_OpenMP)
3509# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3510!$omp atomic update
3511# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3512#endif
3513 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3514 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
3515
3516# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3517#if defined(MFC_OpenACC)
3518# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3519!$acc atomic update
3520# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3521#elif defined(MFC_OpenMP)
3522# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3523!$omp atomic update
3524# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3525#endif
3526 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3527 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
3528
3529
3530# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3531#if defined(MFC_OpenACC)
3532# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3533!$acc atomic update
3534# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3535#elif defined(MFC_OpenMP)
3536# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3537!$omp atomic update
3538# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3539#endif
3540 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3541 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3542
3543# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3544#if defined(MFC_OpenACC)
3545# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3546!$acc atomic update
3547# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3548#elif defined(MFC_OpenMP)
3549# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3550!$omp atomic update
3551# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3552#endif
3553 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3554 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j + 1)), kind=stp)
3555
3556
3557# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3558#if defined(MFC_OpenACC)
3559# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3560!$acc atomic update
3561# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3562#elif defined(MFC_OpenMP)
3563# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3564!$omp atomic update
3565# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3566#endif
3567 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3568 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j)), kind=stp)
3569
3570# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3571#if defined(MFC_OpenACC)
3572# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3573!$acc atomic update
3574# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3575#elif defined(MFC_OpenMP)
3576# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3577!$omp atomic update
3578# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3579#endif
3580 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3581 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j)), kind=stp)
3582
3583
3584# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3585#if defined(MFC_OpenACC)
3586# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3587!$acc atomic update
3588# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3589#elif defined(MFC_OpenMP)
3590# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3591!$omp atomic update
3592# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3593#endif
3594 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3595 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3596
3597# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3598#if defined(MFC_OpenACC)
3599# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3600!$acc atomic update
3601# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3602#elif defined(MFC_OpenMP)
3603# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3604!$omp atomic update
3605# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3606#endif
3607 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3608 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j + 1)), kind=stp)
3609
3610
3611# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3612#if defined(MFC_OpenACC)
3613# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3614!$acc atomic update
3615# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3616#elif defined(MFC_OpenMP)
3617# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3618!$omp atomic update
3619# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3620#endif
3621 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3622 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j)), kind=stp)
3623
3624# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3625#if defined(MFC_OpenACC)
3626# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3627!$acc atomic update
3628# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3629#elif defined(MFC_OpenMP)
3630# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3631!$omp atomic update
3632# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3633#endif
3634 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3635 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j)), kind=stp)
3636
3637
3638# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3639#if defined(MFC_OpenACC)
3640# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3641!$acc atomic update
3642# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3643#elif defined(MFC_OpenMP)
3644# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3645!$omp atomic update
3646# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3647#endif
3648 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3649 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3650
3651# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3652#if defined(MFC_OpenACC)
3653# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3654!$acc atomic update
3655# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3656#elif defined(MFC_OpenMP)
3657# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3658!$omp atomic update
3659# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3660#endif
3661 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3662 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3663
3664
3665# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3666#if defined(MFC_OpenACC)
3667# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3668!$acc atomic update
3669# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3670#elif defined(MFC_OpenMP)
3671# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3672!$omp atomic update
3673# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3674#endif
3675 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3676 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
3677
3678# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3679#if defined(MFC_OpenACC)
3680# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3681!$acc atomic update
3682# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3683#elif defined(MFC_OpenMP)
3684# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3685!$omp atomic update
3686# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3687#endif
3688 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3689 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3690
3691
3692# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3693#if defined(MFC_OpenACC)
3694# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3695!$acc atomic update
3696# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3697#elif defined(MFC_OpenMP)
3698# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3699!$omp atomic update
3700# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3701#endif
3702 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3703 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3704
3705# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3706#if defined(MFC_OpenACC)
3707# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3708!$acc atomic update
3709# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3710#elif defined(MFC_OpenMP)
3711# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3712!$omp atomic update
3713# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3714#endif
3715 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3716 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
3717
3718
3719# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3720#if defined(MFC_OpenACC)
3721# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3722!$acc atomic update
3723# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3724#elif defined(MFC_OpenMP)
3725# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3726!$omp atomic update
3727# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3728#endif
3729 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3730 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
3731
3732# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3733#if defined(MFC_OpenACC)
3734# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3735!$acc atomic update
3736# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3737#elif defined(MFC_OpenMP)
3738# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3739!$omp atomic update
3740# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3741#endif
3742 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3743 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
3744 end if
3745
3746 e_l = 0._wp; e_r = 0._wp
3747
3748
3749# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3750#if defined(MFC_OpenACC)
3751# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3752!$acc loop seq
3753# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3754#elif defined(MFC_OpenMP)
3755# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3756
3757# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3758#endif
3759 do q = vidxb + 1, vidxe
3760 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3761 end do
3762
3763
3764# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3765#if defined(MFC_OpenACC)
3766# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3767!$acc loop seq
3768# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3769#elif defined(MFC_OpenMP)
3770# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3771
3772# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3773#endif
3774 do q = vidxb, vidxe - 1
3775 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3776 end do
3777
3778 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
3779 & vel_r, pres_l, pres_r, cfl)
3780
3781
3782# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3783#if defined(MFC_OpenACC)
3784# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3785!$acc loop seq
3786# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3787#elif defined(MFC_OpenMP)
3788# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3789
3790# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3791#endif
3792 do i = 1, num_fluids
3793
3794# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3795#if defined(MFC_OpenACC)
3796# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3797!$acc atomic update
3798# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3799#elif defined(MFC_OpenMP)
3800# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3801!$omp atomic update
3802# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3803#endif
3804 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
3805 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3806 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
3807
3808
3809# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3810#if defined(MFC_OpenACC)
3811# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3812!$acc atomic update
3813# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3814#elif defined(MFC_OpenMP)
3815# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3816!$omp atomic update
3817# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3818#endif
3819 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
3820 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
3821 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
3822 end do
3823
3824 if (num_fluids > 1) then
3825
3826# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3827#if defined(MFC_OpenACC)
3828# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3829!$acc loop seq
3830# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3831#elif defined(MFC_OpenMP)
3832# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3833
3834# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3835#endif
3836 do i = 1, num_fluids - 1
3837
3838# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3839#if defined(MFC_OpenACC)
3840# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3841!$acc atomic update
3842# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3843#elif defined(MFC_OpenMP)
3844# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3845!$omp atomic update
3846# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3847#endif
3848 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3849 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3850 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
3851
3852
3853# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3854#if defined(MFC_OpenACC)
3855# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3856!$acc atomic update
3857# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3858#elif defined(MFC_OpenMP)
3859# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3860!$omp atomic update
3861# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3862#endif
3863 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3864 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3865 & l)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3866
3867
3868# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3869#if defined(MFC_OpenACC)
3870# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3871!$acc atomic update
3872# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3873#elif defined(MFC_OpenMP)
3874# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3875!$omp atomic update
3876# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3877#endif
3878 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3879 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
3880 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j)), kind=stp)
3881
3882
3883# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3884#if defined(MFC_OpenACC)
3885# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3886!$acc atomic update
3887# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3888#elif defined(MFC_OpenMP)
3889# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3890!$omp atomic update
3891# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3892#endif
3893 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3894 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
3895 & l)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3896 end do
3897 end if
3898
3899
3900# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3901#if defined(MFC_OpenACC)
3902# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3903!$acc atomic update
3904# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3905#elif defined(MFC_OpenMP)
3906# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3907!$omp atomic update
3908# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3909#endif
3910 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3911 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
3912 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
3913
3914
3915# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3916#if defined(MFC_OpenACC)
3917# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3918!$acc atomic update
3919# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3920#elif defined(MFC_OpenMP)
3921# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3922!$omp atomic update
3923# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3924#endif
3925 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3926 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
3927 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
3928
3929
3930# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3931#if defined(MFC_OpenACC)
3932# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3933!$acc atomic update
3934# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3935#elif defined(MFC_OpenMP)
3936# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3937!$omp atomic update
3938# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3939#endif
3940 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3941 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j + 1)) &
3942 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j + 1))), kind=stp)
3943
3944
3945# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3946#if defined(MFC_OpenACC)
3947# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3948!$acc atomic update
3949# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3950#elif defined(MFC_OpenMP)
3951# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3952!$omp atomic update
3953# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3954#endif
3955 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3956 & l) + real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j + 1)) - 0.5_wp*dt*cfl*(e_l) &
3957 & *(1._wp/dx(j + 1))), kind=stp)
3958
3959
3960# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3961#if defined(MFC_OpenACC)
3962# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3963!$acc atomic update
3964# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3965#elif defined(MFC_OpenMP)
3966# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3967!$omp atomic update
3968# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3969#endif
3970 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3971 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
3972 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
3973
3974
3975# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3976#if defined(MFC_OpenACC)
3977# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3978!$acc atomic update
3979# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3980#elif defined(MFC_OpenMP)
3981# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3982!$omp atomic update
3983# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3984#endif
3985 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3986 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
3987 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
3988
3989
3990# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3991#if defined(MFC_OpenACC)
3992# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3993!$acc atomic update
3994# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3995#elif defined(MFC_OpenMP)
3996# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3997!$omp atomic update
3998# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3999#endif
4000 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
4001 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j)) &
4002 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j))), kind=stp)
4003
4004
4005# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4006#if defined(MFC_OpenACC)
4007# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4008!$acc atomic update
4009# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4010#elif defined(MFC_OpenMP)
4011# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4012!$omp atomic update
4013# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4014#endif
4015 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4016 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
4017 & *(1._wp/dx(j))), kind=stp)
4018
4019
4020# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4021#if defined(MFC_OpenACC)
4022# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4023!$acc loop seq
4024# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4025#elif defined(MFC_OpenMP)
4026# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4027
4028# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4029#endif
4030 do i = 1, num_fluids
4031
4032# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4033#if defined(MFC_OpenACC)
4034# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4035!$acc atomic update
4036# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4037#elif defined(MFC_OpenMP)
4038# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4039!$omp atomic update
4040# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4041#endif
4042 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
4043 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
4044 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
4045
4046
4047# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4048#if defined(MFC_OpenACC)
4049# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4050!$acc atomic update
4051# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4052#elif defined(MFC_OpenMP)
4053# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4054!$omp atomic update
4055# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4056#endif
4057 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
4058 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
4059 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
4060 end do
4061
4062 if (num_fluids > 1) then
4063
4064# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4065#if defined(MFC_OpenACC)
4066# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4067!$acc loop seq
4068# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4069#elif defined(MFC_OpenMP)
4070# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4071
4072# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4073#endif
4074 do i = 1, num_fluids - 1
4075
4076# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4077#if defined(MFC_OpenACC)
4078# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4079!$acc atomic update
4080# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4081#elif defined(MFC_OpenMP)
4082# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4083!$omp atomic update
4084# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4085#endif
4086 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4087 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
4088 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
4089
4090
4091# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4092#if defined(MFC_OpenACC)
4093# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4094!$acc atomic update
4095# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4096#elif defined(MFC_OpenMP)
4097# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4098!$omp atomic update
4099# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4100#endif
4101 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4102 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4103 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
4104
4105
4106# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4107#if defined(MFC_OpenACC)
4108# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4109!$acc atomic update
4110# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4111#elif defined(MFC_OpenMP)
4112# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4113!$omp atomic update
4114# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4115#endif
4116 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4117 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
4118 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
4119
4120
4121# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4122#if defined(MFC_OpenACC)
4123# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4124!$acc atomic update
4125# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4126#elif defined(MFC_OpenMP)
4127# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4128!$omp atomic update
4129# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4130#endif
4131 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4132 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
4133 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
4134 end do
4135 end if
4136
4137
4138# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4139#if defined(MFC_OpenACC)
4140# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4141!$acc atomic update
4142# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4143#elif defined(MFC_OpenMP)
4144# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4145!$omp atomic update
4146# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4147#endif
4148 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
4149 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
4150 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
4151
4152
4153# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4154#if defined(MFC_OpenACC)
4155# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4156!$acc atomic update
4157# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4158#elif defined(MFC_OpenMP)
4159# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4160!$omp atomic update
4161# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4162#endif
4163 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
4164 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
4165 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
4166
4167
4168# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4169#if defined(MFC_OpenACC)
4170# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4171!$acc atomic update
4172# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4173#elif defined(MFC_OpenMP)
4174# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4175!$omp atomic update
4176# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4177#endif
4178 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
4179 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j + 1)) &
4180 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j + 1))), kind=stp)
4181
4182
4183# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4184#if defined(MFC_OpenACC)
4185# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4186!$acc atomic update
4187# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4188#elif defined(MFC_OpenMP)
4189# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4190!$omp atomic update
4191# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4192#endif
4193 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
4194 & l) + real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j + 1)) + 0.5_wp*dt*cfl*(e_r) &
4195 & *(1._wp/dx(j + 1))), kind=stp)
4196
4197
4198# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4199#if defined(MFC_OpenACC)
4200# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4201!$acc atomic update
4202# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4203#elif defined(MFC_OpenMP)
4204# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4205!$omp atomic update
4206# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4207#endif
4208 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4209 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
4210 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
4211
4212
4213# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4214#if defined(MFC_OpenACC)
4215# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4216!$acc atomic update
4217# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4218#elif defined(MFC_OpenMP)
4219# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4220!$omp atomic update
4221# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4222#endif
4223 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4224 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
4225 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
4226
4227
4228# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4229#if defined(MFC_OpenACC)
4230# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4231!$acc atomic update
4232# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4233#elif defined(MFC_OpenMP)
4234# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4235!$omp atomic update
4236# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4237#endif
4238 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
4239 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j)) &
4240 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j))), kind=stp)
4241
4242
4243# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4244#if defined(MFC_OpenACC)
4245# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4246!$acc atomic update
4247# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4248#elif defined(MFC_OpenMP)
4249# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4250!$omp atomic update
4251# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4252#endif
4253 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4254 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
4255 & *(1._wp/dx(j))), kind=stp)
4256 end do
4257 end do
4258 end do
4259
4260# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4261#if defined(MFC_OpenACC)
4262# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4263!$acc end parallel loop
4264# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4265#elif defined(MFC_OpenMP)
4266# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4267
4268# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4269!$omp end target teams loop
4270# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4271#endif
4272# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4273 end if
4274 else if (idir == 2) then
4275 if (p == 0) then
4276# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4277
4278# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4279
4280# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4281#if defined(MFC_OpenACC)
4282# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4283!$acc parallel loop collapse(3) gang vector default(present) &
4284# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4285!$acc& 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)
4286# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4287#elif defined(MFC_OpenMP)
4288# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4289
4290# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4291
4292# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4293
4294# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4295!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4296# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4297!$omp& 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)
4298# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4299#endif
4300# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4301 do l = 0, p
4302 do k = -1, n
4303 do j = 0, m
4304 if (viscous) then
4305 vflux_l_arr = 0._wp
4306 vflux_r_arr = 0._wp
4307
4308# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4309
4310# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4311#if defined(MFC_OpenACC)
4312# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4313!$acc loop seq
4314# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4315#elif defined(MFC_OpenMP)
4316# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4317
4318# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4319#endif
4320 do q = vidxb, vidxe
4321 ! x-direction contributions
4322
4323# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4324#if defined(MFC_OpenACC)
4325# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4326!$acc loop seq
4327# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4328#elif defined(MFC_OpenMP)
4329# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4330
4331# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4332#endif
4333 do i = -1, 1
4334 rho_l = 0._wp
4335
4336# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4337#if defined(MFC_OpenACC)
4338# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4339!$acc loop seq
4340# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4341#elif defined(MFC_OpenMP)
4342# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4343
4344# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4345#endif
4346 do r = 1, num_fluids
4347 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
4348 end do
4349 rho_sf_small(i) = rho_l
4350 end do
4351
4352 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
4353 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
4354 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
4355 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
4356 & l)/rho_sf_small(-1))
4357
4358 if (q > vidxb) then
4359 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
4360 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
4361 end if
4362 if (q < vidxe) then
4363 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
4364 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
4365 end if
4366
4367 ! y-direction contributions
4368
4369# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4370#if defined(MFC_OpenACC)
4371# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4372!$acc loop seq
4373# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4374#elif defined(MFC_OpenMP)
4375# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4376
4377# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4378#endif
4379 do i = -1, 1
4380 rho_l = 0._wp
4381
4382# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4383#if defined(MFC_OpenACC)
4384# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4385!$acc loop seq
4386# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4387#elif defined(MFC_OpenMP)
4388# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4389
4390# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4391#endif
4392 do r = 1, num_fluids
4393 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
4394 end do
4395 rho_sf_small(i) = rho_l
4396 end do
4397
4398 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
4399 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
4400 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
4401 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
4402 & l)/rho_sf_small(-1))
4403
4404 if (q > vidxb) then
4405 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
4406 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
4407 end if
4408 if (q < vidxe) then
4409 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
4410 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
4411 end if
4412 end do
4413 end if
4414
4415
4416# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4417#if defined(MFC_OpenACC)
4418# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4419!$acc loop seq
4420# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4421#elif defined(MFC_OpenMP)
4422# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4423
4424# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4425#endif
4426 do i = 1, num_fluids
4427 alpha_rho_l(i) = 0._wp
4428 alpha_rho_r(i) = 0._wp
4429 alpha_l(i) = 0._wp
4430 alpha_r(i) = 0._wp
4431 end do
4432
4433# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4434#if defined(MFC_OpenACC)
4435# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4436!$acc loop seq
4437# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4438#elif defined(MFC_OpenMP)
4439# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4440
4441# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4442#endif
4443 do i = 1, num_dims
4444 vel_l(i) = 0._wp
4445 vel_r(i) = 0._wp
4446 end do
4447
4448
4449# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4450#if defined(MFC_OpenACC)
4451# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4452!$acc loop seq
4453# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4454#elif defined(MFC_OpenMP)
4455# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4456
4457# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4458#endif
4459 do q = vidxb + 1, vidxe
4460
4461# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4462#if defined(MFC_OpenACC)
4463# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4464!$acc loop seq
4465# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4466#elif defined(MFC_OpenMP)
4467# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4468
4469# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4470#endif
4471 do i = 1, num_fluids
4472 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
4473 end do
4474
4475 if (num_fluids > 1) then
4476
4477# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4478#if defined(MFC_OpenACC)
4479# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4480!$acc loop seq
4481# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4482#elif defined(MFC_OpenMP)
4483# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4484
4485# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4486#endif
4487 do i = 1, num_fluids - 1
4488 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4489 end do
4490 else
4491 alpha_l(1) = 1._wp
4492 end if
4493
4494
4495# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4496#if defined(MFC_OpenACC)
4497# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4498!$acc loop seq
4499# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4500#elif defined(MFC_OpenMP)
4501# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4502
4503# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4504#endif
4505 do i = 1, num_dims
4506 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4507 end do
4508 end do
4509
4510
4511# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4512#if defined(MFC_OpenACC)
4513# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4514!$acc loop seq
4515# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4516#elif defined(MFC_OpenMP)
4517# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4518
4519# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4520#endif
4521 do q = vidxb, vidxe - 1
4522
4523# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4524#if defined(MFC_OpenACC)
4525# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4526!$acc loop seq
4527# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4528#elif defined(MFC_OpenMP)
4529# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4530
4531# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4532#endif
4533 do i = 1, num_fluids
4534 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
4535 end do
4536
4537 if (num_fluids > 1) then
4538
4539# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4540#if defined(MFC_OpenACC)
4541# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4542!$acc loop seq
4543# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4544#elif defined(MFC_OpenMP)
4545# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4546
4547# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4548#endif
4549 do i = 1, num_fluids - 1
4550 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4551 end do
4552 else
4553 alpha_r(1) = 1._wp
4554 end if
4555
4556
4557# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4558#if defined(MFC_OpenACC)
4559# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4560!$acc loop seq
4561# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4562#elif defined(MFC_OpenMP)
4563# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4564
4565# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4566#endif
4567 do i = 1, num_dims
4568 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4569 end do
4570 end do
4571
4572 if (num_fluids > 1) then
4573 alpha_l(num_fluids) = 1._wp
4574 alpha_r(num_fluids) = 1._wp
4575
4576
4577# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4578#if defined(MFC_OpenACC)
4579# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4580!$acc loop seq
4581# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4582#elif defined(MFC_OpenMP)
4583# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4584
4585# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4586#endif
4587 do i = 1, num_fluids - 1
4588 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
4589 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
4590 end do
4591 end if
4592
4593 rho_l = 0._wp; rho_r = 0._wp
4594 gamma_l = 0._wp; gamma_r = 0._wp
4595 pi_inf_l = 0._wp; pi_inf_r = 0._wp
4596
4597
4598# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4599#if defined(MFC_OpenACC)
4600# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4601!$acc loop seq
4602# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4603#elif defined(MFC_OpenMP)
4604# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4605
4606# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4607#endif
4608 do i = 1, num_fluids
4609 rho_l = rho_l + alpha_rho_l(i)
4610 gamma_l = gamma_l + alpha_l(i)*gammas(i)
4611 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
4612
4613 rho_r = rho_r + alpha_rho_r(i)
4614 gamma_r = gamma_r + alpha_r(i)*gammas(i)
4615 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
4616 end do
4617
4618
4619# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4620#if defined(MFC_OpenACC)
4621# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4622!$acc loop seq
4623# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4624#elif defined(MFC_OpenMP)
4625# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4626
4627# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4628#endif
4629 do i = 1, num_dims
4630 vel_l(i) = vel_l(i)/rho_l
4631 vel_r(i) = vel_r(i)/rho_r
4632 end do
4633
4634 if (viscous) then
4635 mu_l = 0._wp
4636 mu_r = 0._wp
4637
4638# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4639#if defined(MFC_OpenACC)
4640# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4641!$acc loop seq
4642# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4643#elif defined(MFC_OpenMP)
4644# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4645
4646# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4647#endif
4648 do i = 1, num_fluids
4649 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
4650 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
4651 end do
4652
4653
4654# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4655#if defined(MFC_OpenACC)
4656# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4657!$acc atomic update
4658# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4659#elif defined(MFC_OpenMP)
4660# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4661!$omp atomic update
4662# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4663#endif
4664 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4665 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4666
4667# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4668#if defined(MFC_OpenACC)
4669# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4670!$acc atomic update
4671# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4672#elif defined(MFC_OpenMP)
4673# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4674!$omp atomic update
4675# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4676#endif
4677 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4678 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
4679
4680
4681# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4682#if defined(MFC_OpenACC)
4683# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4684!$acc atomic update
4685# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4686#elif defined(MFC_OpenMP)
4687# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4688!$omp atomic update
4689# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4690#endif
4691 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4692 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
4693
4694# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4695#if defined(MFC_OpenACC)
4696# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4697!$acc atomic update
4698# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4699#elif defined(MFC_OpenMP)
4700# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4701!$omp atomic update
4702# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4703#endif
4704 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4705 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
4706
4707
4708# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4709#if defined(MFC_OpenACC)
4710# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4711!$acc atomic update
4712# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4713#elif defined(MFC_OpenMP)
4714# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4715!$omp atomic update
4716# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4717#endif
4718 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4719 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4720
4721# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4722#if defined(MFC_OpenACC)
4723# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4724!$acc atomic update
4725# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4726#elif defined(MFC_OpenMP)
4727# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4728!$omp atomic update
4729# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4730#endif
4731 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4732 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
4733
4734
4735# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4736#if defined(MFC_OpenACC)
4737# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4738!$acc atomic update
4739# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4740#elif defined(MFC_OpenMP)
4741# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4742!$omp atomic update
4743# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4744#endif
4745 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4746 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
4747
4748# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4749#if defined(MFC_OpenACC)
4750# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4751!$acc atomic update
4752# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4753#elif defined(MFC_OpenMP)
4754# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4755!$omp atomic update
4756# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4757#endif
4758 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4759 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
4760
4761
4762# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4763#if defined(MFC_OpenACC)
4764# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4765!$acc atomic update
4766# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4767#elif defined(MFC_OpenMP)
4768# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4769!$omp atomic update
4770# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4771#endif
4772 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4773 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4774
4775# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4776#if defined(MFC_OpenACC)
4777# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4778!$acc atomic update
4779# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4780#elif defined(MFC_OpenMP)
4781# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4782!$omp atomic update
4783# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4784#endif
4785 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4786 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4787
4788
4789# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4790#if defined(MFC_OpenACC)
4791# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4792!$acc atomic update
4793# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4794#elif defined(MFC_OpenMP)
4795# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4796!$omp atomic update
4797# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4798#endif
4799 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4800 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
4801
4802# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4803#if defined(MFC_OpenACC)
4804# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4805!$acc atomic update
4806# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4807#elif defined(MFC_OpenMP)
4808# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4809!$omp atomic update
4810# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4811#endif
4812 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4813 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
4814
4815
4816# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4817#if defined(MFC_OpenACC)
4818# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4819!$acc atomic update
4820# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4821#elif defined(MFC_OpenMP)
4822# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4823!$omp atomic update
4824# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4825#endif
4826 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4827 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4828
4829# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4830#if defined(MFC_OpenACC)
4831# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4832!$acc atomic update
4833# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4834#elif defined(MFC_OpenMP)
4835# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4836!$omp atomic update
4837# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4838#endif
4839 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4840 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
4841
4842
4843# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4844#if defined(MFC_OpenACC)
4845# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4846!$acc atomic update
4847# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4848#elif defined(MFC_OpenMP)
4849# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4850!$omp atomic update
4851# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4852#endif
4853 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4854 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
4855
4856# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4857#if defined(MFC_OpenACC)
4858# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4859!$acc atomic update
4860# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4861#elif defined(MFC_OpenMP)
4862# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4863!$omp atomic update
4864# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4865#endif
4866 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4867 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
4868 end if
4869
4870 e_l = 0._wp; e_r = 0._wp
4871 f_l = 0._wp; f_r = 0._wp
4872
4873
4874# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4875#if defined(MFC_OpenACC)
4876# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4877!$acc loop seq
4878# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4879#elif defined(MFC_OpenMP)
4880# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4881
4882# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4883#endif
4884 do q = vidxb + 1, vidxe
4885 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4886 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
4887 end do
4888
4889
4890# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4891#if defined(MFC_OpenACC)
4892# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4893!$acc loop seq
4894# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4895#elif defined(MFC_OpenMP)
4896# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4897
4898# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4899#endif
4900 do q = vidxb, vidxe - 1
4901 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4902 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
4903 end do
4904
4905 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
4906 & vel_r, pres_l, pres_r, cfl)
4907
4908
4909# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4910#if defined(MFC_OpenACC)
4911# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4912!$acc loop seq
4913# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4914#elif defined(MFC_OpenMP)
4915# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4916
4917# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4918#endif
4919 do i = 1, num_fluids
4920
4921# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4922#if defined(MFC_OpenACC)
4923# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4924!$acc atomic update
4925# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4926#elif defined(MFC_OpenMP)
4927# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4928!$omp atomic update
4929# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4930#endif
4931 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
4932 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4933 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
4934
4935
4936# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4937#if defined(MFC_OpenACC)
4938# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4939!$acc atomic update
4940# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4941#elif defined(MFC_OpenMP)
4942# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4943!$omp atomic update
4944# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4945#endif
4946 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
4947 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
4948 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
4949 end do
4950
4951 if (num_fluids > 1) then
4952
4953# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4954#if defined(MFC_OpenACC)
4955# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4956!$acc loop seq
4957# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4958#elif defined(MFC_OpenMP)
4959# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4960
4961# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4962#endif
4963 do i = 1, num_fluids - 1
4964
4965# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4966#if defined(MFC_OpenACC)
4967# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4968!$acc atomic update
4969# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4970#elif defined(MFC_OpenMP)
4971# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4972!$omp atomic update
4973# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4974#endif
4975 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4976 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4977 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
4978
4979
4980# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4981#if defined(MFC_OpenACC)
4982# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4983!$acc atomic update
4984# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4985#elif defined(MFC_OpenMP)
4986# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4987!$omp atomic update
4988# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4989#endif
4990 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4991 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4992 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4993
4994
4995# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4996#if defined(MFC_OpenACC)
4997# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4998!$acc atomic update
4999# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5000#elif defined(MFC_OpenMP)
5001# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5002!$omp atomic update
5003# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5004#endif
5005 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5006 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
5007 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
5008
5009
5010# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5011#if defined(MFC_OpenACC)
5012# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5013!$acc atomic update
5014# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5015#elif defined(MFC_OpenMP)
5016# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5017!$omp atomic update
5018# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5019#endif
5020 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5021 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
5022 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
5023 end do
5024 end if
5025
5026
5027# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5028#if defined(MFC_OpenACC)
5029# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5030!$acc atomic update
5031# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5032#elif defined(MFC_OpenMP)
5033# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5034!$omp atomic update
5035# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5036#endif
5037 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5038 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
5039 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
5040
5041
5042# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5043#if defined(MFC_OpenACC)
5044# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5045!$acc atomic update
5046# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5047#elif defined(MFC_OpenMP)
5048# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5049!$omp atomic update
5050# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5051#endif
5052 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5053 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
5054 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
5055
5056
5057# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5058#if defined(MFC_OpenACC)
5059# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5060!$acc atomic update
5061# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5062#elif defined(MFC_OpenMP)
5063# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5064!$omp atomic update
5065# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5066#endif
5067 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5068 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
5069 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
5070
5071
5072# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5073#if defined(MFC_OpenACC)
5074# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5075!$acc atomic update
5076# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5077#elif defined(MFC_OpenMP)
5078# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5079!$omp atomic update
5080# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5081#endif
5082 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5083 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
5084 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
5085
5086
5087# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5088#if defined(MFC_OpenACC)
5089# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5090!$acc atomic update
5091# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5092#elif defined(MFC_OpenMP)
5093# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5094!$omp atomic update
5095# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5096#endif
5097 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5098 & l) - real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(rho_l*vel_l(1) &
5099 & )*(1._wp/dy(k)), kind=stp)
5100
5101
5102# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5103#if defined(MFC_OpenACC)
5104# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5105!$acc atomic update
5106# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5107#elif defined(MFC_OpenMP)
5108# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5109!$omp atomic update
5110# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5111#endif
5112 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5113 & l) - real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(e_l) &
5114 & *(1._wp/dy(k)), kind=stp)
5115
5116
5117# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5118#if defined(MFC_OpenACC)
5119# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5120!$acc loop seq
5121# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5122#elif defined(MFC_OpenMP)
5123# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5124
5125# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5126#endif
5127 do i = 1, num_fluids
5128
5129# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5130#if defined(MFC_OpenACC)
5131# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5132!$acc atomic update
5133# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5134#elif defined(MFC_OpenMP)
5135# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5136!$omp atomic update
5137# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5138#endif
5139 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
5140 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5141 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
5142
5143# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5144#if defined(MFC_OpenACC)
5145# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5146!$acc atomic update
5147# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5148#elif defined(MFC_OpenMP)
5149# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5150!$omp atomic update
5151# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5152#endif
5153 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
5154 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
5155 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
5156 end do
5157
5158 if (num_fluids > 1) then
5159
5160# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5161#if defined(MFC_OpenACC)
5162# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5163!$acc loop seq
5164# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5165#elif defined(MFC_OpenMP)
5166# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5167
5168# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5169#endif
5170 do i = 1, num_fluids - 1
5171
5172# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5173#if defined(MFC_OpenACC)
5174# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5175!$acc atomic update
5176# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5177#elif defined(MFC_OpenMP)
5178# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5179!$omp atomic update
5180# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5181#endif
5182 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5183 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5184 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
5185
5186
5187# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5188#if defined(MFC_OpenACC)
5189# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5190!$acc atomic update
5191# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5192#elif defined(MFC_OpenMP)
5193# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5194!$omp atomic update
5195# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5196#endif
5197 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5198 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5199 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
5200
5201
5202# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5203#if defined(MFC_OpenACC)
5204# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5205!$acc atomic update
5206# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5207#elif defined(MFC_OpenMP)
5208# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5209!$omp atomic update
5210# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5211#endif
5212 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5213 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
5214 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
5215
5216
5217# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5218#if defined(MFC_OpenACC)
5219# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5220!$acc atomic update
5221# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5222#elif defined(MFC_OpenMP)
5223# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5224!$omp atomic update
5225# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5226#endif
5227 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5228 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
5229 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
5230 end do
5231 end if
5232
5233# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5234#if defined(MFC_OpenACC)
5235# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5236!$acc atomic update
5237# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5238#elif defined(MFC_OpenMP)
5239# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5240!$omp atomic update
5241# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5242#endif
5243 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5244 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
5245 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
5246
5247# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5248#if defined(MFC_OpenACC)
5249# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5250!$acc atomic update
5251# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5252#elif defined(MFC_OpenMP)
5253# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5254!$omp atomic update
5255# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5256#endif
5257 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5258 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
5259 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
5260
5261# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5262#if defined(MFC_OpenACC)
5263# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5264!$acc atomic update
5265# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5266#elif defined(MFC_OpenMP)
5267# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5268!$omp atomic update
5269# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5270#endif
5271 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5272 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
5273 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
5274
5275# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5276#if defined(MFC_OpenACC)
5277# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5278!$acc atomic update
5279# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5280#elif defined(MFC_OpenMP)
5281# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5282!$omp atomic update
5283# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5284#endif
5285 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5286 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
5287 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
5288
5289# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5290#if defined(MFC_OpenACC)
5291# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5292!$acc atomic update
5293# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5294#elif defined(MFC_OpenMP)
5295# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5296!$omp atomic update
5297# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5298#endif
5299 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5300 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(rho_r*vel_r(1) &
5301 & )*(1._wp/dy(k)), kind=stp)
5302
5303# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5304#if defined(MFC_OpenACC)
5305# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5306!$acc atomic update
5307# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5308#elif defined(MFC_OpenMP)
5309# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5310!$omp atomic update
5311# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5312#endif
5313 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5314 & l) - real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(e_r) &
5315 & *(1._wp/dy(k)), kind=stp)
5316 end do
5317 end do
5318 end do
5319
5320# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5321#if defined(MFC_OpenACC)
5322# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5323!$acc end parallel loop
5324# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5325#elif defined(MFC_OpenMP)
5326# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5327
5328# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5329!$omp end target teams loop
5330# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5331#endif
5332# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5333 else
5334# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5335
5336# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5337
5338# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5339#if defined(MFC_OpenACC)
5340# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5341!$acc parallel loop collapse(3) gang vector default(present) &
5342# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5343!$acc& 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)
5344# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5345#elif defined(MFC_OpenMP)
5346# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5347
5348# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5349
5350# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5351
5352# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5353!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
5354# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5355!$omp& 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)
5356# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5357#endif
5358# 1703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5359 do l = 0, p
5360 do k = -1, n
5361 do j = 0, m
5362 if (viscous) then
5363 vflux_l_arr = 0._wp
5364 vflux_r_arr = 0._wp
5365
5366# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5367
5368# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5369#if defined(MFC_OpenACC)
5370# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5371!$acc loop seq
5372# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5373#elif defined(MFC_OpenMP)
5374# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5375
5376# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5377#endif
5378 do q = vidxb, vidxe
5379 ! x-direction contributions
5380
5381# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5382#if defined(MFC_OpenACC)
5383# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5384!$acc loop seq
5385# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5386#elif defined(MFC_OpenMP)
5387# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5388
5389# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5390#endif
5391 do i = -1, 1
5392 rho_l = 0._wp
5393
5394# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5395#if defined(MFC_OpenACC)
5396# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5397!$acc loop seq
5398# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5399#elif defined(MFC_OpenMP)
5400# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5401
5402# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5403#endif
5404 do r = 1, num_fluids
5405 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
5406 end do
5407 rho_sf_small(i) = rho_l
5408 end do
5409
5410 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
5411 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
5412 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
5413 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
5414 & l)/rho_sf_small(-1))
5415
5416 if (q > vidxb) then
5417 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
5418 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
5419 end if
5420 if (q < vidxe) then
5421 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
5422 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
5423 end if
5424
5425 ! y-direction contributions
5426
5427# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5428#if defined(MFC_OpenACC)
5429# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5430!$acc loop seq
5431# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5432#elif defined(MFC_OpenMP)
5433# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5434
5435# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5436#endif
5437 do i = -1, 1
5438 rho_l = 0._wp
5439
5440# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5441#if defined(MFC_OpenACC)
5442# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5443!$acc loop seq
5444# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5445#elif defined(MFC_OpenMP)
5446# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5447
5448# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5449#endif
5450 do r = 1, num_fluids
5451 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
5452 end do
5453 rho_sf_small(i) = rho_l
5454 end do
5455
5456 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
5457 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
5458 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
5459 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
5460 & l)/rho_sf_small(-1))
5461 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1 + q, &
5462 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1 + q, &
5463 & l)/rho_sf_small(-1))
5464
5465 if (q > vidxb) then
5466 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
5467 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
5468 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
5469 end if
5470 if (q < vidxe) then
5471 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
5472 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
5473 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
5474 end if
5475
5476 ! z-direction contributions
5477
5478# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5479#if defined(MFC_OpenACC)
5480# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5481!$acc loop seq
5482# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5483#elif defined(MFC_OpenMP)
5484# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5485
5486# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5487#endif
5488 do i = -1, 1
5489 rho_l = 0._wp
5490
5491# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5492#if defined(MFC_OpenACC)
5493# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5494!$acc loop seq
5495# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5496#elif defined(MFC_OpenMP)
5497# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5498
5499# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5500#endif
5501 do r = 1, num_fluids
5502 rho_l = rho_l + q_cons_vf(r)%sf(j, k + q, l + i)
5503 end do
5504 rho_sf_small(i) = rho_l
5505 end do
5506
5507 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5508 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5509 & l - 1)/rho_sf_small(-1))
5510 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5511 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5512 & l - 1)/rho_sf_small(-1))
5513 if (q > vidxb) then
5514 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
5515 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
5516 end if
5517 if (q < vidxe) then
5518 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
5519 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
5520 end if
5521 end do
5522 end if
5523
5524
5525# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5526#if defined(MFC_OpenACC)
5527# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5528!$acc loop seq
5529# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5530#elif defined(MFC_OpenMP)
5531# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5532
5533# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5534#endif
5535 do i = 1, num_fluids
5536 alpha_rho_l(i) = 0._wp
5537 alpha_rho_r(i) = 0._wp
5538 alpha_l(i) = 0._wp
5539 alpha_r(i) = 0._wp
5540 end do
5541
5542# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5543#if defined(MFC_OpenACC)
5544# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5545!$acc loop seq
5546# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5547#elif defined(MFC_OpenMP)
5548# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5549
5550# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5551#endif
5552 do i = 1, num_dims
5553 vel_l(i) = 0._wp
5554 vel_r(i) = 0._wp
5555 end do
5556
5557
5558# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5559#if defined(MFC_OpenACC)
5560# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5561!$acc loop seq
5562# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5563#elif defined(MFC_OpenMP)
5564# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5565
5566# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5567#endif
5568 do q = vidxb + 1, vidxe
5569
5570# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5571#if defined(MFC_OpenACC)
5572# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5573!$acc loop seq
5574# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5575#elif defined(MFC_OpenMP)
5576# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5577
5578# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5579#endif
5580 do i = 1, num_fluids
5581 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
5582 end do
5583
5584 if (num_fluids > 1) then
5585
5586# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5587#if defined(MFC_OpenACC)
5588# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5589!$acc loop seq
5590# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5591#elif defined(MFC_OpenMP)
5592# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5593
5594# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5595#endif
5596 do i = 1, num_fluids - 1
5597 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5598 end do
5599 else
5600 alpha_l(1) = 1._wp
5601 end if
5602
5603
5604# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5605#if defined(MFC_OpenACC)
5606# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5607!$acc loop seq
5608# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5609#elif defined(MFC_OpenMP)
5610# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5611
5612# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5613#endif
5614 do i = 1, num_dims
5615 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5616 end do
5617 end do
5618
5619
5620# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5621#if defined(MFC_OpenACC)
5622# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5623!$acc loop seq
5624# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5625#elif defined(MFC_OpenMP)
5626# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5627
5628# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5629#endif
5630 do q = vidxb, vidxe - 1
5631
5632# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5633#if defined(MFC_OpenACC)
5634# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5635!$acc loop seq
5636# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5637#elif defined(MFC_OpenMP)
5638# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5639
5640# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5641#endif
5642 do i = 1, num_fluids
5643 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
5644 end do
5645
5646 if (num_fluids > 1) then
5647
5648# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5649#if defined(MFC_OpenACC)
5650# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5651!$acc loop seq
5652# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5653#elif defined(MFC_OpenMP)
5654# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5655
5656# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5657#endif
5658 do i = 1, num_fluids - 1
5659 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5660 end do
5661 else
5662 alpha_r(1) = 1._wp
5663 end if
5664
5665
5666# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5667#if defined(MFC_OpenACC)
5668# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5669!$acc loop seq
5670# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5671#elif defined(MFC_OpenMP)
5672# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5673
5674# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5675#endif
5676 do i = 1, num_dims
5677 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5678 end do
5679 end do
5680
5681 if (num_fluids > 1) then
5682 alpha_l(num_fluids) = 1._wp
5683 alpha_r(num_fluids) = 1._wp
5684
5685
5686# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5687#if defined(MFC_OpenACC)
5688# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5689!$acc loop seq
5690# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5691#elif defined(MFC_OpenMP)
5692# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5693
5694# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5695#endif
5696 do i = 1, num_fluids - 1
5697 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
5698 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
5699 end do
5700 end if
5701
5702 rho_l = 0._wp; rho_r = 0._wp
5703 gamma_l = 0._wp; gamma_r = 0._wp
5704 pi_inf_l = 0._wp; pi_inf_r = 0._wp
5705
5706
5707# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5708#if defined(MFC_OpenACC)
5709# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5710!$acc loop seq
5711# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5712#elif defined(MFC_OpenMP)
5713# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5714
5715# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5716#endif
5717 do i = 1, num_fluids
5718 rho_l = rho_l + alpha_rho_l(i)
5719 gamma_l = gamma_l + alpha_l(i)*gammas(i)
5720 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
5721
5722 rho_r = rho_r + alpha_rho_r(i)
5723 gamma_r = gamma_r + alpha_r(i)*gammas(i)
5724 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
5725 end do
5726
5727
5728# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5729#if defined(MFC_OpenACC)
5730# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5731!$acc loop seq
5732# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5733#elif defined(MFC_OpenMP)
5734# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5735
5736# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5737#endif
5738 do i = 1, num_dims
5739 vel_l(i) = vel_l(i)/rho_l
5740 vel_r(i) = vel_r(i)/rho_r
5741 end do
5742
5743 if (viscous) then
5744 mu_l = 0._wp
5745 mu_r = 0._wp
5746
5747# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5748#if defined(MFC_OpenACC)
5749# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5750!$acc loop seq
5751# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5752#elif defined(MFC_OpenMP)
5753# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5754
5755# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5756#endif
5757 do i = 1, num_fluids
5758 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
5759 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
5760 end do
5761
5762
5763# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5764#if defined(MFC_OpenACC)
5765# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5766!$acc atomic update
5767# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5768#elif defined(MFC_OpenMP)
5769# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5770!$omp atomic update
5771# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5772#endif
5773 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5774 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5775
5776# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5777#if defined(MFC_OpenACC)
5778# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5779!$acc atomic update
5780# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5781#elif defined(MFC_OpenMP)
5782# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5783!$omp atomic update
5784# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5785#endif
5786 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5787 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
5788
5789
5790# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5791#if defined(MFC_OpenACC)
5792# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5793!$acc atomic update
5794# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5795#elif defined(MFC_OpenMP)
5796# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5797!$omp atomic update
5798# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5799#endif
5800 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5801 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
5802
5803# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5804#if defined(MFC_OpenACC)
5805# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5806!$acc atomic update
5807# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5808#elif defined(MFC_OpenMP)
5809# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5810!$omp atomic update
5811# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5812#endif
5813 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5814 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
5815
5816
5817# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5818#if defined(MFC_OpenACC)
5819# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5820!$acc atomic update
5821# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5822#elif defined(MFC_OpenMP)
5823# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5824!$omp atomic update
5825# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5826#endif
5827 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5828 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5829
5830# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5831#if defined(MFC_OpenACC)
5832# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5833!$acc atomic update
5834# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5835#elif defined(MFC_OpenMP)
5836# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5837!$omp atomic update
5838# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5839#endif
5840 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5841 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
5842
5843
5844# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5845#if defined(MFC_OpenACC)
5846# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5847!$acc atomic update
5848# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5849#elif defined(MFC_OpenMP)
5850# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5851!$omp atomic update
5852# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5853#endif
5854 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5855 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
5856
5857# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5858#if defined(MFC_OpenACC)
5859# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5860!$acc atomic update
5861# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5862#elif defined(MFC_OpenMP)
5863# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5864!$omp atomic update
5865# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5866#endif
5867 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5868 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
5869
5870
5871# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5872#if defined(MFC_OpenACC)
5873# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5874!$acc atomic update
5875# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5876#elif defined(MFC_OpenMP)
5877# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5878!$omp atomic update
5879# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5880#endif
5881 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5882 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5883
5884# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5885#if defined(MFC_OpenACC)
5886# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5887!$acc atomic update
5888# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5889#elif defined(MFC_OpenMP)
5890# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5891!$omp atomic update
5892# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5893#endif
5894 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5895 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k + 1)), kind=stp)
5896
5897
5898# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5899#if defined(MFC_OpenACC)
5900# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5901!$acc atomic update
5902# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5903#elif defined(MFC_OpenMP)
5904# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5905!$omp atomic update
5906# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5907#endif
5908 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5909 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k)), kind=stp)
5910
5911# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5912#if defined(MFC_OpenACC)
5913# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5914!$acc atomic update
5915# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5916#elif defined(MFC_OpenMP)
5917# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5918!$omp atomic update
5919# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5920#endif
5921 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5922 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k)), kind=stp)
5923
5924
5925# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5926#if defined(MFC_OpenACC)
5927# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5928!$acc atomic update
5929# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5930#elif defined(MFC_OpenMP)
5931# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5932!$omp atomic update
5933# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5934#endif
5935 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5936 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5937
5938# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5939#if defined(MFC_OpenACC)
5940# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5941!$acc atomic update
5942# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5943#elif defined(MFC_OpenMP)
5944# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5945!$omp atomic update
5946# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5947#endif
5948 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5949 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k + 1)), kind=stp)
5950
5951
5952# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5953#if defined(MFC_OpenACC)
5954# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5955!$acc atomic update
5956# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5957#elif defined(MFC_OpenMP)
5958# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5959!$omp atomic update
5960# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5961#endif
5962 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5963 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k)), kind=stp)
5964
5965# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5966#if defined(MFC_OpenACC)
5967# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5968!$acc atomic update
5969# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5970#elif defined(MFC_OpenMP)
5971# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5972!$omp atomic update
5973# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5974#endif
5975 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5976 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k)), kind=stp)
5977
5978
5979# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5980#if defined(MFC_OpenACC)
5981# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5982!$acc atomic update
5983# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5984#elif defined(MFC_OpenMP)
5985# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5986!$omp atomic update
5987# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5988#endif
5989 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5990 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
5991
5992# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5993#if defined(MFC_OpenACC)
5994# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5995!$acc atomic update
5996# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5997#elif defined(MFC_OpenMP)
5998# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5999!$omp atomic update
6000# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6001#endif
6002 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6003 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
6004
6005
6006# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6007#if defined(MFC_OpenACC)
6008# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6009!$acc atomic update
6010# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6011#elif defined(MFC_OpenMP)
6012# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6013!$omp atomic update
6014# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6015#endif
6016 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6017 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
6018
6019# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6020#if defined(MFC_OpenACC)
6021# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6022!$acc atomic update
6023# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6024#elif defined(MFC_OpenMP)
6025# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6026!$omp atomic update
6027# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6028#endif
6029 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6030 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6031
6032
6033# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6034#if defined(MFC_OpenACC)
6035# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6036!$acc atomic update
6037# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6038#elif defined(MFC_OpenMP)
6039# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6040!$omp atomic update
6041# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6042#endif
6043 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6044 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
6045
6046# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6047#if defined(MFC_OpenACC)
6048# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6049!$acc atomic update
6050# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6051#elif defined(MFC_OpenMP)
6052# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6053!$omp atomic update
6054# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6055#endif
6056 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6057 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6058
6059
6060# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6061#if defined(MFC_OpenACC)
6062# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6063!$acc atomic update
6064# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6065#elif defined(MFC_OpenMP)
6066# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6067!$omp atomic update
6068# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6069#endif
6070 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6071 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
6072
6073# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6074#if defined(MFC_OpenACC)
6075# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6076!$acc atomic update
6077# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6078#elif defined(MFC_OpenMP)
6079# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6080!$omp atomic update
6081# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6082#endif
6083 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6084 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6085 end if
6086
6087 e_l = 0._wp; e_r = 0._wp
6088 f_l = 0._wp; f_r = 0._wp
6089
6090
6091# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6092#if defined(MFC_OpenACC)
6093# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6094!$acc loop seq
6095# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6096#elif defined(MFC_OpenMP)
6097# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6098
6099# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6100#endif
6101 do q = vidxb + 1, vidxe
6102 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
6103 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
6104 end do
6105
6106
6107# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6108#if defined(MFC_OpenACC)
6109# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6110!$acc loop seq
6111# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6112#elif defined(MFC_OpenMP)
6113# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6114
6115# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6116#endif
6117 do q = vidxb, vidxe - 1
6118 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
6119 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
6120 end do
6121
6122 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, &
6123 & vel_r, pres_l, pres_r, cfl)
6124
6125
6126# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6127#if defined(MFC_OpenACC)
6128# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6129!$acc loop seq
6130# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6131#elif defined(MFC_OpenMP)
6132# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6133
6134# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6135#endif
6136 do i = 1, num_fluids
6137
6138# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6139#if defined(MFC_OpenACC)
6140# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6141!$acc atomic update
6142# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6143#elif defined(MFC_OpenMP)
6144# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6145!$omp atomic update
6146# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6147#endif
6148 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6149 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6150 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
6151
6152
6153# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6154#if defined(MFC_OpenACC)
6155# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6156!$acc atomic update
6157# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6158#elif defined(MFC_OpenMP)
6159# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6160!$omp atomic update
6161# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6162#endif
6163 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6164 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
6165 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
6166 end do
6167
6168 if (num_fluids > 1) then
6169
6170# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6171#if defined(MFC_OpenACC)
6172# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6173!$acc loop seq
6174# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6175#elif defined(MFC_OpenMP)
6176# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6177
6178# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6179#endif
6180 do i = 1, num_fluids - 1
6181
6182# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6183#if defined(MFC_OpenACC)
6184# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6185!$acc atomic update
6186# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6187#elif defined(MFC_OpenMP)
6188# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6189!$omp atomic update
6190# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6191#endif
6192 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6193 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6194 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
6195
6196
6197# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6198#if defined(MFC_OpenACC)
6199# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6200!$acc atomic update
6201# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6202#elif defined(MFC_OpenMP)
6203# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6204!$omp atomic update
6205# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6206#endif
6207 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6208 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6209 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
6210
6211
6212# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6213#if defined(MFC_OpenACC)
6214# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6215!$acc atomic update
6216# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6217#elif defined(MFC_OpenMP)
6218# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6219!$omp atomic update
6220# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6221#endif
6222 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6223 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
6224 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
6225
6226
6227# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6228#if defined(MFC_OpenACC)
6229# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6230!$acc atomic update
6231# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6232#elif defined(MFC_OpenMP)
6233# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6234!$omp atomic update
6235# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6236#endif
6237 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6238 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6239 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6240 end do
6241 end if
6242
6243
6244# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6245#if defined(MFC_OpenACC)
6246# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6247!$acc atomic update
6248# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6249#elif defined(MFC_OpenMP)
6250# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6251!$omp atomic update
6252# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6253#endif
6254 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6255 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
6256 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
6257
6258
6259# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6260#if defined(MFC_OpenACC)
6261# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6262!$acc atomic update
6263# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6264#elif defined(MFC_OpenMP)
6265# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6266!$omp atomic update
6267# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6268#endif
6269 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6270 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
6271 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
6272
6273
6274# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6275#if defined(MFC_OpenACC)
6276# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6277!$acc atomic update
6278# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6279#elif defined(MFC_OpenMP)
6280# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6281!$omp atomic update
6282# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6283#endif
6284 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6285 & l) + real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k + 1)) &
6286 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dy(k + 1)), kind=stp)
6287
6288
6289# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6290#if defined(MFC_OpenACC)
6291# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6292!$acc atomic update
6293# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6294#elif defined(MFC_OpenMP)
6295# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6296!$omp atomic update
6297# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6298#endif
6299 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6300 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
6301 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
6302
6303
6304# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6305#if defined(MFC_OpenACC)
6306# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6307!$acc atomic update
6308# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6309#elif defined(MFC_OpenMP)
6310# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6311!$omp atomic update
6312# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6313#endif
6314 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6315 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
6316 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
6317
6318
6319# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6320#if defined(MFC_OpenACC)
6321# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6322!$acc atomic update
6323# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6324#elif defined(MFC_OpenMP)
6325# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6326!$omp atomic update
6327# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6328#endif
6329 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6330 & l) - real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(rho_l*vel_l(1) &
6331 & )*(1._wp/dy(k)), kind=stp)
6332
6333
6334# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6335#if defined(MFC_OpenACC)
6336# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6337!$acc atomic update
6338# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6339#elif defined(MFC_OpenMP)
6340# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6341!$omp atomic update
6342# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6343#endif
6344 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6345 & l) - real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(rho_l*vel_l(3) &
6346 & )*(1._wp/dy(k)), kind=stp)
6347
6348
6349# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6350#if defined(MFC_OpenACC)
6351# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6352!$acc atomic update
6353# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6354#elif defined(MFC_OpenMP)
6355# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6356!$omp atomic update
6357# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6358#endif
6359 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6360 & l) - real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k)) - 0.5_wp*dt*cfl*(e_l) &
6361 & *(1._wp/dy(k)), kind=stp)
6362
6363
6364# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6365#if defined(MFC_OpenACC)
6366# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6367!$acc loop seq
6368# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6369#elif defined(MFC_OpenMP)
6370# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6371
6372# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6373#endif
6374 do i = 1, num_fluids
6375
6376# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6377#if defined(MFC_OpenACC)
6378# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6379!$acc atomic update
6380# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6381#elif defined(MFC_OpenMP)
6382# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6383!$omp atomic update
6384# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6385#endif
6386 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6387 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6388 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
6389
6390
6391# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6392#if defined(MFC_OpenACC)
6393# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6394!$acc atomic update
6395# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6396#elif defined(MFC_OpenMP)
6397# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6398!$omp atomic update
6399# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6400#endif
6401 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6402 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
6403 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
6404 end do
6405
6406 if (num_fluids > 1) then
6407
6408# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6409#if defined(MFC_OpenACC)
6410# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6411!$acc loop seq
6412# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6413#elif defined(MFC_OpenMP)
6414# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6415
6416# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6417#endif
6418 do i = 1, num_fluids - 1
6419
6420# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6421#if defined(MFC_OpenACC)
6422# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6423!$acc atomic update
6424# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6425#elif defined(MFC_OpenMP)
6426# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6427!$omp atomic update
6428# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6429#endif
6430 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6431 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6432 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
6433
6434
6435# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6436#if defined(MFC_OpenACC)
6437# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6438!$acc atomic update
6439# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6440#elif defined(MFC_OpenMP)
6441# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6442!$omp atomic update
6443# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6444#endif
6445 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6446 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6447 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6448
6449
6450# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6451#if defined(MFC_OpenACC)
6452# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6453!$acc atomic update
6454# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6455#elif defined(MFC_OpenMP)
6456# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6457!$omp atomic update
6458# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6459#endif
6460 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6461 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
6462 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
6463
6464
6465# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6466#if defined(MFC_OpenACC)
6467# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6468!$acc atomic update
6469# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6470#elif defined(MFC_OpenMP)
6471# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6472!$omp atomic update
6473# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6474#endif
6475 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6476 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6477 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6478 end do
6479 end if
6480
6481
6482# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6483#if defined(MFC_OpenACC)
6484# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6485!$acc atomic update
6486# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6487#elif defined(MFC_OpenMP)
6488# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6489!$omp atomic update
6490# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6491#endif
6492 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6493 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
6494 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
6495
6496
6497# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6498#if defined(MFC_OpenACC)
6499# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6500!$acc atomic update
6501# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6502#elif defined(MFC_OpenMP)
6503# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6504!$omp atomic update
6505# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6506#endif
6507 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6508 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
6509 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
6510
6511
6512# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6513#if defined(MFC_OpenACC)
6514# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6515!$acc atomic update
6516# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6517#elif defined(MFC_OpenMP)
6518# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6519!$omp atomic update
6520# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6521#endif
6522 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6523 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k + 1)) &
6524 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dy(k + 1)), kind=stp)
6525
6526
6527# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6528#if defined(MFC_OpenACC)
6529# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6530!$acc atomic update
6531# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6532#elif defined(MFC_OpenMP)
6533# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6534!$omp atomic update
6535# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6536#endif
6537 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6538 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
6539 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
6540
6541
6542# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6543#if defined(MFC_OpenACC)
6544# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6545!$acc atomic update
6546# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6547#elif defined(MFC_OpenMP)
6548# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6549!$omp atomic update
6550# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6551#endif
6552 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6553 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
6554 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
6555
6556
6557# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6558#if defined(MFC_OpenACC)
6559# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6560!$acc atomic update
6561# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6562#elif defined(MFC_OpenMP)
6563# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6564!$omp atomic update
6565# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6566#endif
6567 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6568 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(rho_r*vel_r(1) &
6569 & )*(1._wp/dy(k)), kind=stp)
6570
6571
6572# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6573#if defined(MFC_OpenACC)
6574# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6575!$acc atomic update
6576# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6577#elif defined(MFC_OpenMP)
6578# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6579!$omp atomic update
6580# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6581#endif
6582 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6583 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(rho_r*vel_r(3) &
6584 & )*(1._wp/dy(k)), kind=stp)
6585
6586
6587# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6588#if defined(MFC_OpenACC)
6589# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6590!$acc atomic update
6591# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6592#elif defined(MFC_OpenMP)
6593# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6594!$omp atomic update
6595# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6596#endif
6597 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6598 & l) - real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k)) + 0.5_wp*dt*cfl*(e_r) &
6599 & *(1._wp/dy(k)), kind=stp)
6600 end do
6601 end do
6602 end do
6603
6604# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6605#if defined(MFC_OpenACC)
6606# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6607!$acc end parallel loop
6608# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6609#elif defined(MFC_OpenMP)
6610# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6611
6612# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6613!$omp end target teams loop
6614# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6615#endif
6616# 2165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6617 end if
6618 else if (idir == 3) then
6619# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6620
6621# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6622
6623# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6624#if defined(MFC_OpenACC)
6625# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6626!$acc parallel loop collapse(3) gang vector default(present) &
6627# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6628!$acc& 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)
6629# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6630#elif defined(MFC_OpenMP)
6631# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6632
6633# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6634
6635# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6636
6637# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6638!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
6639# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6640!$omp& 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)
6641# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6642#endif
6643# 2171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6644 do l = -1, p
6645 do k = 0, n
6646 do j = 0, m
6647 if (viscous) then
6648 vflux_l_arr = 0._wp
6649 vflux_r_arr = 0._wp
6650
6651# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6652
6653# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6654#if defined(MFC_OpenACC)
6655# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6656!$acc loop seq
6657# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6658#elif defined(MFC_OpenMP)
6659# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6660
6661# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6662#endif
6663 do q = vidxb, vidxe
6664 ! x-direction contributions
6665
6666# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6667#if defined(MFC_OpenACC)
6668# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6669!$acc loop seq
6670# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6671#elif defined(MFC_OpenMP)
6672# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6673
6674# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6675#endif
6676 do i = -1, 1
6677 rho_l = 0._wp
6678
6679# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6680#if defined(MFC_OpenACC)
6681# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6682!$acc loop seq
6683# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6684#elif defined(MFC_OpenMP)
6685# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6686
6687# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6688#endif
6689 do r = 1, num_fluids
6690 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k, l + q)
6691 end do
6692 rho_sf_small(i) = rho_l
6693 end do
6694
6695 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k, &
6696 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k, l + q)/rho_sf_small(-1))
6697 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1, k, &
6698 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1, k, &
6699 & l + q)/rho_sf_small(-1))
6700
6701 if (q > vidxb) then
6702 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(3))
6703 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
6704 end if
6705 if (q < vidxe) then
6706 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(3))
6707 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
6708 end if
6709
6710 ! y-direction contributions
6711
6712# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6713#if defined(MFC_OpenACC)
6714# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6715!$acc loop seq
6716# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6717#elif defined(MFC_OpenMP)
6718# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6719
6720# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6721#endif
6722 do i = -1, 1
6723 rho_l = 0._wp
6724
6725# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6726#if defined(MFC_OpenACC)
6727# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6728!$acc loop seq
6729# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6730#elif defined(MFC_OpenMP)
6731# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6732
6733# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6734#endif
6735 do r = 1, num_fluids
6736 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i, l + q)
6737 end do
6738 rho_sf_small(i) = rho_l
6739 end do
6740
6741 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1, &
6742 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1, &
6743 & l + q)/rho_sf_small(-1))
6744 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1, &
6745 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1, &
6746 & l + q)/rho_sf_small(-1))
6747
6748 if (q > vidxb) then
6749 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
6750 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
6751 end if
6752 if (q < vidxe) then
6753 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
6754 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
6755 end if
6756
6757 ! z-direction contributions
6758
6759# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6760#if defined(MFC_OpenACC)
6761# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6762!$acc loop seq
6763# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6764#elif defined(MFC_OpenMP)
6765# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6766
6767# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6768#endif
6769 do i = -1, 1
6770 rho_l = 0._wp
6771
6772# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6773#if defined(MFC_OpenACC)
6774# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6775!$acc loop seq
6776# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6777#elif defined(MFC_OpenMP)
6778# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6779
6780# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6781#endif
6782 do r = 1, num_fluids
6783 rho_l = rho_l + q_cons_vf(r)%sf(j, k, l + i + q)
6784 end do
6785 rho_sf_small(i) = rho_l
6786 end do
6787 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j, k, &
6788 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k, &
6789 & l - 1 + q)/rho_sf_small(-1))
6790 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k, &
6791 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k, &
6792 & l - 1 + q)/rho_sf_small(-1))
6793 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k, &
6794 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k, &
6795 & l - 1 + q)/rho_sf_small(-1))
6796 if (q > vidxb) then
6797 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
6798 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
6799 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(3))/3._wp
6800 end if
6801 if (q < vidxe) then
6802 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
6803 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
6804 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(3))/3._wp
6805 end if
6806 end do
6807 end if
6808
6809
6810# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6811#if defined(MFC_OpenACC)
6812# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6813!$acc loop seq
6814# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6815#elif defined(MFC_OpenMP)
6816# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6817
6818# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6819#endif
6820 do i = 1, num_fluids
6821 alpha_rho_l(i) = 0._wp
6822 alpha_rho_r(i) = 0._wp
6823 alpha_l(i) = 0._wp
6824 alpha_r(i) = 0._wp
6825 end do
6826
6827
6828# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6829#if defined(MFC_OpenACC)
6830# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6831!$acc loop seq
6832# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6833#elif defined(MFC_OpenMP)
6834# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6835
6836# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6837#endif
6838 do i = 1, num_dims
6839 vel_l(i) = 0._wp
6840 vel_r(i) = 0._wp
6841 end do
6842
6843
6844# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6845#if defined(MFC_OpenACC)
6846# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6847!$acc loop seq
6848# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6849#elif defined(MFC_OpenMP)
6850# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6851
6852# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6853#endif
6854 do q = vidxb + 1, vidxe
6855
6856# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6857#if defined(MFC_OpenACC)
6858# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6859!$acc loop seq
6860# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6861#elif defined(MFC_OpenMP)
6862# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6863
6864# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6865#endif
6866 do i = 1, num_fluids
6867 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k, l + q)
6868 end do
6869
6870 if (num_fluids > 1) then
6871
6872# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6873#if defined(MFC_OpenACC)
6874# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6875!$acc loop seq
6876# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6877#elif defined(MFC_OpenMP)
6878# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6879
6880# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6881#endif
6882 do i = 1, num_fluids - 1
6883 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6884 end do
6885 else
6886 alpha_l(1) = 1._wp
6887 end if
6888
6889
6890# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6891#if defined(MFC_OpenACC)
6892# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6893!$acc loop seq
6894# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6895#elif defined(MFC_OpenMP)
6896# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6897
6898# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6899#endif
6900 do i = 1, num_dims
6901 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6902 end do
6903 end do
6904
6905
6906# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6907#if defined(MFC_OpenACC)
6908# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6909!$acc loop seq
6910# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6911#elif defined(MFC_OpenMP)
6912# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6913
6914# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6915#endif
6916 do q = vidxb, vidxe - 1
6917
6918# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6919#if defined(MFC_OpenACC)
6920# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6921!$acc loop seq
6922# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6923#elif defined(MFC_OpenMP)
6924# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6925
6926# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6927#endif
6928 do i = 1, num_fluids
6929 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k, l + q)
6930 end do
6931
6932 if (num_fluids > 1) then
6933
6934# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6935#if defined(MFC_OpenACC)
6936# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6937!$acc loop seq
6938# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6939#elif defined(MFC_OpenMP)
6940# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6941
6942# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6943#endif
6944 do i = 1, num_fluids - 1
6945 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6946 end do
6947 else
6948 alpha_r(1) = 1._wp
6949 end if
6950
6951
6952# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6953#if defined(MFC_OpenACC)
6954# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6955!$acc loop seq
6956# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6957#elif defined(MFC_OpenMP)
6958# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6959
6960# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6961#endif
6962 do i = 1, num_dims
6963 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6964 end do
6965 end do
6966
6967 if (num_fluids > 1) then
6968 alpha_l(num_fluids) = 1._wp
6969 alpha_r(num_fluids) = 1._wp
6970
6971
6972# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6973#if defined(MFC_OpenACC)
6974# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6975!$acc loop seq
6976# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6977#elif defined(MFC_OpenMP)
6978# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6979
6980# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6981#endif
6982 do i = 1, num_fluids - 1
6983 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
6984 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
6985 end do
6986 end if
6987
6988 rho_l = 0._wp; rho_r = 0._wp
6989 gamma_l = 0._wp; gamma_r = 0._wp
6990 pi_inf_l = 0._wp; pi_inf_r = 0._wp
6991
6992
6993# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6994#if defined(MFC_OpenACC)
6995# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6996!$acc loop seq
6997# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6998#elif defined(MFC_OpenMP)
6999# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7000
7001# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7002#endif
7003 do i = 1, num_fluids
7004 rho_l = rho_l + alpha_rho_l(i)
7005 gamma_l = gamma_l + alpha_l(i)*gammas(i)
7006 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
7007
7008 rho_r = rho_r + alpha_rho_r(i)
7009 gamma_r = gamma_r + alpha_r(i)*gammas(i)
7010 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
7011 end do
7012
7013
7014# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7015#if defined(MFC_OpenACC)
7016# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7017!$acc loop seq
7018# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7019#elif defined(MFC_OpenMP)
7020# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7021
7022# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7023#endif
7024 do i = 1, num_dims
7025 vel_l(i) = vel_l(i)/rho_l
7026 vel_r(i) = vel_r(i)/rho_r
7027 end do
7028
7029 if (viscous) then
7030 mu_l = 0._wp
7031 mu_r = 0._wp
7032
7033# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7034#if defined(MFC_OpenACC)
7035# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7036!$acc loop seq
7037# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7038#elif defined(MFC_OpenMP)
7039# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7040
7041# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7042#endif
7043 do i = 1, num_fluids
7044 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
7045 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
7046 end do
7047
7048
7049# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7050#if defined(MFC_OpenACC)
7051# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7052!$acc atomic update
7053# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7054#elif defined(MFC_OpenMP)
7055# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7056!$omp atomic update
7057# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7058#endif
7059 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7060 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7061
7062# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7063#if defined(MFC_OpenACC)
7064# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7065!$acc atomic update
7066# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7067#elif defined(MFC_OpenMP)
7068# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7069!$omp atomic update
7070# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7071#endif
7072 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7073 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l + 1)), kind=stp)
7074
7075
7076# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7077#if defined(MFC_OpenACC)
7078# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7079!$acc atomic update
7080# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7081#elif defined(MFC_OpenMP)
7082# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7083!$omp atomic update
7084# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7085#endif
7086 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7087 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l)), kind=stp)
7088
7089# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7090#if defined(MFC_OpenACC)
7091# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7092!$acc atomic update
7093# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7094#elif defined(MFC_OpenMP)
7095# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7096!$omp atomic update
7097# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7098#endif
7099 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7100 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l)), kind=stp)
7101
7102
7103# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7104#if defined(MFC_OpenACC)
7105# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7106!$acc atomic update
7107# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7108#elif defined(MFC_OpenMP)
7109# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7110!$omp atomic update
7111# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7112#endif
7113 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7114 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7115
7116# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7117#if defined(MFC_OpenACC)
7118# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7119!$acc atomic update
7120# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7121#elif defined(MFC_OpenMP)
7122# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7123!$omp atomic update
7124# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7125#endif
7126 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7127 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l + 1)), kind=stp)
7128
7129
7130# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7131#if defined(MFC_OpenACC)
7132# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7133!$acc atomic update
7134# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7135#elif defined(MFC_OpenMP)
7136# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7137!$omp atomic update
7138# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7139#endif
7140 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7141 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l)), kind=stp)
7142
7143# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7144#if defined(MFC_OpenACC)
7145# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7146!$acc atomic update
7147# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7148#elif defined(MFC_OpenMP)
7149# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7150!$omp atomic update
7151# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7152#endif
7153 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7154 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l)), kind=stp)
7155
7156
7157# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7158#if defined(MFC_OpenACC)
7159# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7160!$acc atomic update
7161# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7162#elif defined(MFC_OpenMP)
7163# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7164!$omp atomic update
7165# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7166#endif
7167 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7168 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7169
7170# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7171#if defined(MFC_OpenACC)
7172# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7173!$acc atomic update
7174# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7175#elif defined(MFC_OpenMP)
7176# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7177!$omp atomic update
7178# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7179#endif
7180 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7181 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l + 1)), kind=stp)
7182
7183
7184# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7185#if defined(MFC_OpenACC)
7186# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7187!$acc atomic update
7188# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7189#elif defined(MFC_OpenMP)
7190# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7191!$omp atomic update
7192# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7193#endif
7194 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7195 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l)), kind=stp)
7196
7197# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7198#if defined(MFC_OpenACC)
7199# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7200!$acc atomic update
7201# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7202#elif defined(MFC_OpenMP)
7203# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7204!$omp atomic update
7205# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7206#endif
7207 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7208 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l)), kind=stp)
7209
7210
7211# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7212#if defined(MFC_OpenACC)
7213# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7214!$acc atomic update
7215# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7216#elif defined(MFC_OpenMP)
7217# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7218!$omp atomic update
7219# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7220#endif
7221 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7222 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7223
7224# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7225#if defined(MFC_OpenACC)
7226# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7227!$acc atomic update
7228# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7229#elif defined(MFC_OpenMP)
7230# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7231!$omp atomic update
7232# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7233#endif
7234 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7235 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l + 1)), kind=stp)
7236
7237
7238# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7239#if defined(MFC_OpenACC)
7240# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7241!$acc atomic update
7242# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7243#elif defined(MFC_OpenMP)
7244# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7245!$omp atomic update
7246# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7247#endif
7248 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7249 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l)), kind=stp)
7250
7251# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7252#if defined(MFC_OpenACC)
7253# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7254!$acc atomic update
7255# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7256#elif defined(MFC_OpenMP)
7257# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7258!$omp atomic update
7259# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7260#endif
7261 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7262 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l)), kind=stp)
7263
7264
7265# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7266#if defined(MFC_OpenACC)
7267# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7268!$acc atomic update
7269# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7270#elif defined(MFC_OpenMP)
7271# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7272!$omp atomic update
7273# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7274#endif
7275 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7276 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7277
7278# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7279#if defined(MFC_OpenACC)
7280# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7281!$acc atomic update
7282# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7283#elif defined(MFC_OpenMP)
7284# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7285!$omp atomic update
7286# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7287#endif
7288 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7289 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7290
7291
7292# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7293#if defined(MFC_OpenACC)
7294# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7295!$acc atomic update
7296# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7297#elif defined(MFC_OpenMP)
7298# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7299!$omp atomic update
7300# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7301#endif
7302 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7303 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l)), kind=stp)
7304
7305# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7306#if defined(MFC_OpenACC)
7307# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7308!$acc atomic update
7309# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7310#elif defined(MFC_OpenMP)
7311# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7312!$omp atomic update
7313# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7314#endif
7315 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7316 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l)), kind=stp)
7317
7318
7319# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7320#if defined(MFC_OpenACC)
7321# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7322!$acc atomic update
7323# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7324#elif defined(MFC_OpenMP)
7325# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7326!$omp atomic update
7327# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7328#endif
7329 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7330 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7331
7332# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7333#if defined(MFC_OpenACC)
7334# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7335!$acc atomic update
7336# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7337#elif defined(MFC_OpenMP)
7338# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7339!$omp atomic update
7340# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7341#endif
7342 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7343 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7344
7345
7346# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7347#if defined(MFC_OpenACC)
7348# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7349!$acc atomic update
7350# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7351#elif defined(MFC_OpenMP)
7352# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7353!$omp atomic update
7354# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7355#endif
7356 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7357 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l)), kind=stp)
7358
7359# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7360#if defined(MFC_OpenACC)
7361# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7362!$acc atomic update
7363# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7364#elif defined(MFC_OpenMP)
7365# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7366!$omp atomic update
7367# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7368#endif
7369 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7370 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l)), kind=stp)
7371 end if
7372
7373 e_l = 0._wp; e_r = 0._wp
7374 f_l = 0._wp; f_r = 0._wp
7375
7376
7377# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7378#if defined(MFC_OpenACC)
7379# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7380!$acc loop seq
7381# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7382#elif defined(MFC_OpenMP)
7383# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7384
7385# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7386#endif
7387 do q = vidxb + 1, vidxe
7388 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7389 f_l = f_l + coeff_l(q)*jac(j, k, l + q)
7390 end do
7391
7392
7393# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7394#if defined(MFC_OpenACC)
7395# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7396!$acc loop seq
7397# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7398#elif defined(MFC_OpenMP)
7399# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7400
7401# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7402#endif
7403 do q = vidxb, vidxe - 1
7404 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7405 f_r = f_r + coeff_r(q)*jac(j, k, l + q)
7406 end do
7407
7408 call s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, vel_r, &
7409 & pres_l, pres_r, cfl)
7410
7411
7412# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7413#if defined(MFC_OpenACC)
7414# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7415!$acc loop seq
7416# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7417#elif defined(MFC_OpenMP)
7418# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7419
7420# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7421#endif
7422 do i = 1, num_fluids
7423
7424# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7425#if defined(MFC_OpenACC)
7426# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7427!$acc atomic update
7428# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7429#elif defined(MFC_OpenMP)
7430# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7431!$omp atomic update
7432# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7433#endif
7434 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7435 & l + 1) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7436 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l + 1)), kind=stp)
7437
7438
7439# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7440#if defined(MFC_OpenACC)
7441# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7442!$acc atomic update
7443# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7444#elif defined(MFC_OpenMP)
7445# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7446!$omp atomic update
7447# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7448#endif
7449 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7450 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l)) &
7451 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l)), kind=stp)
7452 end do
7453
7454 if (num_fluids > 1) then
7455
7456# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7457#if defined(MFC_OpenACC)
7458# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7459!$acc loop seq
7460# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7461#elif defined(MFC_OpenMP)
7462# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7463
7464# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7465#endif
7466 do i = 1, num_fluids - 1
7467
7468# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7469#if defined(MFC_OpenACC)
7470# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7471!$acc atomic update
7472# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7473#elif defined(MFC_OpenMP)
7474# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7475!$omp atomic update
7476# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7477#endif
7478 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7479 & l + 1) + real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7480 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dz(l + 1)), kind=stp)
7481
7482
7483# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7484#if defined(MFC_OpenACC)
7485# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7486!$acc atomic update
7487# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7488#elif defined(MFC_OpenMP)
7489# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7490!$omp atomic update
7491# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7492#endif
7493 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7494 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7495 & l + 1)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7496
7497
7498# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7499#if defined(MFC_OpenACC)
7500# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7501!$acc atomic update
7502# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7503#elif defined(MFC_OpenMP)
7504# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7505!$omp atomic update
7506# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7507#endif
7508 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7509 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(alpha_l(i)) &
7510 & *(1._wp/dz(l)), kind=stp)
7511
7512
7513# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7514#if defined(MFC_OpenACC)
7515# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7516!$acc atomic update
7517# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7518#elif defined(MFC_OpenMP)
7519# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7520!$omp atomic update
7521# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7522#endif
7523 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7524 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_l(3)*(1._wp/dz(l)), &
7525 & kind=stp)
7526 end do
7527 end if
7528
7529
7530# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7531#if defined(MFC_OpenACC)
7532# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7533!$acc atomic update
7534# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7535#elif defined(MFC_OpenMP)
7536# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7537!$omp atomic update
7538# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7539#endif
7540 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7541 & l + 1) + real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l + 1)) &
7542 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l + 1)), kind=stp)
7543
7544
7545# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7546#if defined(MFC_OpenACC)
7547# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7548!$acc atomic update
7549# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7550#elif defined(MFC_OpenMP)
7551# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7552!$omp atomic update
7553# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7554#endif
7555 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7556 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l + 1)) &
7557 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dz(l + 1)), kind=stp)
7558
7559
7560# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7561#if defined(MFC_OpenACC)
7562# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7563!$acc atomic update
7564# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7565#elif defined(MFC_OpenMP)
7566# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7567!$omp atomic update
7568# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7569#endif
7570 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7571 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l + 1)) &
7572 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dz(l + 1)), kind=stp)
7573
7574
7575# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7576#if defined(MFC_OpenACC)
7577# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7578!$acc atomic update
7579# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7580#elif defined(MFC_OpenMP)
7581# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7582!$omp atomic update
7583# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7584#endif
7585 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7586 & l + 1) + real(0.5_wp*dt*(vel_l(3)*(e_l + pres_l + f_l))*(1._wp/dz(l + 1)) &
7587 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dz(l + 1)), kind=stp)
7588
7589
7590# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7591#if defined(MFC_OpenACC)
7592# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7593!$acc atomic update
7594# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7595#elif defined(MFC_OpenMP)
7596# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7597!$omp atomic update
7598# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7599#endif
7600 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7601 & l) - real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l)) &
7602 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l)), kind=stp)
7603
7604
7605# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7606#if defined(MFC_OpenACC)
7607# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7608!$acc atomic update
7609# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7610#elif defined(MFC_OpenMP)
7611# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7612!$omp atomic update
7613# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7614#endif
7615 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7616 & l) - real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(rho_l*vel_l(1)) &
7617 & *(1._wp/dz(l)), kind=stp)
7618
7619
7620# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7621#if defined(MFC_OpenACC)
7622# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7623!$acc atomic update
7624# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7625#elif defined(MFC_OpenMP)
7626# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7627!$omp atomic update
7628# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7629#endif
7630 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7631 & l) - real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(rho_l*vel_l(2)) &
7632 & *(1._wp/dz(l)), kind=stp)
7633
7634
7635# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7636#if defined(MFC_OpenACC)
7637# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7638!$acc atomic update
7639# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7640#elif defined(MFC_OpenMP)
7641# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7642!$omp atomic update
7643# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7644#endif
7645 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7646 & l) - real(0.5_wp*dt*(vel_l(3)*(e_l + pres_l + f_l))*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(e_l) &
7647 & *(1._wp/dz(l)), kind=stp)
7648
7649
7650# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7651#if defined(MFC_OpenACC)
7652# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7653!$acc loop seq
7654# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7655#elif defined(MFC_OpenMP)
7656# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7657
7658# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7659#endif
7660 do i = 1, num_fluids
7661
7662# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7663#if defined(MFC_OpenACC)
7664# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7665!$acc atomic update
7666# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7667#elif defined(MFC_OpenMP)
7668# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7669!$omp atomic update
7670# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7671#endif
7672 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7673 & l + 1) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7674 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l + 1)), kind=stp)
7675
7676
7677# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7678#if defined(MFC_OpenACC)
7679# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7680!$acc atomic update
7681# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7682#elif defined(MFC_OpenMP)
7683# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7684!$omp atomic update
7685# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7686#endif
7687 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7688 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l)) &
7689 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l)), kind=stp)
7690 end do
7691
7692 if (num_fluids > 1) then
7693
7694# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7695#if defined(MFC_OpenACC)
7696# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7697!$acc loop seq
7698# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7699#elif defined(MFC_OpenMP)
7700# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7701
7702# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7703#endif
7704 do i = 1, num_fluids - 1
7705
7706# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7707#if defined(MFC_OpenACC)
7708# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7709!$acc atomic update
7710# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7711#elif defined(MFC_OpenMP)
7712# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7713!$omp atomic update
7714# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7715#endif
7716 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7717 & l + 1) + real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7718 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dz(l + 1)), kind=stp)
7719
7720
7721# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7722#if defined(MFC_OpenACC)
7723# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7724!$acc atomic update
7725# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7726#elif defined(MFC_OpenMP)
7727# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7728!$omp atomic update
7729# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7730#endif
7731 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7732 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7733 & l + 1)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7734
7735
7736# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7737#if defined(MFC_OpenACC)
7738# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7739!$acc atomic update
7740# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7741#elif defined(MFC_OpenMP)
7742# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7743!$omp atomic update
7744# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7745#endif
7746 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7747 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(alpha_r(i)) &
7748 & *(1._wp/dz(l)), kind=stp)
7749
7750
7751# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7752#if defined(MFC_OpenACC)
7753# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7754!$acc atomic update
7755# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7756#elif defined(MFC_OpenMP)
7757# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7758!$omp atomic update
7759# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7760#endif
7761 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7762 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_r(3)*(1._wp/dz(l)), &
7763 & kind=stp)
7764 end do
7765 end if
7766
7767
7768# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7769#if defined(MFC_OpenACC)
7770# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7771!$acc atomic update
7772# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7773#elif defined(MFC_OpenMP)
7774# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7775!$omp atomic update
7776# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7777#endif
7778 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7779 & l + 1) + real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l + 1)) &
7780 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l + 1)), kind=stp)
7781
7782
7783# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7784#if defined(MFC_OpenACC)
7785# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7786!$acc atomic update
7787# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7788#elif defined(MFC_OpenMP)
7789# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7790!$omp atomic update
7791# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7792#endif
7793 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7794 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l + 1)) &
7795 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dz(l + 1)), kind=stp)
7796
7797
7798# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7799#if defined(MFC_OpenACC)
7800# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7801!$acc atomic update
7802# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7803#elif defined(MFC_OpenMP)
7804# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7805!$omp atomic update
7806# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7807#endif
7808 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7809 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l + 1)) &
7810 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dz(l + 1)), kind=stp)
7811
7812
7813# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7814#if defined(MFC_OpenACC)
7815# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7816!$acc atomic update
7817# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7818#elif defined(MFC_OpenMP)
7819# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7820!$omp atomic update
7821# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7822#endif
7823 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7824 & l + 1) + real(0.5_wp*dt*(vel_r(3)*(e_r + pres_r + f_r))*(1._wp/dz(l + 1)) &
7825 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dz(l + 1)), kind=stp)
7826
7827
7828# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7829#if defined(MFC_OpenACC)
7830# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7831!$acc atomic update
7832# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7833#elif defined(MFC_OpenMP)
7834# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7835!$omp atomic update
7836# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7837#endif
7838 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7839 & l) - real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l)) &
7840 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l)), kind=stp)
7841
7842
7843# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7844#if defined(MFC_OpenACC)
7845# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7846!$acc atomic update
7847# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7848#elif defined(MFC_OpenMP)
7849# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7850!$omp atomic update
7851# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7852#endif
7853 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7854 & l) - real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(rho_r*vel_r(1)) &
7855 & *(1._wp/dz(l)), kind=stp)
7856
7857
7858# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7859#if defined(MFC_OpenACC)
7860# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7861!$acc atomic update
7862# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7863#elif defined(MFC_OpenMP)
7864# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7865!$omp atomic update
7866# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7867#endif
7868 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7869 & l) - real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(rho_r*vel_r(2)) &
7870 & *(1._wp/dz(l)), kind=stp)
7871
7872
7873# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7874#if defined(MFC_OpenACC)
7875# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7876!$acc atomic update
7877# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7878#elif defined(MFC_OpenMP)
7879# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7880!$omp atomic update
7881# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7882#endif
7883 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7884 & l) - real(0.5_wp*dt*(vel_r(3)*(e_r + pres_r + f_r))*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(e_r) &
7885 & *(1._wp/dz(l)), kind=stp)
7886 end do
7887 end do
7888 end do
7889
7890# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7891#if defined(MFC_OpenACC)
7892# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7893!$acc end parallel loop
7894# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7895#elif defined(MFC_OpenMP)
7896# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7897
7898# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7899!$omp end target teams loop
7900# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7901#endif
7902# 2634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7903 end if
7904
7905 end subroutine s_igr_riemann_solver
7906
7907 !> Compute pressure and maximum wavespeed from left and right reconstructed states
7908 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)
7909
7910
7911# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7912#if MFC_OpenACC
7913# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7914!$acc routine seq
7915# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7916#elif MFC_OpenMP
7917# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7918
7919# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7920
7921# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7922!$omp declare target device_type(any)
7923# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7924#endif
7925
7926 real(wp), intent(in) :: E_L, gamma_L, pi_inf_L, rho_L
7927 real(wp), intent(in) :: E_R, gamma_R, pi_inf_R, rho_R
7928 real(wp), dimension(num_dims), intent(in) :: vel_L, vel_R
7929 real(wp), intent(out) :: pres_L, pres_R, cfl
7930 real(wp) :: a_L, a_R
7931
7932 if (num_dims == 2) then
7933 pres_l = (e_l - pi_inf_l - 0.5_wp*rho_l*(vel_l(1)**2._wp + vel_l(2)**2._wp))/gamma_l
7934 pres_r = (e_r - pi_inf_r - 0.5_wp*rho_r*(vel_r(1)**2._wp + vel_r(2)**2._wp))/gamma_r
7935
7936 if (igr_pres_lim) then
7937 pres_l = max(pres_l, 0._wp)
7938 pres_r = max(pres_r, 0._wp)
7939 end if
7940
7941 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
7942 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
7943
7944 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp), sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp)) + max(a_l, a_r)
7945 else if (num_dims == 3) then
7946# 2664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7947 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
7948 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
7949
7950 if (igr_pres_lim) then
7951 pres_l = max(pres_l, 0._wp)
7952 pres_r = max(pres_r, 0._wp)
7953 end if
7954
7955 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
7956 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
7957
7958 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp + vel_l(3)**2._wp), &
7959 & sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp + vel_r(3)**2._wp)) + max(a_l, a_r)
7960# 2678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7961 end if
7962
7963 end subroutine s_get_derived_states
7964
7965 !> Accumulate the IGR numerical flux divergence into the RHS along the specified direction
7966 subroutine s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
7967
7968 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf, flux_vf, rhs_vf
7969 integer, intent(in) :: idir
7970
7971 if (idir == 1) then
7972
7973# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7974
7975# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7976#if defined(MFC_OpenACC)
7977# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7978!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
7979# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7980#elif defined(MFC_OpenMP)
7981# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7982
7983# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7984
7985# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7986
7987# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7988!$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)
7989# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7990#endif
7991 do i = 1, sys_size
7992 do l = 0, p
7993 do k = 0, n
7994 do j = 0, m
7995 rhs_vf(i)%sf(j, k, l) = 1._wp/dx(j)*(flux_vf(i)%sf(j - 1, k, l) - flux_vf(i)%sf(j, k, l))
7996 end do
7997 end do
7998 end do
7999 end do
8000
8001# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8002#if defined(MFC_OpenACC)
8003# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8004!$acc end parallel loop
8005# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8006#elif defined(MFC_OpenMP)
8007# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8008
8009# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8010!$omp end target teams loop
8011# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8012#endif
8013 else if (idir == 2) then
8014
8015# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8016
8017# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8018#if defined(MFC_OpenACC)
8019# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8020!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8021# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8022#elif defined(MFC_OpenMP)
8023# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8024
8025# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8026
8027# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8028
8029# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8030!$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)
8031# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8032#endif
8033 do i = 1, sys_size
8034 do l = 0, p
8035 do k = 0, n
8036 do j = 0, m
8037 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) + 1._wp/dy(k)*(flux_vf(i)%sf(j, k - 1, &
8038 & l) - flux_vf(i)%sf(j, k, l))
8039 end do
8040 end do
8041 end do
8042 end do
8043
8044# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8045#if defined(MFC_OpenACC)
8046# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8047!$acc end parallel loop
8048# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8049#elif defined(MFC_OpenMP)
8050# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8051
8052# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8053!$omp end target teams loop
8054# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8055#endif
8056 else if (idir == 3) then
8057
8058# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8059
8060# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8061#if defined(MFC_OpenACC)
8062# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8063!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8064# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8065#elif defined(MFC_OpenMP)
8066# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8067
8068# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8069
8070# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8071
8072# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8073!$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)
8074# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8075#endif
8076 do i = 1, sys_size
8077 do l = 0, p
8078 do k = 0, n
8079 do j = 0, m
8080 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) + 1._wp/dz(l)*(flux_vf(i)%sf(j, k, &
8081 & l - 1) - flux_vf(i)%sf(j, k, l))
8082 end do
8083 end do
8084 end do
8085 end do
8086
8087# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8088#if defined(MFC_OpenACC)
8089# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8090!$acc end parallel loop
8091# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8092#elif defined(MFC_OpenMP)
8093# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8094
8095# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8096!$omp end target teams loop
8097# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8098#endif
8099 end if
8100
8101 end subroutine s_igr_flux_add
8102
8103 !> Finalize the IGR module
8105
8106 if (viscous) then
8107#ifdef MFC_DEBUG
8108# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8109 block
8110# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8111 use iso_fortran_env, only: output_unit
8112# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8113
8114# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8115 print *, 'm_igr.fpp:2734: ', '@:DEALLOCATE(Res_igr)'
8116# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8117
8118# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8119 call flush (output_unit)
8120# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8121 end block
8122# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8123#endif
8124# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8125
8126# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8127#if defined(MFC_OpenACC)
8128# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8129!$acc exit data delete(Res_igr)
8130# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8131#elif defined(MFC_OpenMP)
8132# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8133!$omp target exit data map(release:Res_igr)
8134# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8135#endif
8136# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8137 deallocate (res_igr)
8138 end if
8139
8140#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
8141#ifdef MFC_DEBUG
8142# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8143 block
8144# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8145 use iso_fortran_env, only: output_unit
8146# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8147
8148# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8149 print *, 'm_igr.fpp:2738: ', '@:DEALLOCATE(jac, jac_rhs)'
8150# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8151
8152# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8153 call flush (output_unit)
8154# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8155 end block
8156# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8157#endif
8158# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8159
8160# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8161#if defined(MFC_OpenACC)
8162# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8163!$acc exit data delete(jac, jac_rhs)
8164# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8165#elif defined(MFC_OpenMP)
8166# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8167!$omp target exit data map(release:jac, jac_rhs)
8168# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8169#endif
8170# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8171 deallocate (jac, jac_rhs)
8172
8173 if (igr_iter_solver == 1) then ! Jacobi iteration
8174#ifdef MFC_DEBUG
8175# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8176 block
8177# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8178 use iso_fortran_env, only: output_unit
8179# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8180
8181# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8182 print *, 'm_igr.fpp:2741: ', '@:DEALLOCATE(jac_old)'
8183# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8184
8185# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8186 call flush (output_unit)
8187# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8188 end block
8189# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8190#endif
8191# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8192
8193# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8194#if defined(MFC_OpenACC)
8195# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8196!$acc exit data delete(jac_old)
8197# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8198#elif defined(MFC_OpenMP)
8199# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8200!$omp target exit data map(release:jac_old)
8201# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8202#endif
8203# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8204 deallocate (jac_old)
8205 end if
8206#else
8207 if (nv_uvm_temp_on_gpu(1) == 1) then
8208#ifdef MFC_DEBUG
8209# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8210 block
8211# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8212 use iso_fortran_env, only: output_unit
8213# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8214
8215# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8216 print *, 'm_igr.fpp:2745: ', '@:DEALLOCATE(jac)'
8217# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8218
8219# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8220 call flush (output_unit)
8221# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8222 end block
8223# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8224#endif
8225# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8226
8227# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8228#if defined(MFC_OpenACC)
8229# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8230!$acc exit data delete(jac)
8231# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8232#elif defined(MFC_OpenMP)
8233# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8234!$omp target exit data map(release:jac)
8235# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8236#endif
8237# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8238 deallocate (jac)
8239 else
8240 nullify (jac)
8241 deallocate (jac_host)
8242 end if
8243
8244 if (nv_uvm_temp_on_gpu(2) == 1) then
8245#ifdef MFC_DEBUG
8246# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8247 block
8248# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8249 use iso_fortran_env, only: output_unit
8250# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8251
8252# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8253 print *, 'm_igr.fpp:2752: ', '@:DEALLOCATE(jac_rhs)'
8254# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8255
8256# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8257 call flush (output_unit)
8258# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8259 end block
8260# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8261#endif
8262# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8263
8264# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8265#if defined(MFC_OpenACC)
8266# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8267!$acc exit data delete(jac_rhs)
8268# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8269#elif defined(MFC_OpenMP)
8270# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8271!$omp target exit data map(release:jac_rhs)
8272# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8273#endif
8274# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8275 deallocate (jac_rhs)
8276 else
8277 nullify (jac_rhs)
8278 deallocate (jac_rhs_host)
8279 end if
8280
8281 if (igr_iter_solver == 1) then ! Jacobi iteration
8282 if (nv_uvm_temp_on_gpu(3) == 1) then
8283#ifdef MFC_DEBUG
8284# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8285 block
8286# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8287 use iso_fortran_env, only: output_unit
8288# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8289
8290# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8291 print *, 'm_igr.fpp:2760: ', '@:DEALLOCATE(jac_old)'
8292# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8293
8294# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8295 call flush (output_unit)
8296# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8297 end block
8298# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8299#endif
8300# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8301
8302# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8303#if defined(MFC_OpenACC)
8304# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8305!$acc exit data delete(jac_old)
8306# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8307#elif defined(MFC_OpenMP)
8308# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8309!$omp target exit data map(release:jac_old)
8310# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8311#endif
8312# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8313 deallocate (jac_old)
8314 else
8315 nullify (jac_old)
8316 deallocate (jac_old_host)
8317 end if
8318 end if
8319#endif
8320
8321# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8322#ifdef MFC_DEBUG
8323# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8324 block
8325# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8326 use iso_fortran_env, only: output_unit
8327# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8328
8329# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8330 print *, 'm_igr.fpp:2769: ', '@:DEALLOCATE(coeff_L, coeff_R)'
8331# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8332
8333# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8334 call flush (output_unit)
8335# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8336 end block
8337# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8338#endif
8339# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8340
8341# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8342#if defined(MFC_OpenACC)
8343# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8344!$acc exit data delete(coeff_L, coeff_R)
8345# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8346#elif defined(MFC_OpenMP)
8347# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8348!$omp target exit data map(release:coeff_L, coeff_R)
8349# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8350#endif
8351# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8352 deallocate (coeff_l, coeff_r)
8353# 2771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8354
8355 end subroutine s_finalize_igr_module
8356
8357end module m_igr
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer, dimension(2) re_size
integer, dimension(:,:), allocatable re_idx
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Iterative ghost rasterization (IGR) for sharp immersed boundary treatment.
integer vidxe
subroutine, public s_initialize_igr_module()
Initialize the IGR module.
real(wp), dimension(:,:,:), allocatable jac_rhs
integer(kind=8) q
integer(kind=8) j
integer igr_momxb
real(wp), dimension(:), allocatable coeff_l
subroutine, public s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
Accumulate the IGR numerical flux divergence into the RHS along the specified direction.
real(wp), dimension(:,:), allocatable res_igr
integer(kind=8) i
integer(kind=8) l
type(scalar_field), dimension(1) jac_sf
subroutine, public s_igr_sigma_x(q_cons_vf, rhs_vf)
Compute the IGR viscous stress contribution in the x-direction and accumulate into the RHS.
integer vidxb
integer(kind=8) r
integer(kind=8) k
subroutine s_get_derived_states(e_l, gamma_l, pi_inf_l, rho_l, vel_l, e_r, gamma_r, pi_inf_r, rho_r, vel_r, pres_l, pres_r, cfl)
Compute pressure and maximum wavespeed from left and right reconstructed states.
subroutine, public s_finalize_igr_module()
Finalize the IGR module.
integer igr_advxb
integer igr_e_idx
real(wp), dimension(:,:,:), allocatable jac_old
real(wp), dimension(:), allocatable coeff_r
subroutine, public s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
Evaluate the approximate Riemann solver for the IGR scheme along a given direction.
real(wp), dimension(:,:,:), allocatable, target jac
real(wp) alf_igr
subroutine, public s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
Iteratively solve the implicit gradient reconstruction system.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
Derived type annexing a scalar field (SF).