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# 167 "/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# 167 "/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# 167 "/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.
310# 55 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312! Allocate and create GPU device memory
313# 75 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Free GPU device memory and deallocate
316# 83 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Cray-specific GPU pointer setup for vector fields
319# 107 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321! Cray-specific GPU pointer setup for scalar fields
322# 123 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323
324! Cray-specific GPU pointer setup for acoustic source spatials
325# 148 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326
327# 154 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329# 161 "/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 __NVCOMPILER_GPU_UNIFIED_MEM
513# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
514 block
515# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
516 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
517# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
518 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
519# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
520#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
521# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
522 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
523# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
524#else
525# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
526 use cuda_runtime_api
527# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
528#endif
529# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
530 integer :: istat
531# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
532
533# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
534 if (nv_uvm_pref_gpu) then
535# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
536 ! print*, "Moving Res_igr to GPU => ", SHAPE(Res_igr) set preferred location GPU
537# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
538 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetpreferredlocation, 0)
539# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
540 if (istat /= cudasuccess) then
541# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
542 write (*, "('Error code: ',I0, ': ')") istat
543# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
544 ! write(*,*) cudaGetErrorString(istat)
545# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
546 end if
547# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
548 ! set accessed by CPU
549# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
550 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetaccessedby, cudacpudeviceid)
551# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
552 if (istat /= cudasuccess) then
553# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
554 write (*, "('Error code: ',I0, ': ')") istat
555# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
556 ! write(*,*) cudaGetErrorString(istat)
557# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
558 end if
559# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
560 ! prefetch to GPU - physically populate memory pages
561# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
562 istat = cudamemprefetchasync(c_devloc(res_igr), sizeof(res_igr), 0, 0)
563# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
564 if (istat /= cudasuccess) then
565# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
566 write (*, "('Error code: ',I0, ': ')") istat
567# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
568 ! write(*,*) cudaGetErrorString(istat)
569# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
570 end if
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 block
575# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
576#endif
577#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
578# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
579 block
580# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
581 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
582# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
583 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
584# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
585#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
586# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
587 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
588# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
589#else
590# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
591 use cuda_runtime_api
592# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
593#endif
594# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
595 integer :: istat
596# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
597
598# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
599 if (nv_uvm_pref_gpu) then
600# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
601 ! print*, "Moving Re_idx to GPU => ", SHAPE(Re_idx) set preferred location GPU
602# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
603 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetpreferredlocation, 0)
604# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
605 if (istat /= cudasuccess) then
606# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
607 write (*, "('Error code: ',I0, ': ')") istat
608# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
609 ! write(*,*) cudaGetErrorString(istat)
610# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
611 end if
612# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
613 ! set accessed by CPU
614# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
615 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetaccessedby, cudacpudeviceid)
616# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
617 if (istat /= cudasuccess) then
618# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
619 write (*, "('Error code: ',I0, ': ')") istat
620# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
621 ! write(*,*) cudaGetErrorString(istat)
622# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
623 end if
624# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
625 ! prefetch to GPU - physically populate memory pages
626# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
627 istat = cudamemprefetchasync(c_devloc(re_idx), sizeof(re_idx), 0, 0)
628# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
629 if (istat /= cudasuccess) then
630# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
631 write (*, "('Error code: ',I0, ': ')") istat
632# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
633 ! write(*,*) cudaGetErrorString(istat)
634# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
635 end if
636# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
637 end if
638# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
639 end block
640# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
641#endif
642 end if
643
644#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
645#ifdef MFC_DEBUG
646# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
647 block
648# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
649 use iso_fortran_env, only: output_unit
650# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
651
652# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
653 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))'
654# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
655
656# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
657 call flush (output_unit)
658# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
659 end block
660# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
661#endif
662# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
663 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
664# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
665
666# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
667
668# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
669#if defined(MFC_OpenACC)
670# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
671!$acc enter data create(jac)
672# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
673#elif defined(MFC_OpenMP)
674# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
675!$omp target enter data map(always,alloc:jac)
676# 108 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
677#endif
678#ifdef MFC_DEBUG
679# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
680 block
681# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
682 use iso_fortran_env, only: output_unit
683# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
684
685# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
686 print *, 'm_igr.fpp:109: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
687# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
688
689# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
690 call flush (output_unit)
691# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
692 end block
693# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
694#endif
695# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
696 allocate (jac_rhs(-1:m,-1:n,-1:p))
697# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
698
699# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
700
701# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
702#if defined(MFC_OpenACC)
703# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
704!$acc enter data create(jac_rhs)
705# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
706#elif defined(MFC_OpenMP)
707# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
708!$omp target enter data map(always,alloc:jac_rhs)
709# 109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
710#endif
711
712 if (igr_iter_solver == 1) then ! Jacobi iteration
713#ifdef MFC_DEBUG
714# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
715 block
716# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
717 use iso_fortran_env, only: output_unit
718# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
719
720# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
721 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))'
722# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
723
724# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
725 call flush (output_unit)
726# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
727 end block
728# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
729#endif
730# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
731 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
732# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
733
734# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
735
736# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
737#if defined(MFC_OpenACC)
738# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
739!$acc enter data create(jac_old)
740# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
741#elif defined(MFC_OpenMP)
742# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
743!$omp target enter data map(always,alloc:jac_old)
744# 112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
745#endif
746 end if
747#else
748 ! create map
749 nv_uvm_temp_on_gpu(1:3) = 0
750 nv_uvm_temp_on_gpu(1:nv_uvm_igr_temps_on_gpu) = 1
751
752 if (nv_uvm_temp_on_gpu(1) == 1) then
753#ifdef MFC_DEBUG
754# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
755 block
756# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
757 use iso_fortran_env, only: output_unit
758# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
759
760# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
761 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))'
762# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
763
764# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
765 call flush (output_unit)
766# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
767 end block
768# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
769#endif
770# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
771 allocate (jac(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
772# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
773
774# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
775
776# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
777#if defined(MFC_OpenACC)
778# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
779!$acc enter data create(jac)
780# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
781#elif defined(MFC_OpenMP)
782# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
783!$omp target enter data map(always,alloc:jac)
784# 120 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
785#endif
786#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
787# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
788 block
789# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
790 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
791# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
792 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
793# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
794#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
795# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
796 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
797# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
798#else
799# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
800 use cuda_runtime_api
801# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
802#endif
803# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
804 integer :: istat
805# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
806
807# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
808 if (nv_uvm_pref_gpu) then
809# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
810 ! print*, "Moving jac to GPU => ", SHAPE(jac) set preferred location GPU
811# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
812 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetpreferredlocation, 0)
813# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
814 if (istat /= cudasuccess) then
815# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
816 write (*, "('Error code: ',I0, ': ')") istat
817# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
818 ! write(*,*) cudaGetErrorString(istat)
819# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
820 end if
821# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
822 ! set accessed by CPU
823# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
824 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetaccessedby, cudacpudeviceid)
825# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
826 if (istat /= cudasuccess) then
827# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
828 write (*, "('Error code: ',I0, ': ')") istat
829# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
830 ! write(*,*) cudaGetErrorString(istat)
831# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
832 end if
833# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
834 ! prefetch to GPU - physically populate memory pages
835# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
836 istat = cudamemprefetchasync(c_devloc(jac), sizeof(jac), 0, 0)
837# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
838 if (istat /= cudasuccess) then
839# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
840 write (*, "('Error code: ',I0, ': ')") istat
841# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
842 ! write(*,*) cudaGetErrorString(istat)
843# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
844 end if
845# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
846 end if
847# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
848 end block
849# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
850#endif
851 else
852 allocate (jac_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
853
854 jac(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end) => jac_host(:,:,:)
855 end if
856
857 if (nv_uvm_temp_on_gpu(2) == 1) then
858#ifdef MFC_DEBUG
859# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
860 block
861# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
862 use iso_fortran_env, only: output_unit
863# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
864
865# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
866 print *, 'm_igr.fpp:129: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
867# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
868
869# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
870 call flush (output_unit)
871# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
872 end block
873# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
874#endif
875# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
876 allocate (jac_rhs(-1:m,-1:n,-1:p))
877# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
878
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#if defined(MFC_OpenACC)
883# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
884!$acc enter data create(jac_rhs)
885# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
886#elif defined(MFC_OpenMP)
887# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
888!$omp target enter data map(always,alloc:jac_rhs)
889# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
890#endif
891#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
892# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
893 block
894# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
895 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
896# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
897 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
898# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
899#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
900# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
901 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
902# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
903#else
904# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
905 use cuda_runtime_api
906# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
907#endif
908# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
909 integer :: istat
910# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
911
912# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
913 if (nv_uvm_pref_gpu) then
914# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
915 ! print*, "Moving jac_rhs to GPU => ", SHAPE(jac_rhs) set preferred location GPU
916# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
917 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetpreferredlocation, 0)
918# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
919 if (istat /= cudasuccess) then
920# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
921 write (*, "('Error code: ',I0, ': ')") istat
922# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
923 ! write(*,*) cudaGetErrorString(istat)
924# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
925 end if
926# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
927 ! set accessed by CPU
928# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
929 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetaccessedby, cudacpudeviceid)
930# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
931 if (istat /= cudasuccess) then
932# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
933 write (*, "('Error code: ',I0, ': ')") istat
934# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
935 ! write(*,*) cudaGetErrorString(istat)
936# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
937 end if
938# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
939 ! prefetch to GPU - physically populate memory pages
940# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
941 istat = cudamemprefetchasync(c_devloc(jac_rhs), sizeof(jac_rhs), 0, 0)
942# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
943 if (istat /= cudasuccess) then
944# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
945 write (*, "('Error code: ',I0, ': ')") istat
946# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
947 ! write(*,*) cudaGetErrorString(istat)
948# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
949 end if
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 end block
954# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
955#endif
956 else
957 allocate (jac_rhs_host(-1:m,-1:n,-1:p))
958 jac_rhs(-1:m,-1:n,-1:p) => jac_rhs_host(:,:,:)
959 end if
960
961 if (igr_iter_solver == 1) then ! Jacobi iteration
962 if (nv_uvm_temp_on_gpu(3) == 1) then
963#ifdef MFC_DEBUG
964# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
965 block
966# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
967 use iso_fortran_env, only: output_unit
968# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
969
970# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
971 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))'
972# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
973
974# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
975 call flush (output_unit)
976# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
977 end block
978# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
979#endif
980# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
981 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
982# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
983
984# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
985
986# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
987#if defined(MFC_OpenACC)
988# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
989!$acc enter data create(jac_old)
990# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
991#elif defined(MFC_OpenMP)
992# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
993!$omp target enter data map(always,alloc:jac_old)
994# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
995#endif
996#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
997# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
998 block
999# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1000 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
1001# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1002 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
1003# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1004#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
1005# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1006 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
1007# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1008#else
1009# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1010 use cuda_runtime_api
1011# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1012#endif
1013# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1014 integer :: istat
1015# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1016
1017# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1018 if (nv_uvm_pref_gpu) then
1019# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1020 ! print*, "Moving jac_old to GPU => ", SHAPE(jac_old) set preferred location GPU
1021# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1022 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetpreferredlocation, 0)
1023# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1024 if (istat /= cudasuccess) then
1025# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1026 write (*, "('Error code: ',I0, ': ')") istat
1027# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1028 ! write(*,*) cudaGetErrorString(istat)
1029# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1030 end if
1031# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1032 ! set accessed by CPU
1033# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1034 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetaccessedby, cudacpudeviceid)
1035# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1036 if (istat /= cudasuccess) then
1037# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1038 write (*, "('Error code: ',I0, ': ')") istat
1039# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1040 ! write(*,*) cudaGetErrorString(istat)
1041# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1042 end if
1043# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1044 ! prefetch to GPU - physically populate memory pages
1045# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1046 istat = cudamemprefetchasync(c_devloc(jac_old), sizeof(jac_old), 0, 0)
1047# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1048 if (istat /= cudasuccess) then
1049# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1050 write (*, "('Error code: ',I0, ': ')") istat
1051# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1052 ! write(*,*) cudaGetErrorString(istat)
1053# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1054 end if
1055# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1056 end if
1057# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1058 end block
1059# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1060#endif
1061 else
1062 allocate (jac_old_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
1063
1064 jac_old(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end, &
1065 & idwbuff(3)%beg:idwbuff(3)%end) => jac_old_host(:,:,:)
1066 end if
1067 end if
1068#endif
1069
1070
1071# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1072
1073# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1074#if defined(MFC_OpenACC)
1075# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1076!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1077# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1078#elif defined(MFC_OpenMP)
1079# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1080
1081# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1082
1083# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1084
1085# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1086!$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)
1087# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1088#endif
1089 do l = idwbuff(3)%beg, idwbuff(3)%end
1090 do k = idwbuff(2)%beg, idwbuff(2)%end
1091 do j = idwbuff(1)%beg, idwbuff(1)%end
1092 jac(j, k, l) = 0._stp
1093 if (igr_iter_solver == 1) jac_old(j, k, l) = 0._stp
1094 end do
1095 end do
1096 end do
1097
1098# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1099#if defined(MFC_OpenACC)
1100# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1101!$acc end parallel loop
1102# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1103#elif defined(MFC_OpenMP)
1104# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1105
1106# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1107!$omp end target teams loop
1108# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1109#endif
1110
1111 if (p == 0) then
1112 alf_igr = alf_factor*max(dx(1), dy(1))**2._wp
1113 else
1114 alf_igr = alf_factor*max(dx(1), dy(1), dz(1))**2._wp
1115 end if
1116
1117# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1118#if defined(MFC_OpenACC)
1119# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1120!$acc update device(alf_igr)
1121# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1122#elif defined(MFC_OpenMP)
1123# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1124!$omp target update to(alf_igr)
1125# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1126#endif
1127
1128 igr_momxb = eqn_idx%mom%beg
1129 igr_e_idx = eqn_idx%E
1130 igr_advxb = eqn_idx%adv%beg
1131
1132# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1133#if defined(MFC_OpenACC)
1134# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1135!$acc update device(igr_momxb, igr_E_idx, igr_advxb)
1136# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1137#elif defined(MFC_OpenMP)
1138# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1139!$omp target update to(igr_momxb, igr_E_idx, igr_advxb)
1140# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1141#endif
1142
1143# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1144 if (igr_order == 3) then
1145 vidxb = -1; vidxe = 2
1146
1147# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1148#if defined(MFC_OpenACC)
1149# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1150!$acc update device(vidxb, vidxe)
1151# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1152#elif defined(MFC_OpenMP)
1153# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1154!$omp target update to(vidxb, vidxe)
1155# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1156#endif
1157
1158#ifdef MFC_DEBUG
1159# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1160 block
1161# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1162 use iso_fortran_env, only: output_unit
1163# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1164
1165# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1166 print *, 'm_igr.fpp:177: ', '@:ALLOCATE(coeff_L(0:2))'
1167# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1168
1169# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1170 call flush (output_unit)
1171# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1172 end block
1173# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1174#endif
1175# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1176 allocate (coeff_l(0:2))
1177# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1178
1179# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1180
1181# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1182#if defined(MFC_OpenACC)
1183# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1184!$acc enter data create(coeff_L)
1185# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1186#elif defined(MFC_OpenMP)
1187# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1188!$omp target enter data map(always,alloc:coeff_L)
1189# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1190#endif
1191 coeff_l(0) = (2._wp/6._wp)
1192 coeff_l(1) = (5._wp/6._wp)
1193 coeff_l(2) = (-1._wp/6._wp)
1194
1195#ifdef MFC_DEBUG
1196# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1197 block
1198# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1199 use iso_fortran_env, only: output_unit
1200# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1201
1202# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1203 print *, 'm_igr.fpp:182: ', '@:ALLOCATE(coeff_R(-1:1))'
1204# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1205
1206# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1207 call flush (output_unit)
1208# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1209 end block
1210# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1211#endif
1212# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1213 allocate (coeff_r(-1:1))
1214# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1215
1216# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1217
1218# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1219#if defined(MFC_OpenACC)
1220# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1221!$acc enter data create(coeff_R)
1222# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1223#elif defined(MFC_OpenMP)
1224# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1225!$omp target enter data map(always,alloc:coeff_R)
1226# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1227#endif
1228 coeff_r(1) = (2._wp/6._wp)
1229 coeff_r(0) = (5._wp/6._wp)
1230 coeff_r(-1) = (-1._wp/6._wp)
1231 else if (igr_order == 5) then
1232 vidxb = -2; vidxe = 3
1233
1234# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1235#if defined(MFC_OpenACC)
1236# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1237!$acc update device(vidxb, vidxe)
1238# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1239#elif defined(MFC_OpenMP)
1240# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1241!$omp target update to(vidxb, vidxe)
1242# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1243#endif
1244
1245#ifdef MFC_DEBUG
1246# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1247 block
1248# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1249 use iso_fortran_env, only: output_unit
1250# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1251
1252# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1253 print *, 'm_igr.fpp:190: ', '@:ALLOCATE(coeff_L(-1:3))'
1254# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1255
1256# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1257 call flush (output_unit)
1258# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1259 end block
1260# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1261#endif
1262# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1263 allocate (coeff_l(-1:3))
1264# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1265
1266# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1267
1268# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1269#if defined(MFC_OpenACC)
1270# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1271!$acc enter data create(coeff_L)
1272# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1273#elif defined(MFC_OpenMP)
1274# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1275!$omp target enter data map(always,alloc:coeff_L)
1276# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1277#endif
1278 coeff_l(-1) = (-3._wp/60._wp)
1279 coeff_l(0) = (27._wp/60._wp)
1280 coeff_l(1) = (47._wp/60._wp)
1281 coeff_l(2) = (-13._wp/60._wp)
1282 coeff_l(3) = (2._wp/60._wp)
1283
1284#ifdef MFC_DEBUG
1285# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1286 block
1287# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1288 use iso_fortran_env, only: output_unit
1289# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1290
1291# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1292 print *, 'm_igr.fpp:197: ', '@:ALLOCATE(coeff_R(-2:2))'
1293# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1294
1295# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1296 call flush (output_unit)
1297# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1298 end block
1299# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1300#endif
1301# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1302 allocate (coeff_r(-2:2))
1303# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1304
1305# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1306
1307# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1308#if defined(MFC_OpenACC)
1309# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1310!$acc enter data create(coeff_R)
1311# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1312#elif defined(MFC_OpenMP)
1313# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1314!$omp target enter data map(always,alloc:coeff_R)
1315# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1316#endif
1317 coeff_r(2) = (-3._wp/60._wp)
1318 coeff_r(1) = (27._wp/60._wp)
1319 coeff_r(0) = (47._wp/60._wp)
1320 coeff_r(-1) = (-13._wp/60._wp)
1321 coeff_r(-2) = (2._wp/60._wp)
1322 end if
1323
1324
1325# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1326#if defined(MFC_OpenACC)
1327# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1328!$acc update device(coeff_L)
1329# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1330#elif defined(MFC_OpenMP)
1331# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1332!$omp target update to(coeff_L)
1333# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1334#endif
1335
1336# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1337#if defined(MFC_OpenACC)
1338# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1339!$acc update device(coeff_R)
1340# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1341#elif defined(MFC_OpenMP)
1342# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1343!$omp target update to(coeff_R)
1344# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1345#endif
1346# 213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1347 jac_sf(1)%sf => jac
1348
1349# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1350#if defined(MFC_OpenACC)
1351# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1352!$acc enter data copyin(jac_sf(1)%sf)
1353# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1354#elif defined(MFC_OpenMP)
1355# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1356!$omp target enter data map(to:jac_sf(1)%sf)
1357# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1358#endif
1359
1360# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1361#if defined(MFC_OpenACC)
1362# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1363!$acc enter data attach(jac_sf(1)%sf)
1364# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1365#elif defined(MFC_OpenMP)
1366# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1367!$omp target enter data map(always,to:jac_sf(1)%sf)
1368# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1369#endif
1370
1371 end subroutine s_initialize_igr_module
1372
1373 !> Iteratively solve the implicit gradient reconstruction system
1374 subroutine s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
1375
1376#ifdef _CRAYFTN
1377 ! DIR$ OPTIMIZE (-haggress)
1378#endif
1379 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1380 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
1381 integer, intent(in) :: t_step
1382 real(wp) :: rho_rx, rho_ry, rho_rz, rho_lx, rho_ly, rho_lz
1383 real(wp) :: fd_coeff
1384 integer :: num_iters
1385
1386 if (t_step == t_step_start) then
1387 num_iters = num_igr_warm_start_iters
1388 else
1389 num_iters = num_igr_iters
1390 end if
1391
1392 do q = 1, num_iters
1393
1394# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1395
1396# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1397#if defined(MFC_OpenACC)
1398# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1399!$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)
1400# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1401#elif defined(MFC_OpenMP)
1402# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1403
1404# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1405
1406# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1407
1408# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1409!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1410# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1411!$omp& private(j, k, l, rho_lx, rho_rx, rho_ly, rho_ry, rho_lz, rho_rz, fd_coeff)
1412# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1413#endif
1414 do l = 0, p
1415 do k = 0, n
1416 do j = 0, m
1417 rho_lx = 0._wp
1418 rho_rx = 0._wp
1419 rho_ly = 0._wp
1420 rho_ry = 0._wp
1421 rho_lz = 0._wp
1422 rho_rz = 0._wp
1423 fd_coeff = 0._wp
1424
1425
1426# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1427#if defined(MFC_OpenACC)
1428# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1429!$acc loop seq
1430# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1431#elif defined(MFC_OpenMP)
1432# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1433
1434# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1435#endif
1436 do i = 1, num_fluids
1437 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
1438 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
1439 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
1440 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
1441 if (p > 0) then
1442 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
1443 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
1444 end if
1445 fd_coeff = fd_coeff + q_cons_vf(i)%sf(j, k, l)
1446 end do
1447
1448 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) &
1449 & **2._wp)*(1._wp/rho_ly + 1._wp/rho_ry))
1450
1451 if (num_dims == 3) then
1452 fd_coeff = fd_coeff + alf_igr*(1._wp/dz(l)**2._wp)*(1._wp/rho_lz + 1._wp/rho_rz)
1453 end if
1454
1455 if (igr_iter_solver == 1) then ! Jacobi iteration
1456 if (num_dims == 3) then
1457 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac_old(j - 1, k, &
1458 & l)/rho_lx + jac_old(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac_old(j, k - 1, &
1459 & l)/rho_ly + jac_old(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac_old(j, k, &
1460 & l - 1)/rho_lz + jac_old(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1461 & kind=stp)
1462 else
1463 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(real(jac_old(j - 1, k, l), &
1464 & kind=wp)/rho_lx + real(jac_old(j + 1, k, l), &
1465 & kind=wp)/rho_rx) + (1._wp/dy(k)**2._wp)*(real(jac_old(j, k - 1, l), &
1466 & kind=wp)/rho_ly + real(jac_old(j, k + 1, l), kind=wp)/rho_ry)) + real(jac_rhs(j, k, l), &
1467 & kind=wp)/fd_coeff, kind=stp)
1468 end if
1469 else ! Gauss Seidel iteration
1470 if (num_dims == 3) then
1471 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1472 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1473 & l)/rho_ly + jac(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac(j, k, &
1474 & l - 1)/rho_lz + jac(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1475 & kind=stp)
1476 else
1477 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1478 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1479 & l)/rho_ly + jac(j, k + 1, l)/rho_ry)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1480 end if
1481 end if
1482 end do
1483 end do
1484 end do
1485
1486# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1487#if defined(MFC_OpenACC)
1488# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1489!$acc end parallel loop
1490# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1491#elif defined(MFC_OpenMP)
1492# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1493
1494# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1495!$omp end target teams loop
1496# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1497#endif
1498
1499 call s_populate_f_igr_buffers(bc_type, jac_sf)
1500
1501 if (igr_iter_solver == 1) then ! Jacobi iteration
1502
1503# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1504
1505# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1506#if defined(MFC_OpenACC)
1507# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1508!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1509# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1510#elif defined(MFC_OpenMP)
1511# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1512
1513# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1514
1515# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1516
1517# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1518!$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)
1519# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1520#endif
1521 do l = idwbuff(3)%beg, idwbuff(3)%end
1522 do k = idwbuff(2)%beg, idwbuff(2)%end
1523 do j = idwbuff(1)%beg, idwbuff(1)%end
1524 jac_old(j, k, l) = jac(j, k, l)
1525 end do
1526 end do
1527 end do
1528
1529# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1530#if defined(MFC_OpenACC)
1531# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1532!$acc end parallel loop
1533# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1534#elif defined(MFC_OpenMP)
1535# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1536
1537# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1538!$omp end target teams loop
1539# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1540#endif
1541 end if
1542 end do
1543
1544 end subroutine s_igr_iterative_solve
1545
1546 !> Compute the IGR viscous stress contribution in the x-direction and accumulate into the RHS
1547 subroutine s_igr_sigma_x(q_cons_vf, rhs_vf)
1548
1549#ifdef _CRAYFTN
1550 ! DIR$ OPTIMIZE (-haggress)
1551#endif
1552 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1553 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1554 real(wp) :: f_l, vel_l, rho_l, f_r, vel_r, rho_r
1555# 330 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1556 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_rho_r
1557# 334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1558
1559
1560# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1561
1562# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1563#if defined(MFC_OpenACC)
1564# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1565!$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)
1566# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1567#elif defined(MFC_OpenMP)
1568# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1569
1570# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1571
1572# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1573
1574# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1575!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1576# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1577!$omp& private(j, k, l, F_L, vel_L, alpha_rho_L, F_R, vel_R, alpha_rho_R, rho_L, rho_R)
1578# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1579#endif
1580 do l = 0, p
1581 do k = 0, n
1582 do j = -1, m
1583 f_l = 0._wp; f_r = 0._wp
1584 vel_l = 0._wp; vel_r = 0._wp
1585 rho_l = 0._wp; rho_r = 0._wp
1586
1587
1588# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1589#if defined(MFC_OpenACC)
1590# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1591!$acc loop seq
1592# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1593#elif defined(MFC_OpenMP)
1594# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1595
1596# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1597#endif
1598 do i = 1, num_fluids
1599 alpha_rho_l(i) = 0._wp
1600 alpha_rho_r(i) = 0._wp
1601 end do
1602
1603
1604# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1605#if defined(MFC_OpenACC)
1606# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1607!$acc loop seq
1608# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1609#elif defined(MFC_OpenMP)
1610# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1611
1612# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1613#endif
1614 do q = vidxb + 1, vidxe
1615
1616# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1617#if defined(MFC_OpenACC)
1618# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1619!$acc loop seq
1620# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1621#elif defined(MFC_OpenMP)
1622# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1623
1624# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1625#endif
1626 do i = 1, num_fluids
1627 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
1628 end do
1629
1630 vel_l = vel_l + coeff_l(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1631 f_l = f_l + coeff_l(q)*jac(j + q, k, l)
1632 end do
1633
1634
1635# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1636#if defined(MFC_OpenACC)
1637# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1638!$acc loop seq
1639# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1640#elif defined(MFC_OpenMP)
1641# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1642
1643# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1644#endif
1645 do q = vidxb, vidxe - 1
1646
1647# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1648#if defined(MFC_OpenACC)
1649# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1650!$acc loop seq
1651# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1652#elif defined(MFC_OpenMP)
1653# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1654
1655# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1656#endif
1657 do i = 1, num_fluids
1658 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
1659 end do
1660
1661 vel_r = vel_r + coeff_r(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1662 f_r = f_r + coeff_r(q)*jac(j + q, k, l)
1663 end do
1664
1665
1666# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1667#if defined(MFC_OpenACC)
1668# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1669!$acc loop seq
1670# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1671#elif defined(MFC_OpenMP)
1672# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1673
1674# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1675#endif
1676 do i = 1, num_fluids
1677 rho_l = rho_l + alpha_rho_l(i)
1678 rho_r = rho_r + alpha_rho_r(i)
1679 end do
1680
1681 vel_l = vel_l/rho_l
1682 vel_r = vel_r/rho_r
1683
1684# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1685
1686# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1687#if defined(MFC_OpenACC)
1688# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1689!$acc atomic update
1690# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1691#elif defined(MFC_OpenMP)
1692# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1693!$omp atomic update
1694# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1695#endif
1696 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1697 & l) + real(0.5_wp*dt*f_l*(1._wp/dx(j + 1)), kind=stp)
1698
1699# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1700#if defined(MFC_OpenACC)
1701# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1702!$acc atomic update
1703# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1704#elif defined(MFC_OpenMP)
1705# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1706!$omp atomic update
1707# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1708#endif
1709 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1710 & l) + real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j + 1)), kind=stp)
1711
1712# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1713#if defined(MFC_OpenACC)
1714# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1715!$acc atomic update
1716# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1717#elif defined(MFC_OpenMP)
1718# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1719!$omp atomic update
1720# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1721#endif
1722 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)), &
1723 & kind=stp)
1724
1725# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1726#if defined(MFC_OpenACC)
1727# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1728!$acc atomic update
1729# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1730#elif defined(MFC_OpenMP)
1731# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1732!$omp atomic update
1733# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1734#endif
1735 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1736 & l) - real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j)), kind=stp)
1737# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1738
1739# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1740#if defined(MFC_OpenACC)
1741# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1742!$acc atomic update
1743# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1744#elif defined(MFC_OpenMP)
1745# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1746!$omp atomic update
1747# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1748#endif
1749 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1750 & l) + real(0.5_wp*dt*f_r*(1._wp/dx(j + 1)), kind=stp)
1751
1752# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1753#if defined(MFC_OpenACC)
1754# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1755!$acc atomic update
1756# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1757#elif defined(MFC_OpenMP)
1758# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1759!$omp atomic update
1760# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1761#endif
1762 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1763 & l) + real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j + 1)), kind=stp)
1764
1765# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1766#if defined(MFC_OpenACC)
1767# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1768!$acc atomic update
1769# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1770#elif defined(MFC_OpenMP)
1771# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1772!$omp atomic update
1773# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1774#endif
1775 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)), &
1776 & kind=stp)
1777
1778# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1779#if defined(MFC_OpenACC)
1780# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1781!$acc atomic update
1782# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1783#elif defined(MFC_OpenMP)
1784# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1785!$omp atomic update
1786# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1787#endif
1788 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1789 & l) - real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j)), kind=stp)
1790# 394 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1791 end do
1792 end do
1793 end do
1794
1795# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1796#if defined(MFC_OpenACC)
1797# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1798!$acc end parallel loop
1799# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1800#elif defined(MFC_OpenMP)
1801# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1802
1803# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1804!$omp end target teams loop
1805# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1806#endif
1807
1808 end subroutine s_igr_sigma_x
1809
1810 !> Evaluate the approximate Riemann solver for the IGR scheme along a given direction
1811 subroutine s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
1812
1813#ifdef _CRAYFTN
1814 ! DIR$ OPTIMIZE (-haggress)
1815#endif
1816 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1817 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1818 integer, intent(in) :: idir
1819 real(wp) :: cfl
1820 real(wp) :: rho_l, gamma_l, pi_inf_l, e_l, mu_l, f_l, pres_l
1821 real(wp) :: rho_r, gamma_r, pi_inf_r, e_r, mu_r, f_r, pres_r
1822 real(wp), dimension(3) :: vflux_l_arr, vflux_r_arr
1823 real(wp), dimension(-1:1) :: rho_sf_small
1824# 416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1825 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_l, alpha_r, alpha_rho_r
1826 real(wp), dimension(3) :: vel_l, vel_r
1827 real(wp), dimension(3, 3) :: dvel
1828 real(wp), dimension(3) :: dvel_small
1829# 426 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1830
1831 if (idir == 1) then
1832 if (p == 0) then
1833# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1834
1835# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1836
1837# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1838#if defined(MFC_OpenACC)
1839# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1840!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
1841# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1842!$acc& 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)
1843# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1844#elif defined(MFC_OpenMP)
1845# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1846
1847# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1848
1849# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1850
1851# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1852!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, &
1853# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1854!$omp& 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, &
1855# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1856!$omp& vflux_L_arr, vflux_R_arr)
1857# 430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1858#endif
1859# 433 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1860 do l = 0, p
1861 do k = 0, n
1862 do j = -1, m
1863 vflux_l_arr = 0._wp
1864 vflux_r_arr = 0._wp
1865
1866# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1867
1868# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1869#if defined(MFC_OpenACC)
1870# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1871!$acc loop seq
1872# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1873#elif defined(MFC_OpenMP)
1874# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1875
1876# 446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1877#endif
1878 do q = vidxb, vidxe
1879 ! x-direction contributions
1880
1881# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1882#if defined(MFC_OpenACC)
1883# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1884!$acc loop seq
1885# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1886#elif defined(MFC_OpenMP)
1887# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1888
1889# 449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1890#endif
1891 do i = -1, 1
1892 rho_l = 0._wp
1893
1894# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1895#if defined(MFC_OpenACC)
1896# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1897!$acc loop seq
1898# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1899#elif defined(MFC_OpenMP)
1900# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1901
1902# 452 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1903#endif
1904 do r = 1, num_fluids
1905 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
1906 end do
1907 rho_sf_small(i) = rho_l
1908 end do
1909
1910 dvel_small(1) = (1/(2._wp*dx(j)))*(1._wp*q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
1911 & l)/rho_sf_small(1) - 1._wp*q_cons_vf(igr_momxb)%sf(j - 1 + q, k, &
1912 & l)/rho_sf_small(-1))
1913 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
1914 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
1915
1916 if (q == 0) then
1917
1918# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1919#if defined(MFC_OpenACC)
1920# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1921!$acc loop seq
1922# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1923#elif defined(MFC_OpenMP)
1924# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1925
1926# 466 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1927#endif
1928 do i = 1, num_dims
1929 dvel(i, 1) = dvel_small(i)
1930 end do
1931 end if
1932
1933 if (q > vidxb) then
1934 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
1935 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
1936 end if
1937 if (q < vidxe) then
1938 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
1939 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
1940 end if
1941
1942 ! y-direction contributions
1943
1944# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1945#if defined(MFC_OpenACC)
1946# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1947!$acc loop seq
1948# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1949#elif defined(MFC_OpenMP)
1950# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1951
1952# 482 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1953#endif
1954 do i = -1, 1
1955 rho_l = 0._wp
1956
1957# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1958#if defined(MFC_OpenACC)
1959# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1960!$acc loop seq
1961# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1962#elif defined(MFC_OpenMP)
1963# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1964
1965# 485 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1966#endif
1967 do r = 1, num_fluids
1968 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
1969 end do
1970 rho_sf_small(i) = rho_l
1971 end do
1972
1973 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
1974 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1975 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
1976 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1977
1978 if (q == 0) then
1979
1980# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1981#if defined(MFC_OpenACC)
1982# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1983!$acc loop seq
1984# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1985#elif defined(MFC_OpenMP)
1986# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1987
1988# 498 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1989#endif
1990 do i = 1, num_dims
1991 dvel(i, 2) = dvel_small(i)
1992 end do
1993 end if
1994
1995 if (q > vidxb) then
1996 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
1997 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
1998 end if
1999 if (q < vidxe) then
2000 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
2001 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
2002 end if
2003
2004 if (q == 0) then
2005 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1)) + dvel(1, &
2006 & 1)**2._wp + dvel(2, 2)**2._wp + (dvel(1, 1) + dvel(2, 2))**2._wp), kind=stp)
2007 end if
2008 end do
2009
2010
2011# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2012#if defined(MFC_OpenACC)
2013# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2014!$acc loop seq
2015# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2016#elif defined(MFC_OpenMP)
2017# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2018
2019# 519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2020#endif
2021 do i = 1, num_fluids
2022 alpha_rho_l(i) = 0._wp
2023 alpha_rho_r(i) = 0._wp
2024 alpha_l(i) = 0._wp
2025 alpha_r(i) = 0._wp
2026 end do
2027
2028# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2029#if defined(MFC_OpenACC)
2030# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2031!$acc loop seq
2032# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2033#elif defined(MFC_OpenMP)
2034# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2035
2036# 526 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2037#endif
2038 do i = 1, num_dims
2039 vel_l(i) = 0._wp
2040 vel_r(i) = 0._wp
2041 end do
2042
2043
2044# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2045#if defined(MFC_OpenACC)
2046# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2047!$acc loop seq
2048# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2049#elif defined(MFC_OpenMP)
2050# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2051
2052# 532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2053#endif
2054 do q = vidxb + 1, vidxe
2055
2056# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2057#if defined(MFC_OpenACC)
2058# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2059!$acc loop seq
2060# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2061#elif defined(MFC_OpenMP)
2062# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2063
2064# 534 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2065#endif
2066 do i = 1, num_fluids
2067 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
2068 end do
2069
2070 if (num_fluids > 1) then
2071
2072# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2073#if defined(MFC_OpenACC)
2074# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2075!$acc loop seq
2076# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2077#elif defined(MFC_OpenMP)
2078# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2079
2080# 540 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2081#endif
2082 do i = 1, num_fluids - 1
2083 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2084 end do
2085 else
2086 alpha_l(1) = 1._wp
2087 end if
2088
2089
2090# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2091#if defined(MFC_OpenACC)
2092# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2093!$acc loop seq
2094# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2095#elif defined(MFC_OpenMP)
2096# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2097
2098# 548 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2099#endif
2100 do i = 1, num_dims
2101 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2102 end do
2103 end do
2104
2105
2106# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2107#if defined(MFC_OpenACC)
2108# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2109!$acc loop seq
2110# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2111#elif defined(MFC_OpenMP)
2112# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2113
2114# 554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2115#endif
2116 do q = vidxb, vidxe - 1
2117
2118# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2119#if defined(MFC_OpenACC)
2120# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2121!$acc loop seq
2122# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2123#elif defined(MFC_OpenMP)
2124# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2125
2126# 556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2127#endif
2128 do i = 1, num_fluids
2129 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
2130 end do
2131
2132 if (num_fluids > 1) then
2133
2134# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2135#if defined(MFC_OpenACC)
2136# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2137!$acc loop seq
2138# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2139#elif defined(MFC_OpenMP)
2140# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2141
2142# 562 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2143#endif
2144 do i = 1, num_fluids - 1
2145 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2146 end do
2147 else
2148 alpha_r(1) = 1._wp
2149 end if
2150
2151
2152# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2153#if defined(MFC_OpenACC)
2154# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2155!$acc loop seq
2156# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2157#elif defined(MFC_OpenMP)
2158# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2159
2160# 570 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2161#endif
2162 do i = 1, num_dims
2163 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2164 end do
2165 end do
2166
2167 if (num_fluids > 1) then
2168 alpha_l(num_fluids) = 1._wp
2169 alpha_r(num_fluids) = 1._wp
2170
2171
2172# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2173#if defined(MFC_OpenACC)
2174# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2175!$acc loop seq
2176# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2177#elif defined(MFC_OpenMP)
2178# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2179
2180# 580 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2181#endif
2182 do i = 1, num_fluids - 1
2183 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
2184 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
2185 end do
2186 end if
2187
2188 rho_l = 0._wp; rho_r = 0._wp
2189 gamma_l = 0._wp; gamma_r = 0._wp
2190 pi_inf_l = 0._wp; pi_inf_r = 0._wp
2191
2192
2193# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2194#if defined(MFC_OpenACC)
2195# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2196!$acc loop seq
2197# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2198#elif defined(MFC_OpenMP)
2199# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2200
2201# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2202#endif
2203 do i = 1, num_fluids
2204 rho_l = rho_l + alpha_rho_l(i)
2205 gamma_l = gamma_l + alpha_l(i)*gammas(i)
2206 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
2207
2208 rho_r = rho_r + alpha_rho_r(i)
2209 gamma_r = gamma_r + alpha_r(i)*gammas(i)
2210 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
2211 end do
2212
2213
2214# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2215#if defined(MFC_OpenACC)
2216# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2217!$acc loop seq
2218# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2219#elif defined(MFC_OpenMP)
2220# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2221
2222# 602 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2223#endif
2224 do i = 1, num_dims
2225 vel_l(i) = vel_l(i)/rho_l
2226 vel_r(i) = vel_r(i)/rho_r
2227 end do
2228
2229 if (viscous) then
2230 mu_l = 0._wp; mu_r = 0._wp
2231
2232# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2233#if defined(MFC_OpenACC)
2234# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2235!$acc loop seq
2236# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2237#elif defined(MFC_OpenMP)
2238# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2239
2240# 610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2241#endif
2242 do i = 1, num_fluids
2243 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
2244 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
2245 end do
2246
2247
2248# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2249#if defined(MFC_OpenACC)
2250# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2251!$acc atomic update
2252# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2253#elif defined(MFC_OpenMP)
2254# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2255!$omp atomic update
2256# 616 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2257#endif
2258 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2259 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2260
2261# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2262#if defined(MFC_OpenACC)
2263# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2264!$acc atomic update
2265# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2266#elif defined(MFC_OpenMP)
2267# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2268!$omp atomic update
2269# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2270#endif
2271 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2272 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
2273
2274
2275# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2276#if defined(MFC_OpenACC)
2277# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2278!$acc atomic update
2279# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2280#elif defined(MFC_OpenMP)
2281# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2282!$omp atomic update
2283# 623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2284#endif
2285 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2286 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
2287
2288# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2289#if defined(MFC_OpenACC)
2290# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2291!$acc atomic update
2292# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2293#elif defined(MFC_OpenMP)
2294# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2295!$omp atomic update
2296# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2297#endif
2298 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2299 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
2300
2301
2302# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2303#if defined(MFC_OpenACC)
2304# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2305!$acc atomic update
2306# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2307#elif defined(MFC_OpenMP)
2308# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2309!$omp atomic update
2310# 630 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2311#endif
2312 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2313 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2314
2315# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2316#if defined(MFC_OpenACC)
2317# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2318!$acc atomic update
2319# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2320#elif defined(MFC_OpenMP)
2321# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2322!$omp atomic update
2323# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2324#endif
2325 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2326 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
2327
2328
2329# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2330#if defined(MFC_OpenACC)
2331# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2332!$acc atomic update
2333# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2334#elif defined(MFC_OpenMP)
2335# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2336!$omp atomic update
2337# 637 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2338#endif
2339 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2340 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
2341
2342# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2343#if defined(MFC_OpenACC)
2344# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2345!$acc atomic update
2346# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2347#elif defined(MFC_OpenMP)
2348# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2349!$omp atomic update
2350# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2351#endif
2352 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2353 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
2354
2355
2356# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2357#if defined(MFC_OpenACC)
2358# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2359!$acc atomic update
2360# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2361#elif defined(MFC_OpenMP)
2362# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2363!$omp atomic update
2364# 644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2365#endif
2366 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2367 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2368
2369# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2370#if defined(MFC_OpenACC)
2371# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2372!$acc atomic update
2373# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2374#elif defined(MFC_OpenMP)
2375# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2376!$omp atomic update
2377# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2378#endif
2379 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2380 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
2381
2382
2383# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2384#if defined(MFC_OpenACC)
2385# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2386!$acc atomic update
2387# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2388#elif defined(MFC_OpenMP)
2389# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2390!$omp atomic update
2391# 651 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2392#endif
2393 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2394 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
2395
2396# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2397#if defined(MFC_OpenACC)
2398# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2399!$acc atomic update
2400# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2401#elif defined(MFC_OpenMP)
2402# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2403!$omp atomic update
2404# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2405#endif
2406 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2407 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
2408
2409
2410# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2411#if defined(MFC_OpenACC)
2412# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2413!$acc atomic update
2414# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2415#elif defined(MFC_OpenMP)
2416# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2417!$omp atomic update
2418# 658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2419#endif
2420 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2421 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2422
2423# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2424#if defined(MFC_OpenACC)
2425# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2426!$acc atomic update
2427# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2428#elif defined(MFC_OpenMP)
2429# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2430!$omp atomic update
2431# 661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2432#endif
2433 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2434 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
2435
2436
2437# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2438#if defined(MFC_OpenACC)
2439# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2440!$acc atomic update
2441# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2442#elif defined(MFC_OpenMP)
2443# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2444!$omp atomic update
2445# 665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2446#endif
2447 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2448 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
2449
2450# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2451#if defined(MFC_OpenACC)
2452# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2453!$acc atomic update
2454# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2455#elif defined(MFC_OpenMP)
2456# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2457!$omp atomic update
2458# 668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2459#endif
2460 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2461 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
2462 end if
2463
2464 e_l = 0._wp; e_r = 0._wp
2465
2466
2467# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2468#if defined(MFC_OpenACC)
2469# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2470!$acc loop seq
2471# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2472#elif defined(MFC_OpenMP)
2473# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2474
2475# 675 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2476#endif
2477 do q = vidxb + 1, vidxe
2478 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2479 end do
2480
2481
2482# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2483#if defined(MFC_OpenACC)
2484# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2485!$acc loop seq
2486# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2487#elif defined(MFC_OpenMP)
2488# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2489
2490# 680 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2491#endif
2492 do q = vidxb, vidxe - 1
2493 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2494 end do
2495
2496 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, &
2497 & vel_r, pres_l, pres_r, cfl)
2498
2499 do i = 1, num_fluids
2500
2501# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2502#if defined(MFC_OpenACC)
2503# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2504!$acc atomic update
2505# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2506#elif defined(MFC_OpenMP)
2507# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2508!$omp atomic update
2509# 689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2510#endif
2511 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2512 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2513 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
2514
2515
2516# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2517#if defined(MFC_OpenACC)
2518# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2519!$acc atomic update
2520# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2521#elif defined(MFC_OpenMP)
2522# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2523!$omp atomic update
2524# 694 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2525#endif
2526 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2527 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
2528 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
2529 end do
2530
2531 if (num_fluids > 1) then
2532
2533# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2534#if defined(MFC_OpenACC)
2535# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2536!$acc loop seq
2537# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2538#elif defined(MFC_OpenMP)
2539# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2540
2541# 701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2542#endif
2543 do i = 1, num_fluids - 1
2544
2545# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2546#if defined(MFC_OpenACC)
2547# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2548!$acc atomic update
2549# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2550#elif defined(MFC_OpenMP)
2551# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2552!$omp atomic update
2553# 703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2554#endif
2555 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2556 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2557 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
2558
2559
2560# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2561#if defined(MFC_OpenACC)
2562# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2563!$acc atomic update
2564# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2565#elif defined(MFC_OpenMP)
2566# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2567!$omp atomic update
2568# 708 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2569#endif
2570 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2571 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2572 & l)*vel_l(1)*(1._wp/dx(j + 1))), kind=stp)
2573
2574
2575# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2576#if defined(MFC_OpenACC)
2577# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2578!$acc atomic update
2579# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2580#elif defined(MFC_OpenMP)
2581# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2582!$omp atomic update
2583# 713 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2584#endif
2585 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2586 & l) - real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
2587 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j))), kind=stp)
2588
2589
2590# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2591#if defined(MFC_OpenACC)
2592# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2593!$acc atomic update
2594# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2595#elif defined(MFC_OpenMP)
2596# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2597!$omp atomic update
2598# 718 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2599#endif
2600 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2601 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2602 & l)*vel_l(1)*(1._wp/dx(j))), kind=stp)
2603 end do
2604 end if
2605
2606
2607# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2608#if defined(MFC_OpenACC)
2609# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2610!$acc atomic update
2611# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2612#elif defined(MFC_OpenMP)
2613# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2614!$omp atomic update
2615# 725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2616#endif
2617 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2618 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
2619 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
2620
2621
2622# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2623#if defined(MFC_OpenACC)
2624# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2625!$acc atomic update
2626# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2627#elif defined(MFC_OpenMP)
2628# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2629!$omp atomic update
2630# 730 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2631#endif
2632 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2633 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
2634 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
2635
2636
2637# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2638#if defined(MFC_OpenACC)
2639# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2640!$acc atomic update
2641# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2642#elif defined(MFC_OpenMP)
2643# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2644!$omp atomic update
2645# 735 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2646#endif
2647 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2648 & 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) &
2649 & *(1._wp/dx(j + 1))), kind=stp)
2650
2651
2652# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2653#if defined(MFC_OpenACC)
2654# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2655!$acc atomic update
2656# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2657#elif defined(MFC_OpenMP)
2658# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2659!$omp atomic update
2660# 740 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2661#endif
2662 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2663 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
2664 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
2665
2666
2667# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2668#if defined(MFC_OpenACC)
2669# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2670!$acc atomic update
2671# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2672#elif defined(MFC_OpenMP)
2673# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2674!$omp atomic update
2675# 745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2676#endif
2677 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2678 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
2679 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
2680
2681
2682# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2683#if defined(MFC_OpenACC)
2684# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2685!$acc atomic update
2686# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2687#elif defined(MFC_OpenMP)
2688# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2689!$omp atomic update
2690# 750 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2691#endif
2692 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2693 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
2694 & *(1._wp/dx(j))), kind=stp)
2695
2696
2697# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2698#if defined(MFC_OpenACC)
2699# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2700!$acc loop seq
2701# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2702#elif defined(MFC_OpenMP)
2703# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2704
2705# 755 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2706#endif
2707 do i = 1, num_fluids
2708
2709# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2710#if defined(MFC_OpenACC)
2711# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2712!$acc atomic update
2713# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2714#elif defined(MFC_OpenMP)
2715# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2716!$omp atomic update
2717# 757 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2718#endif
2719 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2720 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2721 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
2722
2723
2724# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2725#if defined(MFC_OpenACC)
2726# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2727!$acc atomic update
2728# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2729#elif defined(MFC_OpenMP)
2730# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2731!$omp atomic update
2732# 762 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2733#endif
2734 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2735 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
2736 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
2737 end do
2738
2739 if (num_fluids > 1) then
2740
2741# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2742#if defined(MFC_OpenACC)
2743# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2744!$acc loop seq
2745# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2746#elif defined(MFC_OpenMP)
2747# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2748
2749# 769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2750#endif
2751 do i = 1, num_fluids - 1
2752
2753# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2754#if defined(MFC_OpenACC)
2755# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2756!$acc atomic update
2757# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2758#elif defined(MFC_OpenMP)
2759# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2760!$omp atomic update
2761# 771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2762#endif
2763 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2764 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2765 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
2766
2767
2768# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2769#if defined(MFC_OpenACC)
2770# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2771!$acc atomic update
2772# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2773#elif defined(MFC_OpenMP)
2774# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2775!$omp atomic update
2776# 776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2777#endif
2778 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2779 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2780 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
2781
2782
2783# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2784#if defined(MFC_OpenACC)
2785# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2786!$acc atomic update
2787# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2788#elif defined(MFC_OpenMP)
2789# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2790!$omp atomic update
2791# 781 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2792#endif
2793 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2794 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
2795 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
2796
2797
2798# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2799#if defined(MFC_OpenACC)
2800# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2801!$acc atomic update
2802# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2803#elif defined(MFC_OpenMP)
2804# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2805!$omp atomic update
2806# 786 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2807#endif
2808 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2809 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2810 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
2811 end do
2812 end if
2813
2814
2815# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2816#if defined(MFC_OpenACC)
2817# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2818!$acc atomic update
2819# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2820#elif defined(MFC_OpenMP)
2821# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2822!$omp atomic update
2823# 793 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2824#endif
2825 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2826 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
2827 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
2828
2829
2830# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2831#if defined(MFC_OpenACC)
2832# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2833!$acc atomic update
2834# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2835#elif defined(MFC_OpenMP)
2836# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2837!$omp atomic update
2838# 798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2839#endif
2840 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2841 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
2842 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
2843
2844
2845# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2846#if defined(MFC_OpenACC)
2847# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2848!$acc atomic update
2849# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2850#elif defined(MFC_OpenMP)
2851# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2852!$omp atomic update
2853# 803 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2854#endif
2855 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2856 & 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) &
2857 & *(1._wp/dx(j + 1))), kind=stp)
2858
2859
2860# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2861#if defined(MFC_OpenACC)
2862# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2863!$acc atomic update
2864# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2865#elif defined(MFC_OpenMP)
2866# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2867!$omp atomic update
2868# 808 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2869#endif
2870 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2871 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
2872 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
2873
2874
2875# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2876#if defined(MFC_OpenACC)
2877# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2878!$acc atomic update
2879# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2880#elif defined(MFC_OpenMP)
2881# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2882!$omp atomic update
2883# 813 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2884#endif
2885 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2886 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
2887 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
2888
2889
2890# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2891#if defined(MFC_OpenACC)
2892# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2893!$acc atomic update
2894# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2895#elif defined(MFC_OpenMP)
2896# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2897!$omp atomic update
2898# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2899#endif
2900 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2901 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
2902 & *(1._wp/dx(j))), kind=stp)
2903 end do
2904 end do
2905 end do
2906
2907# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2908#if defined(MFC_OpenACC)
2909# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2910!$acc end parallel loop
2911# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2912#elif defined(MFC_OpenMP)
2913# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2914
2915# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2916!$omp end target teams loop
2917# 825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2918#endif
2919# 827 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2920 else
2921# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2922
2923# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2924
2925# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2926#if defined(MFC_OpenACC)
2927# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2928!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
2929# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2930!$acc& 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)
2931# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2932#elif defined(MFC_OpenMP)
2933# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2934
2935# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2936
2937# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2938
2939# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2940!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, &
2941# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2942!$omp& 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, &
2943# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2944!$omp& vflux_L_arr, vflux_R_arr)
2945# 829 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2946#endif
2947# 832 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2948 do l = 0, p
2949 do k = 0, n
2950 do j = -1, m
2951 vflux_l_arr = 0._wp
2952 vflux_r_arr = 0._wp
2953
2954# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2955
2956# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2957#if defined(MFC_OpenACC)
2958# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2959!$acc loop seq
2960# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2961#elif defined(MFC_OpenMP)
2962# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2963
2964# 845 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2965#endif
2966 do q = vidxb, vidxe
2967 ! x-direction contributions
2968
2969# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2970#if defined(MFC_OpenACC)
2971# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2972!$acc loop seq
2973# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2974#elif defined(MFC_OpenMP)
2975# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2976
2977# 848 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2978#endif
2979 do i = -1, 1
2980 rho_l = 0._wp
2981
2982# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2983#if defined(MFC_OpenACC)
2984# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2985!$acc loop seq
2986# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2987#elif defined(MFC_OpenMP)
2988# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2989
2990# 851 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2991#endif
2992 do r = 1, num_fluids
2993 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
2994 end do
2995 rho_sf_small(i) = rho_l
2996 end do
2997
2998 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
2999 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3000 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
3001 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3002 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1 + q, k, &
3003 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
3004
3005 if (q == 0) then
3006
3007# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3008#if defined(MFC_OpenACC)
3009# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3010!$acc loop seq
3011# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3012#elif defined(MFC_OpenMP)
3013# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3014
3015# 866 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3016#endif
3017 do i = 1, num_dims
3018 dvel(i, 1) = dvel_small(i)
3019 end do
3020 end if
3021
3022 if (q > vidxb) then
3023 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
3024 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
3025 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
3026 end if
3027 if (q < vidxe) then
3028 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
3029 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
3030 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
3031 end if
3032
3033 ! y-direction contributions
3034
3035# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3036#if defined(MFC_OpenACC)
3037# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3038!$acc loop seq
3039# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3040#elif defined(MFC_OpenMP)
3041# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3042
3043# 884 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3044#endif
3045 do i = -1, 1
3046 rho_l = 0._wp
3047
3048# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3049#if defined(MFC_OpenACC)
3050# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3051!$acc loop seq
3052# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3053#elif defined(MFC_OpenMP)
3054# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3055
3056# 887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3057#endif
3058 do r = 1, num_fluids
3059 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
3060 end do
3061 rho_sf_small(i) = rho_l
3062 end do
3063
3064 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
3065 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3066 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
3067 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3068 if (q == 0) dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k + 1, &
3069 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3070 if (q == 0) then
3071
3072# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3073#if defined(MFC_OpenACC)
3074# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3075!$acc loop seq
3076# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3077#elif defined(MFC_OpenMP)
3078# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3079
3080# 901 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3081#endif
3082 do i = 1, num_dims
3083 dvel(i, 2) = dvel_small(i)
3084 end do
3085 end if
3086
3087 if (q > vidxb) then
3088 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
3089 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
3090 end if
3091 if (q < vidxe) then
3092 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
3093 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
3094 end if
3095
3096 ! z-direction contributions
3097
3098# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3099#if defined(MFC_OpenACC)
3100# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3101!$acc loop seq
3102# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3103#elif defined(MFC_OpenMP)
3104# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3105
3106# 917 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3107#endif
3108 do i = -1, 1
3109 rho_l = 0._wp
3110
3111# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3112#if defined(MFC_OpenACC)
3113# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3114!$acc loop seq
3115# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3116#elif defined(MFC_OpenMP)
3117# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3118
3119# 920 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3120#endif
3121 do r = 1, num_fluids
3122 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k, l + i)
3123 end do
3124 rho_sf_small(i) = rho_l
3125 end do
3126
3127 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j + q, k, &
3128 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3129 if (q == 0) dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k, &
3130 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3131 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3132 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3133 & l - 1)/rho_sf_small(-1))
3134 if (q == 0) then
3135
3136# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3137#if defined(MFC_OpenACC)
3138# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3139!$acc loop seq
3140# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3141#elif defined(MFC_OpenMP)
3142# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3143
3144# 935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3145#endif
3146 do i = 1, num_dims
3147 dvel(i, 3) = dvel_small(i)
3148 end do
3149 end if
3150
3151 if (q > vidxb) then
3152 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(1))
3153 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
3154 end if
3155 if (q < vidxe) then
3156 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(1))
3157 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
3158 end if
3159
3160 if (q == 0) then
3161 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1) + dvel(1, 3)*dvel(3, &
3162 & 1) + dvel(2, 3)*dvel(3, 2)) + dvel(1, 1)**2._wp + dvel(2, 2)**2._wp + dvel(3, &
3163 & 3)**2._wp + (dvel(1, 1) + dvel(2, 2) + dvel(3, 3))**2._wp), kind=stp)
3164 end if
3165 end do
3166
3167
3168# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3169#if defined(MFC_OpenACC)
3170# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3171!$acc loop seq
3172# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3173#elif defined(MFC_OpenMP)
3174# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3175
3176# 957 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3177#endif
3178 do i = 1, num_fluids
3179 alpha_rho_l(i) = 0._wp
3180 alpha_rho_r(i) = 0._wp
3181 alpha_l(i) = 0._wp
3182 alpha_r(i) = 0._wp
3183 end do
3184
3185# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3186#if defined(MFC_OpenACC)
3187# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3188!$acc loop seq
3189# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3190#elif defined(MFC_OpenMP)
3191# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3192
3193# 964 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3194#endif
3195 do i = 1, num_dims
3196 vel_l(i) = 0._wp
3197 vel_r(i) = 0._wp
3198 end do
3199
3200
3201# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3202#if defined(MFC_OpenACC)
3203# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3204!$acc loop seq
3205# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3206#elif defined(MFC_OpenMP)
3207# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3208
3209# 970 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3210#endif
3211 do q = vidxb + 1, vidxe
3212
3213# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3214#if defined(MFC_OpenACC)
3215# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3216!$acc loop seq
3217# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3218#elif defined(MFC_OpenMP)
3219# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3220
3221# 972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3222#endif
3223 do i = 1, num_fluids
3224 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
3225 end do
3226
3227 if (num_fluids > 1) then
3228
3229# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3230#if defined(MFC_OpenACC)
3231# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3232!$acc loop seq
3233# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3234#elif defined(MFC_OpenMP)
3235# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3236
3237# 978 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3238#endif
3239 do i = 1, num_fluids - 1
3240 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3241 end do
3242 else
3243 alpha_l(1) = 1._wp
3244 end if
3245
3246
3247# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3248#if defined(MFC_OpenACC)
3249# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3250!$acc loop seq
3251# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3252#elif defined(MFC_OpenMP)
3253# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3254
3255# 986 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3256#endif
3257 do i = 1, num_dims
3258 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3259 end do
3260 end do
3261
3262
3263# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3264#if defined(MFC_OpenACC)
3265# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3266!$acc loop seq
3267# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3268#elif defined(MFC_OpenMP)
3269# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3270
3271# 992 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3272#endif
3273 do q = vidxb, vidxe - 1
3274
3275# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3276#if defined(MFC_OpenACC)
3277# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3278!$acc loop seq
3279# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3280#elif defined(MFC_OpenMP)
3281# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3282
3283# 994 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3284#endif
3285 do i = 1, num_fluids
3286 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
3287 end do
3288
3289 if (num_fluids > 1) then
3290
3291# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3292#if defined(MFC_OpenACC)
3293# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3294!$acc loop seq
3295# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3296#elif defined(MFC_OpenMP)
3297# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3298
3299# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3300#endif
3301 do i = 1, num_fluids - 1
3302 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3303 end do
3304 else
3305 alpha_r(1) = 1._wp
3306 end if
3307
3308
3309# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3310#if defined(MFC_OpenACC)
3311# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3312!$acc loop seq
3313# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3314#elif defined(MFC_OpenMP)
3315# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3316
3317# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3318#endif
3319 do i = 1, num_dims
3320 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3321 end do
3322 end do
3323
3324 if (num_fluids > 1) then
3325 alpha_l(num_fluids) = 1._wp
3326 alpha_r(num_fluids) = 1._wp
3327
3328
3329# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3330#if defined(MFC_OpenACC)
3331# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3332!$acc loop seq
3333# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3334#elif defined(MFC_OpenMP)
3335# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3336
3337# 1018 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3338#endif
3339 do i = 1, num_fluids - 1
3340 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
3341 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
3342 end do
3343 end if
3344
3345 rho_l = 0._wp; rho_r = 0._wp
3346 gamma_l = 0._wp; gamma_r = 0._wp
3347 pi_inf_l = 0._wp; pi_inf_r = 0._wp
3348
3349
3350# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3351#if defined(MFC_OpenACC)
3352# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3353!$acc loop seq
3354# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3355#elif defined(MFC_OpenMP)
3356# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3357
3358# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3359#endif
3360 do i = 1, num_fluids
3361 rho_l = rho_l + alpha_rho_l(i)
3362 gamma_l = gamma_l + alpha_l(i)*gammas(i)
3363 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
3364
3365 rho_r = rho_r + alpha_rho_r(i)
3366 gamma_r = gamma_r + alpha_r(i)*gammas(i)
3367 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
3368 end do
3369
3370
3371# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3372#if defined(MFC_OpenACC)
3373# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3374!$acc loop seq
3375# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3376#elif defined(MFC_OpenMP)
3377# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3378
3379# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3380#endif
3381 do i = 1, num_dims
3382 vel_l(i) = vel_l(i)/rho_l
3383 vel_r(i) = vel_r(i)/rho_r
3384 end do
3385
3386 if (viscous) then
3387 mu_l = 0._wp
3388 mu_r = 0._wp
3389
3390# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3391#if defined(MFC_OpenACC)
3392# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3393!$acc loop seq
3394# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3395#elif defined(MFC_OpenMP)
3396# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3397
3398# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3399#endif
3400 do i = 1, num_fluids
3401 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
3402 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
3403 end do
3404
3405
3406# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3407#if defined(MFC_OpenACC)
3408# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3409!$acc atomic update
3410# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3411#elif defined(MFC_OpenMP)
3412# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3413!$omp atomic update
3414# 1055 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3415#endif
3416 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3417 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3418
3419# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3420#if defined(MFC_OpenACC)
3421# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3422!$acc atomic update
3423# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3424#elif defined(MFC_OpenMP)
3425# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3426!$omp atomic update
3427# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3428#endif
3429 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3430 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
3431
3432
3433# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3434#if defined(MFC_OpenACC)
3435# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3436!$acc atomic update
3437# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3438#elif defined(MFC_OpenMP)
3439# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3440!$omp atomic update
3441# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3442#endif
3443 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3444 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
3445
3446# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3447#if defined(MFC_OpenACC)
3448# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3449!$acc atomic update
3450# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3451#elif defined(MFC_OpenMP)
3452# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3453!$omp atomic update
3454# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3455#endif
3456 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3457 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
3458
3459
3460# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3461#if defined(MFC_OpenACC)
3462# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3463!$acc atomic update
3464# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3465#elif defined(MFC_OpenMP)
3466# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3467!$omp atomic update
3468# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3469#endif
3470 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3471 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3472
3473# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3474#if defined(MFC_OpenACC)
3475# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3476!$acc atomic update
3477# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3478#elif defined(MFC_OpenMP)
3479# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3480!$omp atomic update
3481# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3482#endif
3483 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3484 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
3485
3486
3487# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3488#if defined(MFC_OpenACC)
3489# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3490!$acc atomic update
3491# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3492#elif defined(MFC_OpenMP)
3493# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3494!$omp atomic update
3495# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3496#endif
3497 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3498 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
3499
3500# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3501#if defined(MFC_OpenACC)
3502# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3503!$acc atomic update
3504# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3505#elif defined(MFC_OpenMP)
3506# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3507!$omp atomic update
3508# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3509#endif
3510 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3511 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
3512
3513
3514# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3515#if defined(MFC_OpenACC)
3516# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3517!$acc atomic update
3518# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3519#elif defined(MFC_OpenMP)
3520# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3521!$omp atomic update
3522# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3523#endif
3524 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3525 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3526
3527# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3528#if defined(MFC_OpenACC)
3529# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3530!$acc atomic update
3531# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3532#elif defined(MFC_OpenMP)
3533# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3534!$omp atomic update
3535# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3536#endif
3537 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3538 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j + 1)), kind=stp)
3539
3540
3541# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3542#if defined(MFC_OpenACC)
3543# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3544!$acc atomic update
3545# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3546#elif defined(MFC_OpenMP)
3547# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3548!$omp atomic update
3549# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3550#endif
3551 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3552 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j)), kind=stp)
3553
3554# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3555#if defined(MFC_OpenACC)
3556# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3557!$acc atomic update
3558# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3559#elif defined(MFC_OpenMP)
3560# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3561!$omp atomic update
3562# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3563#endif
3564 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3565 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j)), kind=stp)
3566
3567
3568# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3569#if defined(MFC_OpenACC)
3570# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3571!$acc atomic update
3572# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3573#elif defined(MFC_OpenMP)
3574# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3575!$omp atomic update
3576# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3577#endif
3578 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3579 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3580
3581# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3582#if defined(MFC_OpenACC)
3583# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3584!$acc atomic update
3585# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3586#elif defined(MFC_OpenMP)
3587# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3588!$omp atomic update
3589# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3590#endif
3591 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3592 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j + 1)), kind=stp)
3593
3594
3595# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3596#if defined(MFC_OpenACC)
3597# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3598!$acc atomic update
3599# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3600#elif defined(MFC_OpenMP)
3601# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3602!$omp atomic update
3603# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3604#endif
3605 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3606 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j)), kind=stp)
3607
3608# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3609#if defined(MFC_OpenACC)
3610# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3611!$acc atomic update
3612# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3613#elif defined(MFC_OpenMP)
3614# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3615!$omp atomic update
3616# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3617#endif
3618 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3619 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j)), kind=stp)
3620
3621
3622# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3623#if defined(MFC_OpenACC)
3624# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3625!$acc atomic update
3626# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3627#elif defined(MFC_OpenMP)
3628# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3629!$omp atomic update
3630# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3631#endif
3632 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3633 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3634
3635# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3636#if defined(MFC_OpenACC)
3637# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3638!$acc atomic update
3639# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3640#elif defined(MFC_OpenMP)
3641# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3642!$omp atomic update
3643# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3644#endif
3645 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3646 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3647
3648
3649# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3650#if defined(MFC_OpenACC)
3651# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3652!$acc atomic update
3653# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3654#elif defined(MFC_OpenMP)
3655# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3656!$omp atomic update
3657# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3658#endif
3659 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3660 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
3661
3662# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3663#if defined(MFC_OpenACC)
3664# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3665!$acc atomic update
3666# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3667#elif defined(MFC_OpenMP)
3668# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3669!$omp atomic update
3670# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3671#endif
3672 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3673 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3674
3675
3676# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3677#if defined(MFC_OpenACC)
3678# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3679!$acc atomic update
3680# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3681#elif defined(MFC_OpenMP)
3682# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3683!$omp atomic update
3684# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3685#endif
3686 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3687 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3688
3689# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3690#if defined(MFC_OpenACC)
3691# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3692!$acc atomic update
3693# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3694#elif defined(MFC_OpenMP)
3695# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3696!$omp atomic update
3697# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3698#endif
3699 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3700 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
3701
3702
3703# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3704#if defined(MFC_OpenACC)
3705# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3706!$acc atomic update
3707# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3708#elif defined(MFC_OpenMP)
3709# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3710!$omp atomic update
3711# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3712#endif
3713 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3714 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
3715
3716# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3717#if defined(MFC_OpenACC)
3718# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3719!$acc atomic update
3720# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3721#elif defined(MFC_OpenMP)
3722# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3723!$omp atomic update
3724# 1135 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3725#endif
3726 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3727 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
3728 end if
3729
3730 e_l = 0._wp; e_r = 0._wp
3731
3732
3733# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3734#if defined(MFC_OpenACC)
3735# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3736!$acc loop seq
3737# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3738#elif defined(MFC_OpenMP)
3739# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3740
3741# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3742#endif
3743 do q = vidxb + 1, vidxe
3744 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3745 end do
3746
3747
3748# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3749#if defined(MFC_OpenACC)
3750# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3751!$acc loop seq
3752# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3753#elif defined(MFC_OpenMP)
3754# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3755
3756# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3757#endif
3758 do q = vidxb, vidxe - 1
3759 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3760 end do
3761
3762 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, &
3763 & vel_r, pres_l, pres_r, cfl)
3764
3765
3766# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3767#if defined(MFC_OpenACC)
3768# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3769!$acc loop seq
3770# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3771#elif defined(MFC_OpenMP)
3772# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3773
3774# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3775#endif
3776 do i = 1, num_fluids
3777
3778# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3779#if defined(MFC_OpenACC)
3780# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3781!$acc atomic update
3782# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3783#elif defined(MFC_OpenMP)
3784# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3785!$omp atomic update
3786# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3787#endif
3788 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
3789 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3790 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
3791
3792
3793# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3794#if defined(MFC_OpenACC)
3795# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3796!$acc atomic update
3797# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3798#elif defined(MFC_OpenMP)
3799# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3800!$omp atomic update
3801# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3802#endif
3803 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
3804 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
3805 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
3806 end do
3807
3808 if (num_fluids > 1) then
3809
3810# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3811#if defined(MFC_OpenACC)
3812# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3813!$acc loop seq
3814# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3815#elif defined(MFC_OpenMP)
3816# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3817
3818# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3819#endif
3820 do i = 1, num_fluids - 1
3821
3822# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3823#if defined(MFC_OpenACC)
3824# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3825!$acc atomic update
3826# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3827#elif defined(MFC_OpenMP)
3828# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3829!$omp atomic update
3830# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3831#endif
3832 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3833 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3834 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
3835
3836
3837# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3838#if defined(MFC_OpenACC)
3839# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3840!$acc atomic update
3841# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3842#elif defined(MFC_OpenMP)
3843# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3844!$omp atomic update
3845# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3846#endif
3847 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3848 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3849 & l)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3850
3851
3852# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3853#if defined(MFC_OpenACC)
3854# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3855!$acc atomic update
3856# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3857#elif defined(MFC_OpenMP)
3858# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3859!$omp atomic update
3860# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3861#endif
3862 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3863 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
3864 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j)), kind=stp)
3865
3866
3867# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3868#if defined(MFC_OpenACC)
3869# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3870!$acc atomic update
3871# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3872#elif defined(MFC_OpenMP)
3873# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3874!$omp atomic update
3875# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3876#endif
3877 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3878 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
3879 & l)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3880 end do
3881 end if
3882
3883
3884# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3885#if defined(MFC_OpenACC)
3886# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3887!$acc atomic update
3888# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3889#elif defined(MFC_OpenMP)
3890# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3891!$omp atomic update
3892# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3893#endif
3894 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3895 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
3896 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
3897
3898
3899# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3900#if defined(MFC_OpenACC)
3901# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3902!$acc atomic update
3903# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3904#elif defined(MFC_OpenMP)
3905# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3906!$omp atomic update
3907# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3908#endif
3909 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3910 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
3911 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
3912
3913
3914# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3915#if defined(MFC_OpenACC)
3916# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3917!$acc atomic update
3918# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3919#elif defined(MFC_OpenMP)
3920# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3921!$omp atomic update
3922# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3923#endif
3924 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3925 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j + 1)) &
3926 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j + 1))), kind=stp)
3927
3928
3929# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3930#if defined(MFC_OpenACC)
3931# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3932!$acc atomic update
3933# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3934#elif defined(MFC_OpenMP)
3935# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3936!$omp atomic update
3937# 1208 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3938#endif
3939 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3940 & 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) &
3941 & *(1._wp/dx(j + 1))), kind=stp)
3942
3943
3944# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3945#if defined(MFC_OpenACC)
3946# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3947!$acc atomic update
3948# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3949#elif defined(MFC_OpenMP)
3950# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3951!$omp atomic update
3952# 1213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3953#endif
3954 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3955 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
3956 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
3957
3958
3959# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3960#if defined(MFC_OpenACC)
3961# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3962!$acc atomic update
3963# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3964#elif defined(MFC_OpenMP)
3965# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3966!$omp atomic update
3967# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3968#endif
3969 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3970 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
3971 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
3972
3973
3974# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3975#if defined(MFC_OpenACC)
3976# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3977!$acc atomic update
3978# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3979#elif defined(MFC_OpenMP)
3980# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3981!$omp atomic update
3982# 1223 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3983#endif
3984 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3985 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j)) &
3986 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j))), kind=stp)
3987
3988
3989# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3990#if defined(MFC_OpenACC)
3991# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3992!$acc atomic update
3993# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3994#elif defined(MFC_OpenMP)
3995# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3996!$omp atomic update
3997# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3998#endif
3999 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4000 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
4001 & *(1._wp/dx(j))), kind=stp)
4002
4003
4004# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4005#if defined(MFC_OpenACC)
4006# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4007!$acc loop seq
4008# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4009#elif defined(MFC_OpenMP)
4010# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4011
4012# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4013#endif
4014 do i = 1, num_fluids
4015
4016# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4017#if defined(MFC_OpenACC)
4018# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4019!$acc atomic update
4020# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4021#elif defined(MFC_OpenMP)
4022# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4023!$omp atomic update
4024# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4025#endif
4026 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
4027 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
4028 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
4029
4030
4031# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4032#if defined(MFC_OpenACC)
4033# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4034!$acc atomic update
4035# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4036#elif defined(MFC_OpenMP)
4037# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4038!$omp atomic update
4039# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4040#endif
4041 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
4042 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
4043 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
4044 end do
4045
4046 if (num_fluids > 1) then
4047
4048# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4049#if defined(MFC_OpenACC)
4050# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4051!$acc loop seq
4052# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4053#elif defined(MFC_OpenMP)
4054# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4055
4056# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4057#endif
4058 do i = 1, num_fluids - 1
4059
4060# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4061#if defined(MFC_OpenACC)
4062# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4063!$acc atomic update
4064# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4065#elif defined(MFC_OpenMP)
4066# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4067!$omp atomic update
4068# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4069#endif
4070 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4071 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
4072 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
4073
4074
4075# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4076#if defined(MFC_OpenACC)
4077# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4078!$acc atomic update
4079# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4080#elif defined(MFC_OpenMP)
4081# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4082!$omp atomic update
4083# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4084#endif
4085 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4086 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4087 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
4088
4089
4090# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4091#if defined(MFC_OpenACC)
4092# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4093!$acc atomic update
4094# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4095#elif defined(MFC_OpenMP)
4096# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4097!$omp atomic update
4098# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4099#endif
4100 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4101 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
4102 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
4103
4104
4105# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4106#if defined(MFC_OpenACC)
4107# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4108!$acc atomic update
4109# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4110#elif defined(MFC_OpenMP)
4111# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4112!$omp atomic update
4113# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4114#endif
4115 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4116 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
4117 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
4118 end do
4119 end if
4120
4121
4122# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4123#if defined(MFC_OpenACC)
4124# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4125!$acc atomic update
4126# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4127#elif defined(MFC_OpenMP)
4128# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4129!$omp atomic update
4130# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4131#endif
4132 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
4133 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
4134 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
4135
4136
4137# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4138#if defined(MFC_OpenACC)
4139# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4140!$acc atomic update
4141# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4142#elif defined(MFC_OpenMP)
4143# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4144!$omp atomic update
4145# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4146#endif
4147 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
4148 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
4149 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
4150
4151
4152# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4153#if defined(MFC_OpenACC)
4154# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4155!$acc atomic update
4156# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4157#elif defined(MFC_OpenMP)
4158# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4159!$omp atomic update
4160# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4161#endif
4162 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
4163 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j + 1)) &
4164 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j + 1))), kind=stp)
4165
4166
4167# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4168#if defined(MFC_OpenACC)
4169# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4170!$acc atomic update
4171# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4172#elif defined(MFC_OpenMP)
4173# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4174!$omp atomic update
4175# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4176#endif
4177 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
4178 & 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) &
4179 & *(1._wp/dx(j + 1))), kind=stp)
4180
4181
4182# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4183#if defined(MFC_OpenACC)
4184# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4185!$acc atomic update
4186# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4187#elif defined(MFC_OpenMP)
4188# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4189!$omp atomic update
4190# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4191#endif
4192 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4193 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
4194 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
4195
4196
4197# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4198#if defined(MFC_OpenACC)
4199# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4200!$acc atomic update
4201# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4202#elif defined(MFC_OpenMP)
4203# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4204!$omp atomic update
4205# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4206#endif
4207 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4208 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
4209 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
4210
4211
4212# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4213#if defined(MFC_OpenACC)
4214# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4215!$acc atomic update
4216# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4217#elif defined(MFC_OpenMP)
4218# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4219!$omp atomic update
4220# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4221#endif
4222 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
4223 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j)) &
4224 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j))), kind=stp)
4225
4226
4227# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4228#if defined(MFC_OpenACC)
4229# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4230!$acc atomic update
4231# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4232#elif defined(MFC_OpenMP)
4233# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4234!$omp atomic update
4235# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4236#endif
4237 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4238 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
4239 & *(1._wp/dx(j))), kind=stp)
4240 end do
4241 end do
4242 end do
4243
4244# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4245#if defined(MFC_OpenACC)
4246# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4247!$acc end parallel loop
4248# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4249#elif defined(MFC_OpenMP)
4250# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4251
4252# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4253!$omp end target teams loop
4254# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4255#endif
4256# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4257 end if
4258 else if (idir == 2) then
4259 if (p == 0) then
4260# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4261
4262# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4263
4264# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4265#if defined(MFC_OpenACC)
4266# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4267!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
4268# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4269!$acc& 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)
4270# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4271#elif defined(MFC_OpenMP)
4272# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4273
4274# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4275
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!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, &
4280# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4281!$omp& 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, &
4282# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4283!$omp& vflux_L_arr, vflux_R_arr)
4284# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4285#endif
4286# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4287 do l = 0, p
4288 do k = -1, n
4289 do j = 0, m
4290 if (viscous) then
4291 vflux_l_arr = 0._wp
4292 vflux_r_arr = 0._wp
4293
4294# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4295
4296# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4297#if defined(MFC_OpenACC)
4298# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4299!$acc loop seq
4300# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4301#elif defined(MFC_OpenMP)
4302# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4303
4304# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4305#endif
4306 do q = vidxb, vidxe
4307 ! x-direction contributions
4308
4309# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4310#if defined(MFC_OpenACC)
4311# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4312!$acc loop seq
4313# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4314#elif defined(MFC_OpenMP)
4315# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4316
4317# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4318#endif
4319 do i = -1, 1
4320 rho_l = 0._wp
4321
4322# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4323#if defined(MFC_OpenACC)
4324# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4325!$acc loop seq
4326# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4327#elif defined(MFC_OpenMP)
4328# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4329
4330# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4331#endif
4332 do r = 1, num_fluids
4333 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
4334 end do
4335 rho_sf_small(i) = rho_l
4336 end do
4337
4338 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
4339 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
4340 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
4341 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
4342 & l)/rho_sf_small(-1))
4343
4344 if (q > vidxb) then
4345 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
4346 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
4347 end if
4348 if (q < vidxe) then
4349 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
4350 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
4351 end if
4352
4353 ! y-direction contributions
4354
4355# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4356#if defined(MFC_OpenACC)
4357# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4358!$acc loop seq
4359# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4360#elif defined(MFC_OpenMP)
4361# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4362
4363# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4364#endif
4365 do i = -1, 1
4366 rho_l = 0._wp
4367
4368# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4369#if defined(MFC_OpenACC)
4370# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4371!$acc loop seq
4372# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4373#elif defined(MFC_OpenMP)
4374# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4375
4376# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4377#endif
4378 do r = 1, num_fluids
4379 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
4380 end do
4381 rho_sf_small(i) = rho_l
4382 end do
4383
4384 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
4385 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
4386 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
4387 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
4388 & l)/rho_sf_small(-1))
4389
4390 if (q > vidxb) then
4391 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
4392 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
4393 end if
4394 if (q < vidxe) then
4395 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
4396 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
4397 end if
4398 end do
4399 end if
4400
4401
4402# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4403#if defined(MFC_OpenACC)
4404# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4405!$acc loop seq
4406# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4407#elif defined(MFC_OpenMP)
4408# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4409
4410# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4411#endif
4412 do i = 1, num_fluids
4413 alpha_rho_l(i) = 0._wp
4414 alpha_rho_r(i) = 0._wp
4415 alpha_l(i) = 0._wp
4416 alpha_r(i) = 0._wp
4417 end do
4418
4419# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4420#if defined(MFC_OpenACC)
4421# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4422!$acc loop seq
4423# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4424#elif defined(MFC_OpenMP)
4425# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4426
4427# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4428#endif
4429 do i = 1, num_dims
4430 vel_l(i) = 0._wp
4431 vel_r(i) = 0._wp
4432 end do
4433
4434
4435# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4436#if defined(MFC_OpenACC)
4437# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4438!$acc loop seq
4439# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4440#elif defined(MFC_OpenMP)
4441# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4442
4443# 1405 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4444#endif
4445 do q = vidxb + 1, vidxe
4446
4447# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4448#if defined(MFC_OpenACC)
4449# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4450!$acc loop seq
4451# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4452#elif defined(MFC_OpenMP)
4453# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4454
4455# 1407 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4456#endif
4457 do i = 1, num_fluids
4458 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
4459 end do
4460
4461 if (num_fluids > 1) then
4462
4463# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4464#if defined(MFC_OpenACC)
4465# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4466!$acc loop seq
4467# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4468#elif defined(MFC_OpenMP)
4469# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4470
4471# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4472#endif
4473 do i = 1, num_fluids - 1
4474 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4475 end do
4476 else
4477 alpha_l(1) = 1._wp
4478 end if
4479
4480
4481# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4482#if defined(MFC_OpenACC)
4483# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4484!$acc loop seq
4485# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4486#elif defined(MFC_OpenMP)
4487# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4488
4489# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4490#endif
4491 do i = 1, num_dims
4492 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4493 end do
4494 end do
4495
4496
4497# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4498#if defined(MFC_OpenACC)
4499# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4500!$acc loop seq
4501# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4502#elif defined(MFC_OpenMP)
4503# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4504
4505# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4506#endif
4507 do q = vidxb, vidxe - 1
4508
4509# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4510#if defined(MFC_OpenACC)
4511# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4512!$acc loop seq
4513# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4514#elif defined(MFC_OpenMP)
4515# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4516
4517# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4518#endif
4519 do i = 1, num_fluids
4520 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
4521 end do
4522
4523 if (num_fluids > 1) then
4524
4525# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4526#if defined(MFC_OpenACC)
4527# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4528!$acc loop seq
4529# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4530#elif defined(MFC_OpenMP)
4531# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4532
4533# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4534#endif
4535 do i = 1, num_fluids - 1
4536 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4537 end do
4538 else
4539 alpha_r(1) = 1._wp
4540 end if
4541
4542
4543# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4544#if defined(MFC_OpenACC)
4545# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4546!$acc loop seq
4547# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4548#elif defined(MFC_OpenMP)
4549# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4550
4551# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4552#endif
4553 do i = 1, num_dims
4554 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4555 end do
4556 end do
4557
4558 if (num_fluids > 1) then
4559 alpha_l(num_fluids) = 1._wp
4560 alpha_r(num_fluids) = 1._wp
4561
4562
4563# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4564#if defined(MFC_OpenACC)
4565# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4566!$acc loop seq
4567# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4568#elif defined(MFC_OpenMP)
4569# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4570
4571# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4572#endif
4573 do i = 1, num_fluids - 1
4574 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
4575 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
4576 end do
4577 end if
4578
4579 rho_l = 0._wp; rho_r = 0._wp
4580 gamma_l = 0._wp; gamma_r = 0._wp
4581 pi_inf_l = 0._wp; pi_inf_r = 0._wp
4582
4583
4584# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4585#if defined(MFC_OpenACC)
4586# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4587!$acc loop seq
4588# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4589#elif defined(MFC_OpenMP)
4590# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4591
4592# 1464 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4593#endif
4594 do i = 1, num_fluids
4595 rho_l = rho_l + alpha_rho_l(i)
4596 gamma_l = gamma_l + alpha_l(i)*gammas(i)
4597 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
4598
4599 rho_r = rho_r + alpha_rho_r(i)
4600 gamma_r = gamma_r + alpha_r(i)*gammas(i)
4601 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
4602 end do
4603
4604
4605# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4606#if defined(MFC_OpenACC)
4607# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4608!$acc loop seq
4609# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4610#elif defined(MFC_OpenMP)
4611# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4612
4613# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4614#endif
4615 do i = 1, num_dims
4616 vel_l(i) = vel_l(i)/rho_l
4617 vel_r(i) = vel_r(i)/rho_r
4618 end do
4619
4620 if (viscous) then
4621 mu_l = 0._wp
4622 mu_r = 0._wp
4623
4624# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4625#if defined(MFC_OpenACC)
4626# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4627!$acc loop seq
4628# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4629#elif defined(MFC_OpenMP)
4630# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4631
4632# 1484 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4633#endif
4634 do i = 1, num_fluids
4635 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
4636 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
4637 end do
4638
4639
4640# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4641#if defined(MFC_OpenACC)
4642# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4643!$acc atomic update
4644# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4645#elif defined(MFC_OpenMP)
4646# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4647!$omp atomic update
4648# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4649#endif
4650 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4651 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4652
4653# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4654#if defined(MFC_OpenACC)
4655# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4656!$acc atomic update
4657# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4658#elif defined(MFC_OpenMP)
4659# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4660!$omp atomic update
4661# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4662#endif
4663 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4664 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
4665
4666
4667# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4668#if defined(MFC_OpenACC)
4669# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4670!$acc atomic update
4671# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4672#elif defined(MFC_OpenMP)
4673# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4674!$omp atomic update
4675# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4676#endif
4677 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4678 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
4679
4680# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4681#if defined(MFC_OpenACC)
4682# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4683!$acc atomic update
4684# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4685#elif defined(MFC_OpenMP)
4686# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4687!$omp atomic update
4688# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4689#endif
4690 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4691 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
4692
4693
4694# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4695#if defined(MFC_OpenACC)
4696# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4697!$acc atomic update
4698# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4699#elif defined(MFC_OpenMP)
4700# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4701!$omp atomic update
4702# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4703#endif
4704 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4705 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4706
4707# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4708#if defined(MFC_OpenACC)
4709# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4710!$acc atomic update
4711# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4712#elif defined(MFC_OpenMP)
4713# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4714!$omp atomic update
4715# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4716#endif
4717 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4718 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
4719
4720
4721# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4722#if defined(MFC_OpenACC)
4723# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4724!$acc atomic update
4725# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4726#elif defined(MFC_OpenMP)
4727# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4728!$omp atomic update
4729# 1511 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4730#endif
4731 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4732 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
4733
4734# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4735#if defined(MFC_OpenACC)
4736# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4737!$acc atomic update
4738# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4739#elif defined(MFC_OpenMP)
4740# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4741!$omp atomic update
4742# 1514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4743#endif
4744 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4745 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
4746
4747
4748# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4749#if defined(MFC_OpenACC)
4750# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4751!$acc atomic update
4752# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4753#elif defined(MFC_OpenMP)
4754# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4755!$omp atomic update
4756# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4757#endif
4758 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4759 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4760
4761# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4762#if defined(MFC_OpenACC)
4763# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4764!$acc atomic update
4765# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4766#elif defined(MFC_OpenMP)
4767# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4768!$omp atomic update
4769# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4770#endif
4771 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4772 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4773
4774
4775# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4776#if defined(MFC_OpenACC)
4777# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4778!$acc atomic update
4779# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4780#elif defined(MFC_OpenMP)
4781# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4782!$omp atomic update
4783# 1525 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4784#endif
4785 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4786 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
4787
4788# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4789#if defined(MFC_OpenACC)
4790# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4791!$acc atomic update
4792# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4793#elif defined(MFC_OpenMP)
4794# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4795!$omp atomic update
4796# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4797#endif
4798 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4799 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
4800
4801
4802# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4803#if defined(MFC_OpenACC)
4804# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4805!$acc atomic update
4806# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4807#elif defined(MFC_OpenMP)
4808# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4809!$omp atomic update
4810# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4811#endif
4812 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4813 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4814
4815# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4816#if defined(MFC_OpenACC)
4817# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4818!$acc atomic update
4819# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4820#elif defined(MFC_OpenMP)
4821# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4822!$omp atomic update
4823# 1535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4824#endif
4825 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4826 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
4827
4828
4829# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4830#if defined(MFC_OpenACC)
4831# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4832!$acc atomic update
4833# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4834#elif defined(MFC_OpenMP)
4835# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4836!$omp atomic update
4837# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4838#endif
4839 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4840 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
4841
4842# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4843#if defined(MFC_OpenACC)
4844# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4845!$acc atomic update
4846# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4847#elif defined(MFC_OpenMP)
4848# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4849!$omp atomic update
4850# 1542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4851#endif
4852 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4853 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
4854 end if
4855
4856 e_l = 0._wp; e_r = 0._wp
4857 f_l = 0._wp; f_r = 0._wp
4858
4859
4860# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4861#if defined(MFC_OpenACC)
4862# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4863!$acc loop seq
4864# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4865#elif defined(MFC_OpenMP)
4866# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4867
4868# 1550 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4869#endif
4870 do q = vidxb + 1, vidxe
4871 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4872 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
4873 end do
4874
4875
4876# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4877#if defined(MFC_OpenACC)
4878# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4879!$acc loop seq
4880# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4881#elif defined(MFC_OpenMP)
4882# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4883
4884# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4885#endif
4886 do q = vidxb, vidxe - 1
4887 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4888 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
4889 end do
4890
4891 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, &
4892 & vel_r, pres_l, pres_r, cfl)
4893
4894
4895# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4896#if defined(MFC_OpenACC)
4897# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4898!$acc loop seq
4899# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4900#elif defined(MFC_OpenMP)
4901# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4902
4903# 1565 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4904#endif
4905 do i = 1, num_fluids
4906
4907# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4908#if defined(MFC_OpenACC)
4909# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4910!$acc atomic update
4911# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4912#elif defined(MFC_OpenMP)
4913# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4914!$omp atomic update
4915# 1567 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4916#endif
4917 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
4918 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4919 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
4920
4921
4922# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4923#if defined(MFC_OpenACC)
4924# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4925!$acc atomic update
4926# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4927#elif defined(MFC_OpenMP)
4928# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4929!$omp atomic update
4930# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4931#endif
4932 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
4933 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
4934 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
4935 end do
4936
4937 if (num_fluids > 1) then
4938
4939# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4940#if defined(MFC_OpenACC)
4941# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4942!$acc loop seq
4943# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4944#elif defined(MFC_OpenMP)
4945# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4946
4947# 1579 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4948#endif
4949 do i = 1, num_fluids - 1
4950
4951# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4952#if defined(MFC_OpenACC)
4953# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4954!$acc atomic update
4955# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4956#elif defined(MFC_OpenMP)
4957# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4958!$omp atomic update
4959# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4960#endif
4961 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4962 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4963 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
4964
4965
4966# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4967#if defined(MFC_OpenACC)
4968# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4969!$acc atomic update
4970# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4971#elif defined(MFC_OpenMP)
4972# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4973!$omp atomic update
4974# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4975#endif
4976 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4977 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4978 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4979
4980
4981# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4982#if defined(MFC_OpenACC)
4983# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4984!$acc atomic update
4985# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4986#elif defined(MFC_OpenMP)
4987# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4988!$omp atomic update
4989# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4990#endif
4991 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4992 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
4993 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
4994
4995
4996# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4997#if defined(MFC_OpenACC)
4998# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4999!$acc atomic update
5000# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5001#elif defined(MFC_OpenMP)
5002# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5003!$omp atomic update
5004# 1596 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5005#endif
5006 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5007 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
5008 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
5009 end do
5010 end if
5011
5012
5013# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5014#if defined(MFC_OpenACC)
5015# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5016!$acc atomic update
5017# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5018#elif defined(MFC_OpenMP)
5019# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5020!$omp atomic update
5021# 1603 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5022#endif
5023 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5024 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
5025 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
5026
5027
5028# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5029#if defined(MFC_OpenACC)
5030# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5031!$acc atomic update
5032# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5033#elif defined(MFC_OpenMP)
5034# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5035!$omp atomic update
5036# 1608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5037#endif
5038 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5039 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
5040 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
5041
5042
5043# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5044#if defined(MFC_OpenACC)
5045# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5046!$acc atomic update
5047# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5048#elif defined(MFC_OpenMP)
5049# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5050!$omp atomic update
5051# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5052#endif
5053 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5054 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
5055 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
5056
5057
5058# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5059#if defined(MFC_OpenACC)
5060# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5061!$acc atomic update
5062# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5063#elif defined(MFC_OpenMP)
5064# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5065!$omp atomic update
5066# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5067#endif
5068 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5069 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
5070 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
5071
5072
5073# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5074#if defined(MFC_OpenACC)
5075# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5076!$acc atomic update
5077# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5078#elif defined(MFC_OpenMP)
5079# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5080!$omp atomic update
5081# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5082#endif
5083 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5084 & 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) &
5085 & )*(1._wp/dy(k)), kind=stp)
5086
5087
5088# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5089#if defined(MFC_OpenACC)
5090# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5091!$acc atomic update
5092# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5093#elif defined(MFC_OpenMP)
5094# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5095!$omp atomic update
5096# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5097#endif
5098 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5099 & 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) &
5100 & *(1._wp/dy(k)), kind=stp)
5101
5102
5103# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5104#if defined(MFC_OpenACC)
5105# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5106!$acc loop seq
5107# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5108#elif defined(MFC_OpenMP)
5109# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5110
5111# 1633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5112#endif
5113 do i = 1, num_fluids
5114
5115# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5116#if defined(MFC_OpenACC)
5117# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5118!$acc atomic update
5119# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5120#elif defined(MFC_OpenMP)
5121# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5122!$omp atomic update
5123# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5124#endif
5125 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
5126 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5127 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
5128
5129# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5130#if defined(MFC_OpenACC)
5131# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5132!$acc atomic update
5133# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5134#elif defined(MFC_OpenMP)
5135# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5136!$omp atomic update
5137# 1639 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5138#endif
5139 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
5140 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
5141 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
5142 end do
5143
5144 if (num_fluids > 1) then
5145
5146# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5147#if defined(MFC_OpenACC)
5148# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5149!$acc loop seq
5150# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5151#elif defined(MFC_OpenMP)
5152# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5153
5154# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5155#endif
5156 do i = 1, num_fluids - 1
5157
5158# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5159#if defined(MFC_OpenACC)
5160# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5161!$acc atomic update
5162# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5163#elif defined(MFC_OpenMP)
5164# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5165!$omp atomic update
5166# 1648 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5167#endif
5168 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5169 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5170 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
5171
5172
5173# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5174#if defined(MFC_OpenACC)
5175# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5176!$acc atomic update
5177# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5178#elif defined(MFC_OpenMP)
5179# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5180!$omp atomic update
5181# 1653 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5182#endif
5183 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5184 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5185 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
5186
5187
5188# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5189#if defined(MFC_OpenACC)
5190# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5191!$acc atomic update
5192# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5193#elif defined(MFC_OpenMP)
5194# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5195!$omp atomic update
5196# 1658 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5197#endif
5198 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5199 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
5200 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
5201
5202
5203# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5204#if defined(MFC_OpenACC)
5205# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5206!$acc atomic update
5207# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5208#elif defined(MFC_OpenMP)
5209# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5210!$omp atomic update
5211# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5212#endif
5213 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5214 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
5215 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
5216 end do
5217 end if
5218
5219# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5220#if defined(MFC_OpenACC)
5221# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5222!$acc atomic update
5223# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5224#elif defined(MFC_OpenMP)
5225# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5226!$omp atomic update
5227# 1669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5228#endif
5229 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5230 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
5231 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
5232
5233# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5234#if defined(MFC_OpenACC)
5235# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5236!$acc atomic update
5237# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5238#elif defined(MFC_OpenMP)
5239# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5240!$omp atomic update
5241# 1673 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5242#endif
5243 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5244 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
5245 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
5246
5247# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5248#if defined(MFC_OpenACC)
5249# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5250!$acc atomic update
5251# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5252#elif defined(MFC_OpenMP)
5253# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5254!$omp atomic update
5255# 1677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5256#endif
5257 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5258 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
5259 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
5260
5261# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5262#if defined(MFC_OpenACC)
5263# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5264!$acc atomic update
5265# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5266#elif defined(MFC_OpenMP)
5267# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5268!$omp atomic update
5269# 1681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5270#endif
5271 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5272 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
5273 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
5274
5275# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5276#if defined(MFC_OpenACC)
5277# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5278!$acc atomic update
5279# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5280#elif defined(MFC_OpenMP)
5281# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5282!$omp atomic update
5283# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5284#endif
5285 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5286 & 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) &
5287 & )*(1._wp/dy(k)), kind=stp)
5288
5289# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5290#if defined(MFC_OpenACC)
5291# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5292!$acc atomic update
5293# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5294#elif defined(MFC_OpenMP)
5295# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5296!$omp atomic update
5297# 1689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5298#endif
5299 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5300 & 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) &
5301 & *(1._wp/dy(k)), kind=stp)
5302 end do
5303 end do
5304 end do
5305
5306# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5307#if defined(MFC_OpenACC)
5308# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5309!$acc end parallel loop
5310# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5311#elif defined(MFC_OpenMP)
5312# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5313
5314# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5315!$omp end target teams loop
5316# 1696 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5317#endif
5318# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5319 else
5320# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5321
5322# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5323
5324# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5325#if defined(MFC_OpenACC)
5326# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5327!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
5328# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5329!$acc& alpha_rho_L, alpha_rho_R, F_L, F_R, E_L, E_R, cfl, dvel_small, rho_sf_small, vflux_L_arr, vflux_R_arr)
5330# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5331#elif defined(MFC_OpenMP)
5332# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5333
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!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, &
5340# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5341!$omp& 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, &
5342# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5343!$omp& vflux_L_arr, vflux_R_arr)
5344# 1700 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5345#endif
5346# 1703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5347 do l = 0, p
5348 do k = -1, n
5349 do j = 0, m
5350 if (viscous) then
5351 vflux_l_arr = 0._wp
5352 vflux_r_arr = 0._wp
5353
5354# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5355
5356# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5357#if defined(MFC_OpenACC)
5358# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5359!$acc loop seq
5360# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5361#elif defined(MFC_OpenMP)
5362# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5363
5364# 1717 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5365#endif
5366 do q = vidxb, vidxe
5367 ! x-direction contributions
5368
5369# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5370#if defined(MFC_OpenACC)
5371# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5372!$acc loop seq
5373# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5374#elif defined(MFC_OpenMP)
5375# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5376
5377# 1720 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5378#endif
5379 do i = -1, 1
5380 rho_l = 0._wp
5381
5382# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5383#if defined(MFC_OpenACC)
5384# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5385!$acc loop seq
5386# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5387#elif defined(MFC_OpenMP)
5388# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5389
5390# 1723 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5391#endif
5392 do r = 1, num_fluids
5393 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
5394 end do
5395 rho_sf_small(i) = rho_l
5396 end do
5397
5398 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
5399 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
5400 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
5401 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
5402 & l)/rho_sf_small(-1))
5403
5404 if (q > vidxb) then
5405 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
5406 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
5407 end if
5408 if (q < vidxe) then
5409 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
5410 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
5411 end if
5412
5413 ! y-direction contributions
5414
5415# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5416#if defined(MFC_OpenACC)
5417# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5418!$acc loop seq
5419# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5420#elif defined(MFC_OpenMP)
5421# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5422
5423# 1746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5424#endif
5425 do i = -1, 1
5426 rho_l = 0._wp
5427
5428# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5429#if defined(MFC_OpenACC)
5430# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5431!$acc loop seq
5432# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5433#elif defined(MFC_OpenMP)
5434# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5435
5436# 1749 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5437#endif
5438 do r = 1, num_fluids
5439 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
5440 end do
5441 rho_sf_small(i) = rho_l
5442 end do
5443
5444 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
5445 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
5446 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
5447 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
5448 & l)/rho_sf_small(-1))
5449 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1 + q, &
5450 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1 + q, &
5451 & l)/rho_sf_small(-1))
5452
5453 if (q > vidxb) then
5454 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
5455 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
5456 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
5457 end if
5458 if (q < vidxe) then
5459 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
5460 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
5461 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
5462 end if
5463
5464 ! z-direction contributions
5465
5466# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5467#if defined(MFC_OpenACC)
5468# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5469!$acc loop seq
5470# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5471#elif defined(MFC_OpenMP)
5472# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5473
5474# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5475#endif
5476 do i = -1, 1
5477 rho_l = 0._wp
5478
5479# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5480#if defined(MFC_OpenACC)
5481# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5482!$acc loop seq
5483# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5484#elif defined(MFC_OpenMP)
5485# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5486
5487# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5488#endif
5489 do r = 1, num_fluids
5490 rho_l = rho_l + q_cons_vf(r)%sf(j, k + q, l + i)
5491 end do
5492 rho_sf_small(i) = rho_l
5493 end do
5494
5495 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5496 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5497 & l - 1)/rho_sf_small(-1))
5498 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5499 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5500 & l - 1)/rho_sf_small(-1))
5501 if (q > vidxb) then
5502 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
5503 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
5504 end if
5505 if (q < vidxe) then
5506 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
5507 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
5508 end if
5509 end do
5510 end if
5511
5512
5513# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5514#if defined(MFC_OpenACC)
5515# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5516!$acc loop seq
5517# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5518#elif defined(MFC_OpenMP)
5519# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5520
5521# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5522#endif
5523 do i = 1, num_fluids
5524 alpha_rho_l(i) = 0._wp
5525 alpha_rho_r(i) = 0._wp
5526 alpha_l(i) = 0._wp
5527 alpha_r(i) = 0._wp
5528 end do
5529
5530# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5531#if defined(MFC_OpenACC)
5532# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5533!$acc loop seq
5534# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5535#elif defined(MFC_OpenMP)
5536# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5537
5538# 1811 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5539#endif
5540 do i = 1, num_dims
5541 vel_l(i) = 0._wp
5542 vel_r(i) = 0._wp
5543 end do
5544
5545
5546# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5547#if defined(MFC_OpenACC)
5548# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5549!$acc loop seq
5550# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5551#elif defined(MFC_OpenMP)
5552# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5553
5554# 1817 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5555#endif
5556 do q = vidxb + 1, vidxe
5557
5558# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5559#if defined(MFC_OpenACC)
5560# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5561!$acc loop seq
5562# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5563#elif defined(MFC_OpenMP)
5564# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5565
5566# 1819 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5567#endif
5568 do i = 1, num_fluids
5569 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
5570 end do
5571
5572 if (num_fluids > 1) then
5573
5574# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5575#if defined(MFC_OpenACC)
5576# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5577!$acc loop seq
5578# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5579#elif defined(MFC_OpenMP)
5580# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5581
5582# 1825 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5583#endif
5584 do i = 1, num_fluids - 1
5585 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5586 end do
5587 else
5588 alpha_l(1) = 1._wp
5589 end if
5590
5591
5592# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5593#if defined(MFC_OpenACC)
5594# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5595!$acc loop seq
5596# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5597#elif defined(MFC_OpenMP)
5598# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5599
5600# 1833 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5601#endif
5602 do i = 1, num_dims
5603 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5604 end do
5605 end do
5606
5607
5608# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5609#if defined(MFC_OpenACC)
5610# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5611!$acc loop seq
5612# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5613#elif defined(MFC_OpenMP)
5614# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5615
5616# 1839 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5617#endif
5618 do q = vidxb, vidxe - 1
5619
5620# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5621#if defined(MFC_OpenACC)
5622# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5623!$acc loop seq
5624# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5625#elif defined(MFC_OpenMP)
5626# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5627
5628# 1841 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5629#endif
5630 do i = 1, num_fluids
5631 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
5632 end do
5633
5634 if (num_fluids > 1) then
5635
5636# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5637#if defined(MFC_OpenACC)
5638# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5639!$acc loop seq
5640# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5641#elif defined(MFC_OpenMP)
5642# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5643
5644# 1847 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5645#endif
5646 do i = 1, num_fluids - 1
5647 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5648 end do
5649 else
5650 alpha_r(1) = 1._wp
5651 end if
5652
5653
5654# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5655#if defined(MFC_OpenACC)
5656# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5657!$acc loop seq
5658# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5659#elif defined(MFC_OpenMP)
5660# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5661
5662# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5663#endif
5664 do i = 1, num_dims
5665 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5666 end do
5667 end do
5668
5669 if (num_fluids > 1) then
5670 alpha_l(num_fluids) = 1._wp
5671 alpha_r(num_fluids) = 1._wp
5672
5673
5674# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5675#if defined(MFC_OpenACC)
5676# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5677!$acc loop seq
5678# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5679#elif defined(MFC_OpenMP)
5680# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5681
5682# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5683#endif
5684 do i = 1, num_fluids - 1
5685 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
5686 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
5687 end do
5688 end if
5689
5690 rho_l = 0._wp; rho_r = 0._wp
5691 gamma_l = 0._wp; gamma_r = 0._wp
5692 pi_inf_l = 0._wp; pi_inf_r = 0._wp
5693
5694
5695# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5696#if defined(MFC_OpenACC)
5697# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5698!$acc loop seq
5699# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5700#elif defined(MFC_OpenMP)
5701# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5702
5703# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5704#endif
5705 do i = 1, num_fluids
5706 rho_l = rho_l + alpha_rho_l(i)
5707 gamma_l = gamma_l + alpha_l(i)*gammas(i)
5708 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
5709
5710 rho_r = rho_r + alpha_rho_r(i)
5711 gamma_r = gamma_r + alpha_r(i)*gammas(i)
5712 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
5713 end do
5714
5715
5716# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5717#if defined(MFC_OpenACC)
5718# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5719!$acc loop seq
5720# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5721#elif defined(MFC_OpenMP)
5722# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5723
5724# 1887 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5725#endif
5726 do i = 1, num_dims
5727 vel_l(i) = vel_l(i)/rho_l
5728 vel_r(i) = vel_r(i)/rho_r
5729 end do
5730
5731 if (viscous) then
5732 mu_l = 0._wp
5733 mu_r = 0._wp
5734
5735# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5736#if defined(MFC_OpenACC)
5737# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5738!$acc loop seq
5739# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5740#elif defined(MFC_OpenMP)
5741# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5742
5743# 1896 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5744#endif
5745 do i = 1, num_fluids
5746 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
5747 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
5748 end do
5749
5750
5751# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5752#if defined(MFC_OpenACC)
5753# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5754!$acc atomic update
5755# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5756#elif defined(MFC_OpenMP)
5757# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5758!$omp atomic update
5759# 1902 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5760#endif
5761 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5762 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5763
5764# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5765#if defined(MFC_OpenACC)
5766# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5767!$acc atomic update
5768# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5769#elif defined(MFC_OpenMP)
5770# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5771!$omp atomic update
5772# 1905 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5773#endif
5774 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5775 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
5776
5777
5778# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5779#if defined(MFC_OpenACC)
5780# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5781!$acc atomic update
5782# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5783#elif defined(MFC_OpenMP)
5784# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5785!$omp atomic update
5786# 1909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5787#endif
5788 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5789 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
5790
5791# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5792#if defined(MFC_OpenACC)
5793# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5794!$acc atomic update
5795# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5796#elif defined(MFC_OpenMP)
5797# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5798!$omp atomic update
5799# 1912 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5800#endif
5801 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5802 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
5803
5804
5805# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5806#if defined(MFC_OpenACC)
5807# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5808!$acc atomic update
5809# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5810#elif defined(MFC_OpenMP)
5811# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5812!$omp atomic update
5813# 1916 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5814#endif
5815 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5816 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5817
5818# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5819#if defined(MFC_OpenACC)
5820# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5821!$acc atomic update
5822# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5823#elif defined(MFC_OpenMP)
5824# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5825!$omp atomic update
5826# 1919 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5827#endif
5828 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5829 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
5830
5831
5832# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5833#if defined(MFC_OpenACC)
5834# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5835!$acc atomic update
5836# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5837#elif defined(MFC_OpenMP)
5838# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5839!$omp atomic update
5840# 1923 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5841#endif
5842 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5843 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
5844
5845# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5846#if defined(MFC_OpenACC)
5847# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5848!$acc atomic update
5849# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5850#elif defined(MFC_OpenMP)
5851# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5852!$omp atomic update
5853# 1926 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5854#endif
5855 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5856 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
5857
5858
5859# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5860#if defined(MFC_OpenACC)
5861# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5862!$acc atomic update
5863# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5864#elif defined(MFC_OpenMP)
5865# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5866!$omp atomic update
5867# 1930 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5868#endif
5869 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5870 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5871
5872# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5873#if defined(MFC_OpenACC)
5874# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5875!$acc atomic update
5876# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5877#elif defined(MFC_OpenMP)
5878# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5879!$omp atomic update
5880# 1933 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5881#endif
5882 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5883 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k + 1)), kind=stp)
5884
5885
5886# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5887#if defined(MFC_OpenACC)
5888# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5889!$acc atomic update
5890# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5891#elif defined(MFC_OpenMP)
5892# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5893!$omp atomic update
5894# 1937 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5895#endif
5896 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5897 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k)), kind=stp)
5898
5899# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5900#if defined(MFC_OpenACC)
5901# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5902!$acc atomic update
5903# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5904#elif defined(MFC_OpenMP)
5905# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5906!$omp atomic update
5907# 1940 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5908#endif
5909 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5910 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k)), kind=stp)
5911
5912
5913# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5914#if defined(MFC_OpenACC)
5915# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5916!$acc atomic update
5917# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5918#elif defined(MFC_OpenMP)
5919# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5920!$omp atomic update
5921# 1944 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5922#endif
5923 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5924 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5925
5926# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5927#if defined(MFC_OpenACC)
5928# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5929!$acc atomic update
5930# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5931#elif defined(MFC_OpenMP)
5932# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5933!$omp atomic update
5934# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5935#endif
5936 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5937 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k + 1)), kind=stp)
5938
5939
5940# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5941#if defined(MFC_OpenACC)
5942# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5943!$acc atomic update
5944# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5945#elif defined(MFC_OpenMP)
5946# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5947!$omp atomic update
5948# 1951 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5949#endif
5950 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5951 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k)), kind=stp)
5952
5953# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5954#if defined(MFC_OpenACC)
5955# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5956!$acc atomic update
5957# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5958#elif defined(MFC_OpenMP)
5959# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5960!$omp atomic update
5961# 1954 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5962#endif
5963 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5964 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k)), kind=stp)
5965
5966
5967# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5968#if defined(MFC_OpenACC)
5969# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5970!$acc atomic update
5971# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5972#elif defined(MFC_OpenMP)
5973# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5974!$omp atomic update
5975# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5976#endif
5977 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5978 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
5979
5980# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5981#if defined(MFC_OpenACC)
5982# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5983!$acc atomic update
5984# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5985#elif defined(MFC_OpenMP)
5986# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5987!$omp atomic update
5988# 1961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5989#endif
5990 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5991 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
5992
5993
5994# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5995#if defined(MFC_OpenACC)
5996# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5997!$acc atomic update
5998# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5999#elif defined(MFC_OpenMP)
6000# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6001!$omp atomic update
6002# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6003#endif
6004 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6005 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
6006
6007# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6008#if defined(MFC_OpenACC)
6009# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6010!$acc atomic update
6011# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6012#elif defined(MFC_OpenMP)
6013# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6014!$omp atomic update
6015# 1968 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6016#endif
6017 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6018 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6019
6020
6021# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6022#if defined(MFC_OpenACC)
6023# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6024!$acc atomic update
6025# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6026#elif defined(MFC_OpenMP)
6027# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6028!$omp atomic update
6029# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6030#endif
6031 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6032 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
6033
6034# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6035#if defined(MFC_OpenACC)
6036# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6037!$acc atomic update
6038# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6039#elif defined(MFC_OpenMP)
6040# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6041!$omp atomic update
6042# 1975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6043#endif
6044 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6045 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6046
6047
6048# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6049#if defined(MFC_OpenACC)
6050# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6051!$acc atomic update
6052# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6053#elif defined(MFC_OpenMP)
6054# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6055!$omp atomic update
6056# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6057#endif
6058 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6059 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
6060
6061# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6062#if defined(MFC_OpenACC)
6063# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6064!$acc atomic update
6065# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6066#elif defined(MFC_OpenMP)
6067# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6068!$omp atomic update
6069# 1982 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6070#endif
6071 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6072 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6073 end if
6074
6075 e_l = 0._wp; e_r = 0._wp
6076 f_l = 0._wp; f_r = 0._wp
6077
6078
6079# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6080#if defined(MFC_OpenACC)
6081# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6082!$acc loop seq
6083# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6084#elif defined(MFC_OpenMP)
6085# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6086
6087# 1990 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6088#endif
6089 do q = vidxb + 1, vidxe
6090 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
6091 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
6092 end do
6093
6094
6095# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6096#if defined(MFC_OpenACC)
6097# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6098!$acc loop seq
6099# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6100#elif defined(MFC_OpenMP)
6101# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6102
6103# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6104#endif
6105 do q = vidxb, vidxe - 1
6106 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
6107 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
6108 end do
6109
6110 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, &
6111 & vel_r, pres_l, pres_r, cfl)
6112
6113
6114# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6115#if defined(MFC_OpenACC)
6116# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6117!$acc loop seq
6118# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6119#elif defined(MFC_OpenMP)
6120# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6121
6122# 2005 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6123#endif
6124 do i = 1, num_fluids
6125
6126# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6127#if defined(MFC_OpenACC)
6128# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6129!$acc atomic update
6130# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6131#elif defined(MFC_OpenMP)
6132# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6133!$omp atomic update
6134# 2007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6135#endif
6136 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6137 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6138 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
6139
6140
6141# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6142#if defined(MFC_OpenACC)
6143# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6144!$acc atomic update
6145# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6146#elif defined(MFC_OpenMP)
6147# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6148!$omp atomic update
6149# 2012 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6150#endif
6151 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6152 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
6153 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
6154 end do
6155
6156 if (num_fluids > 1) then
6157
6158# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6159#if defined(MFC_OpenACC)
6160# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6161!$acc loop seq
6162# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6163#elif defined(MFC_OpenMP)
6164# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6165
6166# 2019 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6167#endif
6168 do i = 1, num_fluids - 1
6169
6170# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6171#if defined(MFC_OpenACC)
6172# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6173!$acc atomic update
6174# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6175#elif defined(MFC_OpenMP)
6176# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6177!$omp atomic update
6178# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6179#endif
6180 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6181 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6182 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
6183
6184
6185# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6186#if defined(MFC_OpenACC)
6187# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6188!$acc atomic update
6189# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6190#elif defined(MFC_OpenMP)
6191# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6192!$omp atomic update
6193# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6194#endif
6195 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6196 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6197 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
6198
6199
6200# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6201#if defined(MFC_OpenACC)
6202# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6203!$acc atomic update
6204# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6205#elif defined(MFC_OpenMP)
6206# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6207!$omp atomic update
6208# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6209#endif
6210 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6211 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
6212 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
6213
6214
6215# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6216#if defined(MFC_OpenACC)
6217# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6218!$acc atomic update
6219# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6220#elif defined(MFC_OpenMP)
6221# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6222!$omp atomic update
6223# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6224#endif
6225 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6226 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6227 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6228 end do
6229 end if
6230
6231
6232# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6233#if defined(MFC_OpenACC)
6234# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6235!$acc atomic update
6236# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6237#elif defined(MFC_OpenMP)
6238# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6239!$omp atomic update
6240# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6241#endif
6242 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6243 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
6244 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
6245
6246
6247# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6248#if defined(MFC_OpenACC)
6249# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6250!$acc atomic update
6251# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6252#elif defined(MFC_OpenMP)
6253# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6254!$omp atomic update
6255# 2048 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6256#endif
6257 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6258 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
6259 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
6260
6261
6262# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6263#if defined(MFC_OpenACC)
6264# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6265!$acc atomic update
6266# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6267#elif defined(MFC_OpenMP)
6268# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6269!$omp atomic update
6270# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6271#endif
6272 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6273 & l) + real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k + 1)) &
6274 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dy(k + 1)), kind=stp)
6275
6276
6277# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6278#if defined(MFC_OpenACC)
6279# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6280!$acc atomic update
6281# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6282#elif defined(MFC_OpenMP)
6283# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6284!$omp atomic update
6285# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6286#endif
6287 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6288 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
6289 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
6290
6291
6292# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6293#if defined(MFC_OpenACC)
6294# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6295!$acc atomic update
6296# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6297#elif defined(MFC_OpenMP)
6298# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6299!$omp atomic update
6300# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6301#endif
6302 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6303 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
6304 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
6305
6306
6307# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6308#if defined(MFC_OpenACC)
6309# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6310!$acc atomic update
6311# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6312#elif defined(MFC_OpenMP)
6313# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6314!$omp atomic update
6315# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6316#endif
6317 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6318 & 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) &
6319 & )*(1._wp/dy(k)), kind=stp)
6320
6321
6322# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6323#if defined(MFC_OpenACC)
6324# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6325!$acc atomic update
6326# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6327#elif defined(MFC_OpenMP)
6328# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6329!$omp atomic update
6330# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6331#endif
6332 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6333 & 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) &
6334 & )*(1._wp/dy(k)), kind=stp)
6335
6336
6337# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6338#if defined(MFC_OpenACC)
6339# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6340!$acc atomic update
6341# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6342#elif defined(MFC_OpenMP)
6343# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6344!$omp atomic update
6345# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6346#endif
6347 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6348 & 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) &
6349 & *(1._wp/dy(k)), kind=stp)
6350
6351
6352# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6353#if defined(MFC_OpenACC)
6354# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6355!$acc loop seq
6356# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6357#elif defined(MFC_OpenMP)
6358# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6359
6360# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6361#endif
6362 do i = 1, num_fluids
6363
6364# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6365#if defined(MFC_OpenACC)
6366# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6367!$acc atomic update
6368# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6369#elif defined(MFC_OpenMP)
6370# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6371!$omp atomic update
6372# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6373#endif
6374 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6375 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6376 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
6377
6378
6379# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6380#if defined(MFC_OpenACC)
6381# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6382!$acc atomic update
6383# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6384#elif defined(MFC_OpenMP)
6385# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6386!$omp atomic update
6387# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6388#endif
6389 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6390 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
6391 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
6392 end do
6393
6394 if (num_fluids > 1) then
6395
6396# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6397#if defined(MFC_OpenACC)
6398# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6399!$acc loop seq
6400# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6401#elif defined(MFC_OpenMP)
6402# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6403
6404# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6405#endif
6406 do i = 1, num_fluids - 1
6407
6408# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6409#if defined(MFC_OpenACC)
6410# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6411!$acc atomic update
6412# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6413#elif defined(MFC_OpenMP)
6414# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6415!$omp atomic update
6416# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6417#endif
6418 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6419 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6420 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
6421
6422
6423# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6424#if defined(MFC_OpenACC)
6425# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6426!$acc atomic update
6427# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6428#elif defined(MFC_OpenMP)
6429# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6430!$omp atomic update
6431# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6432#endif
6433 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6434 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6435 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6436
6437
6438# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6439#if defined(MFC_OpenACC)
6440# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6441!$acc atomic update
6442# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6443#elif defined(MFC_OpenMP)
6444# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6445!$omp atomic update
6446# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6447#endif
6448 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6449 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
6450 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
6451
6452
6453# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6454#if defined(MFC_OpenACC)
6455# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6456!$acc atomic update
6457# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6458#elif defined(MFC_OpenMP)
6459# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6460!$omp atomic update
6461# 2114 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6462#endif
6463 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6464 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6465 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6466 end do
6467 end if
6468
6469
6470# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6471#if defined(MFC_OpenACC)
6472# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6473!$acc atomic update
6474# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6475#elif defined(MFC_OpenMP)
6476# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6477!$omp atomic update
6478# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6479#endif
6480 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6481 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
6482 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
6483
6484
6485# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6486#if defined(MFC_OpenACC)
6487# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6488!$acc atomic update
6489# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6490#elif defined(MFC_OpenMP)
6491# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6492!$omp atomic update
6493# 2126 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6494#endif
6495 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6496 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
6497 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
6498
6499
6500# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6501#if defined(MFC_OpenACC)
6502# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6503!$acc atomic update
6504# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6505#elif defined(MFC_OpenMP)
6506# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6507!$omp atomic update
6508# 2131 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6509#endif
6510 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6511 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k + 1)) &
6512 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dy(k + 1)), kind=stp)
6513
6514
6515# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6516#if defined(MFC_OpenACC)
6517# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6518!$acc atomic update
6519# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6520#elif defined(MFC_OpenMP)
6521# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6522!$omp atomic update
6523# 2136 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6524#endif
6525 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6526 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
6527 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
6528
6529
6530# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6531#if defined(MFC_OpenACC)
6532# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6533!$acc atomic update
6534# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6535#elif defined(MFC_OpenMP)
6536# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6537!$omp atomic update
6538# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6539#endif
6540 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6541 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
6542 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
6543
6544
6545# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6546#if defined(MFC_OpenACC)
6547# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6548!$acc atomic update
6549# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6550#elif defined(MFC_OpenMP)
6551# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6552!$omp atomic update
6553# 2146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6554#endif
6555 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6556 & 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) &
6557 & )*(1._wp/dy(k)), kind=stp)
6558
6559
6560# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6561#if defined(MFC_OpenACC)
6562# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6563!$acc atomic update
6564# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6565#elif defined(MFC_OpenMP)
6566# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6567!$omp atomic update
6568# 2151 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6569#endif
6570 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6571 & 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) &
6572 & )*(1._wp/dy(k)), kind=stp)
6573
6574
6575# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6576#if defined(MFC_OpenACC)
6577# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6578!$acc atomic update
6579# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6580#elif defined(MFC_OpenMP)
6581# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6582!$omp atomic update
6583# 2156 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6584#endif
6585 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6586 & 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) &
6587 & *(1._wp/dy(k)), kind=stp)
6588 end do
6589 end do
6590 end do
6591
6592# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6593#if defined(MFC_OpenACC)
6594# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6595!$acc end parallel loop
6596# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6597#elif defined(MFC_OpenMP)
6598# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6599
6600# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6601!$omp end target teams loop
6602# 2163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6603#endif
6604# 2165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6605 end if
6606 else if (idir == 3) then
6607# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6608
6609# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6610
6611# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6612#if defined(MFC_OpenACC)
6613# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6614!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
6615# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6616!$acc& 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)
6617# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6618#elif defined(MFC_OpenMP)
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
6625# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6626!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, rho_L, &
6627# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6628!$omp& 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, &
6629# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6630!$omp& vflux_L_arr, vflux_R_arr)
6631# 2168 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6632#endif
6633# 2171 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6634 do l = -1, p
6635 do k = 0, n
6636 do j = 0, m
6637 if (viscous) then
6638 vflux_l_arr = 0._wp
6639 vflux_r_arr = 0._wp
6640
6641# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6642
6643# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6644#if defined(MFC_OpenACC)
6645# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6646!$acc loop seq
6647# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6648#elif defined(MFC_OpenMP)
6649# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6650
6651# 2185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6652#endif
6653 do q = vidxb, vidxe
6654 ! x-direction contributions
6655
6656# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6657#if defined(MFC_OpenACC)
6658# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6659!$acc loop seq
6660# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6661#elif defined(MFC_OpenMP)
6662# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6663
6664# 2188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6665#endif
6666 do i = -1, 1
6667 rho_l = 0._wp
6668
6669# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6670#if defined(MFC_OpenACC)
6671# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6672!$acc loop seq
6673# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6674#elif defined(MFC_OpenMP)
6675# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6676
6677# 2191 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6678#endif
6679 do r = 1, num_fluids
6680 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k, l + q)
6681 end do
6682 rho_sf_small(i) = rho_l
6683 end do
6684
6685 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k, &
6686 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k, l + q)/rho_sf_small(-1))
6687 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1, k, &
6688 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1, k, &
6689 & l + q)/rho_sf_small(-1))
6690
6691 if (q > vidxb) then
6692 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(3))
6693 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
6694 end if
6695 if (q < vidxe) then
6696 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(3))
6697 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
6698 end if
6699
6700 ! y-direction contributions
6701
6702# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6703#if defined(MFC_OpenACC)
6704# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6705!$acc loop seq
6706# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6707#elif defined(MFC_OpenMP)
6708# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6709
6710# 2214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6711#endif
6712 do i = -1, 1
6713 rho_l = 0._wp
6714
6715# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6716#if defined(MFC_OpenACC)
6717# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6718!$acc loop seq
6719# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6720#elif defined(MFC_OpenMP)
6721# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6722
6723# 2217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6724#endif
6725 do r = 1, num_fluids
6726 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i, l + q)
6727 end do
6728 rho_sf_small(i) = rho_l
6729 end do
6730
6731 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1, &
6732 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1, &
6733 & l + q)/rho_sf_small(-1))
6734 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1, &
6735 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1, &
6736 & l + q)/rho_sf_small(-1))
6737
6738 if (q > vidxb) then
6739 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
6740 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
6741 end if
6742 if (q < vidxe) then
6743 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
6744 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
6745 end if
6746
6747 ! z-direction contributions
6748
6749# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6750#if defined(MFC_OpenACC)
6751# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6752!$acc loop seq
6753# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6754#elif defined(MFC_OpenMP)
6755# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6756
6757# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6758#endif
6759 do i = -1, 1
6760 rho_l = 0._wp
6761
6762# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6763#if defined(MFC_OpenACC)
6764# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6765!$acc loop seq
6766# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6767#elif defined(MFC_OpenMP)
6768# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6769
6770# 2244 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6771#endif
6772 do r = 1, num_fluids
6773 rho_l = rho_l + q_cons_vf(r)%sf(j, k, l + i + q)
6774 end do
6775 rho_sf_small(i) = rho_l
6776 end do
6777 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j, k, &
6778 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k, &
6779 & l - 1 + q)/rho_sf_small(-1))
6780 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k, &
6781 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k, &
6782 & l - 1 + q)/rho_sf_small(-1))
6783 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k, &
6784 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k, &
6785 & l - 1 + q)/rho_sf_small(-1))
6786 if (q > vidxb) then
6787 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
6788 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
6789 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(3))/3._wp
6790 end if
6791 if (q < vidxe) then
6792 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
6793 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
6794 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(3))/3._wp
6795 end if
6796 end do
6797 end if
6798
6799
6800# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6801#if defined(MFC_OpenACC)
6802# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6803!$acc loop seq
6804# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6805#elif defined(MFC_OpenMP)
6806# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6807
6808# 2272 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6809#endif
6810 do i = 1, num_fluids
6811 alpha_rho_l(i) = 0._wp
6812 alpha_rho_r(i) = 0._wp
6813 alpha_l(i) = 0._wp
6814 alpha_r(i) = 0._wp
6815 end do
6816
6817
6818# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6819#if defined(MFC_OpenACC)
6820# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6821!$acc loop seq
6822# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6823#elif defined(MFC_OpenMP)
6824# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6825
6826# 2280 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6827#endif
6828 do i = 1, num_dims
6829 vel_l(i) = 0._wp
6830 vel_r(i) = 0._wp
6831 end do
6832
6833
6834# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6835#if defined(MFC_OpenACC)
6836# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6837!$acc loop seq
6838# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6839#elif defined(MFC_OpenMP)
6840# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6841
6842# 2286 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6843#endif
6844 do q = vidxb + 1, vidxe
6845
6846# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6847#if defined(MFC_OpenACC)
6848# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6849!$acc loop seq
6850# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6851#elif defined(MFC_OpenMP)
6852# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6853
6854# 2288 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6855#endif
6856 do i = 1, num_fluids
6857 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k, l + q)
6858 end do
6859
6860 if (num_fluids > 1) then
6861
6862# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6863#if defined(MFC_OpenACC)
6864# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6865!$acc loop seq
6866# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6867#elif defined(MFC_OpenMP)
6868# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6869
6870# 2294 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6871#endif
6872 do i = 1, num_fluids - 1
6873 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6874 end do
6875 else
6876 alpha_l(1) = 1._wp
6877 end if
6878
6879
6880# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6881#if defined(MFC_OpenACC)
6882# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6883!$acc loop seq
6884# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6885#elif defined(MFC_OpenMP)
6886# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6887
6888# 2302 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6889#endif
6890 do i = 1, num_dims
6891 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6892 end do
6893 end do
6894
6895
6896# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6897#if defined(MFC_OpenACC)
6898# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6899!$acc loop seq
6900# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6901#elif defined(MFC_OpenMP)
6902# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6903
6904# 2308 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6905#endif
6906 do q = vidxb, vidxe - 1
6907
6908# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6909#if defined(MFC_OpenACC)
6910# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6911!$acc loop seq
6912# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6913#elif defined(MFC_OpenMP)
6914# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6915
6916# 2310 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6917#endif
6918 do i = 1, num_fluids
6919 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k, l + q)
6920 end do
6921
6922 if (num_fluids > 1) then
6923
6924# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6925#if defined(MFC_OpenACC)
6926# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6927!$acc loop seq
6928# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6929#elif defined(MFC_OpenMP)
6930# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6931
6932# 2316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6933#endif
6934 do i = 1, num_fluids - 1
6935 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6936 end do
6937 else
6938 alpha_r(1) = 1._wp
6939 end if
6940
6941
6942# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6943#if defined(MFC_OpenACC)
6944# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6945!$acc loop seq
6946# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6947#elif defined(MFC_OpenMP)
6948# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6949
6950# 2324 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6951#endif
6952 do i = 1, num_dims
6953 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6954 end do
6955 end do
6956
6957 if (num_fluids > 1) then
6958 alpha_l(num_fluids) = 1._wp
6959 alpha_r(num_fluids) = 1._wp
6960
6961
6962# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6963#if defined(MFC_OpenACC)
6964# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6965!$acc loop seq
6966# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6967#elif defined(MFC_OpenMP)
6968# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6969
6970# 2334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6971#endif
6972 do i = 1, num_fluids - 1
6973 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
6974 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
6975 end do
6976 end if
6977
6978 rho_l = 0._wp; rho_r = 0._wp
6979 gamma_l = 0._wp; gamma_r = 0._wp
6980 pi_inf_l = 0._wp; pi_inf_r = 0._wp
6981
6982
6983# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6984#if defined(MFC_OpenACC)
6985# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6986!$acc loop seq
6987# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6988#elif defined(MFC_OpenMP)
6989# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6990
6991# 2345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6992#endif
6993 do i = 1, num_fluids
6994 rho_l = rho_l + alpha_rho_l(i)
6995 gamma_l = gamma_l + alpha_l(i)*gammas(i)
6996 pi_inf_l = pi_inf_l + alpha_l(i)*pi_infs(i)
6997
6998 rho_r = rho_r + alpha_rho_r(i)
6999 gamma_r = gamma_r + alpha_r(i)*gammas(i)
7000 pi_inf_r = pi_inf_r + alpha_r(i)*pi_infs(i)
7001 end do
7002
7003
7004# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7005#if defined(MFC_OpenACC)
7006# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7007!$acc loop seq
7008# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7009#elif defined(MFC_OpenMP)
7010# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7011
7012# 2356 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7013#endif
7014 do i = 1, num_dims
7015 vel_l(i) = vel_l(i)/rho_l
7016 vel_r(i) = vel_r(i)/rho_r
7017 end do
7018
7019 if (viscous) then
7020 mu_l = 0._wp
7021 mu_r = 0._wp
7022
7023# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7024#if defined(MFC_OpenACC)
7025# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7026!$acc loop seq
7027# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7028#elif defined(MFC_OpenMP)
7029# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7030
7031# 2365 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7032#endif
7033 do i = 1, num_fluids
7034 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
7035 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
7036 end do
7037
7038
7039# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7040#if defined(MFC_OpenACC)
7041# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7042!$acc atomic update
7043# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7044#elif defined(MFC_OpenMP)
7045# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7046!$omp atomic update
7047# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7048#endif
7049 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7050 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7051
7052# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7053#if defined(MFC_OpenACC)
7054# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7055!$acc atomic update
7056# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7057#elif defined(MFC_OpenMP)
7058# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7059!$omp atomic update
7060# 2374 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7061#endif
7062 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7063 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l + 1)), kind=stp)
7064
7065
7066# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7067#if defined(MFC_OpenACC)
7068# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7069!$acc atomic update
7070# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7071#elif defined(MFC_OpenMP)
7072# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7073!$omp atomic update
7074# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7075#endif
7076 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7077 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l)), kind=stp)
7078
7079# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7080#if defined(MFC_OpenACC)
7081# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7082!$acc atomic update
7083# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7084#elif defined(MFC_OpenMP)
7085# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7086!$omp atomic update
7087# 2381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7088#endif
7089 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7090 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l)), kind=stp)
7091
7092
7093# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7094#if defined(MFC_OpenACC)
7095# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7096!$acc atomic update
7097# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7098#elif defined(MFC_OpenMP)
7099# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7100!$omp atomic update
7101# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7102#endif
7103 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7104 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l + 1)), kind=stp)
7105
7106# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7107#if defined(MFC_OpenACC)
7108# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7109!$acc atomic update
7110# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7111#elif defined(MFC_OpenMP)
7112# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7113!$omp atomic update
7114# 2388 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7115#endif
7116 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7117 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l + 1)), kind=stp)
7118
7119
7120# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7121#if defined(MFC_OpenACC)
7122# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7123!$acc atomic update
7124# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7125#elif defined(MFC_OpenMP)
7126# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7127!$omp atomic update
7128# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7129#endif
7130 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7131 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l)), kind=stp)
7132
7133# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7134#if defined(MFC_OpenACC)
7135# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7136!$acc atomic update
7137# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7138#elif defined(MFC_OpenMP)
7139# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7140!$omp atomic update
7141# 2395 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7142#endif
7143 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7144 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l)), kind=stp)
7145
7146
7147# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7148#if defined(MFC_OpenACC)
7149# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7150!$acc atomic update
7151# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7152#elif defined(MFC_OpenMP)
7153# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7154!$omp atomic update
7155# 2399 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7156#endif
7157 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7158 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7159
7160# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7161#if defined(MFC_OpenACC)
7162# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7163!$acc atomic update
7164# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7165#elif defined(MFC_OpenMP)
7166# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7167!$omp atomic update
7168# 2402 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7169#endif
7170 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7171 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l + 1)), kind=stp)
7172
7173
7174# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7175#if defined(MFC_OpenACC)
7176# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7177!$acc atomic update
7178# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7179#elif defined(MFC_OpenMP)
7180# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7181!$omp atomic update
7182# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7183#endif
7184 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7185 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l)), kind=stp)
7186
7187# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7188#if defined(MFC_OpenACC)
7189# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7190!$acc atomic update
7191# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7192#elif defined(MFC_OpenMP)
7193# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7194!$omp atomic update
7195# 2409 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7196#endif
7197 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7198 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l)), kind=stp)
7199
7200
7201# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7202#if defined(MFC_OpenACC)
7203# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7204!$acc atomic update
7205# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7206#elif defined(MFC_OpenMP)
7207# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7208!$omp atomic update
7209# 2413 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7210#endif
7211 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7212 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7213
7214# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7215#if defined(MFC_OpenACC)
7216# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7217!$acc atomic update
7218# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7219#elif defined(MFC_OpenMP)
7220# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7221!$omp atomic update
7222# 2416 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7223#endif
7224 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7225 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l + 1)), kind=stp)
7226
7227
7228# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7229#if defined(MFC_OpenACC)
7230# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7231!$acc atomic update
7232# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7233#elif defined(MFC_OpenMP)
7234# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7235!$omp atomic update
7236# 2420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7237#endif
7238 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7239 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l)), kind=stp)
7240
7241# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7242#if defined(MFC_OpenACC)
7243# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7244!$acc atomic update
7245# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7246#elif defined(MFC_OpenMP)
7247# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7248!$omp atomic update
7249# 2423 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7250#endif
7251 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7252 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l)), kind=stp)
7253
7254
7255# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7256#if defined(MFC_OpenACC)
7257# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7258!$acc atomic update
7259# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7260#elif defined(MFC_OpenMP)
7261# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7262!$omp atomic update
7263# 2427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7264#endif
7265 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7266 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7267
7268# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7269#if defined(MFC_OpenACC)
7270# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7271!$acc atomic update
7272# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7273#elif defined(MFC_OpenMP)
7274# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7275!$omp atomic update
7276# 2430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7277#endif
7278 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7279 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7280
7281
7282# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7283#if defined(MFC_OpenACC)
7284# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7285!$acc atomic update
7286# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7287#elif defined(MFC_OpenMP)
7288# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7289!$omp atomic update
7290# 2434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7291#endif
7292 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7293 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l)), kind=stp)
7294
7295# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7296#if defined(MFC_OpenACC)
7297# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7298!$acc atomic update
7299# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7300#elif defined(MFC_OpenMP)
7301# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7302!$omp atomic update
7303# 2437 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7304#endif
7305 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7306 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l)), kind=stp)
7307
7308
7309# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7310#if defined(MFC_OpenACC)
7311# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7312!$acc atomic update
7313# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7314#elif defined(MFC_OpenMP)
7315# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7316!$omp atomic update
7317# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7318#endif
7319 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7320 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7321
7322# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7323#if defined(MFC_OpenACC)
7324# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7325!$acc atomic update
7326# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7327#elif defined(MFC_OpenMP)
7328# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7329!$omp atomic update
7330# 2444 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7331#endif
7332 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7333 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7334
7335
7336# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7337#if defined(MFC_OpenACC)
7338# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7339!$acc atomic update
7340# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7341#elif defined(MFC_OpenMP)
7342# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7343!$omp atomic update
7344# 2448 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7345#endif
7346 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7347 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l)), kind=stp)
7348
7349# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7350#if defined(MFC_OpenACC)
7351# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7352!$acc atomic update
7353# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7354#elif defined(MFC_OpenMP)
7355# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7356!$omp atomic update
7357# 2451 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7358#endif
7359 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7360 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l)), kind=stp)
7361 end if
7362
7363 e_l = 0._wp; e_r = 0._wp
7364 f_l = 0._wp; f_r = 0._wp
7365
7366
7367# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7368#if defined(MFC_OpenACC)
7369# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7370!$acc loop seq
7371# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7372#elif defined(MFC_OpenMP)
7373# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7374
7375# 2459 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7376#endif
7377 do q = vidxb + 1, vidxe
7378 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7379 f_l = f_l + coeff_l(q)*jac(j, k, l + q)
7380 end do
7381
7382
7383# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7384#if defined(MFC_OpenACC)
7385# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7386!$acc loop seq
7387# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7388#elif defined(MFC_OpenMP)
7389# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7390
7391# 2465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7392#endif
7393 do q = vidxb, vidxe - 1
7394 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7395 f_r = f_r + coeff_r(q)*jac(j, k, l + q)
7396 end do
7397
7398 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, &
7399 & pres_l, pres_r, cfl)
7400
7401
7402# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7403#if defined(MFC_OpenACC)
7404# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7405!$acc loop seq
7406# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7407#elif defined(MFC_OpenMP)
7408# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7409
7410# 2474 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7411#endif
7412 do i = 1, num_fluids
7413
7414# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7415#if defined(MFC_OpenACC)
7416# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7417!$acc atomic update
7418# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7419#elif defined(MFC_OpenMP)
7420# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7421!$omp atomic update
7422# 2476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7423#endif
7424 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7425 & l + 1) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7426 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l + 1)), kind=stp)
7427
7428
7429# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7430#if defined(MFC_OpenACC)
7431# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7432!$acc atomic update
7433# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7434#elif defined(MFC_OpenMP)
7435# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7436!$omp atomic update
7437# 2481 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7438#endif
7439 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7440 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l)) &
7441 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l)), kind=stp)
7442 end do
7443
7444 if (num_fluids > 1) then
7445
7446# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7447#if defined(MFC_OpenACC)
7448# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7449!$acc loop seq
7450# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7451#elif defined(MFC_OpenMP)
7452# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7453
7454# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7455#endif
7456 do i = 1, num_fluids - 1
7457
7458# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7459#if defined(MFC_OpenACC)
7460# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7461!$acc atomic update
7462# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7463#elif defined(MFC_OpenMP)
7464# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7465!$omp atomic update
7466# 2490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7467#endif
7468 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7469 & l + 1) + real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7470 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dz(l + 1)), kind=stp)
7471
7472
7473# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7474#if defined(MFC_OpenACC)
7475# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7476!$acc atomic update
7477# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7478#elif defined(MFC_OpenMP)
7479# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7480!$omp atomic update
7481# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7482#endif
7483 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7484 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7485 & l + 1)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7486
7487
7488# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7489#if defined(MFC_OpenACC)
7490# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7491!$acc atomic update
7492# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7493#elif defined(MFC_OpenMP)
7494# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7495!$omp atomic update
7496# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7497#endif
7498 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7499 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(alpha_l(i)) &
7500 & *(1._wp/dz(l)), kind=stp)
7501
7502
7503# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7504#if defined(MFC_OpenACC)
7505# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7506!$acc atomic update
7507# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7508#elif defined(MFC_OpenMP)
7509# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7510!$omp atomic update
7511# 2505 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7512#endif
7513 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7514 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_l(3)*(1._wp/dz(l)), &
7515 & kind=stp)
7516 end do
7517 end if
7518
7519
7520# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7521#if defined(MFC_OpenACC)
7522# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7523!$acc atomic update
7524# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7525#elif defined(MFC_OpenMP)
7526# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7527!$omp atomic update
7528# 2512 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7529#endif
7530 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7531 & l + 1) + real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l + 1)) &
7532 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l + 1)), kind=stp)
7533
7534
7535# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7536#if defined(MFC_OpenACC)
7537# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7538!$acc atomic update
7539# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7540#elif defined(MFC_OpenMP)
7541# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7542!$omp atomic update
7543# 2517 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7544#endif
7545 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7546 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l + 1)) &
7547 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dz(l + 1)), kind=stp)
7548
7549
7550# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7551#if defined(MFC_OpenACC)
7552# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7553!$acc atomic update
7554# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7555#elif defined(MFC_OpenMP)
7556# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7557!$omp atomic update
7558# 2522 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7559#endif
7560 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7561 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l + 1)) &
7562 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dz(l + 1)), kind=stp)
7563
7564
7565# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7566#if defined(MFC_OpenACC)
7567# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7568!$acc atomic update
7569# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7570#elif defined(MFC_OpenMP)
7571# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7572!$omp atomic update
7573# 2527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7574#endif
7575 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7576 & l + 1) + real(0.5_wp*dt*(vel_l(3)*(e_l + pres_l + f_l))*(1._wp/dz(l + 1)) &
7577 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dz(l + 1)), kind=stp)
7578
7579
7580# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7581#if defined(MFC_OpenACC)
7582# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7583!$acc atomic update
7584# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7585#elif defined(MFC_OpenMP)
7586# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7587!$omp atomic update
7588# 2532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7589#endif
7590 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7591 & l) - real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l)) &
7592 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l)), kind=stp)
7593
7594
7595# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7596#if defined(MFC_OpenACC)
7597# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7598!$acc atomic update
7599# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7600#elif defined(MFC_OpenMP)
7601# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7602!$omp atomic update
7603# 2537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7604#endif
7605 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7606 & 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)) &
7607 & *(1._wp/dz(l)), kind=stp)
7608
7609
7610# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7611#if defined(MFC_OpenACC)
7612# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7613!$acc atomic update
7614# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7615#elif defined(MFC_OpenMP)
7616# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7617!$omp atomic update
7618# 2542 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7619#endif
7620 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7621 & 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)) &
7622 & *(1._wp/dz(l)), kind=stp)
7623
7624
7625# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7626#if defined(MFC_OpenACC)
7627# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7628!$acc atomic update
7629# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7630#elif defined(MFC_OpenMP)
7631# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7632!$omp atomic update
7633# 2547 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7634#endif
7635 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7636 & 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) &
7637 & *(1._wp/dz(l)), kind=stp)
7638
7639
7640# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7641#if defined(MFC_OpenACC)
7642# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7643!$acc loop seq
7644# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7645#elif defined(MFC_OpenMP)
7646# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7647
7648# 2552 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7649#endif
7650 do i = 1, num_fluids
7651
7652# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7653#if defined(MFC_OpenACC)
7654# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7655!$acc atomic update
7656# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7657#elif defined(MFC_OpenMP)
7658# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7659!$omp atomic update
7660# 2554 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7661#endif
7662 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7663 & l + 1) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7664 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l + 1)), kind=stp)
7665
7666
7667# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7668#if defined(MFC_OpenACC)
7669# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7670!$acc atomic update
7671# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7672#elif defined(MFC_OpenMP)
7673# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7674!$omp atomic update
7675# 2559 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7676#endif
7677 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7678 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l)) &
7679 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l)), kind=stp)
7680 end do
7681
7682 if (num_fluids > 1) then
7683
7684# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7685#if defined(MFC_OpenACC)
7686# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7687!$acc loop seq
7688# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7689#elif defined(MFC_OpenMP)
7690# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7691
7692# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7693#endif
7694 do i = 1, num_fluids - 1
7695
7696# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7697#if defined(MFC_OpenACC)
7698# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7699!$acc atomic update
7700# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7701#elif defined(MFC_OpenMP)
7702# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7703!$omp atomic update
7704# 2568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7705#endif
7706 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7707 & l + 1) + real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7708 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dz(l + 1)), kind=stp)
7709
7710
7711# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7712#if defined(MFC_OpenACC)
7713# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7714!$acc atomic update
7715# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7716#elif defined(MFC_OpenMP)
7717# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7718!$omp atomic update
7719# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7720#endif
7721 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7722 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7723 & l + 1)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7724
7725
7726# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7727#if defined(MFC_OpenACC)
7728# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7729!$acc atomic update
7730# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7731#elif defined(MFC_OpenMP)
7732# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7733!$omp atomic update
7734# 2578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7735#endif
7736 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7737 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(alpha_r(i)) &
7738 & *(1._wp/dz(l)), kind=stp)
7739
7740
7741# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7742#if defined(MFC_OpenACC)
7743# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7744!$acc atomic update
7745# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7746#elif defined(MFC_OpenMP)
7747# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7748!$omp atomic update
7749# 2583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7750#endif
7751 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7752 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_r(3)*(1._wp/dz(l)), &
7753 & kind=stp)
7754 end do
7755 end if
7756
7757
7758# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7759#if defined(MFC_OpenACC)
7760# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7761!$acc atomic update
7762# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7763#elif defined(MFC_OpenMP)
7764# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7765!$omp atomic update
7766# 2590 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7767#endif
7768 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7769 & l + 1) + real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l + 1)) &
7770 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l + 1)), kind=stp)
7771
7772
7773# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7774#if defined(MFC_OpenACC)
7775# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7776!$acc atomic update
7777# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7778#elif defined(MFC_OpenMP)
7779# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7780!$omp atomic update
7781# 2595 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7782#endif
7783 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7784 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l + 1)) &
7785 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dz(l + 1)), kind=stp)
7786
7787
7788# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7789#if defined(MFC_OpenACC)
7790# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7791!$acc atomic update
7792# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7793#elif defined(MFC_OpenMP)
7794# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7795!$omp atomic update
7796# 2600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7797#endif
7798 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7799 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l + 1)) &
7800 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dz(l + 1)), kind=stp)
7801
7802
7803# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7804#if defined(MFC_OpenACC)
7805# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7806!$acc atomic update
7807# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7808#elif defined(MFC_OpenMP)
7809# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7810!$omp atomic update
7811# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7812#endif
7813 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7814 & l + 1) + real(0.5_wp*dt*(vel_r(3)*(e_r + pres_r + f_r))*(1._wp/dz(l + 1)) &
7815 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dz(l + 1)), kind=stp)
7816
7817
7818# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7819#if defined(MFC_OpenACC)
7820# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7821!$acc atomic update
7822# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7823#elif defined(MFC_OpenMP)
7824# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7825!$omp atomic update
7826# 2610 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7827#endif
7828 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7829 & l) - real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l)) &
7830 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l)), kind=stp)
7831
7832
7833# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7834#if defined(MFC_OpenACC)
7835# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7836!$acc atomic update
7837# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7838#elif defined(MFC_OpenMP)
7839# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7840!$omp atomic update
7841# 2615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7842#endif
7843 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7844 & 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)) &
7845 & *(1._wp/dz(l)), kind=stp)
7846
7847
7848# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7849#if defined(MFC_OpenACC)
7850# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7851!$acc atomic update
7852# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7853#elif defined(MFC_OpenMP)
7854# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7855!$omp atomic update
7856# 2620 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7857#endif
7858 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7859 & 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)) &
7860 & *(1._wp/dz(l)), kind=stp)
7861
7862
7863# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7864#if defined(MFC_OpenACC)
7865# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7866!$acc atomic update
7867# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7868#elif defined(MFC_OpenMP)
7869# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7870!$omp atomic update
7871# 2625 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7872#endif
7873 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7874 & 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) &
7875 & *(1._wp/dz(l)), kind=stp)
7876 end do
7877 end do
7878 end do
7879
7880# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7881#if defined(MFC_OpenACC)
7882# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7883!$acc end parallel loop
7884# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7885#elif defined(MFC_OpenMP)
7886# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7887
7888# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7889!$omp end target teams loop
7890# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7891#endif
7892# 2634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7893 end if
7894
7895 end subroutine s_igr_riemann_solver
7896
7897 !> Compute pressure and maximum wavespeed from left and right reconstructed states
7898 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)
7899
7900
7901# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7902#if MFC_OpenACC
7903# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7904!$acc routine seq
7905# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7906#elif MFC_OpenMP
7907# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7908
7909# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7910
7911# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7912!$omp declare target device_type(any)
7913# 2641 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7914#endif
7915
7916 real(wp), intent(in) :: E_L, gamma_L, pi_inf_L, rho_L
7917 real(wp), intent(in) :: E_R, gamma_R, pi_inf_R, rho_R
7918 real(wp), dimension(num_dims), intent(in) :: vel_L, vel_R
7919 real(wp), intent(out) :: pres_L, pres_R, cfl
7920 real(wp) :: a_L, a_R
7921
7922 if (num_dims == 2) then
7923 pres_l = (e_l - pi_inf_l - 0.5_wp*rho_l*(vel_l(1)**2._wp + vel_l(2)**2._wp))/gamma_l
7924 pres_r = (e_r - pi_inf_r - 0.5_wp*rho_r*(vel_r(1)**2._wp + vel_r(2)**2._wp))/gamma_r
7925
7926 if (igr_pres_lim) then
7927 pres_l = max(pres_l, 0._wp)
7928 pres_r = max(pres_r, 0._wp)
7929 end if
7930
7931 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
7932 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
7933
7934 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)
7935 else if (num_dims == 3) then
7936# 2664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7937 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
7938 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
7939
7940 if (igr_pres_lim) then
7941 pres_l = max(pres_l, 0._wp)
7942 pres_r = max(pres_r, 0._wp)
7943 end if
7944
7945 a_l = sqrt((pres_l*(1._wp/gamma_l + 1._wp) + pi_inf_l/gamma_l)/rho_l)
7946 a_r = sqrt((pres_r*(1._wp/gamma_r + 1._wp) + pi_inf_r/gamma_r)/rho_r)
7947
7948 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp + vel_l(3)**2._wp), &
7949 & sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp + vel_r(3)**2._wp)) + max(a_l, a_r)
7950# 2678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7951 end if
7952
7953 end subroutine s_get_derived_states
7954
7955 !> Accumulate the IGR numerical flux divergence into the RHS along the specified direction
7956 subroutine s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
7957
7958 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf, flux_vf, rhs_vf
7959 integer, intent(in) :: idir
7960
7961 if (idir == 1) then
7962
7963# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7964
7965# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7966#if defined(MFC_OpenACC)
7967# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7968!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
7969# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7970#elif defined(MFC_OpenMP)
7971# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
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
7977# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7978!$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)
7979# 2689 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7980#endif
7981 do i = 1, sys_size
7982 do l = 0, p
7983 do k = 0, n
7984 do j = 0, m
7985 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))
7986 end do
7987 end do
7988 end do
7989 end do
7990
7991# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7992#if defined(MFC_OpenACC)
7993# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7994!$acc end parallel loop
7995# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7996#elif defined(MFC_OpenMP)
7997# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7998
7999# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8000!$omp end target teams loop
8001# 2699 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8002#endif
8003 else if (idir == 2) then
8004
8005# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8006
8007# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8008#if defined(MFC_OpenACC)
8009# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8010!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8011# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8012#elif defined(MFC_OpenMP)
8013# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
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
8019# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8020!$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)
8021# 2701 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8022#endif
8023 do i = 1, sys_size
8024 do l = 0, p
8025 do k = 0, n
8026 do j = 0, m
8027 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, &
8028 & l) - flux_vf(i)%sf(j, k, l))
8029 end do
8030 end do
8031 end do
8032 end do
8033
8034# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8035#if defined(MFC_OpenACC)
8036# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8037!$acc end parallel loop
8038# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8039#elif defined(MFC_OpenMP)
8040# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8041
8042# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8043!$omp end target teams loop
8044# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8045#endif
8046 else if (idir == 3) then
8047
8048# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8049
8050# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8051#if defined(MFC_OpenACC)
8052# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8053!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
8054# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8055#elif defined(MFC_OpenMP)
8056# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
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
8062# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8063!$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)
8064# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8065#endif
8066 do i = 1, sys_size
8067 do l = 0, p
8068 do k = 0, n
8069 do j = 0, m
8070 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) + 1._wp/dz(l)*(flux_vf(i)%sf(j, k, &
8071 & l - 1) - flux_vf(i)%sf(j, k, l))
8072 end do
8073 end do
8074 end do
8075 end do
8076
8077# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8078#if defined(MFC_OpenACC)
8079# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8080!$acc end parallel loop
8081# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8082#elif defined(MFC_OpenMP)
8083# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8084
8085# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8086!$omp end target teams loop
8087# 2725 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8088#endif
8089 end if
8090
8091 end subroutine s_igr_flux_add
8092
8093 !> Finalize the IGR module
8095
8096 if (viscous) then
8097#ifdef MFC_DEBUG
8098# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8099 block
8100# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8101 use iso_fortran_env, only: output_unit
8102# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8103
8104# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8105 print *, 'm_igr.fpp:2734: ', '@:DEALLOCATE(Res_igr)'
8106# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8107
8108# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8109 call flush (output_unit)
8110# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8111 end block
8112# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8113#endif
8114# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8115
8116# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8117#if defined(MFC_OpenACC)
8118# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8119!$acc exit data delete(Res_igr)
8120# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8121#elif defined(MFC_OpenMP)
8122# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8123!$omp target exit data map(release:Res_igr)
8124# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8125#endif
8126# 2734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8127 deallocate (res_igr)
8128 end if
8129
8130#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
8131#ifdef MFC_DEBUG
8132# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8133 block
8134# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8135 use iso_fortran_env, only: output_unit
8136# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8137
8138# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8139 print *, 'm_igr.fpp:2738: ', '@:DEALLOCATE(jac, jac_rhs)'
8140# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8141
8142# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8143 call flush (output_unit)
8144# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8145 end block
8146# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8147#endif
8148# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8149
8150# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8151#if defined(MFC_OpenACC)
8152# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8153!$acc exit data delete(jac, jac_rhs)
8154# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8155#elif defined(MFC_OpenMP)
8156# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8157!$omp target exit data map(release:jac, jac_rhs)
8158# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8159#endif
8160# 2738 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8161 deallocate (jac, jac_rhs)
8162
8163 if (igr_iter_solver == 1) then ! Jacobi iteration
8164#ifdef MFC_DEBUG
8165# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8166 block
8167# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8168 use iso_fortran_env, only: output_unit
8169# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8170
8171# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8172 print *, 'm_igr.fpp:2741: ', '@:DEALLOCATE(jac_old)'
8173# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8174
8175# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8176 call flush (output_unit)
8177# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8178 end block
8179# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8180#endif
8181# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8182
8183# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8184#if defined(MFC_OpenACC)
8185# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8186!$acc exit data delete(jac_old)
8187# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8188#elif defined(MFC_OpenMP)
8189# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8190!$omp target exit data map(release:jac_old)
8191# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8192#endif
8193# 2741 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8194 deallocate (jac_old)
8195 end if
8196#else
8197 if (nv_uvm_temp_on_gpu(1) == 1) then
8198#ifdef MFC_DEBUG
8199# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8200 block
8201# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8202 use iso_fortran_env, only: output_unit
8203# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8204
8205# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8206 print *, 'm_igr.fpp:2745: ', '@:DEALLOCATE(jac)'
8207# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8208
8209# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8210 call flush (output_unit)
8211# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8212 end block
8213# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8214#endif
8215# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8216
8217# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8218#if defined(MFC_OpenACC)
8219# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8220!$acc exit data delete(jac)
8221# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8222#elif defined(MFC_OpenMP)
8223# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8224!$omp target exit data map(release:jac)
8225# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8226#endif
8227# 2745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8228 deallocate (jac)
8229 else
8230 nullify (jac)
8231 deallocate (jac_host)
8232 end if
8233
8234 if (nv_uvm_temp_on_gpu(2) == 1) then
8235#ifdef MFC_DEBUG
8236# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8237 block
8238# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8239 use iso_fortran_env, only: output_unit
8240# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8241
8242# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8243 print *, 'm_igr.fpp:2752: ', '@:DEALLOCATE(jac_rhs)'
8244# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8245
8246# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8247 call flush (output_unit)
8248# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8249 end block
8250# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8251#endif
8252# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8253
8254# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8255#if defined(MFC_OpenACC)
8256# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8257!$acc exit data delete(jac_rhs)
8258# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8259#elif defined(MFC_OpenMP)
8260# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8261!$omp target exit data map(release:jac_rhs)
8262# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8263#endif
8264# 2752 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8265 deallocate (jac_rhs)
8266 else
8267 nullify (jac_rhs)
8268 deallocate (jac_rhs_host)
8269 end if
8270
8271 if (igr_iter_solver == 1) then ! Jacobi iteration
8272 if (nv_uvm_temp_on_gpu(3) == 1) then
8273#ifdef MFC_DEBUG
8274# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8275 block
8276# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8277 use iso_fortran_env, only: output_unit
8278# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8279
8280# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8281 print *, 'm_igr.fpp:2760: ', '@:DEALLOCATE(jac_old)'
8282# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8283
8284# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8285 call flush (output_unit)
8286# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8287 end block
8288# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8289#endif
8290# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8291
8292# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8293#if defined(MFC_OpenACC)
8294# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8295!$acc exit data delete(jac_old)
8296# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8297#elif defined(MFC_OpenMP)
8298# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8299!$omp target exit data map(release:jac_old)
8300# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8301#endif
8302# 2760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8303 deallocate (jac_old)
8304 else
8305 nullify (jac_old)
8306 deallocate (jac_old_host)
8307 end if
8308 end if
8309#endif
8310
8311# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8312#ifdef MFC_DEBUG
8313# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8314 block
8315# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8316 use iso_fortran_env, only: output_unit
8317# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8318
8319# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8320 print *, 'm_igr.fpp:2769: ', '@:DEALLOCATE(coeff_L, coeff_R)'
8321# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8322
8323# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8324 call flush (output_unit)
8325# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8326 end block
8327# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8328#endif
8329# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8330
8331# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8332#if defined(MFC_OpenACC)
8333# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8334!$acc exit data delete(coeff_L, coeff_R)
8335# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8336#elif defined(MFC_OpenMP)
8337# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8338!$omp target exit data map(release:coeff_L, coeff_R)
8339# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8340#endif
8341# 2769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8342 deallocate (coeff_l, coeff_r)
8343# 2771 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8344
8345 end subroutine s_finalize_igr_module
8346
8347end 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...
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).