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# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49! New line at end of file is required for FYPP
50# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
51# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
52# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
53# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72
73# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74
75# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76
77# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78
79# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80
81# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82! New line at end of file is required for FYPP
83# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
84
85# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153
154# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155
156# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157
158# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159
160# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161! New line at end of file is required for FYPP
162# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
163# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
164# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
165# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178
179# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180
181# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182
183# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184
185# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186
187# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188
189# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190
191# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
192
193# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
194! New line at end of file is required for FYPP
195# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
196
197# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240
241# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242
243# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244
245# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246
247# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248
249# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250
251# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252! New line at end of file is required for FYPP
253# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
254
255! GPU parallel region (scalar reductions, maxval/minval)
256# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! GPU parallel loop over threads (most common GPU macro)
259# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Required closing for GPU_PARALLEL_LOOP
262# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Mark routine for device compilation
265# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Declare device-resident data
268# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! Inner loop within a GPU parallel region
271# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Scoped GPU data region
274# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! Host code with device pointers (for MPI with GPU buffers)
277# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Allocate device memory (unscoped)
280# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Free device memory
283# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Atomic operation on device
286# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! End atomic capture block
289# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Copy data between host and device
292# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294! Synchronization barrier
295# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296
297! Import GPU library module (openacc or omp_lib)
298# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299
300! Emit code only for AMD compiler
301# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302
303! Emit code for non-Cray compilers
304# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305
306! Emit code only for Cray compiler
307# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308
309! Emit code for non-NVIDIA compilers
310# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311
312# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
313# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314! New line at end of file is required for FYPP
315# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
316
317# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
318
319! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
320! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
321! example see misc/nvidia_uvm/bind.sh.
322# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323
324! Allocate and create GPU device memory
325# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326
327! Free GPU device memory and deallocate
328# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
329
330! Cray-specific GPU pointer setup for vector fields
331# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
332
333! Cray-specific GPU pointer setup for scalar fields
334# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
335
336! Cray-specific GPU pointer setup for acoustic source spatials
337# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
338
339# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
340
341# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
342! New line at end of file is required for FYPP
343# 7 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp" 2
344
345!> @brief Iterative ghost rasterization (IGR) for sharp immersed boundary treatment
346module m_igr
347
351 use m_mpi_proxy
352 use m_helper
354
355 implicit none
356
359
360 !> @cond
361#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
362 integer, dimension(3) :: nv_uvm_temp_on_gpu
363 real(wp), pointer, contiguous, dimension(:,:,:) :: jac, jac_rhs, jac_old
364 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_host
365 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_rhs_host
366 real(wp), allocatable, dimension(:,:,:), pinned, target :: jac_old_host
367#else
368 !> @endcond
369 real(wp), allocatable, target, dimension(:,:,:) :: jac
370 real(wp), allocatable, dimension(:,:,:) :: jac_rhs, jac_old
371
372# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
373#if defined(MFC_OpenACC)
374# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
375!$acc declare create(jac, jac_rhs, jac_old)
376# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
377#elif defined(MFC_OpenMP)
378# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
379!$omp declare target (jac, jac_rhs, jac_old)
380# 34 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
381#endif
382 !> @cond
383#endif
384 !> @endcond
385 type(scalar_field), dimension(1) :: jac_sf
386
387# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
388#if defined(MFC_OpenACC)
389# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
390!$acc declare create(jac_sf)
391# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
392#elif defined(MFC_OpenMP)
393# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
394!$omp declare target (jac_sf)
395# 39 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
396#endif
397
398 real(wp), allocatable, dimension(:,:) :: res_igr
399
400# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
401#if defined(MFC_OpenACC)
402# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
403!$acc declare create(Res_igr)
404# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
405#elif defined(MFC_OpenMP)
406# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
407!$omp declare target (Res_igr)
408# 42 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
409#endif
410
411 real(wp) :: alf_igr
412
413# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
414#if defined(MFC_OpenACC)
415# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
416!$acc declare create(alf_igr)
417# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
418#elif defined(MFC_OpenMP)
419# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
420!$omp declare target (alf_igr)
421# 45 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
422#endif
423
424# 48 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
425 integer :: vidxb, vidxe
426
427# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
428#if defined(MFC_OpenACC)
429# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
430!$acc declare create(vidxb, vidxe)
431# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
432#elif defined(MFC_OpenMP)
433# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
434!$omp declare target (vidxb, vidxe)
435# 49 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
436#endif
437
438 real(wp), allocatable, dimension(:) :: coeff_l, coeff_r
439
440# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
441#if defined(MFC_OpenACC)
442# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
443!$acc declare create(coeff_L, coeff_R)
444# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
445#elif defined(MFC_OpenMP)
446# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
447!$omp declare target (coeff_L, coeff_R)
448# 52 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
449#endif
450# 82 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
451
452 integer(kind=8) :: i, j, k, l, q, r
453
454 ! Scalar copies of eqn_idx fields used in GPU atomics. nvfortran OpenMP does not support derived-type member indexing on the LHS
455 ! of atomic updates; plain integers work.
457
458# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
459#if defined(MFC_OpenACC)
460# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
461!$acc declare create(igr_momxb, igr_E_idx, igr_advxb)
462# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
463#elif defined(MFC_OpenMP)
464# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
465!$omp declare target (igr_momxb, igr_E_idx, igr_advxb)
466# 88 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
467#endif
468
469contains
470
471 !> Initialize the IGR module
473
474 if (viscous) then
475#ifdef MFC_DEBUG
476# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
477 block
478# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
479 use iso_fortran_env, only: output_unit
480# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
481
482# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
483 print *, 'm_igr.fpp:96: ', '@:ALLOCATE(Res_igr(1:2, 1:maxval(Re_size)))'
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 call flush (output_unit)
488# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
489 end block
490# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
491#endif
492# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
493 allocate (res_igr(1:2, 1:maxval(re_size)))
494# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
495
496# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
497
498# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
499#if defined(MFC_OpenACC)
500# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
501!$acc enter data create(Res_igr)
502# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
503#elif defined(MFC_OpenMP)
504# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
505!$omp target enter data map(always,alloc:Res_igr)
506# 96 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
507#endif
508 do i = 1, 2
509 do j = 1, re_size(i)
510 res_igr(i, j) = fluid_pp(re_idx(i, j))%Re(i)
511 end do
512 end do
513
514# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
515#if defined(MFC_OpenACC)
516# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
517!$acc update device(Res_igr, Re_idx, Re_size)
518# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
519#elif defined(MFC_OpenMP)
520# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
521!$omp target update to(Res_igr, Re_idx, Re_size)
522# 102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
523#endif
524#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
525# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
526 block
527# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
528 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
529# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
530 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
531# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
532#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
533# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
534 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
535# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
536#else
537# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
538 use cuda_runtime_api
539# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
540#endif
541# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
542 integer :: istat
543# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
544
545# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
546 if (nv_uvm_pref_gpu) then
547# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
548 ! set preferred location GPU
549# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
550 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetpreferredlocation, 0)
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 end if
557# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
558 ! set accessed by CPU
559# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
560 istat = cudamemadvise(c_devloc(res_igr), sizeof(res_igr), cudamemadvisesetaccessedby, cudacpudeviceid)
561# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
562 if (istat /= cudasuccess) then
563# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
564 write (*, "('Error code: ',I0, ': ')") istat
565# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
566 end if
567# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
568 ! prefetch to GPU - physically populate memory pages
569# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
570 istat = cudamemprefetchasync(c_devloc(res_igr), sizeof(res_igr), 0, 0)
571# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
572 if (istat /= cudasuccess) then
573# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
574 write (*, "('Error code: ',I0, ': ')") istat
575# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
576 end if
577# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
578 end if
579# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
580 end block
581# 103 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
582#endif
583#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
584# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
585 block
586# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
587 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
588# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
589 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
590# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
591#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
592# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
593 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
594# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
595#else
596# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
597 use cuda_runtime_api
598# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
599#endif
600# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
601 integer :: istat
602# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
603
604# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
605 if (nv_uvm_pref_gpu) then
606# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
607 ! set preferred location GPU
608# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
609 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetpreferredlocation, 0)
610# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
611 if (istat /= cudasuccess) then
612# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
613 write (*, "('Error code: ',I0, ': ')") istat
614# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
615 end if
616# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
617 ! set accessed by CPU
618# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
619 istat = cudamemadvise(c_devloc(re_idx), sizeof(re_idx), cudamemadvisesetaccessedby, cudacpudeviceid)
620# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
621 if (istat /= cudasuccess) then
622# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
623 write (*, "('Error code: ',I0, ': ')") istat
624# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
625 end if
626# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
627 ! prefetch to GPU - physically populate memory pages
628# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
629 istat = cudamemprefetchasync(c_devloc(re_idx), sizeof(re_idx), 0, 0)
630# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
631 if (istat /= cudasuccess) then
632# 104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
633 write (*, "('Error code: ',I0, ': ')") 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 ! 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 end if
819# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
820 ! set accessed by CPU
821# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
822 istat = cudamemadvise(c_devloc(jac), sizeof(jac), cudamemadvisesetaccessedby, cudacpudeviceid)
823# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
824 if (istat /= cudasuccess) then
825# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
826 write (*, "('Error code: ',I0, ': ')") istat
827# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
828 end if
829# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
830 ! prefetch to GPU - physically populate memory pages
831# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
832 istat = cudamemprefetchasync(c_devloc(jac), sizeof(jac), 0, 0)
833# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
834 if (istat /= cudasuccess) then
835# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
836 write (*, "('Error code: ',I0, ': ')") istat
837# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
838 end if
839# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
840 end if
841# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
842 end block
843# 121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
844#endif
845 else
846 allocate (jac_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
847
848 jac(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end) => jac_host(:,:,:)
849 end if
850
851 if (nv_uvm_temp_on_gpu(2) == 1) then
852#ifdef MFC_DEBUG
853# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
854 block
855# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
856 use iso_fortran_env, only: output_unit
857# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
858
859# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
860 print *, 'm_igr.fpp:129: ', '@:ALLOCATE(jac_rhs(-1:m,-1:n,-1:p))'
861# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
862
863# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
864 call flush (output_unit)
865# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
866 end block
867# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
868#endif
869# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
870 allocate (jac_rhs(-1:m,-1:n,-1:p))
871# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
872
873# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
874
875# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
876#if defined(MFC_OpenACC)
877# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
878!$acc enter data create(jac_rhs)
879# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
880#elif defined(MFC_OpenMP)
881# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
882!$omp target enter data map(always,alloc:jac_rhs)
883# 129 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
884#endif
885#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
886# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
887 block
888# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
889 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
890# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
891 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
892# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
893#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
894# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
895 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
896# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
897#else
898# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
899 use cuda_runtime_api
900# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
901#endif
902# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
903 integer :: istat
904# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
905
906# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
907 if (nv_uvm_pref_gpu) then
908# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
909 ! set preferred location GPU
910# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
911 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetpreferredlocation, 0)
912# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
913 if (istat /= cudasuccess) then
914# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
915 write (*, "('Error code: ',I0, ': ')") istat
916# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
917 end if
918# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
919 ! set accessed by CPU
920# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
921 istat = cudamemadvise(c_devloc(jac_rhs), sizeof(jac_rhs), cudamemadvisesetaccessedby, cudacpudeviceid)
922# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
923 if (istat /= cudasuccess) then
924# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
925 write (*, "('Error code: ',I0, ': ')") istat
926# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
927 end if
928# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
929 ! prefetch to GPU - physically populate memory pages
930# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
931 istat = cudamemprefetchasync(c_devloc(jac_rhs), sizeof(jac_rhs), 0, 0)
932# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
933 if (istat /= cudasuccess) then
934# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
935 write (*, "('Error code: ',I0, ': ')") istat
936# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
937 end if
938# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
939 end if
940# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
941 end block
942# 130 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
943#endif
944 else
945 allocate (jac_rhs_host(-1:m,-1:n,-1:p))
946 jac_rhs(-1:m,-1:n,-1:p) => jac_rhs_host(:,:,:)
947 end if
948
949 if (igr_iter_solver == 1) then ! Jacobi iteration
950 if (nv_uvm_temp_on_gpu(3) == 1) then
951#ifdef MFC_DEBUG
952# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
953 block
954# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
955 use iso_fortran_env, only: output_unit
956# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
957
958# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
959 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))'
960# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
961
962# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
963 call flush (output_unit)
964# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
965 end block
966# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
967#endif
968# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
969 allocate (jac_old(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
970# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
971
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#if defined(MFC_OpenACC)
976# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
977!$acc enter data create(jac_old)
978# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
979#elif defined(MFC_OpenMP)
980# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
981!$omp target enter data map(always,alloc:jac_old)
982# 138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
983#endif
984#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
985# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
986 block
987# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
988 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
989# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
990 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
991# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
992#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
993# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
994 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
995# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
996#else
997# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
998 use cuda_runtime_api
999# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1000#endif
1001# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1002 integer :: istat
1003# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1004
1005# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1006 if (nv_uvm_pref_gpu) then
1007# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1008 ! set preferred location GPU
1009# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1010 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetpreferredlocation, 0)
1011# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1012 if (istat /= cudasuccess) then
1013# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1014 write (*, "('Error code: ',I0, ': ')") istat
1015# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1016 end if
1017# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1018 ! set accessed by CPU
1019# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1020 istat = cudamemadvise(c_devloc(jac_old), sizeof(jac_old), cudamemadvisesetaccessedby, cudacpudeviceid)
1021# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1022 if (istat /= cudasuccess) then
1023# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1024 write (*, "('Error code: ',I0, ': ')") istat
1025# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1026 end if
1027# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1028 ! prefetch to GPU - physically populate memory pages
1029# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1030 istat = cudamemprefetchasync(c_devloc(jac_old), sizeof(jac_old), 0, 0)
1031# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1032 if (istat /= cudasuccess) then
1033# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1034 write (*, "('Error code: ',I0, ': ')") istat
1035# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1036 end if
1037# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1038 end if
1039# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1040 end block
1041# 139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1042#endif
1043 else
1044 allocate (jac_old_host(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end,idwbuff(3)%beg:idwbuff(3)%end))
1045
1046 jac_old(idwbuff(1)%beg:idwbuff(1)%end,idwbuff(2)%beg:idwbuff(2)%end, &
1047 & idwbuff(3)%beg:idwbuff(3)%end) => jac_old_host(:,:,:)
1048 end if
1049 end if
1050#endif
1051
1052
1053# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1054
1055# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1056#if defined(MFC_OpenACC)
1057# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1058!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1059# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1060#elif defined(MFC_OpenMP)
1061# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1062
1063# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1064
1065# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1066
1067# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1068!$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)
1069# 149 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1070#endif
1071 do l = idwbuff(3)%beg, idwbuff(3)%end
1072 do k = idwbuff(2)%beg, idwbuff(2)%end
1073 do j = idwbuff(1)%beg, idwbuff(1)%end
1074 jac(j, k, l) = 0._stp
1075 if (igr_iter_solver == 1) jac_old(j, k, l) = 0._stp
1076 end do
1077 end do
1078 end do
1079
1080# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1081#if defined(MFC_OpenACC)
1082# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1083!$acc end parallel loop
1084# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1085#elif defined(MFC_OpenMP)
1086# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1087
1088# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1089!$omp end target teams loop
1090# 158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1091#endif
1092
1093 if (p == 0) then
1094 alf_igr = alf_factor*max(dx(1), dy(1))**2._wp
1095 else
1096 alf_igr = alf_factor*max(dx(1), dy(1), dz(1))**2._wp
1097 end if
1098
1099# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1100#if defined(MFC_OpenACC)
1101# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1102!$acc update device(alf_igr)
1103# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1104#elif defined(MFC_OpenMP)
1105# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1106!$omp target update to(alf_igr)
1107# 165 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1108#endif
1109
1110 igr_momxb = eqn_idx%mom%beg
1111 igr_e_idx = eqn_idx%E
1112 igr_advxb = eqn_idx%adv%beg
1113
1114# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1115#if defined(MFC_OpenACC)
1116# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1117!$acc update device(igr_momxb, igr_E_idx, igr_advxb)
1118# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1119#elif defined(MFC_OpenMP)
1120# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1121!$omp target update to(igr_momxb, igr_E_idx, igr_advxb)
1122# 170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1123#endif
1124
1125# 173 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1126 if (igr_order == 3) then
1127 vidxb = -1; vidxe = 2
1128
1129# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1130#if defined(MFC_OpenACC)
1131# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1132!$acc update device(vidxb, vidxe)
1133# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1134#elif defined(MFC_OpenMP)
1135# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1136!$omp target update to(vidxb, vidxe)
1137# 175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1138#endif
1139
1140#ifdef MFC_DEBUG
1141# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1142 block
1143# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1144 use iso_fortran_env, only: output_unit
1145# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1146
1147# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1148 print *, 'm_igr.fpp:177: ', '@:ALLOCATE(coeff_L(0:2))'
1149# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1150
1151# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1152 call flush (output_unit)
1153# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1154 end block
1155# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1156#endif
1157# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1158 allocate (coeff_l(0:2))
1159# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1160
1161# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1162
1163# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1164#if defined(MFC_OpenACC)
1165# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1166!$acc enter data create(coeff_L)
1167# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1168#elif defined(MFC_OpenMP)
1169# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1170!$omp target enter data map(always,alloc:coeff_L)
1171# 177 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1172#endif
1173 coeff_l(0) = (2._wp/6._wp)
1174 coeff_l(1) = (5._wp/6._wp)
1175 coeff_l(2) = (-1._wp/6._wp)
1176
1177#ifdef MFC_DEBUG
1178# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1179 block
1180# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1181 use iso_fortran_env, only: output_unit
1182# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1183
1184# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1185 print *, 'm_igr.fpp:182: ', '@:ALLOCATE(coeff_R(-1:1))'
1186# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1187
1188# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1189 call flush (output_unit)
1190# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1191 end block
1192# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1193#endif
1194# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1195 allocate (coeff_r(-1:1))
1196# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1197
1198# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1199
1200# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1201#if defined(MFC_OpenACC)
1202# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1203!$acc enter data create(coeff_R)
1204# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1205#elif defined(MFC_OpenMP)
1206# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1207!$omp target enter data map(always,alloc:coeff_R)
1208# 182 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1209#endif
1210 coeff_r(1) = (2._wp/6._wp)
1211 coeff_r(0) = (5._wp/6._wp)
1212 coeff_r(-1) = (-1._wp/6._wp)
1213 else if (igr_order == 5) then
1214 vidxb = -2; vidxe = 3
1215
1216# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1217#if defined(MFC_OpenACC)
1218# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1219!$acc update device(vidxb, vidxe)
1220# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1221#elif defined(MFC_OpenMP)
1222# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1223!$omp target update to(vidxb, vidxe)
1224# 188 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1225#endif
1226
1227#ifdef MFC_DEBUG
1228# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1229 block
1230# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1231 use iso_fortran_env, only: output_unit
1232# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1233
1234# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1235 print *, 'm_igr.fpp:190: ', '@:ALLOCATE(coeff_L(-1:3))'
1236# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1237
1238# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1239 call flush (output_unit)
1240# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1241 end block
1242# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1243#endif
1244# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1245 allocate (coeff_l(-1:3))
1246# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1247
1248# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1249
1250# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1251#if defined(MFC_OpenACC)
1252# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1253!$acc enter data create(coeff_L)
1254# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1255#elif defined(MFC_OpenMP)
1256# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1257!$omp target enter data map(always,alloc:coeff_L)
1258# 190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1259#endif
1260 coeff_l(-1) = (-3._wp/60._wp)
1261 coeff_l(0) = (27._wp/60._wp)
1262 coeff_l(1) = (47._wp/60._wp)
1263 coeff_l(2) = (-13._wp/60._wp)
1264 coeff_l(3) = (2._wp/60._wp)
1265
1266#ifdef MFC_DEBUG
1267# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1268 block
1269# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1270 use iso_fortran_env, only: output_unit
1271# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1272
1273# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1274 print *, 'm_igr.fpp:197: ', '@:ALLOCATE(coeff_R(-2:2))'
1275# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1276
1277# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1278 call flush (output_unit)
1279# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1280 end block
1281# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1282#endif
1283# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1284 allocate (coeff_r(-2:2))
1285# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1286
1287# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1288
1289# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1290#if defined(MFC_OpenACC)
1291# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1292!$acc enter data create(coeff_R)
1293# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1294#elif defined(MFC_OpenMP)
1295# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1296!$omp target enter data map(always,alloc:coeff_R)
1297# 197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1298#endif
1299 coeff_r(2) = (-3._wp/60._wp)
1300 coeff_r(1) = (27._wp/60._wp)
1301 coeff_r(0) = (47._wp/60._wp)
1302 coeff_r(-1) = (-13._wp/60._wp)
1303 coeff_r(-2) = (2._wp/60._wp)
1304 end if
1305
1306
1307# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1308#if defined(MFC_OpenACC)
1309# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1310!$acc update device(coeff_L)
1311# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1312#elif defined(MFC_OpenMP)
1313# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1314!$omp target update to(coeff_L)
1315# 205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1316#endif
1317
1318# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1319#if defined(MFC_OpenACC)
1320# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1321!$acc update device(coeff_R)
1322# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1323#elif defined(MFC_OpenMP)
1324# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1325!$omp target update to(coeff_R)
1326# 206 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1327#endif
1328# 213 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1329 jac_sf(1)%sf => jac
1330
1331# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1332#if defined(MFC_OpenACC)
1333# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1334!$acc enter data copyin(jac_sf(1)%sf)
1335# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1336#elif defined(MFC_OpenMP)
1337# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1338!$omp target enter data map(to:jac_sf(1)%sf)
1339# 214 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1340#endif
1341
1342# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1343#if defined(MFC_OpenACC)
1344# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1345!$acc enter data attach(jac_sf(1)%sf)
1346# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1347#elif defined(MFC_OpenMP)
1348# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1349!$omp target enter data map(always,to:jac_sf(1)%sf)
1350# 215 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1351#endif
1352
1353 end subroutine s_initialize_igr_module
1354
1355 !> Iteratively solve the implicit gradient reconstruction system
1356 subroutine s_igr_iterative_solve(q_cons_vf, bc_type, t_step)
1357
1358#ifdef _CRAYFTN
1359 ! DIR$ OPTIMIZE (-haggress)
1360#endif
1361 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1362 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
1363 integer, intent(in) :: t_step
1364 real(wp) :: rho_rx, rho_ry, rho_rz, rho_lx, rho_ly, rho_lz
1365 real(wp) :: fd_coeff
1366 integer :: num_iters
1367
1368 if (t_step == t_step_start) then
1369 num_iters = num_igr_warm_start_iters
1370 else
1371 num_iters = num_igr_iters
1372 end if
1373
1374 do q = 1, num_iters
1375
1376# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1377
1378# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1379#if defined(MFC_OpenACC)
1380# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1381!$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)
1382# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1383#elif defined(MFC_OpenMP)
1384# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1385
1386# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1387
1388# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1389
1390# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1391!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1392# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1393!$omp& private(j, k, l, rho_lx, rho_rx, rho_ly, rho_ry, rho_lz, rho_rz, fd_coeff)
1394# 239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1395#endif
1396 do l = 0, p
1397 do k = 0, n
1398 do j = 0, m
1399 rho_lx = 0._wp
1400 rho_rx = 0._wp
1401 rho_ly = 0._wp
1402 rho_ry = 0._wp
1403 rho_lz = 0._wp
1404 rho_rz = 0._wp
1405 fd_coeff = 0._wp
1406
1407
1408# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1409#if defined(MFC_OpenACC)
1410# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1411!$acc loop seq
1412# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1413#elif defined(MFC_OpenMP)
1414# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1415
1416# 251 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1417#endif
1418 do i = 1, num_fluids
1419 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
1420 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
1421 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
1422 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
1423 if (p > 0) then
1424 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
1425 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
1426 end if
1427 fd_coeff = fd_coeff + q_cons_vf(i)%sf(j, k, l)
1428 end do
1429
1430 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) &
1431 & **2._wp)*(1._wp/rho_ly + 1._wp/rho_ry))
1432
1433 if (num_dims == 3) then
1434 fd_coeff = fd_coeff + alf_igr*(1._wp/dz(l)**2._wp)*(1._wp/rho_lz + 1._wp/rho_rz)
1435 end if
1436
1437 if (igr_iter_solver == 1) then ! Jacobi iteration
1438 if (num_dims == 3) then
1439 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac_old(j - 1, k, &
1440 & l)/rho_lx + jac_old(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac_old(j, k - 1, &
1441 & l)/rho_ly + jac_old(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac_old(j, k, &
1442 & l - 1)/rho_lz + jac_old(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1443 & kind=stp)
1444 else
1445 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(real(jac_old(j - 1, k, l), &
1446 & kind=wp)/rho_lx + real(jac_old(j + 1, k, l), &
1447 & kind=wp)/rho_rx) + (1._wp/dy(k)**2._wp)*(real(jac_old(j, k - 1, l), &
1448 & kind=wp)/rho_ly + real(jac_old(j, k + 1, l), kind=wp)/rho_ry)) + real(jac_rhs(j, k, l), &
1449 & kind=wp)/fd_coeff, kind=stp)
1450 end if
1451 else ! Gauss Seidel iteration
1452 if (num_dims == 3) then
1453 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1454 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1455 & l)/rho_ly + jac(j, k + 1, l)/rho_ry) + (1._wp/dz(l)**2._wp)*(jac(j, k, &
1456 & l - 1)/rho_lz + jac(j, k, l + 1)/rho_rz)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, &
1457 & kind=stp)
1458 else
1459 jac(j, k, l) = real((alf_igr/fd_coeff)*((1._wp/dx(j)**2._wp)*(jac(j - 1, k, &
1460 & l)/rho_lx + jac(j + 1, k, l)/rho_rx) + (1._wp/dy(k)**2._wp)*(jac(j, k - 1, &
1461 & l)/rho_ly + jac(j, k + 1, l)/rho_ry)) + real(jac_rhs(j, k, l), kind=wp)/fd_coeff, kind=stp)
1462 end if
1463 end if
1464 end do
1465 end do
1466 end do
1467
1468# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1469#if defined(MFC_OpenACC)
1470# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1471!$acc end parallel loop
1472# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1473#elif defined(MFC_OpenMP)
1474# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1475
1476# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1477!$omp end target teams loop
1478# 301 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1479#endif
1480
1481 call s_populate_f_igr_buffers(bc_type, jac_sf)
1482
1483 if (igr_iter_solver == 1) then ! Jacobi iteration
1484
1485# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1486
1487# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1488#if defined(MFC_OpenACC)
1489# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1490!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1491# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1492#elif defined(MFC_OpenMP)
1493# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1494
1495# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1496
1497# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1498
1499# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1500!$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)
1501# 306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1502#endif
1503 do l = idwbuff(3)%beg, idwbuff(3)%end
1504 do k = idwbuff(2)%beg, idwbuff(2)%end
1505 do j = idwbuff(1)%beg, idwbuff(1)%end
1506 jac_old(j, k, l) = jac(j, k, l)
1507 end do
1508 end do
1509 end do
1510
1511# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1512#if defined(MFC_OpenACC)
1513# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1514!$acc end parallel loop
1515# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1516#elif defined(MFC_OpenMP)
1517# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1518
1519# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1520!$omp end target teams loop
1521# 314 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1522#endif
1523 end if
1524 end do
1525
1526 end subroutine s_igr_iterative_solve
1527
1528 !> Compute the IGR viscous stress contribution in the x-direction and accumulate into the RHS
1529 subroutine s_igr_sigma_x(q_cons_vf, rhs_vf)
1530
1531#ifdef _CRAYFTN
1532 ! DIR$ OPTIMIZE (-haggress)
1533#endif
1534 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1535 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1536 real(wp) :: f_l, vel_l, rho_l, f_r, vel_r, rho_r
1537# 330 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1538 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_rho_r
1539# 334 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1540
1541
1542# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1543
1544# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1545#if defined(MFC_OpenACC)
1546# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1547!$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)
1548# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1549#elif defined(MFC_OpenMP)
1550# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1551
1552# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1553
1554# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1555
1556# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1557!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1558# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1559!$omp& private(j, k, l, F_L, vel_L, alpha_rho_L, F_R, vel_R, alpha_rho_R, rho_L, rho_R)
1560# 335 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1561#endif
1562 do l = 0, p
1563 do k = 0, n
1564 do j = -1, m
1565 f_l = 0._wp; f_r = 0._wp
1566 vel_l = 0._wp; vel_r = 0._wp
1567 rho_l = 0._wp; rho_r = 0._wp
1568
1569
1570# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1571#if defined(MFC_OpenACC)
1572# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1573!$acc loop seq
1574# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1575#elif defined(MFC_OpenMP)
1576# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1577
1578# 343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1579#endif
1580 do i = 1, num_fluids
1581 alpha_rho_l(i) = 0._wp
1582 alpha_rho_r(i) = 0._wp
1583 end do
1584
1585
1586# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1587#if defined(MFC_OpenACC)
1588# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1589!$acc loop seq
1590# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1591#elif defined(MFC_OpenMP)
1592# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1593
1594# 349 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1595#endif
1596 do q = vidxb + 1, vidxe
1597
1598# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1599#if defined(MFC_OpenACC)
1600# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1601!$acc loop seq
1602# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1603#elif defined(MFC_OpenMP)
1604# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1605
1606# 351 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1607#endif
1608 do i = 1, num_fluids
1609 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
1610 end do
1611
1612 vel_l = vel_l + coeff_l(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1613 f_l = f_l + coeff_l(q)*jac(j + q, k, l)
1614 end do
1615
1616
1617# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1618#if defined(MFC_OpenACC)
1619# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1620!$acc loop seq
1621# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1622#elif defined(MFC_OpenMP)
1623# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1624
1625# 360 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1626#endif
1627 do q = vidxb, vidxe - 1
1628
1629# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1630#if defined(MFC_OpenACC)
1631# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1632!$acc loop seq
1633# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1634#elif defined(MFC_OpenMP)
1635# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1636
1637# 362 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1638#endif
1639 do i = 1, num_fluids
1640 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
1641 end do
1642
1643 vel_r = vel_r + coeff_r(q)*q_cons_vf(igr_momxb)%sf(j + q, k, l)
1644 f_r = f_r + coeff_r(q)*jac(j + q, k, l)
1645 end do
1646
1647
1648# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1649#if defined(MFC_OpenACC)
1650# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1651!$acc loop seq
1652# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1653#elif defined(MFC_OpenMP)
1654# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1655
1656# 371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1657#endif
1658 do i = 1, num_fluids
1659 rho_l = rho_l + alpha_rho_l(i)
1660 rho_r = rho_r + alpha_rho_r(i)
1661 end do
1662
1663 vel_l = vel_l/rho_l
1664 vel_r = vel_r/rho_r
1665
1666# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1667
1668# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1669#if defined(MFC_OpenACC)
1670# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1671!$acc atomic update
1672# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1673#elif defined(MFC_OpenMP)
1674# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1675!$omp atomic update
1676# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1677#endif
1678 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1679 & l) + real(0.5_wp*dt*f_l*(1._wp/dx(j + 1)), kind=stp)
1680
1681# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1682#if defined(MFC_OpenACC)
1683# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1684!$acc atomic update
1685# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1686#elif defined(MFC_OpenMP)
1687# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1688!$omp atomic update
1689# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1690#endif
1691 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1692 & l) + real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j + 1)), kind=stp)
1693
1694# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1695#if defined(MFC_OpenACC)
1696# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1697!$acc atomic update
1698# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1699#elif defined(MFC_OpenMP)
1700# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1701!$omp atomic update
1702# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1703#endif
1704 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)), &
1705 & kind=stp)
1706
1707# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1708#if defined(MFC_OpenACC)
1709# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1710!$acc atomic update
1711# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1712#elif defined(MFC_OpenMP)
1713# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1714!$omp atomic update
1715# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1716#endif
1717 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1718 & l) - real(0.5_wp*dt*vel_l*f_l*(1._wp/dx(j)), kind=stp)
1719# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1720
1721# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1722#if defined(MFC_OpenACC)
1723# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1724!$acc atomic update
1725# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1726#elif defined(MFC_OpenMP)
1727# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1728!$omp atomic update
1729# 381 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1730#endif
1731 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
1732 & l) + real(0.5_wp*dt*f_r*(1._wp/dx(j + 1)), kind=stp)
1733
1734# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1735#if defined(MFC_OpenACC)
1736# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1737!$acc atomic update
1738# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1739#elif defined(MFC_OpenMP)
1740# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1741!$omp atomic update
1742# 384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1743#endif
1744 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
1745 & l) + real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j + 1)), kind=stp)
1746
1747# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1748#if defined(MFC_OpenACC)
1749# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1750!$acc atomic update
1751# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1752#elif defined(MFC_OpenMP)
1753# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1754!$omp atomic update
1755# 387 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1756#endif
1757 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)), &
1758 & kind=stp)
1759
1760# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1761#if defined(MFC_OpenACC)
1762# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1763!$acc atomic update
1764# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1765#elif defined(MFC_OpenMP)
1766# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1767!$omp atomic update
1768# 390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1769#endif
1770 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
1771 & l) - real(0.5_wp*dt*vel_r*f_r*(1._wp/dx(j)), kind=stp)
1772# 394 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1773 end do
1774 end do
1775 end do
1776
1777# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1778#if defined(MFC_OpenACC)
1779# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1780!$acc end parallel loop
1781# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1782#elif defined(MFC_OpenMP)
1783# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1784
1785# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1786!$omp end target teams loop
1787# 397 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1788#endif
1789
1790 end subroutine s_igr_sigma_x
1791
1792 !> Evaluate the approximate Riemann solver for the IGR scheme along a given direction
1793 subroutine s_igr_riemann_solver(q_cons_vf, rhs_vf, idir)
1794
1795#ifdef _CRAYFTN
1796 ! DIR$ OPTIMIZE (-haggress)
1797#endif
1798 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1799 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1800 integer, intent(in) :: idir
1801 real(wp) :: cfl
1802 real(wp) :: rho_l, gamma_l, pi_inf_l, e_l, mu_l, f_l, pres_l
1803 real(wp) :: qv_igr !< discarded; IGR carries no heat of formation
1804 real(wp) :: rho_r, gamma_r, pi_inf_r, e_r, mu_r, f_r, pres_r
1805 real(wp), dimension(3) :: vflux_l_arr, vflux_r_arr
1806 real(wp), dimension(-1:1) :: rho_sf_small
1807# 417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1808 real(wp), dimension(num_fluids_max) :: alpha_rho_l, alpha_l, alpha_r, alpha_rho_r
1809 real(wp), dimension(3) :: vel_l, vel_r
1810 real(wp), dimension(3, 3) :: dvel
1811 real(wp), dimension(3) :: dvel_small
1812# 427 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1813
1814 if (idir == 1) then
1815 if (p == 0) then
1816# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1817
1818# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1819
1820# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1821#if defined(MFC_OpenACC)
1822# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1823!$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, qv_igr, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
1824# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1825!$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)
1826# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1827#elif defined(MFC_OpenMP)
1828# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1829
1830# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1831
1832# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1833
1834# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1835!$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, &
1836# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1837!$omp& rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_igr, 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, &
1838# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1839!$omp& rho_sf_small, vflux_L_arr, vflux_R_arr)
1840# 431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1841#endif
1842# 434 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1843 do l = 0, p
1844 do k = 0, n
1845 do j = -1, m
1846 vflux_l_arr = 0._wp
1847 vflux_r_arr = 0._wp
1848
1849# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1850
1851# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1852#if defined(MFC_OpenACC)
1853# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1854!$acc loop seq
1855# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1856#elif defined(MFC_OpenMP)
1857# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1858
1859# 447 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1860#endif
1861 do q = vidxb, vidxe
1862 ! x-direction contributions
1863
1864# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1865#if defined(MFC_OpenACC)
1866# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1867!$acc loop seq
1868# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1869#elif defined(MFC_OpenMP)
1870# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1871
1872# 450 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1873#endif
1874 do i = -1, 1
1875 rho_l = 0._wp
1876
1877# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1878#if defined(MFC_OpenACC)
1879# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1880!$acc loop seq
1881# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1882#elif defined(MFC_OpenMP)
1883# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1884
1885# 453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1886#endif
1887 do r = 1, num_fluids
1888 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
1889 end do
1890 rho_sf_small(i) = rho_l
1891 end do
1892
1893 dvel_small(1) = (1/(2._wp*dx(j)))*(1._wp*q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
1894 & l)/rho_sf_small(1) - 1._wp*q_cons_vf(igr_momxb)%sf(j - 1 + q, k, &
1895 & l)/rho_sf_small(-1))
1896 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
1897 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
1898
1899 if (q == 0) then
1900
1901# 467 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1902#if defined(MFC_OpenACC)
1903# 467 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1904!$acc loop seq
1905# 467 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1906#elif defined(MFC_OpenMP)
1907# 467 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1908
1909# 467 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1910#endif
1911 do i = 1, num_dims
1912 dvel(i, 1) = dvel_small(i)
1913 end do
1914 end if
1915
1916 if (q > vidxb) then
1917 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
1918 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
1919 end if
1920 if (q < vidxe) then
1921 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
1922 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
1923 end if
1924
1925 ! y-direction contributions
1926
1927# 483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1928#if defined(MFC_OpenACC)
1929# 483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1930!$acc loop seq
1931# 483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1932#elif defined(MFC_OpenMP)
1933# 483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1934
1935# 483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1936#endif
1937 do i = -1, 1
1938 rho_l = 0._wp
1939
1940# 486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1941#if defined(MFC_OpenACC)
1942# 486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1943!$acc loop seq
1944# 486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1945#elif defined(MFC_OpenMP)
1946# 486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1947
1948# 486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1949#endif
1950 do r = 1, num_fluids
1951 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
1952 end do
1953 rho_sf_small(i) = rho_l
1954 end do
1955
1956 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
1957 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1958 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
1959 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
1960
1961 if (q == 0) then
1962
1963# 499 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1964#if defined(MFC_OpenACC)
1965# 499 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1966!$acc loop seq
1967# 499 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1968#elif defined(MFC_OpenMP)
1969# 499 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1970
1971# 499 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1972#endif
1973 do i = 1, num_dims
1974 dvel(i, 2) = dvel_small(i)
1975 end do
1976 end if
1977
1978 if (q > vidxb) then
1979 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
1980 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
1981 end if
1982 if (q < vidxe) then
1983 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
1984 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
1985 end if
1986
1987 if (q == 0) then
1988 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1)) + dvel(1, &
1989 & 1)**2._wp + dvel(2, 2)**2._wp + (dvel(1, 1) + dvel(2, 2))**2._wp), kind=stp)
1990 end if
1991 end do
1992
1993
1994# 520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1995#if defined(MFC_OpenACC)
1996# 520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1997!$acc loop seq
1998# 520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
1999#elif defined(MFC_OpenMP)
2000# 520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2001
2002# 520 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2003#endif
2004 do i = 1, num_fluids
2005 alpha_rho_l(i) = 0._wp
2006 alpha_rho_r(i) = 0._wp
2007 alpha_l(i) = 0._wp
2008 alpha_r(i) = 0._wp
2009 end do
2010
2011# 527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2012#if defined(MFC_OpenACC)
2013# 527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2014!$acc loop seq
2015# 527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2016#elif defined(MFC_OpenMP)
2017# 527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2018
2019# 527 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2020#endif
2021 do i = 1, num_dims
2022 vel_l(i) = 0._wp
2023 vel_r(i) = 0._wp
2024 end do
2025
2026
2027# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2028#if defined(MFC_OpenACC)
2029# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2030!$acc loop seq
2031# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2032#elif defined(MFC_OpenMP)
2033# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2034
2035# 533 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2036#endif
2037 do q = vidxb + 1, vidxe
2038
2039# 535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2040#if defined(MFC_OpenACC)
2041# 535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2042!$acc loop seq
2043# 535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2044#elif defined(MFC_OpenMP)
2045# 535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2046
2047# 535 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2048#endif
2049 do i = 1, num_fluids
2050 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
2051 end do
2052
2053 if (num_fluids > 1) then
2054
2055# 541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2056#if defined(MFC_OpenACC)
2057# 541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2058!$acc loop seq
2059# 541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2060#elif defined(MFC_OpenMP)
2061# 541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2062
2063# 541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2064#endif
2065 do i = 1, num_fluids - 1
2066 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2067 end do
2068 else
2069 alpha_l(1) = 1._wp
2070 end if
2071
2072
2073# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2074#if defined(MFC_OpenACC)
2075# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2076!$acc loop seq
2077# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2078#elif defined(MFC_OpenMP)
2079# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2080
2081# 549 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2082#endif
2083 do i = 1, num_dims
2084 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2085 end do
2086 end do
2087
2088
2089# 555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2090#if defined(MFC_OpenACC)
2091# 555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2092!$acc loop seq
2093# 555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2094#elif defined(MFC_OpenMP)
2095# 555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2096
2097# 555 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2098#endif
2099 do q = vidxb, vidxe - 1
2100
2101# 557 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2102#if defined(MFC_OpenACC)
2103# 557 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2104!$acc loop seq
2105# 557 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2106#elif defined(MFC_OpenMP)
2107# 557 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2108
2109# 557 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2110#endif
2111 do i = 1, num_fluids
2112 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
2113 end do
2114
2115 if (num_fluids > 1) then
2116
2117# 563 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2118#if defined(MFC_OpenACC)
2119# 563 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2120!$acc loop seq
2121# 563 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2122#elif defined(MFC_OpenMP)
2123# 563 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2124
2125# 563 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2126#endif
2127 do i = 1, num_fluids - 1
2128 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
2129 end do
2130 else
2131 alpha_r(1) = 1._wp
2132 end if
2133
2134
2135# 571 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2136#if defined(MFC_OpenACC)
2137# 571 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2138!$acc loop seq
2139# 571 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2140#elif defined(MFC_OpenMP)
2141# 571 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2142
2143# 571 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2144#endif
2145 do i = 1, num_dims
2146 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
2147 end do
2148 end do
2149
2150 if (num_fluids > 1) then
2151 alpha_l(num_fluids) = 1._wp
2152 alpha_r(num_fluids) = 1._wp
2153
2154
2155# 581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2156#if defined(MFC_OpenACC)
2157# 581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2158!$acc loop seq
2159# 581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2160#elif defined(MFC_OpenMP)
2161# 581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2162
2163# 581 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2164#endif
2165 do i = 1, num_fluids - 1
2166 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
2167 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
2168 end do
2169 end if
2170
2171 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_igr)
2172 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_igr)
2173
2174
2175# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2176#if defined(MFC_OpenACC)
2177# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2178!$acc loop seq
2179# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2180#elif defined(MFC_OpenMP)
2181# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2182
2183# 591 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2184#endif
2185 do i = 1, num_dims
2186 vel_l(i) = vel_l(i)/rho_l
2187 vel_r(i) = vel_r(i)/rho_r
2188 end do
2189
2190 if (viscous) then
2191 mu_l = 0._wp; mu_r = 0._wp
2192
2193# 599 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2194#if defined(MFC_OpenACC)
2195# 599 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2196!$acc loop seq
2197# 599 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2198#elif defined(MFC_OpenMP)
2199# 599 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2200
2201# 599 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2202#endif
2203 do i = 1, num_fluids
2204 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
2205 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
2206 end do
2207
2208
2209# 605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2210#if defined(MFC_OpenACC)
2211# 605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2212!$acc atomic update
2213# 605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2214#elif defined(MFC_OpenMP)
2215# 605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2216!$omp atomic update
2217# 605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2218#endif
2219 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2220 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2221
2222# 608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2223#if defined(MFC_OpenACC)
2224# 608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2225!$acc atomic update
2226# 608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2227#elif defined(MFC_OpenMP)
2228# 608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2229!$omp atomic update
2230# 608 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2231#endif
2232 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2233 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
2234
2235
2236# 612 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2237#if defined(MFC_OpenACC)
2238# 612 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2239!$acc atomic update
2240# 612 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2241#elif defined(MFC_OpenMP)
2242# 612 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2243!$omp atomic update
2244# 612 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2245#endif
2246 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2247 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
2248
2249# 615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2250#if defined(MFC_OpenACC)
2251# 615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2252!$acc atomic update
2253# 615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2254#elif defined(MFC_OpenMP)
2255# 615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2256!$omp atomic update
2257# 615 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2258#endif
2259 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2260 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
2261
2262
2263# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2264#if defined(MFC_OpenACC)
2265# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2266!$acc atomic update
2267# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2268#elif defined(MFC_OpenMP)
2269# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2270!$omp atomic update
2271# 619 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2272#endif
2273 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2274 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
2275
2276# 622 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2277#if defined(MFC_OpenACC)
2278# 622 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2279!$acc atomic update
2280# 622 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2281#elif defined(MFC_OpenMP)
2282# 622 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2283!$omp atomic update
2284# 622 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2285#endif
2286 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2287 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
2288
2289
2290# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2291#if defined(MFC_OpenACC)
2292# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2293!$acc atomic update
2294# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2295#elif defined(MFC_OpenMP)
2296# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2297!$omp atomic update
2298# 626 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2299#endif
2300 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2301 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
2302
2303# 629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2304#if defined(MFC_OpenACC)
2305# 629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2306!$acc atomic update
2307# 629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2308#elif defined(MFC_OpenMP)
2309# 629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2310!$omp atomic update
2311# 629 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2312#endif
2313 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2314 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
2315
2316
2317# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2318#if defined(MFC_OpenACC)
2319# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2320!$acc atomic update
2321# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2322#elif defined(MFC_OpenMP)
2323# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2324!$omp atomic update
2325# 633 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2326#endif
2327 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2328 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2329
2330# 636 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2331#if defined(MFC_OpenACC)
2332# 636 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2333!$acc atomic update
2334# 636 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2335#elif defined(MFC_OpenMP)
2336# 636 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2337!$omp atomic update
2338# 636 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2339#endif
2340 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2341 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
2342
2343
2344# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2345#if defined(MFC_OpenACC)
2346# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2347!$acc atomic update
2348# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2349#elif defined(MFC_OpenMP)
2350# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2351!$omp atomic update
2352# 640 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2353#endif
2354 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2355 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
2356
2357# 643 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2358#if defined(MFC_OpenACC)
2359# 643 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2360!$acc atomic update
2361# 643 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2362#elif defined(MFC_OpenMP)
2363# 643 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2364!$omp atomic update
2365# 643 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2366#endif
2367 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2368 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
2369
2370
2371# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2372#if defined(MFC_OpenACC)
2373# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2374!$acc atomic update
2375# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2376#elif defined(MFC_OpenMP)
2377# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2378!$omp atomic update
2379# 647 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2380#endif
2381 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2382 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
2383
2384# 650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2385#if defined(MFC_OpenACC)
2386# 650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2387!$acc atomic update
2388# 650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2389#elif defined(MFC_OpenMP)
2390# 650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2391!$omp atomic update
2392# 650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2393#endif
2394 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2395 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
2396
2397
2398# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2399#if defined(MFC_OpenACC)
2400# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2401!$acc atomic update
2402# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2403#elif defined(MFC_OpenMP)
2404# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2405!$omp atomic update
2406# 654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2407#endif
2408 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2409 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
2410
2411# 657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2412#if defined(MFC_OpenACC)
2413# 657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2414!$acc atomic update
2415# 657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2416#elif defined(MFC_OpenMP)
2417# 657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2418!$omp atomic update
2419# 657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2420#endif
2421 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2422 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
2423 end if
2424
2425 e_l = 0._wp; e_r = 0._wp
2426
2427
2428# 664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2429#if defined(MFC_OpenACC)
2430# 664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2431!$acc loop seq
2432# 664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2433#elif defined(MFC_OpenMP)
2434# 664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2435
2436# 664 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2437#endif
2438 do q = vidxb + 1, vidxe
2439 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2440 end do
2441
2442
2443# 669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2444#if defined(MFC_OpenACC)
2445# 669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2446!$acc loop seq
2447# 669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2448#elif defined(MFC_OpenMP)
2449# 669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2450
2451# 669 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2452#endif
2453 do q = vidxb, vidxe - 1
2454 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
2455 end do
2456
2457 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, &
2458 & vel_r, pres_l, pres_r, cfl)
2459
2460 do i = 1, num_fluids
2461
2462# 678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2463#if defined(MFC_OpenACC)
2464# 678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2465!$acc atomic update
2466# 678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2467#elif defined(MFC_OpenMP)
2468# 678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2469!$omp atomic update
2470# 678 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2471#endif
2472 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2473 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2474 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
2475
2476
2477# 683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2478#if defined(MFC_OpenACC)
2479# 683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2480!$acc atomic update
2481# 683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2482#elif defined(MFC_OpenMP)
2483# 683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2484!$omp atomic update
2485# 683 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2486#endif
2487 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2488 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
2489 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
2490 end do
2491
2492 if (num_fluids > 1) then
2493
2494# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2495#if defined(MFC_OpenACC)
2496# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2497!$acc loop seq
2498# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2499#elif defined(MFC_OpenMP)
2500# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2501
2502# 690 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2503#endif
2504 do i = 1, num_fluids - 1
2505
2506# 692 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2507#if defined(MFC_OpenACC)
2508# 692 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2509!$acc atomic update
2510# 692 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2511#elif defined(MFC_OpenMP)
2512# 692 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2513!$omp atomic update
2514# 692 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2515#endif
2516 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2517 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
2518 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
2519
2520
2521# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2522#if defined(MFC_OpenACC)
2523# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2524!$acc atomic update
2525# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2526#elif defined(MFC_OpenMP)
2527# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2528!$omp atomic update
2529# 697 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2530#endif
2531 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2532 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2533 & l)*vel_l(1)*(1._wp/dx(j + 1))), kind=stp)
2534
2535
2536# 702 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2537#if defined(MFC_OpenACC)
2538# 702 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2539!$acc atomic update
2540# 702 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2541#elif defined(MFC_OpenMP)
2542# 702 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2543!$omp atomic update
2544# 702 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2545#endif
2546 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2547 & l) - real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
2548 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j))), kind=stp)
2549
2550
2551# 707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2552#if defined(MFC_OpenACC)
2553# 707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2554!$acc atomic update
2555# 707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2556#elif defined(MFC_OpenMP)
2557# 707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2558!$omp atomic update
2559# 707 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2560#endif
2561 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2562 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2563 & l)*vel_l(1)*(1._wp/dx(j))), kind=stp)
2564 end do
2565 end if
2566
2567
2568# 714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2569#if defined(MFC_OpenACC)
2570# 714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2571!$acc atomic update
2572# 714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2573#elif defined(MFC_OpenMP)
2574# 714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2575!$omp atomic update
2576# 714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2577#endif
2578 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2579 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
2580 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
2581
2582
2583# 719 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2584#if defined(MFC_OpenACC)
2585# 719 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2586!$acc atomic update
2587# 719 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2588#elif defined(MFC_OpenMP)
2589# 719 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2590!$omp atomic update
2591# 719 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2592#endif
2593 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2594 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
2595 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
2596
2597
2598# 724 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2599#if defined(MFC_OpenACC)
2600# 724 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2601!$acc atomic update
2602# 724 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2603#elif defined(MFC_OpenMP)
2604# 724 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2605!$omp atomic update
2606# 724 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2607#endif
2608 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2609 & 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) &
2610 & *(1._wp/dx(j + 1))), kind=stp)
2611
2612
2613# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2614#if defined(MFC_OpenACC)
2615# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2616!$acc atomic update
2617# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2618#elif defined(MFC_OpenMP)
2619# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2620!$omp atomic update
2621# 729 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2622#endif
2623 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2624 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
2625 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
2626
2627
2628# 734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2629#if defined(MFC_OpenACC)
2630# 734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2631!$acc atomic update
2632# 734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2633#elif defined(MFC_OpenMP)
2634# 734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2635!$omp atomic update
2636# 734 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2637#endif
2638 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2639 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
2640 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
2641
2642
2643# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2644#if defined(MFC_OpenACC)
2645# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2646!$acc atomic update
2647# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2648#elif defined(MFC_OpenMP)
2649# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2650!$omp atomic update
2651# 739 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2652#endif
2653 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2654 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
2655 & *(1._wp/dx(j))), kind=stp)
2656
2657
2658# 744 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2659#if defined(MFC_OpenACC)
2660# 744 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2661!$acc loop seq
2662# 744 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2663#elif defined(MFC_OpenMP)
2664# 744 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2665
2666# 744 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2667#endif
2668 do i = 1, num_fluids
2669
2670# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2671#if defined(MFC_OpenACC)
2672# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2673!$acc atomic update
2674# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2675#elif defined(MFC_OpenMP)
2676# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2677!$omp atomic update
2678# 746 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2679#endif
2680 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
2681 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2682 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
2683
2684
2685# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2686#if defined(MFC_OpenACC)
2687# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2688!$acc atomic update
2689# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2690#elif defined(MFC_OpenMP)
2691# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2692!$omp atomic update
2693# 751 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2694#endif
2695 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
2696 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
2697 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
2698 end do
2699
2700 if (num_fluids > 1) then
2701
2702# 758 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2703#if defined(MFC_OpenACC)
2704# 758 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2705!$acc loop seq
2706# 758 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2707#elif defined(MFC_OpenMP)
2708# 758 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2709
2710# 758 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2711#endif
2712 do i = 1, num_fluids - 1
2713
2714# 760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2715#if defined(MFC_OpenACC)
2716# 760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2717!$acc atomic update
2718# 760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2719#elif defined(MFC_OpenMP)
2720# 760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2721!$omp atomic update
2722# 760 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2723#endif
2724 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2725 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
2726 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
2727
2728
2729# 765 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2730#if defined(MFC_OpenACC)
2731# 765 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2732!$acc atomic update
2733# 765 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2734#elif defined(MFC_OpenMP)
2735# 765 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2736!$omp atomic update
2737# 765 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2738#endif
2739 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2740 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
2741 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
2742
2743
2744# 770 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2745#if defined(MFC_OpenACC)
2746# 770 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2747!$acc atomic update
2748# 770 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2749#elif defined(MFC_OpenMP)
2750# 770 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2751!$omp atomic update
2752# 770 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2753#endif
2754 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2755 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
2756 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
2757
2758
2759# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2760#if defined(MFC_OpenACC)
2761# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2762!$acc atomic update
2763# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2764#elif defined(MFC_OpenMP)
2765# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2766!$omp atomic update
2767# 775 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2768#endif
2769 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
2770 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
2771 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
2772 end do
2773 end if
2774
2775
2776# 782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2777#if defined(MFC_OpenACC)
2778# 782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2779!$acc atomic update
2780# 782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2781#elif defined(MFC_OpenMP)
2782# 782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2783!$omp atomic update
2784# 782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2785#endif
2786 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
2787 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
2788 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
2789
2790
2791# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2792#if defined(MFC_OpenACC)
2793# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2794!$acc atomic update
2795# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2796#elif defined(MFC_OpenMP)
2797# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2798!$omp atomic update
2799# 787 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2800#endif
2801 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
2802 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
2803 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
2804
2805
2806# 792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2807#if defined(MFC_OpenACC)
2808# 792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2809!$acc atomic update
2810# 792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2811#elif defined(MFC_OpenMP)
2812# 792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2813!$omp atomic update
2814# 792 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2815#endif
2816 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
2817 & 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) &
2818 & *(1._wp/dx(j + 1))), kind=stp)
2819
2820
2821# 797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2822#if defined(MFC_OpenACC)
2823# 797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2824!$acc atomic update
2825# 797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2826#elif defined(MFC_OpenMP)
2827# 797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2828!$omp atomic update
2829# 797 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2830#endif
2831 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
2832 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
2833 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
2834
2835
2836# 802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2837#if defined(MFC_OpenACC)
2838# 802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2839!$acc atomic update
2840# 802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2841#elif defined(MFC_OpenMP)
2842# 802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2843!$omp atomic update
2844# 802 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2845#endif
2846 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
2847 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
2848 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
2849
2850
2851# 807 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2852#if defined(MFC_OpenACC)
2853# 807 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2854!$acc atomic update
2855# 807 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2856#elif defined(MFC_OpenMP)
2857# 807 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2858!$omp atomic update
2859# 807 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2860#endif
2861 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
2862 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
2863 & *(1._wp/dx(j))), kind=stp)
2864 end do
2865 end do
2866 end do
2867
2868# 814 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2869#if defined(MFC_OpenACC)
2870# 814 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2871!$acc end parallel loop
2872# 814 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2873#elif defined(MFC_OpenMP)
2874# 814 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2875
2876# 814 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2877!$omp end target teams loop
2878# 814 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2879#endif
2880# 816 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2881 else
2882# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2883
2884# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2885
2886# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2887#if defined(MFC_OpenACC)
2888# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2889!$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, qv_igr, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
2890# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2891!$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)
2892# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2893#elif defined(MFC_OpenMP)
2894# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2895
2896# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2897
2898# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2899
2900# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2901!$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, &
2902# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2903!$omp& rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_igr, 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, &
2904# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2905!$omp& rho_sf_small, vflux_L_arr, vflux_R_arr)
2906# 818 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2907#endif
2908# 821 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2909 do l = 0, p
2910 do k = 0, n
2911 do j = -1, m
2912 vflux_l_arr = 0._wp
2913 vflux_r_arr = 0._wp
2914
2915# 834 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2916
2917# 834 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2918#if defined(MFC_OpenACC)
2919# 834 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2920!$acc loop seq
2921# 834 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2922#elif defined(MFC_OpenMP)
2923# 834 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2924
2925# 834 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2926#endif
2927 do q = vidxb, vidxe
2928 ! x-direction contributions
2929
2930# 837 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2931#if defined(MFC_OpenACC)
2932# 837 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2933!$acc loop seq
2934# 837 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2935#elif defined(MFC_OpenMP)
2936# 837 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2937
2938# 837 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2939#endif
2940 do i = -1, 1
2941 rho_l = 0._wp
2942
2943# 840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2944#if defined(MFC_OpenACC)
2945# 840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2946!$acc loop seq
2947# 840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2948#elif defined(MFC_OpenMP)
2949# 840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2950
2951# 840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2952#endif
2953 do r = 1, num_fluids
2954 rho_l = rho_l + q_cons_vf(r)%sf(j + i + q, k, l)
2955 end do
2956 rho_sf_small(i) = rho_l
2957 end do
2958
2959 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1 + q, k, &
2960 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
2961 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1 + q, k, &
2962 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
2963 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1 + q, k, &
2964 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1 + q, k, l)/rho_sf_small(-1))
2965
2966 if (q == 0) then
2967
2968# 855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2969#if defined(MFC_OpenACC)
2970# 855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2971!$acc loop seq
2972# 855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2973#elif defined(MFC_OpenMP)
2974# 855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2975
2976# 855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2977#endif
2978 do i = 1, num_dims
2979 dvel(i, 1) = dvel_small(i)
2980 end do
2981 end if
2982
2983 if (q > vidxb) then
2984 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
2985 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
2986 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(1))/3._wp
2987 end if
2988 if (q < vidxe) then
2989 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
2990 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
2991 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(1))/3._wp
2992 end if
2993
2994 ! y-direction contributions
2995
2996# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2997#if defined(MFC_OpenACC)
2998# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
2999!$acc loop seq
3000# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3001#elif defined(MFC_OpenMP)
3002# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3003
3004# 873 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3005#endif
3006 do i = -1, 1
3007 rho_l = 0._wp
3008
3009# 876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3010#if defined(MFC_OpenACC)
3011# 876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3012!$acc loop seq
3013# 876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3014#elif defined(MFC_OpenMP)
3015# 876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3016
3017# 876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3018#endif
3019 do r = 1, num_fluids
3020 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k + i, l)
3021 end do
3022 rho_sf_small(i) = rho_l
3023 end do
3024
3025 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j + q, k + 1, &
3026 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3027 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k + 1, &
3028 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3029 if (q == 0) dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k + 1, &
3030 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k - 1, l)/rho_sf_small(-1))
3031 if (q == 0) then
3032
3033# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3034#if defined(MFC_OpenACC)
3035# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3036!$acc loop seq
3037# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3038#elif defined(MFC_OpenMP)
3039# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3040
3041# 890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3042#endif
3043 do i = 1, num_dims
3044 dvel(i, 2) = dvel_small(i)
3045 end do
3046 end if
3047
3048 if (q > vidxb) then
3049 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
3050 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
3051 end if
3052 if (q < vidxe) then
3053 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
3054 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
3055 end if
3056
3057 ! z-direction contributions
3058
3059# 906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3060#if defined(MFC_OpenACC)
3061# 906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3062!$acc loop seq
3063# 906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3064#elif defined(MFC_OpenMP)
3065# 906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3066
3067# 906 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3068#endif
3069 do i = -1, 1
3070 rho_l = 0._wp
3071
3072# 909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3073#if defined(MFC_OpenACC)
3074# 909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3075!$acc loop seq
3076# 909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3077#elif defined(MFC_OpenMP)
3078# 909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3079
3080# 909 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3081#endif
3082 do r = 1, num_fluids
3083 rho_l = rho_l + q_cons_vf(r)%sf(j + q, k, l + i)
3084 end do
3085 rho_sf_small(i) = rho_l
3086 end do
3087
3088 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j + q, k, &
3089 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3090 if (q == 0) dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j + q, k, &
3091 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j + q, k, l - 1)/rho_sf_small(-1))
3092 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3093 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j + q, k, &
3094 & l - 1)/rho_sf_small(-1))
3095 if (q == 0) then
3096
3097# 924 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3098#if defined(MFC_OpenACC)
3099# 924 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3100!$acc loop seq
3101# 924 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3102#elif defined(MFC_OpenMP)
3103# 924 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3104
3105# 924 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3106#endif
3107 do i = 1, num_dims
3108 dvel(i, 3) = dvel_small(i)
3109 end do
3110 end if
3111
3112 if (q > vidxb) then
3113 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(1))
3114 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
3115 end if
3116 if (q < vidxe) then
3117 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(1))
3118 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
3119 end if
3120
3121 if (q == 0) then
3122 jac_rhs(j, k, l) = real(alf_igr*(2._wp*(dvel(1, 2)*dvel(2, 1) + dvel(1, 3)*dvel(3, &
3123 & 1) + dvel(2, 3)*dvel(3, 2)) + dvel(1, 1)**2._wp + dvel(2, 2)**2._wp + dvel(3, &
3124 & 3)**2._wp + (dvel(1, 1) + dvel(2, 2) + dvel(3, 3))**2._wp), kind=stp)
3125 end if
3126 end do
3127
3128
3129# 946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3130#if defined(MFC_OpenACC)
3131# 946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3132!$acc loop seq
3133# 946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3134#elif defined(MFC_OpenMP)
3135# 946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3136
3137# 946 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3138#endif
3139 do i = 1, num_fluids
3140 alpha_rho_l(i) = 0._wp
3141 alpha_rho_r(i) = 0._wp
3142 alpha_l(i) = 0._wp
3143 alpha_r(i) = 0._wp
3144 end do
3145
3146# 953 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3147#if defined(MFC_OpenACC)
3148# 953 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3149!$acc loop seq
3150# 953 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3151#elif defined(MFC_OpenMP)
3152# 953 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3153
3154# 953 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3155#endif
3156 do i = 1, num_dims
3157 vel_l(i) = 0._wp
3158 vel_r(i) = 0._wp
3159 end do
3160
3161
3162# 959 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3163#if defined(MFC_OpenACC)
3164# 959 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3165!$acc loop seq
3166# 959 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3167#elif defined(MFC_OpenMP)
3168# 959 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3169
3170# 959 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3171#endif
3172 do q = vidxb + 1, vidxe
3173
3174# 961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3175#if defined(MFC_OpenACC)
3176# 961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3177!$acc loop seq
3178# 961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3179#elif defined(MFC_OpenMP)
3180# 961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3181
3182# 961 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3183#endif
3184 do i = 1, num_fluids
3185 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j + q, k, l)
3186 end do
3187
3188 if (num_fluids > 1) then
3189
3190# 967 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3191#if defined(MFC_OpenACC)
3192# 967 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3193!$acc loop seq
3194# 967 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3195#elif defined(MFC_OpenMP)
3196# 967 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3197
3198# 967 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3199#endif
3200 do i = 1, num_fluids - 1
3201 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3202 end do
3203 else
3204 alpha_l(1) = 1._wp
3205 end if
3206
3207
3208# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3209#if defined(MFC_OpenACC)
3210# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3211!$acc loop seq
3212# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3213#elif defined(MFC_OpenMP)
3214# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3215
3216# 975 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3217#endif
3218 do i = 1, num_dims
3219 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3220 end do
3221 end do
3222
3223
3224# 981 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3225#if defined(MFC_OpenACC)
3226# 981 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3227!$acc loop seq
3228# 981 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3229#elif defined(MFC_OpenMP)
3230# 981 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3231
3232# 981 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3233#endif
3234 do q = vidxb, vidxe - 1
3235
3236# 983 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3237#if defined(MFC_OpenACC)
3238# 983 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3239!$acc loop seq
3240# 983 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3241#elif defined(MFC_OpenMP)
3242# 983 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3243
3244# 983 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3245#endif
3246 do i = 1, num_fluids
3247 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j + q, k, l)
3248 end do
3249
3250 if (num_fluids > 1) then
3251
3252# 989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3253#if defined(MFC_OpenACC)
3254# 989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3255!$acc loop seq
3256# 989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3257#elif defined(MFC_OpenMP)
3258# 989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3259
3260# 989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3261#endif
3262 do i = 1, num_fluids - 1
3263 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j + q, k, l)
3264 end do
3265 else
3266 alpha_r(1) = 1._wp
3267 end if
3268
3269
3270# 997 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3271#if defined(MFC_OpenACC)
3272# 997 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3273!$acc loop seq
3274# 997 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3275#elif defined(MFC_OpenMP)
3276# 997 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3277
3278# 997 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3279#endif
3280 do i = 1, num_dims
3281 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j + q, k, l)
3282 end do
3283 end do
3284
3285 if (num_fluids > 1) then
3286 alpha_l(num_fluids) = 1._wp
3287 alpha_r(num_fluids) = 1._wp
3288
3289
3290# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3291#if defined(MFC_OpenACC)
3292# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3293!$acc loop seq
3294# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3295#elif defined(MFC_OpenMP)
3296# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3297
3298# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3299#endif
3300 do i = 1, num_fluids - 1
3301 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
3302 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
3303 end do
3304 end if
3305
3306 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_igr)
3307 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_igr)
3308
3309
3310# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3311#if defined(MFC_OpenACC)
3312# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3313!$acc loop seq
3314# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3315#elif defined(MFC_OpenMP)
3316# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3317
3318# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3319#endif
3320 do i = 1, num_dims
3321 vel_l(i) = vel_l(i)/rho_l
3322 vel_r(i) = vel_r(i)/rho_r
3323 end do
3324
3325 if (viscous) then
3326 mu_l = 0._wp
3327 mu_r = 0._wp
3328
3329# 1026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3330#if defined(MFC_OpenACC)
3331# 1026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3332!$acc loop seq
3333# 1026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3334#elif defined(MFC_OpenMP)
3335# 1026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3336
3337# 1026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3338#endif
3339 do i = 1, num_fluids
3340 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
3341 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
3342 end do
3343
3344
3345# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3346#if defined(MFC_OpenACC)
3347# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3348!$acc atomic update
3349# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3350#elif defined(MFC_OpenMP)
3351# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3352!$omp atomic update
3353# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3354#endif
3355 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3356 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3357
3358# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3359#if defined(MFC_OpenACC)
3360# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3361!$acc atomic update
3362# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3363#elif defined(MFC_OpenMP)
3364# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3365!$omp atomic update
3366# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3367#endif
3368 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3369 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j + 1)), kind=stp)
3370
3371
3372# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3373#if defined(MFC_OpenACC)
3374# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3375!$acc atomic update
3376# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3377#elif defined(MFC_OpenMP)
3378# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3379!$omp atomic update
3380# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3381#endif
3382 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3383 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dx(j)), kind=stp)
3384
3385# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3386#if defined(MFC_OpenACC)
3387# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3388!$acc atomic update
3389# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3390#elif defined(MFC_OpenMP)
3391# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3392!$omp atomic update
3393# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3394#endif
3395 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3396 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(2)*(1._wp/dx(j)), kind=stp)
3397
3398
3399# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3400#if defined(MFC_OpenACC)
3401# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3402!$acc atomic update
3403# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3404#elif defined(MFC_OpenMP)
3405# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3406!$omp atomic update
3407# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3408#endif
3409 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3410 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j + 1)), kind=stp)
3411
3412# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3413#if defined(MFC_OpenACC)
3414# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3415!$acc atomic update
3416# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3417#elif defined(MFC_OpenMP)
3418# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3419!$omp atomic update
3420# 1049 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3421#endif
3422 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3423 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j + 1)), kind=stp)
3424
3425
3426# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3427#if defined(MFC_OpenACC)
3428# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3429!$acc atomic update
3430# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3431#elif defined(MFC_OpenMP)
3432# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3433!$omp atomic update
3434# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3435#endif
3436 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3437 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dx(j)), kind=stp)
3438
3439# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3440#if defined(MFC_OpenACC)
3441# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3442!$acc atomic update
3443# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3444#elif defined(MFC_OpenMP)
3445# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3446!$omp atomic update
3447# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3448#endif
3449 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3450 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(2)*(1._wp/dx(j)), kind=stp)
3451
3452
3453# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3454#if defined(MFC_OpenACC)
3455# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3456!$acc atomic update
3457# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3458#elif defined(MFC_OpenMP)
3459# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3460!$omp atomic update
3461# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3462#endif
3463 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3464 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3465
3466# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3467#if defined(MFC_OpenACC)
3468# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3469!$acc atomic update
3470# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3471#elif defined(MFC_OpenMP)
3472# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3473!$omp atomic update
3474# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3475#endif
3476 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3477 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j + 1)), kind=stp)
3478
3479
3480# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3481#if defined(MFC_OpenACC)
3482# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3483!$acc atomic update
3484# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3485#elif defined(MFC_OpenMP)
3486# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3487!$omp atomic update
3488# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3489#endif
3490 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3491 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dx(j)), kind=stp)
3492
3493# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3494#if defined(MFC_OpenACC)
3495# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3496!$acc atomic update
3497# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3498#elif defined(MFC_OpenMP)
3499# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3500!$omp atomic update
3501# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3502#endif
3503 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3504 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dx(j)), kind=stp)
3505
3506
3507# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3508#if defined(MFC_OpenACC)
3509# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3510!$acc atomic update
3511# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3512#elif defined(MFC_OpenMP)
3513# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3514!$omp atomic update
3515# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3516#endif
3517 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3518 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j + 1)), kind=stp)
3519
3520# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3521#if defined(MFC_OpenACC)
3522# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3523!$acc atomic update
3524# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3525#elif defined(MFC_OpenMP)
3526# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3527!$omp atomic update
3528# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3529#endif
3530 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3531 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j + 1)), kind=stp)
3532
3533
3534# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3535#if defined(MFC_OpenACC)
3536# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3537!$acc atomic update
3538# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3539#elif defined(MFC_OpenMP)
3540# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3541!$omp atomic update
3542# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3543#endif
3544 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3545 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dx(j)), kind=stp)
3546
3547# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3548#if defined(MFC_OpenACC)
3549# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3550!$acc atomic update
3551# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3552#elif defined(MFC_OpenMP)
3553# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3554!$omp atomic update
3555# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3556#endif
3557 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3558 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dx(j)), kind=stp)
3559
3560
3561# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3562#if defined(MFC_OpenACC)
3563# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3564!$acc atomic update
3565# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3566#elif defined(MFC_OpenMP)
3567# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3568!$omp atomic update
3569# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3570#endif
3571 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3572 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3573
3574# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3575#if defined(MFC_OpenACC)
3576# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3577!$acc atomic update
3578# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3579#elif defined(MFC_OpenMP)
3580# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3581!$omp atomic update
3582# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3583#endif
3584 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3585 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3586
3587
3588# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3589#if defined(MFC_OpenACC)
3590# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3591!$acc atomic update
3592# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3593#elif defined(MFC_OpenMP)
3594# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3595!$omp atomic update
3596# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3597#endif
3598 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3599 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dx(j)), kind=stp)
3600
3601# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3602#if defined(MFC_OpenACC)
3603# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3604!$acc atomic update
3605# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3606#elif defined(MFC_OpenMP)
3607# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3608!$omp atomic update
3609# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3610#endif
3611 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3612 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3613
3614
3615# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3616#if defined(MFC_OpenACC)
3617# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3618!$acc atomic update
3619# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3620#elif defined(MFC_OpenMP)
3621# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3622!$omp atomic update
3623# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3624#endif
3625 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3626 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j + 1)), kind=stp)
3627
3628# 1105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3629#if defined(MFC_OpenACC)
3630# 1105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3631!$acc atomic update
3632# 1105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3633#elif defined(MFC_OpenMP)
3634# 1105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3635!$omp atomic update
3636# 1105 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3637#endif
3638 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3639 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j + 1)), kind=stp)
3640
3641
3642# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3643#if defined(MFC_OpenACC)
3644# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3645!$acc atomic update
3646# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3647#elif defined(MFC_OpenMP)
3648# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3649!$omp atomic update
3650# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3651#endif
3652 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3653 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dx(j)), kind=stp)
3654
3655# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3656#if defined(MFC_OpenACC)
3657# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3658!$acc atomic update
3659# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3660#elif defined(MFC_OpenMP)
3661# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3662!$omp atomic update
3663# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3664#endif
3665 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3666 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(1)*(1._wp/dx(j)), kind=stp)
3667 end if
3668
3669 e_l = 0._wp; e_r = 0._wp
3670
3671
3672# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3673#if defined(MFC_OpenACC)
3674# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3675!$acc loop seq
3676# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3677#elif defined(MFC_OpenMP)
3678# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3679
3680# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3681#endif
3682 do q = vidxb + 1, vidxe
3683 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3684 end do
3685
3686
3687# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3688#if defined(MFC_OpenACC)
3689# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3690!$acc loop seq
3691# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3692#elif defined(MFC_OpenMP)
3693# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3694
3695# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3696#endif
3697 do q = vidxb, vidxe - 1
3698 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j + q, k, l)
3699 end do
3700
3701 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, &
3702 & vel_r, pres_l, pres_r, cfl)
3703
3704
3705# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3706#if defined(MFC_OpenACC)
3707# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3708!$acc loop seq
3709# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3710#elif defined(MFC_OpenMP)
3711# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3712
3713# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3714#endif
3715 do i = 1, num_fluids
3716
3717# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3718#if defined(MFC_OpenACC)
3719# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3720!$acc atomic update
3721# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3722#elif defined(MFC_OpenMP)
3723# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3724!$omp atomic update
3725# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3726#endif
3727 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
3728 & l) + real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3729 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j + 1))), kind=stp)
3730
3731
3732# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3733#if defined(MFC_OpenACC)
3734# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3735!$acc atomic update
3736# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3737#elif defined(MFC_OpenMP)
3738# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3739!$omp atomic update
3740# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3741#endif
3742 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
3743 & l) - real((0.5_wp*dt*(alpha_rho_l(i)*vel_l(1))*(1._wp/dx(j)) &
3744 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dx(j))), kind=stp)
3745 end do
3746
3747 if (num_fluids > 1) then
3748
3749# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3750#if defined(MFC_OpenACC)
3751# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3752!$acc loop seq
3753# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3754#elif defined(MFC_OpenMP)
3755# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3756
3757# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3758#endif
3759 do i = 1, num_fluids - 1
3760
3761# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3762#if defined(MFC_OpenACC)
3763# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3764!$acc atomic update
3765# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3766#elif defined(MFC_OpenMP)
3767# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3768!$omp atomic update
3769# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3770#endif
3771 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3772 & l) + real((0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j + 1)) &
3773 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j + 1))), kind=stp)
3774
3775
3776# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3777#if defined(MFC_OpenACC)
3778# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3779!$acc atomic update
3780# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3781#elif defined(MFC_OpenMP)
3782# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3783!$omp atomic update
3784# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3785#endif
3786 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3787 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
3788 & l)*vel_l(1)*(1._wp/dx(j + 1)), kind=stp)
3789
3790
3791# 1158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3792#if defined(MFC_OpenACC)
3793# 1158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3794!$acc atomic update
3795# 1158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3796#elif defined(MFC_OpenMP)
3797# 1158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3798!$omp atomic update
3799# 1158 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3800#endif
3801 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3802 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(1))*(1._wp/dx(j)) &
3803 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dx(j)), kind=stp)
3804
3805
3806# 1163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3807#if defined(MFC_OpenACC)
3808# 1163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3809!$acc atomic update
3810# 1163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3811#elif defined(MFC_OpenMP)
3812# 1163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3813!$omp atomic update
3814# 1163 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3815#endif
3816 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
3817 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
3818 & l)*vel_l(1)*(1._wp/dx(j)), kind=stp)
3819 end do
3820 end if
3821
3822
3823# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3824#if defined(MFC_OpenACC)
3825# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3826!$acc atomic update
3827# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3828#elif defined(MFC_OpenMP)
3829# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3830!$omp atomic update
3831# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3832#endif
3833 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
3834 & l) + real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j + 1)) &
3835 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j + 1))), kind=stp)
3836
3837
3838# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3839#if defined(MFC_OpenACC)
3840# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3841!$acc atomic update
3842# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3843#elif defined(MFC_OpenMP)
3844# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3845!$omp atomic update
3846# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3847#endif
3848 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
3849 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j + 1)) &
3850 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j + 1))), kind=stp)
3851
3852
3853# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3854#if defined(MFC_OpenACC)
3855# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3856!$acc atomic update
3857# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3858#elif defined(MFC_OpenMP)
3859# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3860!$omp atomic update
3861# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3862#endif
3863 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
3864 & l) + real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j + 1)) &
3865 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j + 1))), kind=stp)
3866
3867
3868# 1185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3869#if defined(MFC_OpenACC)
3870# 1185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3871!$acc atomic update
3872# 1185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3873#elif defined(MFC_OpenMP)
3874# 1185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3875!$omp atomic update
3876# 1185 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3877#endif
3878 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
3879 & 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) &
3880 & *(1._wp/dx(j + 1))), kind=stp)
3881
3882
3883# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3884#if defined(MFC_OpenACC)
3885# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3886!$acc atomic update
3887# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3888#elif defined(MFC_OpenMP)
3889# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3890!$omp atomic update
3891# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3892#endif
3893 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
3894 & l) - real((0.5_wp*dt*(rho_l*(vel_l(1))**2.0 + pres_l)*(1._wp/dx(j)) &
3895 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dx(j))), kind=stp)
3896
3897
3898# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3899#if defined(MFC_OpenACC)
3900# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3901!$acc atomic update
3902# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3903#elif defined(MFC_OpenMP)
3904# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3905!$omp atomic update
3906# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3907#endif
3908 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
3909 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dx(j)) &
3910 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dx(j))), kind=stp)
3911
3912
3913# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3914#if defined(MFC_OpenACC)
3915# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3916!$acc atomic update
3917# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3918#elif defined(MFC_OpenMP)
3919# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3920!$omp atomic update
3921# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3922#endif
3923 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
3924 & l) - real((0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dx(j)) &
3925 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dx(j))), kind=stp)
3926
3927
3928# 1205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3929#if defined(MFC_OpenACC)
3930# 1205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3931!$acc atomic update
3932# 1205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3933#elif defined(MFC_OpenMP)
3934# 1205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3935!$omp atomic update
3936# 1205 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3937#endif
3938 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
3939 & l) - real((0.5_wp*dt*(vel_l(1)*(e_l + pres_l))*(1._wp/dx(j)) - 0.5_wp*dt*cfl*(e_l) &
3940 & *(1._wp/dx(j))), kind=stp)
3941
3942
3943# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3944#if defined(MFC_OpenACC)
3945# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3946!$acc loop seq
3947# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3948#elif defined(MFC_OpenMP)
3949# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3950
3951# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3952#endif
3953 do i = 1, num_fluids
3954
3955# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3956#if defined(MFC_OpenACC)
3957# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3958!$acc atomic update
3959# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3960#elif defined(MFC_OpenMP)
3961# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3962!$omp atomic update
3963# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3964#endif
3965 rhs_vf(i)%sf(j + 1, k, l) = rhs_vf(i)%sf(j + 1, k, &
3966 & l) + real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
3967 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j + 1))), kind=stp)
3968
3969
3970# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3971#if defined(MFC_OpenACC)
3972# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3973!$acc atomic update
3974# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3975#elif defined(MFC_OpenMP)
3976# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3977!$omp atomic update
3978# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3979#endif
3980 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
3981 & l) - real((0.5_wp*dt*(alpha_rho_r(i)*vel_r(1))*(1._wp/dx(j)) &
3982 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dx(j))), kind=stp)
3983 end do
3984
3985 if (num_fluids > 1) then
3986
3987# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3988#if defined(MFC_OpenACC)
3989# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3990!$acc loop seq
3991# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3992#elif defined(MFC_OpenMP)
3993# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3994
3995# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
3996#endif
3997 do i = 1, num_fluids - 1
3998
3999# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4000#if defined(MFC_OpenACC)
4001# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4002!$acc atomic update
4003# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4004#elif defined(MFC_OpenMP)
4005# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4006!$omp atomic update
4007# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4008#endif
4009 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4010 & l) + real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j + 1)) &
4011 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j + 1))), kind=stp)
4012
4013
4014# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4015#if defined(MFC_OpenACC)
4016# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4017!$acc atomic update
4018# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4019#elif defined(MFC_OpenMP)
4020# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4021!$omp atomic update
4022# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4023#endif
4024 rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4025 & l) - real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j + 1, k, &
4026 & l)*vel_r(1)*(1._wp/dx(j + 1))), kind=stp)
4027
4028
4029# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4030#if defined(MFC_OpenACC)
4031# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4032!$acc atomic update
4033# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4034#elif defined(MFC_OpenMP)
4035# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4036!$omp atomic update
4037# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4038#endif
4039 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4040 & l) - real((0.5_wp*dt*(alpha_r(i)*vel_r(1))*(1._wp/dx(j)) &
4041 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dx(j))), kind=stp)
4042
4043
4044# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4045#if defined(MFC_OpenACC)
4046# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4047!$acc atomic update
4048# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4049#elif defined(MFC_OpenMP)
4050# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4051!$omp atomic update
4052# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4053#endif
4054 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4055 & l) + real((0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
4056 & l)*vel_r(1)*(1._wp/dx(j))), kind=stp)
4057 end do
4058 end if
4059
4060
4061# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4062#if defined(MFC_OpenACC)
4063# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4064!$acc atomic update
4065# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4066#elif defined(MFC_OpenMP)
4067# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4068!$omp atomic update
4069# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4070#endif
4071 rhs_vf(igr_momxb)%sf(j + 1, k, l) = rhs_vf(igr_momxb)%sf(j + 1, k, &
4072 & l) + real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j + 1)) &
4073 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j + 1))), kind=stp)
4074
4075
4076# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4077#if defined(MFC_OpenACC)
4078# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4079!$acc atomic update
4080# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4081#elif defined(MFC_OpenMP)
4082# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4083!$omp atomic update
4084# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4085#endif
4086 rhs_vf(igr_momxb + 1)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 1)%sf(j + 1, k, &
4087 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j + 1)) &
4088 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j + 1))), kind=stp)
4089
4090
4091# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4092#if defined(MFC_OpenACC)
4093# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4094!$acc atomic update
4095# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4096#elif defined(MFC_OpenMP)
4097# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4098!$omp atomic update
4099# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4100#endif
4101 rhs_vf(igr_momxb + 2)%sf(j + 1, k, l) = rhs_vf(igr_momxb + 2)%sf(j + 1, k, &
4102 & l) + real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j + 1)) &
4103 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j + 1))), kind=stp)
4104
4105
4106# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4107#if defined(MFC_OpenACC)
4108# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4109!$acc atomic update
4110# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4111#elif defined(MFC_OpenMP)
4112# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4113!$omp atomic update
4114# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4115#endif
4116 rhs_vf(igr_e_idx)%sf(j + 1, k, l) = rhs_vf(igr_e_idx)%sf(j + 1, k, &
4117 & 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) &
4118 & *(1._wp/dx(j + 1))), kind=stp)
4119
4120
4121# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4122#if defined(MFC_OpenACC)
4123# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4124!$acc atomic update
4125# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4126#elif defined(MFC_OpenMP)
4127# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4128!$omp atomic update
4129# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4130#endif
4131 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4132 & l) - real((0.5_wp*dt*(rho_r*(vel_r(1))**2.0 + pres_r)*(1._wp/dx(j)) &
4133 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dx(j))), kind=stp)
4134
4135
4136# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4137#if defined(MFC_OpenACC)
4138# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4139!$acc atomic update
4140# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4141#elif defined(MFC_OpenMP)
4142# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4143!$omp atomic update
4144# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4145#endif
4146 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4147 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(2)*(1._wp/dx(j)) &
4148 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dx(j))), kind=stp)
4149
4150
4151# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4152#if defined(MFC_OpenACC)
4153# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4154!$acc atomic update
4155# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4156#elif defined(MFC_OpenMP)
4157# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4158!$omp atomic update
4159# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4160#endif
4161 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
4162 & l) - real((0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dx(j)) &
4163 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dx(j))), kind=stp)
4164
4165
4166# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4167#if defined(MFC_OpenACC)
4168# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4169!$acc atomic update
4170# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4171#elif defined(MFC_OpenMP)
4172# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4173!$omp atomic update
4174# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4175#endif
4176 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4177 & l) - real((0.5_wp*dt*(vel_r(1)*(e_r + pres_r))*(1._wp/dx(j)) + 0.5_wp*dt*cfl*(e_r) &
4178 & *(1._wp/dx(j))), kind=stp)
4179 end do
4180 end do
4181 end do
4182
4183# 1290 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4184#if defined(MFC_OpenACC)
4185# 1290 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4186!$acc end parallel loop
4187# 1290 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4188#elif defined(MFC_OpenMP)
4189# 1290 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4190
4191# 1290 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4192!$omp end target teams loop
4193# 1290 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4194#endif
4195# 1292 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4196 end if
4197 else if (idir == 2) then
4198 if (p == 0) then
4199# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4200
4201# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4202
4203# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4204#if defined(MFC_OpenACC)
4205# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4206!$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, qv_igr, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
4207# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4208!$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)
4209# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4210#elif defined(MFC_OpenMP)
4211# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4212
4213# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4214
4215# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4216
4217# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4218!$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, &
4219# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4220!$omp& rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_igr, 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, &
4221# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4222!$omp& vflux_L_arr, vflux_R_arr)
4223# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4224#endif
4225# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4226 do l = 0, p
4227 do k = -1, n
4228 do j = 0, m
4229 if (viscous) then
4230 vflux_l_arr = 0._wp
4231 vflux_r_arr = 0._wp
4232
4233# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4234
4235# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4236#if defined(MFC_OpenACC)
4237# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4238!$acc loop seq
4239# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4240#elif defined(MFC_OpenMP)
4241# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4242
4243# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4244#endif
4245 do q = vidxb, vidxe
4246 ! x-direction contributions
4247
4248# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4249#if defined(MFC_OpenACC)
4250# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4251!$acc loop seq
4252# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4253#elif defined(MFC_OpenMP)
4254# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4255
4256# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4257#endif
4258 do i = -1, 1
4259 rho_l = 0._wp
4260
4261# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4262#if defined(MFC_OpenACC)
4263# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4264!$acc loop seq
4265# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4266#elif defined(MFC_OpenMP)
4267# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4268
4269# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4270#endif
4271 do r = 1, num_fluids
4272 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
4273 end do
4274 rho_sf_small(i) = rho_l
4275 end do
4276
4277 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
4278 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
4279 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
4280 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
4281 & l)/rho_sf_small(-1))
4282
4283 if (q > vidxb) then
4284 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
4285 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
4286 end if
4287 if (q < vidxe) then
4288 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
4289 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
4290 end if
4291
4292 ! y-direction contributions
4293
4294# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4295#if defined(MFC_OpenACC)
4296# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4297!$acc loop seq
4298# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4299#elif defined(MFC_OpenMP)
4300# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4301
4302# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4303#endif
4304 do i = -1, 1
4305 rho_l = 0._wp
4306
4307# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4308#if defined(MFC_OpenACC)
4309# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4310!$acc loop seq
4311# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4312#elif defined(MFC_OpenMP)
4313# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4314
4315# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4316#endif
4317 do r = 1, num_fluids
4318 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
4319 end do
4320 rho_sf_small(i) = rho_l
4321 end do
4322
4323 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
4324 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
4325 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
4326 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
4327 & l)/rho_sf_small(-1))
4328
4329 if (q > vidxb) then
4330 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
4331 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
4332 end if
4333 if (q < vidxe) then
4334 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
4335 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
4336 end if
4337 end do
4338 end if
4339
4340
4341# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4342#if defined(MFC_OpenACC)
4343# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4344!$acc loop seq
4345# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4346#elif defined(MFC_OpenMP)
4347# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4348
4349# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4350#endif
4351 do i = 1, num_fluids
4352 alpha_rho_l(i) = 0._wp
4353 alpha_rho_r(i) = 0._wp
4354 alpha_l(i) = 0._wp
4355 alpha_r(i) = 0._wp
4356 end do
4357
4358# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4359#if defined(MFC_OpenACC)
4360# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4361!$acc loop seq
4362# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4363#elif defined(MFC_OpenMP)
4364# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4365
4366# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4367#endif
4368 do i = 1, num_dims
4369 vel_l(i) = 0._wp
4370 vel_r(i) = 0._wp
4371 end do
4372
4373
4374# 1382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4375#if defined(MFC_OpenACC)
4376# 1382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4377!$acc loop seq
4378# 1382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4379#elif defined(MFC_OpenMP)
4380# 1382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4381
4382# 1382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4383#endif
4384 do q = vidxb + 1, vidxe
4385
4386# 1384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4387#if defined(MFC_OpenACC)
4388# 1384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4389!$acc loop seq
4390# 1384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4391#elif defined(MFC_OpenMP)
4392# 1384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4393
4394# 1384 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4395#endif
4396 do i = 1, num_fluids
4397 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
4398 end do
4399
4400 if (num_fluids > 1) then
4401
4402# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4403#if defined(MFC_OpenACC)
4404# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4405!$acc loop seq
4406# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4407#elif defined(MFC_OpenMP)
4408# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4409
4410# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4411#endif
4412 do i = 1, num_fluids - 1
4413 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4414 end do
4415 else
4416 alpha_l(1) = 1._wp
4417 end if
4418
4419
4420# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4421#if defined(MFC_OpenACC)
4422# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4423!$acc loop seq
4424# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4425#elif defined(MFC_OpenMP)
4426# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4427
4428# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4429#endif
4430 do i = 1, num_dims
4431 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4432 end do
4433 end do
4434
4435
4436# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4437#if defined(MFC_OpenACC)
4438# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4439!$acc loop seq
4440# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4441#elif defined(MFC_OpenMP)
4442# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4443
4444# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4445#endif
4446 do q = vidxb, vidxe - 1
4447
4448# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4449#if defined(MFC_OpenACC)
4450# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4451!$acc loop seq
4452# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4453#elif defined(MFC_OpenMP)
4454# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4455
4456# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4457#endif
4458 do i = 1, num_fluids
4459 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
4460 end do
4461
4462 if (num_fluids > 1) then
4463
4464# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4465#if defined(MFC_OpenACC)
4466# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4467!$acc loop seq
4468# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4469#elif defined(MFC_OpenMP)
4470# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4471
4472# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4473#endif
4474 do i = 1, num_fluids - 1
4475 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
4476 end do
4477 else
4478 alpha_r(1) = 1._wp
4479 end if
4480
4481
4482# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4483#if defined(MFC_OpenACC)
4484# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4485!$acc loop seq
4486# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4487#elif defined(MFC_OpenMP)
4488# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4489
4490# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4491#endif
4492 do i = 1, num_dims
4493 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
4494 end do
4495 end do
4496
4497 if (num_fluids > 1) then
4498 alpha_l(num_fluids) = 1._wp
4499 alpha_r(num_fluids) = 1._wp
4500
4501
4502# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4503#if defined(MFC_OpenACC)
4504# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4505!$acc loop seq
4506# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4507#elif defined(MFC_OpenMP)
4508# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4509
4510# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4511#endif
4512 do i = 1, num_fluids - 1
4513 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
4514 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
4515 end do
4516 end if
4517
4518 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_igr)
4519 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_igr)
4520
4521
4522# 1440 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4523#if defined(MFC_OpenACC)
4524# 1440 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4525!$acc loop seq
4526# 1440 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4527#elif defined(MFC_OpenMP)
4528# 1440 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4529
4530# 1440 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4531#endif
4532 do i = 1, num_dims
4533 vel_l(i) = vel_l(i)/rho_l
4534 vel_r(i) = vel_r(i)/rho_r
4535 end do
4536
4537 if (viscous) then
4538 mu_l = 0._wp
4539 mu_r = 0._wp
4540
4541# 1449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4542#if defined(MFC_OpenACC)
4543# 1449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4544!$acc loop seq
4545# 1449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4546#elif defined(MFC_OpenMP)
4547# 1449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4548
4549# 1449 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4550#endif
4551 do i = 1, num_fluids
4552 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
4553 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
4554 end do
4555
4556
4557# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4558#if defined(MFC_OpenACC)
4559# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4560!$acc atomic update
4561# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4562#elif defined(MFC_OpenMP)
4563# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4564!$omp atomic update
4565# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4566#endif
4567 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4568 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4569
4570# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4571#if defined(MFC_OpenACC)
4572# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4573!$acc atomic update
4574# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4575#elif defined(MFC_OpenMP)
4576# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4577!$omp atomic update
4578# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4579#endif
4580 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4581 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
4582
4583
4584# 1462 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4585#if defined(MFC_OpenACC)
4586# 1462 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4587!$acc atomic update
4588# 1462 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4589#elif defined(MFC_OpenMP)
4590# 1462 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4591!$omp atomic update
4592# 1462 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4593#endif
4594 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4595 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
4596
4597# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4598#if defined(MFC_OpenACC)
4599# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4600!$acc atomic update
4601# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4602#elif defined(MFC_OpenMP)
4603# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4604!$omp atomic update
4605# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4606#endif
4607 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4608 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
4609
4610
4611# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4612#if defined(MFC_OpenACC)
4613# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4614!$acc atomic update
4615# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4616#elif defined(MFC_OpenMP)
4617# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4618!$omp atomic update
4619# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4620#endif
4621 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4622 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
4623
4624# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4625#if defined(MFC_OpenACC)
4626# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4627!$acc atomic update
4628# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4629#elif defined(MFC_OpenMP)
4630# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4631!$omp atomic update
4632# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4633#endif
4634 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4635 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
4636
4637
4638# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4639#if defined(MFC_OpenACC)
4640# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4641!$acc atomic update
4642# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4643#elif defined(MFC_OpenMP)
4644# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4645!$omp atomic update
4646# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4647#endif
4648 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
4649 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
4650
4651# 1479 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4652#if defined(MFC_OpenACC)
4653# 1479 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4654!$acc atomic update
4655# 1479 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4656#elif defined(MFC_OpenMP)
4657# 1479 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4658!$omp atomic update
4659# 1479 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4660#endif
4661 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4662 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
4663
4664
4665# 1483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4666#if defined(MFC_OpenACC)
4667# 1483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4668!$acc atomic update
4669# 1483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4670#elif defined(MFC_OpenMP)
4671# 1483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4672!$omp atomic update
4673# 1483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4674#endif
4675 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4676 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4677
4678# 1486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4679#if defined(MFC_OpenACC)
4680# 1486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4681!$acc atomic update
4682# 1486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4683#elif defined(MFC_OpenMP)
4684# 1486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4685!$omp atomic update
4686# 1486 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4687#endif
4688 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4689 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4690
4691
4692# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4693#if defined(MFC_OpenACC)
4694# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4695!$acc atomic update
4696# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4697#elif defined(MFC_OpenMP)
4698# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4699!$omp atomic update
4700# 1490 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4701#endif
4702 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4703 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
4704
4705# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4706#if defined(MFC_OpenACC)
4707# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4708!$acc atomic update
4709# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4710#elif defined(MFC_OpenMP)
4711# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4712!$omp atomic update
4713# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4714#endif
4715 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4716 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
4717
4718
4719# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4720#if defined(MFC_OpenACC)
4721# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4722!$acc atomic update
4723# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4724#elif defined(MFC_OpenMP)
4725# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4726!$omp atomic update
4727# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4728#endif
4729 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4730 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
4731
4732# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4733#if defined(MFC_OpenACC)
4734# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4735!$acc atomic update
4736# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4737#elif defined(MFC_OpenMP)
4738# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4739!$omp atomic update
4740# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4741#endif
4742 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4743 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
4744
4745
4746# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4747#if defined(MFC_OpenACC)
4748# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4749!$acc atomic update
4750# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4751#elif defined(MFC_OpenMP)
4752# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4753!$omp atomic update
4754# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4755#endif
4756 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4757 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
4758
4759# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4760#if defined(MFC_OpenACC)
4761# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4762!$acc atomic update
4763# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4764#elif defined(MFC_OpenMP)
4765# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4766!$omp atomic update
4767# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4768#endif
4769 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
4770 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
4771 end if
4772
4773 e_l = 0._wp; e_r = 0._wp
4774 f_l = 0._wp; f_r = 0._wp
4775
4776
4777# 1515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4778#if defined(MFC_OpenACC)
4779# 1515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4780!$acc loop seq
4781# 1515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4782#elif defined(MFC_OpenMP)
4783# 1515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4784
4785# 1515 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4786#endif
4787 do q = vidxb + 1, vidxe
4788 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4789 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
4790 end do
4791
4792
4793# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4794#if defined(MFC_OpenACC)
4795# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4796!$acc loop seq
4797# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4798#elif defined(MFC_OpenMP)
4799# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4800
4801# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4802#endif
4803 do q = vidxb, vidxe - 1
4804 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
4805 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
4806 end do
4807
4808 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, &
4809 & vel_r, pres_l, pres_r, cfl)
4810
4811
4812# 1530 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4813#if defined(MFC_OpenACC)
4814# 1530 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4815!$acc loop seq
4816# 1530 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4817#elif defined(MFC_OpenMP)
4818# 1530 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4819
4820# 1530 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4821#endif
4822 do i = 1, num_fluids
4823
4824# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4825#if defined(MFC_OpenACC)
4826# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4827!$acc atomic update
4828# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4829#elif defined(MFC_OpenMP)
4830# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4831!$omp atomic update
4832# 1532 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4833#endif
4834 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
4835 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4836 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
4837
4838
4839# 1537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4840#if defined(MFC_OpenACC)
4841# 1537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4842!$acc atomic update
4843# 1537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4844#elif defined(MFC_OpenMP)
4845# 1537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4846!$omp atomic update
4847# 1537 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4848#endif
4849 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
4850 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
4851 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
4852 end do
4853
4854 if (num_fluids > 1) then
4855
4856# 1544 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4857#if defined(MFC_OpenACC)
4858# 1544 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4859!$acc loop seq
4860# 1544 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4861#elif defined(MFC_OpenMP)
4862# 1544 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4863
4864# 1544 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4865#endif
4866 do i = 1, num_fluids - 1
4867
4868# 1546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4869#if defined(MFC_OpenACC)
4870# 1546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4871!$acc atomic update
4872# 1546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4873#elif defined(MFC_OpenMP)
4874# 1546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4875!$omp atomic update
4876# 1546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4877#endif
4878 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4879 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
4880 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
4881
4882
4883# 1551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4884#if defined(MFC_OpenACC)
4885# 1551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4886!$acc atomic update
4887# 1551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4888#elif defined(MFC_OpenMP)
4889# 1551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4890!$omp atomic update
4891# 1551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4892#endif
4893 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4894 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
4895 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
4896
4897
4898# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4899#if defined(MFC_OpenACC)
4900# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4901!$acc atomic update
4902# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4903#elif defined(MFC_OpenMP)
4904# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4905!$omp atomic update
4906# 1556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4907#endif
4908 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4909 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
4910 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
4911
4912
4913# 1561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4914#if defined(MFC_OpenACC)
4915# 1561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4916!$acc atomic update
4917# 1561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4918#elif defined(MFC_OpenMP)
4919# 1561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4920!$omp atomic update
4921# 1561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4922#endif
4923 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
4924 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
4925 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
4926 end do
4927 end if
4928
4929
4930# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4931#if defined(MFC_OpenACC)
4932# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4933!$acc atomic update
4934# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4935#elif defined(MFC_OpenMP)
4936# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4937!$omp atomic update
4938# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4939#endif
4940 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
4941 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
4942 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
4943
4944
4945# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4946#if defined(MFC_OpenACC)
4947# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4948!$acc atomic update
4949# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4950#elif defined(MFC_OpenMP)
4951# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4952!$omp atomic update
4953# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4954#endif
4955 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
4956 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
4957 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
4958
4959
4960# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4961#if defined(MFC_OpenACC)
4962# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4963!$acc atomic update
4964# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4965#elif defined(MFC_OpenMP)
4966# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4967!$omp atomic update
4968# 1578 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4969#endif
4970 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
4971 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
4972 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
4973
4974
4975# 1583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4976#if defined(MFC_OpenACC)
4977# 1583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4978!$acc atomic update
4979# 1583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4980#elif defined(MFC_OpenMP)
4981# 1583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4982!$omp atomic update
4983# 1583 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4984#endif
4985 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
4986 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
4987 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
4988
4989
4990# 1588 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4991#if defined(MFC_OpenACC)
4992# 1588 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4993!$acc atomic update
4994# 1588 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4995#elif defined(MFC_OpenMP)
4996# 1588 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4997!$omp atomic update
4998# 1588 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
4999#endif
5000 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5001 & 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) &
5002 & )*(1._wp/dy(k)), kind=stp)
5003
5004
5005# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5006#if defined(MFC_OpenACC)
5007# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5008!$acc atomic update
5009# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5010#elif defined(MFC_OpenMP)
5011# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5012!$omp atomic update
5013# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5014#endif
5015 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5016 & 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) &
5017 & *(1._wp/dy(k)), kind=stp)
5018
5019
5020# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5021#if defined(MFC_OpenACC)
5022# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5023!$acc loop seq
5024# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5025#elif defined(MFC_OpenMP)
5026# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5027
5028# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5029#endif
5030 do i = 1, num_fluids
5031
5032# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5033#if defined(MFC_OpenACC)
5034# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5035!$acc atomic update
5036# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5037#elif defined(MFC_OpenMP)
5038# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5039!$omp atomic update
5040# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5041#endif
5042 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
5043 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5044 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
5045
5046# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5047#if defined(MFC_OpenACC)
5048# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5049!$acc atomic update
5050# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5051#elif defined(MFC_OpenMP)
5052# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5053!$omp atomic update
5054# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5055#endif
5056 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
5057 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
5058 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
5059 end do
5060
5061 if (num_fluids > 1) then
5062
5063# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5064#if defined(MFC_OpenACC)
5065# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5066!$acc loop seq
5067# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5068#elif defined(MFC_OpenMP)
5069# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5070
5071# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5072#endif
5073 do i = 1, num_fluids - 1
5074
5075# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5076#if defined(MFC_OpenACC)
5077# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5078!$acc atomic update
5079# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5080#elif defined(MFC_OpenMP)
5081# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5082!$omp atomic update
5083# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5084#endif
5085 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5086 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
5087 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
5088
5089
5090# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5091#if defined(MFC_OpenACC)
5092# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5093!$acc atomic update
5094# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5095#elif defined(MFC_OpenMP)
5096# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5097!$omp atomic update
5098# 1618 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5099#endif
5100 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5101 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
5102 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
5103
5104
5105# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5106#if defined(MFC_OpenACC)
5107# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5108!$acc atomic update
5109# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5110#elif defined(MFC_OpenMP)
5111# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5112!$omp atomic update
5113# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5114#endif
5115 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5116 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
5117 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
5118
5119
5120# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5121#if defined(MFC_OpenACC)
5122# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5123!$acc atomic update
5124# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5125#elif defined(MFC_OpenMP)
5126# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5127!$omp atomic update
5128# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5129#endif
5130 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
5131 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
5132 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
5133 end do
5134 end if
5135
5136# 1634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5137#if defined(MFC_OpenACC)
5138# 1634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5139!$acc atomic update
5140# 1634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5141#elif defined(MFC_OpenMP)
5142# 1634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5143!$omp atomic update
5144# 1634 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5145#endif
5146 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5147 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
5148 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
5149
5150# 1638 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5151#if defined(MFC_OpenACC)
5152# 1638 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5153!$acc atomic update
5154# 1638 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5155#elif defined(MFC_OpenMP)
5156# 1638 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5157!$omp atomic update
5158# 1638 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5159#endif
5160 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5161 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
5162 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
5163
5164# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5165#if defined(MFC_OpenACC)
5166# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5167!$acc atomic update
5168# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5169#elif defined(MFC_OpenMP)
5170# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5171!$omp atomic update
5172# 1642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5173#endif
5174 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5175 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
5176 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
5177
5178# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5179#if defined(MFC_OpenACC)
5180# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5181!$acc atomic update
5182# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5183#elif defined(MFC_OpenMP)
5184# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5185!$omp atomic update
5186# 1646 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5187#endif
5188 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5189 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
5190 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
5191
5192# 1650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5193#if defined(MFC_OpenACC)
5194# 1650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5195!$acc atomic update
5196# 1650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5197#elif defined(MFC_OpenMP)
5198# 1650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5199!$omp atomic update
5200# 1650 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5201#endif
5202 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5203 & 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) &
5204 & )*(1._wp/dy(k)), kind=stp)
5205
5206# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5207#if defined(MFC_OpenACC)
5208# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5209!$acc atomic update
5210# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5211#elif defined(MFC_OpenMP)
5212# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5213!$omp atomic update
5214# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5215#endif
5216 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5217 & 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) &
5218 & *(1._wp/dy(k)), kind=stp)
5219 end do
5220 end do
5221 end do
5222
5223# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5224#if defined(MFC_OpenACC)
5225# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5226!$acc end parallel loop
5227# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5228#elif defined(MFC_OpenMP)
5229# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5230
5231# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5232!$omp end target teams loop
5233# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5234#endif
5235# 1663 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5236 else
5237# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5238
5239# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5240
5241# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5242#if defined(MFC_OpenACC)
5243# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5244!$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, qv_igr, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
5245# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5246!$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)
5247# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5248#elif defined(MFC_OpenMP)
5249# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5250
5251# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5252
5253# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5254
5255# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5256!$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, &
5257# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5258!$omp& rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_igr, 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, &
5259# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5260!$omp& vflux_L_arr, vflux_R_arr)
5261# 1665 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5262#endif
5263# 1668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5264 do l = 0, p
5265 do k = -1, n
5266 do j = 0, m
5267 if (viscous) then
5268 vflux_l_arr = 0._wp
5269 vflux_r_arr = 0._wp
5270
5271# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5272
5273# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5274#if defined(MFC_OpenACC)
5275# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5276!$acc loop seq
5277# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5278#elif defined(MFC_OpenMP)
5279# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5280
5281# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5282#endif
5283 do q = vidxb, vidxe
5284 ! x-direction contributions
5285
5286# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5287#if defined(MFC_OpenACC)
5288# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5289!$acc loop seq
5290# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5291#elif defined(MFC_OpenMP)
5292# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5293
5294# 1685 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5295#endif
5296 do i = -1, 1
5297 rho_l = 0._wp
5298
5299# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5300#if defined(MFC_OpenACC)
5301# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5302!$acc loop seq
5303# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5304#elif defined(MFC_OpenMP)
5305# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5306
5307# 1688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5308#endif
5309 do r = 1, num_fluids
5310 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k + q, l)
5311 end do
5312 rho_sf_small(i) = rho_l
5313 end do
5314
5315 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k + q, &
5316 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k + q, l)/rho_sf_small(-1))
5317 dvel_small(2) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 1)%sf(j + 1, k + q, &
5318 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j - 1, k + q, &
5319 & l)/rho_sf_small(-1))
5320
5321 if (q > vidxb) then
5322 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(2))
5323 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
5324 end if
5325 if (q < vidxe) then
5326 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(2))
5327 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
5328 end if
5329
5330 ! y-direction contributions
5331
5332# 1711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5333#if defined(MFC_OpenACC)
5334# 1711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5335!$acc loop seq
5336# 1711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5337#elif defined(MFC_OpenMP)
5338# 1711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5339
5340# 1711 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5341#endif
5342 do i = -1, 1
5343 rho_l = 0._wp
5344
5345# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5346#if defined(MFC_OpenACC)
5347# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5348!$acc loop seq
5349# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5350#elif defined(MFC_OpenMP)
5351# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5352
5353# 1714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5354#endif
5355 do r = 1, num_fluids
5356 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i + q, l)
5357 end do
5358 rho_sf_small(i) = rho_l
5359 end do
5360
5361 dvel_small(1) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb)%sf(j, k + 1 + q, &
5362 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k - 1 + q, l)/rho_sf_small(-1))
5363 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1 + q, &
5364 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1 + q, &
5365 & l)/rho_sf_small(-1))
5366 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1 + q, &
5367 & l)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1 + q, &
5368 & l)/rho_sf_small(-1))
5369
5370 if (q > vidxb) then
5371 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
5372 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
5373 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(2))/3._wp
5374 end if
5375 if (q < vidxe) then
5376 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
5377 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
5378 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(2))/3._wp
5379 end if
5380
5381 ! z-direction contributions
5382
5383# 1742 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5384#if defined(MFC_OpenACC)
5385# 1742 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5386!$acc loop seq
5387# 1742 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5388#elif defined(MFC_OpenMP)
5389# 1742 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5390
5391# 1742 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5392#endif
5393 do i = -1, 1
5394 rho_l = 0._wp
5395
5396# 1745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5397#if defined(MFC_OpenACC)
5398# 1745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5399!$acc loop seq
5400# 1745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5401#elif defined(MFC_OpenMP)
5402# 1745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5403
5404# 1745 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5405#endif
5406 do r = 1, num_fluids
5407 rho_l = rho_l + q_cons_vf(r)%sf(j, k + q, l + i)
5408 end do
5409 rho_sf_small(i) = rho_l
5410 end do
5411
5412 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5413 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k + q, &
5414 & l - 1)/rho_sf_small(-1))
5415 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5416 & l + 1)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k + q, &
5417 & l - 1)/rho_sf_small(-1))
5418 if (q > vidxb) then
5419 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
5420 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(3))/3._wp
5421 end if
5422 if (q < vidxe) then
5423 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
5424 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(3))/3._wp
5425 end if
5426 end do
5427 end if
5428
5429
5430# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5431#if defined(MFC_OpenACC)
5432# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5433!$acc loop seq
5434# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5435#elif defined(MFC_OpenMP)
5436# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5437
5438# 1769 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5439#endif
5440 do i = 1, num_fluids
5441 alpha_rho_l(i) = 0._wp
5442 alpha_rho_r(i) = 0._wp
5443 alpha_l(i) = 0._wp
5444 alpha_r(i) = 0._wp
5445 end do
5446
5447# 1776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5448#if defined(MFC_OpenACC)
5449# 1776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5450!$acc loop seq
5451# 1776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5452#elif defined(MFC_OpenMP)
5453# 1776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5454
5455# 1776 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5456#endif
5457 do i = 1, num_dims
5458 vel_l(i) = 0._wp
5459 vel_r(i) = 0._wp
5460 end do
5461
5462
5463# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5464#if defined(MFC_OpenACC)
5465# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5466!$acc loop seq
5467# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5468#elif defined(MFC_OpenMP)
5469# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5470
5471# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5472#endif
5473 do q = vidxb + 1, vidxe
5474
5475# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5476#if defined(MFC_OpenACC)
5477# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5478!$acc loop seq
5479# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5480#elif defined(MFC_OpenMP)
5481# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5482
5483# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5484#endif
5485 do i = 1, num_fluids
5486 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k + q, l)
5487 end do
5488
5489 if (num_fluids > 1) then
5490
5491# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5492#if defined(MFC_OpenACC)
5493# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5494!$acc loop seq
5495# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5496#elif defined(MFC_OpenMP)
5497# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5498
5499# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5500#endif
5501 do i = 1, num_fluids - 1
5502 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5503 end do
5504 else
5505 alpha_l(1) = 1._wp
5506 end if
5507
5508
5509# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5510#if defined(MFC_OpenACC)
5511# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5512!$acc loop seq
5513# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5514#elif defined(MFC_OpenMP)
5515# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5516
5517# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5518#endif
5519 do i = 1, num_dims
5520 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5521 end do
5522 end do
5523
5524
5525# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5526#if defined(MFC_OpenACC)
5527# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5528!$acc loop seq
5529# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5530#elif defined(MFC_OpenMP)
5531# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5532
5533# 1804 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5534#endif
5535 do q = vidxb, vidxe - 1
5536
5537# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5538#if defined(MFC_OpenACC)
5539# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5540!$acc loop seq
5541# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5542#elif defined(MFC_OpenMP)
5543# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5544
5545# 1806 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5546#endif
5547 do i = 1, num_fluids
5548 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k + q, l)
5549 end do
5550
5551 if (num_fluids > 1) then
5552
5553# 1812 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5554#if defined(MFC_OpenACC)
5555# 1812 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5556!$acc loop seq
5557# 1812 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5558#elif defined(MFC_OpenMP)
5559# 1812 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5560
5561# 1812 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5562#endif
5563 do i = 1, num_fluids - 1
5564 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k + q, l)
5565 end do
5566 else
5567 alpha_r(1) = 1._wp
5568 end if
5569
5570
5571# 1820 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5572#if defined(MFC_OpenACC)
5573# 1820 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5574!$acc loop seq
5575# 1820 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5576#elif defined(MFC_OpenMP)
5577# 1820 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5578
5579# 1820 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5580#endif
5581 do i = 1, num_dims
5582 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k + q, l)
5583 end do
5584 end do
5585
5586 if (num_fluids > 1) then
5587 alpha_l(num_fluids) = 1._wp
5588 alpha_r(num_fluids) = 1._wp
5589
5590
5591# 1830 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5592#if defined(MFC_OpenACC)
5593# 1830 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5594!$acc loop seq
5595# 1830 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5596#elif defined(MFC_OpenMP)
5597# 1830 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5598
5599# 1830 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5600#endif
5601 do i = 1, num_fluids - 1
5602 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
5603 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
5604 end do
5605 end if
5606
5607 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_igr)
5608 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_igr)
5609
5610
5611# 1840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5612#if defined(MFC_OpenACC)
5613# 1840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5614!$acc loop seq
5615# 1840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5616#elif defined(MFC_OpenMP)
5617# 1840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5618
5619# 1840 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5620#endif
5621 do i = 1, num_dims
5622 vel_l(i) = vel_l(i)/rho_l
5623 vel_r(i) = vel_r(i)/rho_r
5624 end do
5625
5626 if (viscous) then
5627 mu_l = 0._wp
5628 mu_r = 0._wp
5629
5630# 1849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5631#if defined(MFC_OpenACC)
5632# 1849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5633!$acc loop seq
5634# 1849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5635#elif defined(MFC_OpenMP)
5636# 1849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5637
5638# 1849 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5639#endif
5640 do i = 1, num_fluids
5641 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
5642 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
5643 end do
5644
5645
5646# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5647#if defined(MFC_OpenACC)
5648# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5649!$acc atomic update
5650# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5651#elif defined(MFC_OpenMP)
5652# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5653!$omp atomic update
5654# 1855 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5655#endif
5656 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5657 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5658
5659# 1858 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5660#if defined(MFC_OpenACC)
5661# 1858 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5662!$acc atomic update
5663# 1858 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5664#elif defined(MFC_OpenMP)
5665# 1858 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5666!$omp atomic update
5667# 1858 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5668#endif
5669 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5670 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k + 1)), kind=stp)
5671
5672
5673# 1862 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5674#if defined(MFC_OpenACC)
5675# 1862 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5676!$acc atomic update
5677# 1862 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5678#elif defined(MFC_OpenMP)
5679# 1862 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5680!$omp atomic update
5681# 1862 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5682#endif
5683 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5684 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dy(k)), kind=stp)
5685
5686# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5687#if defined(MFC_OpenACC)
5688# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5689!$acc atomic update
5690# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5691#elif defined(MFC_OpenMP)
5692# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5693!$omp atomic update
5694# 1865 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5695#endif
5696 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5697 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dy(k)), kind=stp)
5698
5699
5700# 1869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5701#if defined(MFC_OpenACC)
5702# 1869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5703!$acc atomic update
5704# 1869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5705#elif defined(MFC_OpenMP)
5706# 1869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5707!$omp atomic update
5708# 1869 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5709#endif
5710 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
5711 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k + 1)), kind=stp)
5712
5713# 1872 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5714#if defined(MFC_OpenACC)
5715# 1872 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5716!$acc atomic update
5717# 1872 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5718#elif defined(MFC_OpenMP)
5719# 1872 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5720!$omp atomic update
5721# 1872 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5722#endif
5723 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5724 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k + 1)), kind=stp)
5725
5726
5727# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5728#if defined(MFC_OpenACC)
5729# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5730!$acc atomic update
5731# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5732#elif defined(MFC_OpenMP)
5733# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5734!$omp atomic update
5735# 1876 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5736#endif
5737 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
5738 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dy(k)), kind=stp)
5739
5740# 1879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5741#if defined(MFC_OpenACC)
5742# 1879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5743!$acc atomic update
5744# 1879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5745#elif defined(MFC_OpenMP)
5746# 1879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5747!$omp atomic update
5748# 1879 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5749#endif
5750 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5751 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dy(k)), kind=stp)
5752
5753
5754# 1883 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5755#if defined(MFC_OpenACC)
5756# 1883 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5757!$acc atomic update
5758# 1883 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5759#elif defined(MFC_OpenMP)
5760# 1883 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5761!$omp atomic update
5762# 1883 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5763#endif
5764 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5765 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5766
5767# 1886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5768#if defined(MFC_OpenACC)
5769# 1886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5770!$acc atomic update
5771# 1886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5772#elif defined(MFC_OpenMP)
5773# 1886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5774!$omp atomic update
5775# 1886 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5776#endif
5777 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5778 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k + 1)), kind=stp)
5779
5780
5781# 1890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5782#if defined(MFC_OpenACC)
5783# 1890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5784!$acc atomic update
5785# 1890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5786#elif defined(MFC_OpenMP)
5787# 1890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5788!$omp atomic update
5789# 1890 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5790#endif
5791 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5792 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dy(k)), kind=stp)
5793
5794# 1893 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5795#if defined(MFC_OpenACC)
5796# 1893 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5797!$acc atomic update
5798# 1893 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5799#elif defined(MFC_OpenMP)
5800# 1893 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5801!$omp atomic update
5802# 1893 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5803#endif
5804 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5805 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(3)*(1._wp/dy(k)), kind=stp)
5806
5807
5808# 1897 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5809#if defined(MFC_OpenACC)
5810# 1897 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5811!$acc atomic update
5812# 1897 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5813#elif defined(MFC_OpenMP)
5814# 1897 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5815!$omp atomic update
5816# 1897 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5817#endif
5818 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
5819 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k + 1)), kind=stp)
5820
5821# 1900 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5822#if defined(MFC_OpenACC)
5823# 1900 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5824!$acc atomic update
5825# 1900 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5826#elif defined(MFC_OpenMP)
5827# 1900 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5828!$omp atomic update
5829# 1900 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5830#endif
5831 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5832 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k + 1)), kind=stp)
5833
5834
5835# 1904 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5836#if defined(MFC_OpenACC)
5837# 1904 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5838!$acc atomic update
5839# 1904 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5840#elif defined(MFC_OpenMP)
5841# 1904 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5842!$omp atomic update
5843# 1904 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5844#endif
5845 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
5846 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dy(k)), kind=stp)
5847
5848# 1907 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5849#if defined(MFC_OpenACC)
5850# 1907 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5851!$acc atomic update
5852# 1907 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5853#elif defined(MFC_OpenMP)
5854# 1907 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5855!$omp atomic update
5856# 1907 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5857#endif
5858 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5859 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(3)*(1._wp/dy(k)), kind=stp)
5860
5861
5862# 1911 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5863#if defined(MFC_OpenACC)
5864# 1911 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5865!$acc atomic update
5866# 1911 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5867#elif defined(MFC_OpenMP)
5868# 1911 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5869!$omp atomic update
5870# 1911 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5871#endif
5872 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5873 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k + 1)), kind=stp)
5874
5875# 1914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5876#if defined(MFC_OpenACC)
5877# 1914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5878!$acc atomic update
5879# 1914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5880#elif defined(MFC_OpenMP)
5881# 1914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5882!$omp atomic update
5883# 1914 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5884#endif
5885 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5886 & l) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
5887
5888
5889# 1918 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5890#if defined(MFC_OpenACC)
5891# 1918 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5892!$acc atomic update
5893# 1918 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5894#elif defined(MFC_OpenMP)
5895# 1918 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5896!$omp atomic update
5897# 1918 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5898#endif
5899 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5900 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dy(k)), kind=stp)
5901
5902# 1921 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5903#if defined(MFC_OpenACC)
5904# 1921 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5905!$acc atomic update
5906# 1921 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5907#elif defined(MFC_OpenMP)
5908# 1921 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5909!$omp atomic update
5910# 1921 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5911#endif
5912 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5913 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(2)*(1._wp/dy(k)), kind=stp)
5914
5915
5916# 1925 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5917#if defined(MFC_OpenACC)
5918# 1925 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5919!$acc atomic update
5920# 1925 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5921#elif defined(MFC_OpenMP)
5922# 1925 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5923!$omp atomic update
5924# 1925 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5925#endif
5926 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
5927 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k + 1)), kind=stp)
5928
5929# 1928 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5930#if defined(MFC_OpenACC)
5931# 1928 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5932!$acc atomic update
5933# 1928 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5934#elif defined(MFC_OpenMP)
5935# 1928 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5936!$omp atomic update
5937# 1928 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5938#endif
5939 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
5940 & l) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
5941
5942
5943# 1932 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5944#if defined(MFC_OpenACC)
5945# 1932 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5946!$acc atomic update
5947# 1932 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5948#elif defined(MFC_OpenMP)
5949# 1932 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5950!$omp atomic update
5951# 1932 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5952#endif
5953 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
5954 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dy(k)), kind=stp)
5955
5956# 1935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5957#if defined(MFC_OpenACC)
5958# 1935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5959!$acc atomic update
5960# 1935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5961#elif defined(MFC_OpenMP)
5962# 1935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5963!$omp atomic update
5964# 1935 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5965#endif
5966 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
5967 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(2)*(1._wp/dy(k)), kind=stp)
5968 end if
5969
5970 e_l = 0._wp; e_r = 0._wp
5971 f_l = 0._wp; f_r = 0._wp
5972
5973
5974# 1943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5975#if defined(MFC_OpenACC)
5976# 1943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5977!$acc loop seq
5978# 1943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5979#elif defined(MFC_OpenMP)
5980# 1943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5981
5982# 1943 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5983#endif
5984 do q = vidxb + 1, vidxe
5985 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
5986 f_l = f_l + coeff_l(q)*jac(j, k + q, l)
5987 end do
5988
5989
5990# 1949 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5991#if defined(MFC_OpenACC)
5992# 1949 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5993!$acc loop seq
5994# 1949 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5995#elif defined(MFC_OpenMP)
5996# 1949 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5997
5998# 1949 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
5999#endif
6000 do q = vidxb, vidxe - 1
6001 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k + q, l)
6002 f_r = f_r + coeff_r(q)*jac(j, k + q, l)
6003 end do
6004
6005 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, &
6006 & vel_r, pres_l, pres_r, cfl)
6007
6008
6009# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6010#if defined(MFC_OpenACC)
6011# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6012!$acc loop seq
6013# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6014#elif defined(MFC_OpenMP)
6015# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6016
6017# 1958 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6018#endif
6019 do i = 1, num_fluids
6020
6021# 1960 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6022#if defined(MFC_OpenACC)
6023# 1960 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6024!$acc atomic update
6025# 1960 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6026#elif defined(MFC_OpenMP)
6027# 1960 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6028!$omp atomic update
6029# 1960 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6030#endif
6031 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6032 & l) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6033 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k + 1)), kind=stp)
6034
6035
6036# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6037#if defined(MFC_OpenACC)
6038# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6039!$acc atomic update
6040# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6041#elif defined(MFC_OpenMP)
6042# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6043!$omp atomic update
6044# 1965 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6045#endif
6046 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6047 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(2))*(1._wp/dy(k)) &
6048 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dy(k)), kind=stp)
6049 end do
6050
6051 if (num_fluids > 1) then
6052
6053# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6054#if defined(MFC_OpenACC)
6055# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6056!$acc loop seq
6057# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6058#elif defined(MFC_OpenMP)
6059# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6060
6061# 1972 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6062#endif
6063 do i = 1, num_fluids - 1
6064
6065# 1974 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6066#if defined(MFC_OpenACC)
6067# 1974 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6068!$acc atomic update
6069# 1974 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6070#elif defined(MFC_OpenMP)
6071# 1974 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6072!$omp atomic update
6073# 1974 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6074#endif
6075 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6076 & l) + real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k + 1)) &
6077 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k + 1)), kind=stp)
6078
6079
6080# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6081#if defined(MFC_OpenACC)
6082# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6083!$acc atomic update
6084# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6085#elif defined(MFC_OpenMP)
6086# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6087!$omp atomic update
6088# 1979 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6089#endif
6090 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6091 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6092 & l)*vel_l(2)*(1._wp/dy(k + 1)), kind=stp)
6093
6094
6095# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6096#if defined(MFC_OpenACC)
6097# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6098!$acc atomic update
6099# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6100#elif defined(MFC_OpenMP)
6101# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6102!$omp atomic update
6103# 1984 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6104#endif
6105 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6106 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(2))*(1._wp/dy(k)) &
6107 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dy(k)), kind=stp)
6108
6109
6110# 1989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6111#if defined(MFC_OpenACC)
6112# 1989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6113!$acc atomic update
6114# 1989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6115#elif defined(MFC_OpenMP)
6116# 1989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6117!$omp atomic update
6118# 1989 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6119#endif
6120 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6121 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6122 & l)*vel_l(2)*(1._wp/dy(k)), kind=stp)
6123 end do
6124 end if
6125
6126
6127# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6128#if defined(MFC_OpenACC)
6129# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6130!$acc atomic update
6131# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6132#elif defined(MFC_OpenMP)
6133# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6134!$omp atomic update
6135# 1996 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6136#endif
6137 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6138 & l) + real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k + 1)) &
6139 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k + 1)), kind=stp)
6140
6141
6142# 2001 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6143#if defined(MFC_OpenACC)
6144# 2001 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6145!$acc atomic update
6146# 2001 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6147#elif defined(MFC_OpenMP)
6148# 2001 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6149!$omp atomic update
6150# 2001 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6151#endif
6152 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6153 & l) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(2)*(1._wp/dy(k + 1)) &
6154 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dy(k + 1)), kind=stp)
6155
6156
6157# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6158#if defined(MFC_OpenACC)
6159# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6160!$acc atomic update
6161# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6162#elif defined(MFC_OpenMP)
6163# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6164!$omp atomic update
6165# 2006 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6166#endif
6167 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6168 & l) + real(0.5_wp*dt*rho_l*vel_l(3)*vel_l(2)*(1._wp/dy(k + 1)) &
6169 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dy(k + 1)), kind=stp)
6170
6171
6172# 2011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6173#if defined(MFC_OpenACC)
6174# 2011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6175!$acc atomic update
6176# 2011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6177#elif defined(MFC_OpenMP)
6178# 2011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6179!$omp atomic update
6180# 2011 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6181#endif
6182 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6183 & l) + real(0.5_wp*dt*(vel_l(2)*(e_l + pres_l + f_l))*(1._wp/dy(k + 1)) &
6184 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dy(k + 1)), kind=stp)
6185
6186
6187# 2016 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6188#if defined(MFC_OpenACC)
6189# 2016 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6190!$acc atomic update
6191# 2016 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6192#elif defined(MFC_OpenMP)
6193# 2016 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6194!$omp atomic update
6195# 2016 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6196#endif
6197 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6198 & l) - real(0.5_wp*dt*(rho_l*(vel_l(2))**2.0 + pres_l + f_l)*(1._wp/dy(k)) &
6199 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dy(k)), kind=stp)
6200
6201
6202# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6203#if defined(MFC_OpenACC)
6204# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6205!$acc atomic update
6206# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6207#elif defined(MFC_OpenMP)
6208# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6209!$omp atomic update
6210# 2021 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6211#endif
6212 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6213 & 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) &
6214 & )*(1._wp/dy(k)), kind=stp)
6215
6216
6217# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6218#if defined(MFC_OpenACC)
6219# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6220!$acc atomic update
6221# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6222#elif defined(MFC_OpenMP)
6223# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6224!$omp atomic update
6225# 2026 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6226#endif
6227 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6228 & 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) &
6229 & )*(1._wp/dy(k)), kind=stp)
6230
6231
6232# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6233#if defined(MFC_OpenACC)
6234# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6235!$acc atomic update
6236# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6237#elif defined(MFC_OpenMP)
6238# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6239!$omp atomic update
6240# 2031 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6241#endif
6242 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6243 & 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) &
6244 & *(1._wp/dy(k)), kind=stp)
6245
6246
6247# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6248#if defined(MFC_OpenACC)
6249# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6250!$acc loop seq
6251# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6252#elif defined(MFC_OpenMP)
6253# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6254
6255# 2036 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6256#endif
6257 do i = 1, num_fluids
6258
6259# 2038 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6260#if defined(MFC_OpenACC)
6261# 2038 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6262!$acc atomic update
6263# 2038 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6264#elif defined(MFC_OpenMP)
6265# 2038 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6266!$omp atomic update
6267# 2038 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6268#endif
6269 rhs_vf(i)%sf(j, k + 1, l) = rhs_vf(i)%sf(j, k + 1, &
6270 & l) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6271 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k + 1)), kind=stp)
6272
6273
6274# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6275#if defined(MFC_OpenACC)
6276# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6277!$acc atomic update
6278# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6279#elif defined(MFC_OpenMP)
6280# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6281!$omp atomic update
6282# 2043 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6283#endif
6284 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
6285 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(2))*(1._wp/dy(k)) &
6286 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dy(k)), kind=stp)
6287 end do
6288
6289 if (num_fluids > 1) then
6290
6291# 2050 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6292#if defined(MFC_OpenACC)
6293# 2050 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6294!$acc loop seq
6295# 2050 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6296#elif defined(MFC_OpenMP)
6297# 2050 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6298
6299# 2050 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6300#endif
6301 do i = 1, num_fluids - 1
6302
6303# 2052 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6304#if defined(MFC_OpenACC)
6305# 2052 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6306!$acc atomic update
6307# 2052 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6308#elif defined(MFC_OpenMP)
6309# 2052 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6310!$omp atomic update
6311# 2052 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6312#endif
6313 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6314 & l) + real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k + 1)) &
6315 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k + 1)), kind=stp)
6316
6317
6318# 2057 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6319#if defined(MFC_OpenACC)
6320# 2057 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6321!$acc atomic update
6322# 2057 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6323#elif defined(MFC_OpenMP)
6324# 2057 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6325!$omp atomic update
6326# 2057 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6327#endif
6328 rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6329 & l) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k + 1, &
6330 & l)*vel_r(2)*(1._wp/dy(k + 1)), kind=stp)
6331
6332
6333# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6334#if defined(MFC_OpenACC)
6335# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6336!$acc atomic update
6337# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6338#elif defined(MFC_OpenMP)
6339# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6340!$omp atomic update
6341# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6342#endif
6343 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6344 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(2))*(1._wp/dy(k)) &
6345 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dy(k)), kind=stp)
6346
6347
6348# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6349#if defined(MFC_OpenACC)
6350# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6351!$acc atomic update
6352# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6353#elif defined(MFC_OpenMP)
6354# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6355!$omp atomic update
6356# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6357#endif
6358 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
6359 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
6360 & l)*vel_r(2)*(1._wp/dy(k)), kind=stp)
6361 end do
6362 end if
6363
6364
6365# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6366#if defined(MFC_OpenACC)
6367# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6368!$acc atomic update
6369# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6370#elif defined(MFC_OpenMP)
6371# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6372!$omp atomic update
6373# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6374#endif
6375 rhs_vf(igr_momxb + 1)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 1)%sf(j, k + 1, &
6376 & l) + real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k + 1)) &
6377 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k + 1)), kind=stp)
6378
6379
6380# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6381#if defined(MFC_OpenACC)
6382# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6383!$acc atomic update
6384# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6385#elif defined(MFC_OpenMP)
6386# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6387!$omp atomic update
6388# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6389#endif
6390 rhs_vf(igr_momxb)%sf(j, k + 1, l) = rhs_vf(igr_momxb)%sf(j, k + 1, &
6391 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(1)*(1._wp/dy(k + 1)) &
6392 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dy(k + 1)), kind=stp)
6393
6394
6395# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6396#if defined(MFC_OpenACC)
6397# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6398!$acc atomic update
6399# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6400#elif defined(MFC_OpenMP)
6401# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6402!$omp atomic update
6403# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6404#endif
6405 rhs_vf(igr_momxb + 2)%sf(j, k + 1, l) = rhs_vf(igr_momxb + 2)%sf(j, k + 1, &
6406 & l) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dy(k + 1)) &
6407 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dy(k + 1)), kind=stp)
6408
6409
6410# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6411#if defined(MFC_OpenACC)
6412# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6413!$acc atomic update
6414# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6415#elif defined(MFC_OpenMP)
6416# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6417!$omp atomic update
6418# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6419#endif
6420 rhs_vf(igr_e_idx)%sf(j, k + 1, l) = rhs_vf(igr_e_idx)%sf(j, k + 1, &
6421 & l) + real(0.5_wp*dt*(vel_r(2)*(e_r + pres_r + f_r))*(1._wp/dy(k + 1)) &
6422 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dy(k + 1)), kind=stp)
6423
6424
6425# 2094 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6426#if defined(MFC_OpenACC)
6427# 2094 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6428!$acc atomic update
6429# 2094 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6430#elif defined(MFC_OpenMP)
6431# 2094 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6432!$omp atomic update
6433# 2094 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6434#endif
6435 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
6436 & l) - real(0.5_wp*dt*(rho_r*(vel_r(2))**2.0 + pres_r + f_r)*(1._wp/dy(k)) &
6437 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dy(k)), kind=stp)
6438
6439
6440# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6441#if defined(MFC_OpenACC)
6442# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6443!$acc atomic update
6444# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6445#elif defined(MFC_OpenMP)
6446# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6447!$omp atomic update
6448# 2099 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6449#endif
6450 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6451 & 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) &
6452 & )*(1._wp/dy(k)), kind=stp)
6453
6454
6455# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6456#if defined(MFC_OpenACC)
6457# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6458!$acc atomic update
6459# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6460#elif defined(MFC_OpenMP)
6461# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6462!$omp atomic update
6463# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6464#endif
6465 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
6466 & 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) &
6467 & )*(1._wp/dy(k)), kind=stp)
6468
6469
6470# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6471#if defined(MFC_OpenACC)
6472# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6473!$acc atomic update
6474# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6475#elif defined(MFC_OpenMP)
6476# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6477!$omp atomic update
6478# 2109 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6479#endif
6480 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6481 & 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) &
6482 & *(1._wp/dy(k)), kind=stp)
6483 end do
6484 end do
6485 end do
6486
6487# 2116 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6488#if defined(MFC_OpenACC)
6489# 2116 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6490!$acc end parallel loop
6491# 2116 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6492#elif defined(MFC_OpenMP)
6493# 2116 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6494
6495# 2116 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6496!$omp end target teams loop
6497# 2116 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6498#endif
6499# 2118 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6500 end if
6501 else if (idir == 3) then
6502# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6503
6504# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6505
6506# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6507#if defined(MFC_OpenACC)
6508# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6509!$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, qv_igr, mu_L, mu_R, vel_L, vel_R, pres_L, pres_R, alpha_L, alpha_R, &
6510# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6511!$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)
6512# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6513#elif defined(MFC_OpenMP)
6514# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6515
6516# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6517
6518# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6519
6520# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6521!$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, &
6522# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6523!$omp& rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_igr, 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, &
6524# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6525!$omp& vflux_L_arr, vflux_R_arr)
6526# 2121 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6527#endif
6528# 2124 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6529 do l = -1, p
6530 do k = 0, n
6531 do j = 0, m
6532 if (viscous) then
6533 vflux_l_arr = 0._wp
6534 vflux_r_arr = 0._wp
6535
6536# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6537
6538# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6539#if defined(MFC_OpenACC)
6540# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6541!$acc loop seq
6542# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6543#elif defined(MFC_OpenMP)
6544# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6545
6546# 2138 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6547#endif
6548 do q = vidxb, vidxe
6549 ! x-direction contributions
6550
6551# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6552#if defined(MFC_OpenACC)
6553# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6554!$acc loop seq
6555# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6556#elif defined(MFC_OpenMP)
6557# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6558
6559# 2141 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6560#endif
6561 do i = -1, 1
6562 rho_l = 0._wp
6563
6564# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6565#if defined(MFC_OpenACC)
6566# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6567!$acc loop seq
6568# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6569#elif defined(MFC_OpenMP)
6570# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6571
6572# 2144 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6573#endif
6574 do r = 1, num_fluids
6575 rho_l = rho_l + q_cons_vf(r)%sf(j + i, k, l + q)
6576 end do
6577 rho_sf_small(i) = rho_l
6578 end do
6579
6580 dvel_small(1) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb)%sf(j + 1, k, &
6581 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j - 1, k, l + q)/rho_sf_small(-1))
6582 dvel_small(3) = (1/(2._wp*dx(j)))*(q_cons_vf(igr_momxb + 2)%sf(j + 1, k, &
6583 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j - 1, k, &
6584 & l + q)/rho_sf_small(-1))
6585
6586 if (q > vidxb) then
6587 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(3))
6588 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(1))/3._wp
6589 end if
6590 if (q < vidxe) then
6591 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(3))
6592 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(1))/3._wp
6593 end if
6594
6595 ! y-direction contributions
6596
6597# 2167 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6598#if defined(MFC_OpenACC)
6599# 2167 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6600!$acc loop seq
6601# 2167 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6602#elif defined(MFC_OpenMP)
6603# 2167 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6604
6605# 2167 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6606#endif
6607 do i = -1, 1
6608 rho_l = 0._wp
6609
6610# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6611#if defined(MFC_OpenACC)
6612# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6613!$acc loop seq
6614# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6615#elif defined(MFC_OpenMP)
6616# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6617
6618# 2170 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6619#endif
6620 do r = 1, num_fluids
6621 rho_l = rho_l + q_cons_vf(r)%sf(j, k + i, l + q)
6622 end do
6623 rho_sf_small(i) = rho_l
6624 end do
6625
6626 dvel_small(2) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 1)%sf(j, k + 1, &
6627 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k - 1, &
6628 & l + q)/rho_sf_small(-1))
6629 dvel_small(3) = (1/(2._wp*dy(k)))*(q_cons_vf(igr_momxb + 2)%sf(j, k + 1, &
6630 & l + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k - 1, &
6631 & l + q)/rho_sf_small(-1))
6632
6633 if (q > vidxb) then
6634 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(3))
6635 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(-2._wp*dvel_small(2))/3._wp
6636 end if
6637 if (q < vidxe) then
6638 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(3))
6639 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(-2._wp*dvel_small(2))/3._wp
6640 end if
6641
6642 ! z-direction contributions
6643
6644# 2194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6645#if defined(MFC_OpenACC)
6646# 2194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6647!$acc loop seq
6648# 2194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6649#elif defined(MFC_OpenMP)
6650# 2194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6651
6652# 2194 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6653#endif
6654 do i = -1, 1
6655 rho_l = 0._wp
6656
6657# 2197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6658#if defined(MFC_OpenACC)
6659# 2197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6660!$acc loop seq
6661# 2197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6662#elif defined(MFC_OpenMP)
6663# 2197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6664
6665# 2197 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6666#endif
6667 do r = 1, num_fluids
6668 rho_l = rho_l + q_cons_vf(r)%sf(j, k, l + i + q)
6669 end do
6670 rho_sf_small(i) = rho_l
6671 end do
6672 dvel_small(1) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb)%sf(j, k, &
6673 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb)%sf(j, k, &
6674 & l - 1 + q)/rho_sf_small(-1))
6675 dvel_small(2) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 1)%sf(j, k, &
6676 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 1)%sf(j, k, &
6677 & l - 1 + q)/rho_sf_small(-1))
6678 dvel_small(3) = (1/(2._wp*dz(l)))*(q_cons_vf(igr_momxb + 2)%sf(j, k, &
6679 & l + 1 + q)/rho_sf_small(1) - q_cons_vf(igr_momxb + 2)%sf(j, k, &
6680 & l - 1 + q)/rho_sf_small(-1))
6681 if (q > vidxb) then
6682 vflux_l_arr(1) = vflux_l_arr(1) + coeff_l(q)*(dvel_small(1))
6683 vflux_l_arr(2) = vflux_l_arr(2) + coeff_l(q)*(dvel_small(2))
6684 vflux_l_arr(3) = vflux_l_arr(3) + coeff_l(q)*(4._wp*dvel_small(3))/3._wp
6685 end if
6686 if (q < vidxe) then
6687 vflux_r_arr(1) = vflux_r_arr(1) + coeff_r(q)*(dvel_small(1))
6688 vflux_r_arr(2) = vflux_r_arr(2) + coeff_r(q)*(dvel_small(2))
6689 vflux_r_arr(3) = vflux_r_arr(3) + coeff_r(q)*(4._wp*dvel_small(3))/3._wp
6690 end if
6691 end do
6692 end if
6693
6694
6695# 2225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6696#if defined(MFC_OpenACC)
6697# 2225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6698!$acc loop seq
6699# 2225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6700#elif defined(MFC_OpenMP)
6701# 2225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6702
6703# 2225 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6704#endif
6705 do i = 1, num_fluids
6706 alpha_rho_l(i) = 0._wp
6707 alpha_rho_r(i) = 0._wp
6708 alpha_l(i) = 0._wp
6709 alpha_r(i) = 0._wp
6710 end do
6711
6712
6713# 2233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6714#if defined(MFC_OpenACC)
6715# 2233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6716!$acc loop seq
6717# 2233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6718#elif defined(MFC_OpenMP)
6719# 2233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6720
6721# 2233 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6722#endif
6723 do i = 1, num_dims
6724 vel_l(i) = 0._wp
6725 vel_r(i) = 0._wp
6726 end do
6727
6728
6729# 2239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6730#if defined(MFC_OpenACC)
6731# 2239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6732!$acc loop seq
6733# 2239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6734#elif defined(MFC_OpenMP)
6735# 2239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6736
6737# 2239 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6738#endif
6739 do q = vidxb + 1, vidxe
6740
6741# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6742#if defined(MFC_OpenACC)
6743# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6744!$acc loop seq
6745# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6746#elif defined(MFC_OpenMP)
6747# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6748
6749# 2241 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6750#endif
6751 do i = 1, num_fluids
6752 alpha_rho_l(i) = alpha_rho_l(i) + coeff_l(q)*q_cons_vf(i)%sf(j, k, l + q)
6753 end do
6754
6755 if (num_fluids > 1) then
6756
6757# 2247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6758#if defined(MFC_OpenACC)
6759# 2247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6760!$acc loop seq
6761# 2247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6762#elif defined(MFC_OpenMP)
6763# 2247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6764
6765# 2247 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6766#endif
6767 do i = 1, num_fluids - 1
6768 alpha_l(i) = alpha_l(i) + coeff_l(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6769 end do
6770 else
6771 alpha_l(1) = 1._wp
6772 end if
6773
6774
6775# 2255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6776#if defined(MFC_OpenACC)
6777# 2255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6778!$acc loop seq
6779# 2255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6780#elif defined(MFC_OpenMP)
6781# 2255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6782
6783# 2255 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6784#endif
6785 do i = 1, num_dims
6786 vel_l(i) = vel_l(i) + coeff_l(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6787 end do
6788 end do
6789
6790
6791# 2261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6792#if defined(MFC_OpenACC)
6793# 2261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6794!$acc loop seq
6795# 2261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6796#elif defined(MFC_OpenMP)
6797# 2261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6798
6799# 2261 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6800#endif
6801 do q = vidxb, vidxe - 1
6802
6803# 2263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6804#if defined(MFC_OpenACC)
6805# 2263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6806!$acc loop seq
6807# 2263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6808#elif defined(MFC_OpenMP)
6809# 2263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6810
6811# 2263 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6812#endif
6813 do i = 1, num_fluids
6814 alpha_rho_r(i) = alpha_rho_r(i) + coeff_r(q)*q_cons_vf(i)%sf(j, k, l + q)
6815 end do
6816
6817 if (num_fluids > 1) then
6818
6819# 2269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6820#if defined(MFC_OpenACC)
6821# 2269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6822!$acc loop seq
6823# 2269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6824#elif defined(MFC_OpenMP)
6825# 2269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6826
6827# 2269 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6828#endif
6829 do i = 1, num_fluids - 1
6830 alpha_r(i) = alpha_r(i) + coeff_r(q)*q_cons_vf(igr_e_idx + i)%sf(j, k, l + q)
6831 end do
6832 else
6833 alpha_r(1) = 1._wp
6834 end if
6835
6836
6837# 2277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6838#if defined(MFC_OpenACC)
6839# 2277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6840!$acc loop seq
6841# 2277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6842#elif defined(MFC_OpenMP)
6843# 2277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6844
6845# 2277 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6846#endif
6847 do i = 1, num_dims
6848 vel_r(i) = vel_r(i) + coeff_r(q)*q_cons_vf(igr_momxb + i - 1)%sf(j, k, l + q)
6849 end do
6850 end do
6851
6852 if (num_fluids > 1) then
6853 alpha_l(num_fluids) = 1._wp
6854 alpha_r(num_fluids) = 1._wp
6855
6856
6857# 2287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6858#if defined(MFC_OpenACC)
6859# 2287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6860!$acc loop seq
6861# 2287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6862#elif defined(MFC_OpenMP)
6863# 2287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6864
6865# 2287 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6866#endif
6867 do i = 1, num_fluids - 1
6868 alpha_l(num_fluids) = alpha_l(num_fluids) - alpha_l(i)
6869 alpha_r(num_fluids) = alpha_r(num_fluids) - alpha_r(i)
6870 end do
6871 end if
6872
6873 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_igr)
6874 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_igr)
6875
6876
6877# 2297 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6878#if defined(MFC_OpenACC)
6879# 2297 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6880!$acc loop seq
6881# 2297 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6882#elif defined(MFC_OpenMP)
6883# 2297 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6884
6885# 2297 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6886#endif
6887 do i = 1, num_dims
6888 vel_l(i) = vel_l(i)/rho_l
6889 vel_r(i) = vel_r(i)/rho_r
6890 end do
6891
6892 if (viscous) then
6893 mu_l = 0._wp
6894 mu_r = 0._wp
6895
6896# 2306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6897#if defined(MFC_OpenACC)
6898# 2306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6899!$acc loop seq
6900# 2306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6901#elif defined(MFC_OpenMP)
6902# 2306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6903
6904# 2306 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6905#endif
6906 do i = 1, num_fluids
6907 mu_l = alpha_l(i)/res_igr(1, i) + mu_l
6908 mu_r = alpha_r(i)/res_igr(1, i) + mu_r
6909 end do
6910
6911
6912# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6913#if defined(MFC_OpenACC)
6914# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6915!$acc atomic update
6916# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6917#elif defined(MFC_OpenMP)
6918# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6919!$omp atomic update
6920# 2312 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6921#endif
6922 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
6923 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l + 1)), kind=stp)
6924
6925# 2315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6926#if defined(MFC_OpenACC)
6927# 2315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6928!$acc atomic update
6929# 2315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6930#elif defined(MFC_OpenMP)
6931# 2315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6932!$omp atomic update
6933# 2315 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6934#endif
6935 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
6936 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l + 1)), kind=stp)
6937
6938
6939# 2319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6940#if defined(MFC_OpenACC)
6941# 2319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6942!$acc atomic update
6943# 2319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6944#elif defined(MFC_OpenMP)
6945# 2319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6946!$omp atomic update
6947# 2319 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6948#endif
6949 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
6950 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*(1._wp/dz(l)), kind=stp)
6951
6952# 2322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6953#if defined(MFC_OpenACC)
6954# 2322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6955!$acc atomic update
6956# 2322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6957#elif defined(MFC_OpenMP)
6958# 2322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6959!$omp atomic update
6960# 2322 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6961#endif
6962 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
6963 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(1)*vel_l(1)*(1._wp/dz(l)), kind=stp)
6964
6965
6966# 2326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6967#if defined(MFC_OpenACC)
6968# 2326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6969!$acc atomic update
6970# 2326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6971#elif defined(MFC_OpenMP)
6972# 2326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6973!$omp atomic update
6974# 2326 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6975#endif
6976 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
6977 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l + 1)), kind=stp)
6978
6979# 2329 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6980#if defined(MFC_OpenACC)
6981# 2329 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6982!$acc atomic update
6983# 2329 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6984#elif defined(MFC_OpenMP)
6985# 2329 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6986!$omp atomic update
6987# 2329 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6988#endif
6989 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
6990 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l + 1)), kind=stp)
6991
6992
6993# 2333 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6994#if defined(MFC_OpenACC)
6995# 2333 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6996!$acc atomic update
6997# 2333 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
6998#elif defined(MFC_OpenMP)
6999# 2333 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7000!$omp atomic update
7001# 2333 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7002#endif
7003 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7004 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*(1._wp/dz(l)), kind=stp)
7005
7006# 2336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7007#if defined(MFC_OpenACC)
7008# 2336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7009!$acc atomic update
7010# 2336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7011#elif defined(MFC_OpenMP)
7012# 2336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7013!$omp atomic update
7014# 2336 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7015#endif
7016 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7017 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(1)*vel_r(1)*(1._wp/dz(l)), kind=stp)
7018
7019
7020# 2340 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7021#if defined(MFC_OpenACC)
7022# 2340 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7023!$acc atomic update
7024# 2340 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7025#elif defined(MFC_OpenMP)
7026# 2340 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7027!$omp atomic update
7028# 2340 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7029#endif
7030 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7031 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7032
7033# 2343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7034#if defined(MFC_OpenACC)
7035# 2343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7036!$acc atomic update
7037# 2343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7038#elif defined(MFC_OpenMP)
7039# 2343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7040!$omp atomic update
7041# 2343 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7042#endif
7043 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7044 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l + 1)), kind=stp)
7045
7046
7047# 2347 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7048#if defined(MFC_OpenACC)
7049# 2347 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7050!$acc atomic update
7051# 2347 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7052#elif defined(MFC_OpenMP)
7053# 2347 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7054!$omp atomic update
7055# 2347 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7056#endif
7057 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7058 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*(1._wp/dz(l)), kind=stp)
7059
7060# 2350 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7061#if defined(MFC_OpenACC)
7062# 2350 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7063!$acc atomic update
7064# 2350 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7065#elif defined(MFC_OpenMP)
7066# 2350 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7067!$omp atomic update
7068# 2350 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7069#endif
7070 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7071 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(2)*vel_l(2)*(1._wp/dz(l)), kind=stp)
7072
7073
7074# 2354 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7075#if defined(MFC_OpenACC)
7076# 2354 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7077!$acc atomic update
7078# 2354 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7079#elif defined(MFC_OpenMP)
7080# 2354 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7081!$omp atomic update
7082# 2354 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7083#endif
7084 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7085 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l + 1)), kind=stp)
7086
7087# 2357 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7088#if defined(MFC_OpenACC)
7089# 2357 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7090!$acc atomic update
7091# 2357 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7092#elif defined(MFC_OpenMP)
7093# 2357 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7094!$omp atomic update
7095# 2357 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7096#endif
7097 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7098 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l + 1)), kind=stp)
7099
7100
7101# 2361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7102#if defined(MFC_OpenACC)
7103# 2361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7104!$acc atomic update
7105# 2361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7106#elif defined(MFC_OpenMP)
7107# 2361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7108!$omp atomic update
7109# 2361 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7110#endif
7111 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7112 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*(1._wp/dz(l)), kind=stp)
7113
7114# 2364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7115#if defined(MFC_OpenACC)
7116# 2364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7117!$acc atomic update
7118# 2364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7119#elif defined(MFC_OpenMP)
7120# 2364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7121!$omp atomic update
7122# 2364 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7123#endif
7124 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7125 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(2)*vel_r(2)*(1._wp/dz(l)), kind=stp)
7126
7127
7128# 2368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7129#if defined(MFC_OpenACC)
7130# 2368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7131!$acc atomic update
7132# 2368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7133#elif defined(MFC_OpenMP)
7134# 2368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7135!$omp atomic update
7136# 2368 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7137#endif
7138 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7139 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7140
7141# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7142#if defined(MFC_OpenACC)
7143# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7144!$acc atomic update
7145# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7146#elif defined(MFC_OpenMP)
7147# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7148!$omp atomic update
7149# 2371 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7150#endif
7151 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7152 & l + 1) - real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7153
7154
7155# 2375 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7156#if defined(MFC_OpenACC)
7157# 2375 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7158!$acc atomic update
7159# 2375 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7160#elif defined(MFC_OpenMP)
7161# 2375 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7162!$omp atomic update
7163# 2375 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7164#endif
7165 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7166 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*(1._wp/dz(l)), kind=stp)
7167
7168# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7169#if defined(MFC_OpenACC)
7170# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7171!$acc atomic update
7172# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7173#elif defined(MFC_OpenMP)
7174# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7175!$omp atomic update
7176# 2378 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7177#endif
7178 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7179 & l) + real(0.5_wp*dt*mu_l*vflux_l_arr(3)*vel_l(3)*(1._wp/dz(l)), kind=stp)
7180
7181
7182# 2382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7183#if defined(MFC_OpenACC)
7184# 2382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7185!$acc atomic update
7186# 2382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7187#elif defined(MFC_OpenMP)
7188# 2382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7189!$omp atomic update
7190# 2382 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7191#endif
7192 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7193 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l + 1)), kind=stp)
7194
7195# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7196#if defined(MFC_OpenACC)
7197# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7198!$acc atomic update
7199# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7200#elif defined(MFC_OpenMP)
7201# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7202!$omp atomic update
7203# 2385 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7204#endif
7205 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7206 & l + 1) - real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7207
7208
7209# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7210#if defined(MFC_OpenACC)
7211# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7212!$acc atomic update
7213# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7214#elif defined(MFC_OpenMP)
7215# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7216!$omp atomic update
7217# 2389 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7218#endif
7219 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7220 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*(1._wp/dz(l)), kind=stp)
7221
7222# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7223#if defined(MFC_OpenACC)
7224# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7225!$acc atomic update
7226# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7227#elif defined(MFC_OpenMP)
7228# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7229!$omp atomic update
7230# 2392 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7231#endif
7232 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7233 & l) + real(0.5_wp*dt*mu_r*vflux_r_arr(3)*vel_r(3)*(1._wp/dz(l)), kind=stp)
7234 end if
7235
7236 e_l = 0._wp; e_r = 0._wp
7237 f_l = 0._wp; f_r = 0._wp
7238
7239
7240# 2400 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7241#if defined(MFC_OpenACC)
7242# 2400 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7243!$acc loop seq
7244# 2400 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7245#elif defined(MFC_OpenMP)
7246# 2400 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7247
7248# 2400 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7249#endif
7250 do q = vidxb + 1, vidxe
7251 e_l = e_l + coeff_l(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7252 f_l = f_l + coeff_l(q)*jac(j, k, l + q)
7253 end do
7254
7255
7256# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7257#if defined(MFC_OpenACC)
7258# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7259!$acc loop seq
7260# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7261#elif defined(MFC_OpenMP)
7262# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7263
7264# 2406 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7265#endif
7266 do q = vidxb, vidxe - 1
7267 e_r = e_r + coeff_r(q)*q_cons_vf(igr_e_idx)%sf(j, k, l + q)
7268 f_r = f_r + coeff_r(q)*jac(j, k, l + q)
7269 end do
7270
7271 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, &
7272 & pres_l, pres_r, cfl)
7273
7274
7275# 2415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7276#if defined(MFC_OpenACC)
7277# 2415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7278!$acc loop seq
7279# 2415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7280#elif defined(MFC_OpenMP)
7281# 2415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7282
7283# 2415 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7284#endif
7285 do i = 1, num_fluids
7286
7287# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7288#if defined(MFC_OpenACC)
7289# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7290!$acc atomic update
7291# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7292#elif defined(MFC_OpenMP)
7293# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7294!$omp atomic update
7295# 2417 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7296#endif
7297 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7298 & l + 1) + real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7299 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l + 1)), kind=stp)
7300
7301
7302# 2422 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7303#if defined(MFC_OpenACC)
7304# 2422 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7305!$acc atomic update
7306# 2422 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7307#elif defined(MFC_OpenMP)
7308# 2422 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7309!$omp atomic update
7310# 2422 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7311#endif
7312 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7313 & l) - real(0.5_wp*dt*(alpha_rho_l(i)*vel_l(3))*(1._wp/dz(l)) &
7314 & - 0.5_wp*dt*cfl*(alpha_rho_l(i))*(1._wp/dz(l)), kind=stp)
7315 end do
7316
7317 if (num_fluids > 1) then
7318
7319# 2429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7320#if defined(MFC_OpenACC)
7321# 2429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7322!$acc loop seq
7323# 2429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7324#elif defined(MFC_OpenMP)
7325# 2429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7326
7327# 2429 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7328#endif
7329 do i = 1, num_fluids - 1
7330
7331# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7332#if defined(MFC_OpenACC)
7333# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7334!$acc atomic update
7335# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7336#elif defined(MFC_OpenMP)
7337# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7338!$omp atomic update
7339# 2431 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7340#endif
7341 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7342 & l + 1) + real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l + 1)) &
7343 & - 0.5_wp*dt*cfl*(alpha_l(i))*(1._wp/dz(l + 1)), kind=stp)
7344
7345
7346# 2436 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7347#if defined(MFC_OpenACC)
7348# 2436 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7349!$acc atomic update
7350# 2436 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7351#elif defined(MFC_OpenMP)
7352# 2436 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7353!$omp atomic update
7354# 2436 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7355#endif
7356 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7357 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7358 & l + 1)*vel_l(3)*(1._wp/dz(l + 1)), kind=stp)
7359
7360
7361# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7362#if defined(MFC_OpenACC)
7363# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7364!$acc atomic update
7365# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7366#elif defined(MFC_OpenMP)
7367# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7368!$omp atomic update
7369# 2441 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7370#endif
7371 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7372 & l) - real(0.5_wp*dt*(alpha_l(i)*vel_l(3))*(1._wp/dz(l)) - 0.5_wp*dt*cfl*(alpha_l(i)) &
7373 & *(1._wp/dz(l)), kind=stp)
7374
7375
7376# 2446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7377#if defined(MFC_OpenACC)
7378# 2446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7379!$acc atomic update
7380# 2446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7381#elif defined(MFC_OpenMP)
7382# 2446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7383!$omp atomic update
7384# 2446 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7385#endif
7386 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7387 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_l(3)*(1._wp/dz(l)), &
7388 & kind=stp)
7389 end do
7390 end if
7391
7392
7393# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7394#if defined(MFC_OpenACC)
7395# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7396!$acc atomic update
7397# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7398#elif defined(MFC_OpenMP)
7399# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7400!$omp atomic update
7401# 2453 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7402#endif
7403 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7404 & l + 1) + real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l + 1)) &
7405 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l + 1)), kind=stp)
7406
7407
7408# 2458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7409#if defined(MFC_OpenACC)
7410# 2458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7411!$acc atomic update
7412# 2458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7413#elif defined(MFC_OpenMP)
7414# 2458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7415!$omp atomic update
7416# 2458 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7417#endif
7418 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7419 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(1)*vel_l(3)*(1._wp/dz(l + 1)) &
7420 & - 0.5_wp*dt*cfl*(rho_l*vel_l(1))*(1._wp/dz(l + 1)), kind=stp)
7421
7422
7423# 2463 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7424#if defined(MFC_OpenACC)
7425# 2463 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7426!$acc atomic update
7427# 2463 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7428#elif defined(MFC_OpenMP)
7429# 2463 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7430!$omp atomic update
7431# 2463 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7432#endif
7433 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7434 & l + 1) + real(0.5_wp*dt*rho_l*vel_l(2)*vel_l(3)*(1._wp/dz(l + 1)) &
7435 & - 0.5_wp*dt*cfl*(rho_l*vel_l(2))*(1._wp/dz(l + 1)), kind=stp)
7436
7437
7438# 2468 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7439#if defined(MFC_OpenACC)
7440# 2468 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7441!$acc atomic update
7442# 2468 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7443#elif defined(MFC_OpenMP)
7444# 2468 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7445!$omp atomic update
7446# 2468 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7447#endif
7448 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7449 & l + 1) + real(0.5_wp*dt*(vel_l(3)*(e_l + pres_l + f_l))*(1._wp/dz(l + 1)) &
7450 & - 0.5_wp*dt*cfl*(e_l)*(1._wp/dz(l + 1)), kind=stp)
7451
7452
7453# 2473 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7454#if defined(MFC_OpenACC)
7455# 2473 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7456!$acc atomic update
7457# 2473 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7458#elif defined(MFC_OpenMP)
7459# 2473 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7460!$omp atomic update
7461# 2473 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7462#endif
7463 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7464 & l) - real(0.5_wp*dt*(rho_l*(vel_l(3))**2.0 + pres_l + f_l)*(1._wp/dz(l)) &
7465 & - 0.5_wp*dt*cfl*(rho_l*vel_l(3))*(1._wp/dz(l)), kind=stp)
7466
7467
7468# 2478 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7469#if defined(MFC_OpenACC)
7470# 2478 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7471!$acc atomic update
7472# 2478 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7473#elif defined(MFC_OpenMP)
7474# 2478 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7475!$omp atomic update
7476# 2478 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7477#endif
7478 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7479 & 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)) &
7480 & *(1._wp/dz(l)), kind=stp)
7481
7482
7483# 2483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7484#if defined(MFC_OpenACC)
7485# 2483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7486!$acc atomic update
7487# 2483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7488#elif defined(MFC_OpenMP)
7489# 2483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7490!$omp atomic update
7491# 2483 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7492#endif
7493 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7494 & 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)) &
7495 & *(1._wp/dz(l)), kind=stp)
7496
7497
7498# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7499#if defined(MFC_OpenACC)
7500# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7501!$acc atomic update
7502# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7503#elif defined(MFC_OpenMP)
7504# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7505!$omp atomic update
7506# 2488 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7507#endif
7508 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7509 & 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) &
7510 & *(1._wp/dz(l)), kind=stp)
7511
7512
7513# 2493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7514#if defined(MFC_OpenACC)
7515# 2493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7516!$acc loop seq
7517# 2493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7518#elif defined(MFC_OpenMP)
7519# 2493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7520
7521# 2493 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7522#endif
7523 do i = 1, num_fluids
7524
7525# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7526#if defined(MFC_OpenACC)
7527# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7528!$acc atomic update
7529# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7530#elif defined(MFC_OpenMP)
7531# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7532!$omp atomic update
7533# 2495 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7534#endif
7535 rhs_vf(i)%sf(j, k, l + 1) = rhs_vf(i)%sf(j, k, &
7536 & l + 1) + real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7537 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l + 1)), kind=stp)
7538
7539
7540# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7541#if defined(MFC_OpenACC)
7542# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7543!$acc atomic update
7544# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7545#elif defined(MFC_OpenMP)
7546# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7547!$omp atomic update
7548# 2500 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7549#endif
7550 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, &
7551 & l) - real(0.5_wp*dt*(alpha_rho_r(i)*vel_r(3))*(1._wp/dz(l)) &
7552 & + 0.5_wp*dt*cfl*(alpha_rho_r(i))*(1._wp/dz(l)), kind=stp)
7553 end do
7554
7555 if (num_fluids > 1) then
7556
7557# 2507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7558#if defined(MFC_OpenACC)
7559# 2507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7560!$acc loop seq
7561# 2507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7562#elif defined(MFC_OpenMP)
7563# 2507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7564
7565# 2507 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7566#endif
7567 do i = 1, num_fluids - 1
7568
7569# 2509 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7570#if defined(MFC_OpenACC)
7571# 2509 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7572!$acc atomic update
7573# 2509 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7574#elif defined(MFC_OpenMP)
7575# 2509 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7576!$omp atomic update
7577# 2509 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7578#endif
7579 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7580 & l + 1) + real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l + 1)) &
7581 & + 0.5_wp*dt*cfl*(alpha_r(i))*(1._wp/dz(l + 1)), kind=stp)
7582
7583
7584# 2514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7585#if defined(MFC_OpenACC)
7586# 2514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7587!$acc atomic update
7588# 2514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7589#elif defined(MFC_OpenMP)
7590# 2514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7591!$omp atomic update
7592# 2514 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7593#endif
7594 rhs_vf(igr_advxb + i - 1)%sf(j, k, l + 1) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7595 & l + 1) - real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, &
7596 & l + 1)*vel_r(3)*(1._wp/dz(l + 1)), kind=stp)
7597
7598
7599# 2519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7600#if defined(MFC_OpenACC)
7601# 2519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7602!$acc atomic update
7603# 2519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7604#elif defined(MFC_OpenMP)
7605# 2519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7606!$omp atomic update
7607# 2519 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7608#endif
7609 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7610 & l) - real(0.5_wp*dt*(alpha_r(i)*vel_r(3))*(1._wp/dz(l)) + 0.5_wp*dt*cfl*(alpha_r(i)) &
7611 & *(1._wp/dz(l)), kind=stp)
7612
7613
7614# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7615#if defined(MFC_OpenACC)
7616# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7617!$acc atomic update
7618# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7619#elif defined(MFC_OpenMP)
7620# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7621!$omp atomic update
7622# 2524 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7623#endif
7624 rhs_vf(igr_advxb + i - 1)%sf(j, k, l) = rhs_vf(igr_advxb + i - 1)%sf(j, k, &
7625 & l) + real(0.5_wp*dt*q_cons_vf(igr_advxb + i - 1)%sf(j, k, l)*vel_r(3)*(1._wp/dz(l)), &
7626 & kind=stp)
7627 end do
7628 end if
7629
7630
7631# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7632#if defined(MFC_OpenACC)
7633# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7634!$acc atomic update
7635# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7636#elif defined(MFC_OpenMP)
7637# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7638!$omp atomic update
7639# 2531 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7640#endif
7641 rhs_vf(igr_momxb + 2)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7642 & l + 1) + real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l + 1)) &
7643 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l + 1)), kind=stp)
7644
7645
7646# 2536 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7647#if defined(MFC_OpenACC)
7648# 2536 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7649!$acc atomic update
7650# 2536 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7651#elif defined(MFC_OpenMP)
7652# 2536 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7653!$omp atomic update
7654# 2536 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7655#endif
7656 rhs_vf(igr_momxb)%sf(j, k, l + 1) = rhs_vf(igr_momxb)%sf(j, k, &
7657 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(1)*vel_r(3)*(1._wp/dz(l + 1)) &
7658 & + 0.5_wp*dt*cfl*(rho_r*vel_r(1))*(1._wp/dz(l + 1)), kind=stp)
7659
7660
7661# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7662#if defined(MFC_OpenACC)
7663# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7664!$acc atomic update
7665# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7666#elif defined(MFC_OpenMP)
7667# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7668!$omp atomic update
7669# 2541 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7670#endif
7671 rhs_vf(igr_momxb + 1)%sf(j, k, l + 1) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7672 & l + 1) + real(0.5_wp*dt*rho_r*vel_r(2)*vel_r(3)*(1._wp/dz(l + 1)) &
7673 & + 0.5_wp*dt*cfl*(rho_r*vel_r(2))*(1._wp/dz(l + 1)), kind=stp)
7674
7675
7676# 2546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7677#if defined(MFC_OpenACC)
7678# 2546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7679!$acc atomic update
7680# 2546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7681#elif defined(MFC_OpenMP)
7682# 2546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7683!$omp atomic update
7684# 2546 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7685#endif
7686 rhs_vf(igr_e_idx)%sf(j, k, l + 1) = rhs_vf(igr_e_idx)%sf(j, k, &
7687 & l + 1) + real(0.5_wp*dt*(vel_r(3)*(e_r + pres_r + f_r))*(1._wp/dz(l + 1)) &
7688 & + 0.5_wp*dt*cfl*(e_r)*(1._wp/dz(l + 1)), kind=stp)
7689
7690
7691# 2551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7692#if defined(MFC_OpenACC)
7693# 2551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7694!$acc atomic update
7695# 2551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7696#elif defined(MFC_OpenMP)
7697# 2551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7698!$omp atomic update
7699# 2551 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7700#endif
7701 rhs_vf(igr_momxb + 2)%sf(j, k, l) = rhs_vf(igr_momxb + 2)%sf(j, k, &
7702 & l) - real(0.5_wp*dt*(rho_r*(vel_r(3))**2.0 + pres_r + f_r)*(1._wp/dz(l)) &
7703 & + 0.5_wp*dt*cfl*(rho_r*vel_r(3))*(1._wp/dz(l)), kind=stp)
7704
7705
7706# 2556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7707#if defined(MFC_OpenACC)
7708# 2556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7709!$acc atomic update
7710# 2556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7711#elif defined(MFC_OpenMP)
7712# 2556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7713!$omp atomic update
7714# 2556 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7715#endif
7716 rhs_vf(igr_momxb)%sf(j, k, l) = rhs_vf(igr_momxb)%sf(j, k, &
7717 & 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)) &
7718 & *(1._wp/dz(l)), kind=stp)
7719
7720
7721# 2561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7722#if defined(MFC_OpenACC)
7723# 2561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7724!$acc atomic update
7725# 2561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7726#elif defined(MFC_OpenMP)
7727# 2561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7728!$omp atomic update
7729# 2561 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7730#endif
7731 rhs_vf(igr_momxb + 1)%sf(j, k, l) = rhs_vf(igr_momxb + 1)%sf(j, k, &
7732 & 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)) &
7733 & *(1._wp/dz(l)), kind=stp)
7734
7735
7736# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7737#if defined(MFC_OpenACC)
7738# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7739!$acc atomic update
7740# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7741#elif defined(MFC_OpenMP)
7742# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7743!$omp atomic update
7744# 2566 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7745#endif
7746 rhs_vf(igr_e_idx)%sf(j, k, l) = rhs_vf(igr_e_idx)%sf(j, k, &
7747 & 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) &
7748 & *(1._wp/dz(l)), kind=stp)
7749 end do
7750 end do
7751 end do
7752
7753# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7754#if defined(MFC_OpenACC)
7755# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7756!$acc end parallel loop
7757# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7758#elif defined(MFC_OpenMP)
7759# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7760
7761# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7762!$omp end target teams loop
7763# 2573 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7764#endif
7765# 2575 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7766 end if
7767
7768 end subroutine s_igr_riemann_solver
7769
7770 !> Compute pressure and maximum wavespeed from left and right reconstructed states
7771 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)
7772
7773
7774# 2582 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7775#if MFC_OpenACC
7776# 2582 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7777!$acc routine seq
7778# 2582 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7779#elif MFC_OpenMP
7780# 2582 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7781
7782# 2582 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7783
7784# 2582 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7785!$omp declare target device_type(any)
7786# 2582 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7787#endif
7788
7789 real(wp), intent(in) :: E_L, gamma_L, pi_inf_L, rho_L
7790 real(wp), intent(in) :: E_R, gamma_R, pi_inf_R, rho_R
7791 real(wp), dimension(num_dims), intent(in) :: vel_L, vel_R
7792 real(wp), intent(out) :: pres_L, pres_R, cfl
7793 real(wp) :: a_L, a_R
7794
7795 if (num_dims == 2) then
7796 pres_l = f_pressure(e_l - 0.5_wp*rho_l*(vel_l(1)**2._wp + vel_l(2)**2._wp), gamma_l, pi_inf_l, 0._wp)
7797 pres_r = f_pressure(e_r - 0.5_wp*rho_r*(vel_r(1)**2._wp + vel_r(2)**2._wp), gamma_r, pi_inf_r, 0._wp)
7798
7799 if (igr_pres_lim) then
7800 pres_l = max(pres_l, 0._wp)
7801 pres_r = max(pres_r, 0._wp)
7802 end if
7803
7804 a_l = sqrt(f_bulk_modulus(pres_l, gamma_l, pi_inf_l)/rho_l)
7805 a_r = sqrt(f_bulk_modulus(pres_r, gamma_r, pi_inf_r)/rho_r)
7806
7807 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)
7808 else if (num_dims == 3) then
7809# 2605 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7810 pres_l = f_pressure(e_l - 0.5_wp*rho_l*(vel_l(1)**2._wp + vel_l(2)**2._wp + vel_l(3)**2._wp), gamma_l, pi_inf_l, &
7811 & 0._wp)
7812 pres_r = f_pressure(e_r - 0.5_wp*rho_r*(vel_r(1)**2._wp + vel_r(2)**2._wp + vel_r(3)**2._wp), gamma_r, pi_inf_r, &
7813 & 0._wp)
7814
7815 if (igr_pres_lim) then
7816 pres_l = max(pres_l, 0._wp)
7817 pres_r = max(pres_r, 0._wp)
7818 end if
7819
7820 a_l = sqrt(f_bulk_modulus(pres_l, gamma_l, pi_inf_l)/rho_l)
7821 a_r = sqrt(f_bulk_modulus(pres_r, gamma_r, pi_inf_r)/rho_r)
7822
7823 cfl = max(sqrt(vel_l(1)**2._wp + vel_l(2)**2._wp + vel_l(3)**2._wp), &
7824 & sqrt(vel_r(1)**2._wp + vel_r(2)**2._wp + vel_r(3)**2._wp)) + max(a_l, a_r)
7825# 2621 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7826 end if
7827
7828 end subroutine s_get_derived_states
7829
7830 !> Accumulate the IGR numerical flux divergence into the RHS along the specified direction
7831 subroutine s_igr_flux_add(q_cons_vf, rhs_vf, flux_vf, idir)
7832
7833 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf, flux_vf, rhs_vf
7834 integer, intent(in) :: idir
7835
7836 if (idir == 1) then
7837
7838# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7839
7840# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7841#if defined(MFC_OpenACC)
7842# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7843!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
7844# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7845#elif defined(MFC_OpenMP)
7846# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7847
7848# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7849
7850# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7851
7852# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7853!$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)
7854# 2632 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7855#endif
7856 do i = 1, sys_size
7857 do l = 0, p
7858 do k = 0, n
7859 do j = 0, m
7860 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))
7861 end do
7862 end do
7863 end do
7864 end do
7865
7866# 2642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7867#if defined(MFC_OpenACC)
7868# 2642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7869!$acc end parallel loop
7870# 2642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7871#elif defined(MFC_OpenMP)
7872# 2642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7873
7874# 2642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7875!$omp end target teams loop
7876# 2642 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7877#endif
7878 else if (idir == 2) then
7879
7880# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7881
7882# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7883#if defined(MFC_OpenACC)
7884# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7885!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
7886# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7887#elif defined(MFC_OpenMP)
7888# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7889
7890# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7891
7892# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7893
7894# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7895!$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)
7896# 2644 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7897#endif
7898 do i = 1, sys_size
7899 do l = 0, p
7900 do k = 0, n
7901 do j = 0, m
7902 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, &
7903 & l) - flux_vf(i)%sf(j, k, l))
7904 end do
7905 end do
7906 end do
7907 end do
7908
7909# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7910#if defined(MFC_OpenACC)
7911# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7912!$acc end parallel loop
7913# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7914#elif defined(MFC_OpenMP)
7915# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7916
7917# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7918!$omp end target teams loop
7919# 2655 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7920#endif
7921 else if (idir == 3) then
7922
7923# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7924
7925# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7926#if defined(MFC_OpenACC)
7927# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7928!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
7929# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7930#elif defined(MFC_OpenMP)
7931# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7932
7933# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7934
7935# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7936
7937# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7938!$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)
7939# 2657 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7940#endif
7941 do i = 1, sys_size
7942 do l = 0, p
7943 do k = 0, n
7944 do j = 0, m
7945 rhs_vf(i)%sf(j, k, l) = rhs_vf(i)%sf(j, k, l) + 1._wp/dz(l)*(flux_vf(i)%sf(j, k, &
7946 & l - 1) - flux_vf(i)%sf(j, k, l))
7947 end do
7948 end do
7949 end do
7950 end do
7951
7952# 2668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7953#if defined(MFC_OpenACC)
7954# 2668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7955!$acc end parallel loop
7956# 2668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7957#elif defined(MFC_OpenMP)
7958# 2668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7959
7960# 2668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7961!$omp end target teams loop
7962# 2668 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7963#endif
7964 end if
7965
7966 end subroutine s_igr_flux_add
7967
7968 !> Finalize the IGR module
7970
7971 if (viscous) then
7972#ifdef MFC_DEBUG
7973# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7974 block
7975# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7976 use iso_fortran_env, only: output_unit
7977# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7978
7979# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7980 print *, 'm_igr.fpp:2677: ', '@:DEALLOCATE(Res_igr)'
7981# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7982
7983# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7984 call flush (output_unit)
7985# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7986 end block
7987# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7988#endif
7989# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7990
7991# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7992#if defined(MFC_OpenACC)
7993# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7994!$acc exit data delete(Res_igr)
7995# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7996#elif defined(MFC_OpenMP)
7997# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
7998!$omp target exit data map(release:Res_igr)
7999# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8000#endif
8001# 2677 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8002 deallocate (res_igr)
8003 end if
8004
8005#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
8006#ifdef MFC_DEBUG
8007# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8008 block
8009# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8010 use iso_fortran_env, only: output_unit
8011# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8012
8013# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8014 print *, 'm_igr.fpp:2681: ', '@:DEALLOCATE(jac, jac_rhs)'
8015# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8016
8017# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8018 call flush (output_unit)
8019# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8020 end block
8021# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8022#endif
8023# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8024
8025# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8026#if defined(MFC_OpenACC)
8027# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8028!$acc exit data delete(jac, jac_rhs)
8029# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8030#elif defined(MFC_OpenMP)
8031# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8032!$omp target exit data map(release:jac, jac_rhs)
8033# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8034#endif
8035# 2681 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8036 deallocate (jac, jac_rhs)
8037
8038 if (igr_iter_solver == 1) then ! Jacobi iteration
8039#ifdef MFC_DEBUG
8040# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8041 block
8042# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8043 use iso_fortran_env, only: output_unit
8044# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8045
8046# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8047 print *, 'm_igr.fpp:2684: ', '@:DEALLOCATE(jac_old)'
8048# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8049
8050# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8051 call flush (output_unit)
8052# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8053 end block
8054# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8055#endif
8056# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8057
8058# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8059#if defined(MFC_OpenACC)
8060# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8061!$acc exit data delete(jac_old)
8062# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8063#elif defined(MFC_OpenMP)
8064# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8065!$omp target exit data map(release:jac_old)
8066# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8067#endif
8068# 2684 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8069 deallocate (jac_old)
8070 end if
8071#else
8072 if (nv_uvm_temp_on_gpu(1) == 1) then
8073#ifdef MFC_DEBUG
8074# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8075 block
8076# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8077 use iso_fortran_env, only: output_unit
8078# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8079
8080# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8081 print *, 'm_igr.fpp:2688: ', '@:DEALLOCATE(jac)'
8082# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8083
8084# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8085 call flush (output_unit)
8086# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8087 end block
8088# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8089#endif
8090# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8091
8092# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8093#if defined(MFC_OpenACC)
8094# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8095!$acc exit data delete(jac)
8096# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8097#elif defined(MFC_OpenMP)
8098# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8099!$omp target exit data map(release:jac)
8100# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8101#endif
8102# 2688 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8103 deallocate (jac)
8104 else
8105 nullify (jac)
8106 deallocate (jac_host)
8107 end if
8108
8109 if (nv_uvm_temp_on_gpu(2) == 1) then
8110#ifdef MFC_DEBUG
8111# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8112 block
8113# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8114 use iso_fortran_env, only: output_unit
8115# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8116
8117# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8118 print *, 'm_igr.fpp:2695: ', '@:DEALLOCATE(jac_rhs)'
8119# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8120
8121# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8122 call flush (output_unit)
8123# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8124 end block
8125# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8126#endif
8127# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8128
8129# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8130#if defined(MFC_OpenACC)
8131# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8132!$acc exit data delete(jac_rhs)
8133# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8134#elif defined(MFC_OpenMP)
8135# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8136!$omp target exit data map(release:jac_rhs)
8137# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8138#endif
8139# 2695 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8140 deallocate (jac_rhs)
8141 else
8142 nullify (jac_rhs)
8143 deallocate (jac_rhs_host)
8144 end if
8145
8146 if (igr_iter_solver == 1) then ! Jacobi iteration
8147 if (nv_uvm_temp_on_gpu(3) == 1) then
8148#ifdef MFC_DEBUG
8149# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8150 block
8151# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8152 use iso_fortran_env, only: output_unit
8153# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8154
8155# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8156 print *, 'm_igr.fpp:2703: ', '@:DEALLOCATE(jac_old)'
8157# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8158
8159# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8160 call flush (output_unit)
8161# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8162 end block
8163# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8164#endif
8165# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8166
8167# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8168#if defined(MFC_OpenACC)
8169# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8170!$acc exit data delete(jac_old)
8171# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8172#elif defined(MFC_OpenMP)
8173# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8174!$omp target exit data map(release:jac_old)
8175# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8176#endif
8177# 2703 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8178 deallocate (jac_old)
8179 else
8180 nullify (jac_old)
8181 deallocate (jac_old_host)
8182 end if
8183 end if
8184#endif
8185
8186# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8187#ifdef MFC_DEBUG
8188# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8189 block
8190# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8191 use iso_fortran_env, only: output_unit
8192# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8193
8194# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8195 print *, 'm_igr.fpp:2712: ', '@:DEALLOCATE(coeff_L, coeff_R)'
8196# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8197
8198# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8199 call flush (output_unit)
8200# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8201 end block
8202# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8203#endif
8204# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8205
8206# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8207#if defined(MFC_OpenACC)
8208# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8209!$acc exit data delete(coeff_L, coeff_R)
8210# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8211#elif defined(MFC_OpenMP)
8212# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8213!$omp target exit data map(release:coeff_L, coeff_R)
8214# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8215#endif
8216# 2712 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8217 deallocate (coeff_l, coeff_r)
8218# 2714 "/home/runner/work/MFC/MFC/src/simulation/m_igr.fpp"
8219
8220 end subroutine s_finalize_igr_module
8221
8222end 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).