MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_riemann_solver_lf.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2!>
3!! @file
4!! @brief Contains module m_riemann_solver_lf
5
6!> @brief Lax-Friedrichs (Rusanov) approximate Riemann solver
7# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
8! This file exists so that Fypp can be run without generating case.fpp files for
9! each target. This is useful when generating documentation, for example. This
10! should also let MFC be built with CMake directly, without invoking mfc.sh.
11
12! For pre-process.
13# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
14
15! For moving immersed boundaries in simulation
16# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
17# 7 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp" 2
18# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
20# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
21# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26
27# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30
31# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
33! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
34! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
35# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
36# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
37# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
38
39# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51
52# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53
54# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55
56# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57! New line at end of file is required for FYPP
58# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
59# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
60# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
61# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
73! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
74! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
75# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
76# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
77# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
78
79# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
81
82# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
83
84# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
85
86# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
87
88# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
89
90# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
91
92# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
93
94# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
95
96# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
97! New line at end of file is required for FYPP
98# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
99
100# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113
114# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115
116# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117
118# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119
120# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121
122# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123
124# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152
153# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
154
155# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
156
157# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
158
159# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
160
161# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
162
163# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
164
165# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
166
167# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
168
169# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
170
171# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
172
173# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
174
175# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
176! New line at end of file is required for FYPP
177# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
178# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
179# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
180# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
181# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
183# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
185
186# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
187# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
189
190# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
191# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
192! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
193! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
194# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
195# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
196# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
197
198# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
199# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
200
201# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
202
203# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
204
205# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
206
207# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
208
209# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
210
211# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
212
213# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
214
215# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
216! New line at end of file is required for FYPP
217# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
218
219# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240
241# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242
243# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244
245# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246
247# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248
249# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250
251# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252
253# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
254
255# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
256
257# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
258
259# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
260
261# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
262
263# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
264
265# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
266
267# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
268
269# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
270
271# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
272
273# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
274! New line at end of file is required for FYPP
275# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
276
277! GPU parallel region (scalar reductions, maxval/minval)
278# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
279
280! GPU parallel loop over threads (most common GPU macro)
281# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
282
283! Required closing for GPU_PARALLEL_LOOP
284# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
285
286! Mark routine for device compilation
287# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
288
289! Declare device-resident data
290# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
291
292! Inner loop within a GPU parallel region
293# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
294
295! Scoped GPU data region
296# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297
298! Host code with device pointers (for MPI with GPU buffers)
299# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300
301! Allocate device memory (unscoped)
302# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303
304! Free device memory
305# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
306
307! Atomic operation on device
308# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
309
310! End atomic capture block
311# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
312
313! Copy data between host and device
314# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
315
316! Synchronization barrier
317# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
318
319! Import GPU library module (openacc or omp_lib)
320# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
321
322! Emit code only for AMD compiler
323# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
324
325! Emit code for non-Cray compilers
326# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
327
328! Emit code only for Cray compiler
329# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
330
331! Emit code for non-NVIDIA compilers
332# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
333
334# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
335# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
336! New line at end of file is required for FYPP
337# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
338
339# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
340
341! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
342! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
343! example see misc/nvidia_uvm/bind.sh.
344# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
345
346! Allocate and create GPU device memory
347# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
348
349! Free GPU device memory and deallocate
350# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
351
352! Cray-specific GPU pointer setup for vector fields
353# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
354
355! Cray-specific GPU pointer setup for scalar fields
356# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
357
358! Cray-specific GPU pointer setup for acoustic source spatials
359# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
360
361# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
362
363# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
364! New line at end of file is required for FYPP
365# 8 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp" 2
366
368
373 use m_thermochem, only: gas_constant, get_mixture_molecular_weight, molecular_weights
374 use m_thermochem_state, only: get_mixture_caloric_state
376
377 implicit none
378
379contains
380
381 !> Lax-Friedrichs (Rusanov) approximate Riemann solver
382 subroutine s_lf_riemann_solver(qL_prim_rsx_vf, dqL_prim_dx_vf, dqL_prim_dy_vf, dqL_prim_dz_vf, qL_prim_vf, qR_prim_rsx_vf, &
383 & dqR_prim_dx_vf, dqR_prim_dy_vf, dqR_prim_dz_vf, qR_prim_vf, q_prim_vf, flux_vf, flux_src_vf, &
384 & flux_gsrc_vf, norm_dir, ix, iy, iz)
385
386 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: qL_prim_rsx_vf, qR_prim_rsx_vf
387 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
388 type(scalar_field), allocatable, dimension(:), intent(inout) :: qL_prim_vf, qR_prim_vf
389 type(scalar_field), allocatable, dimension(:), intent(inout) :: dqL_prim_dx_vf, dqR_prim_dx_vf, dqL_prim_dy_vf, &
390 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
391
392 ! Intercell fluxes
393 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
394 integer, intent(in) :: norm_dir
395 type(int_bounds_info), intent(in) :: ix, iy, iz
396
397# 45 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
398 real(wp), dimension(num_fluids) :: alpha_rho_L, alpha_rho_R
399 real(wp), dimension(num_vels) :: vel_L, vel_R
400 real(wp), dimension(num_fluids) :: alpha_L, alpha_R
401 !> Averaged velocity gradient tensor `d(vel_i)/d(coord_j)`.
402 real(wp), dimension(num_dims, num_dims) :: vel_grad_L, vel_grad_R
403# 51 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
404 real(wp), dimension(1) :: Ys_L, Ys_R
405# 52 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
406 real(wp), dimension(1) :: Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, Gamma_iR
407# 53 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
408 real(wp) :: rho_L, rho_R
409 real(wp) :: pres_L, pres_R
410 real(wp) :: E_L, E_R
411 real(wp) :: T_L, T_R
412 real(wp) :: Y_L, Y_R
413 real(wp) :: MW_L, MW_R
414 real(wp) :: R_gas_L, R_gas_R
415 real(wp) :: Cp_L, Cp_R
416 real(wp) :: Cv_L, Cv_R
417 real(wp) :: Gamm_L, Gamm_R
418 real(wp) :: gamma_L, gamma_R
419 real(wp) :: pi_inf_L, pi_inf_R
420 real(wp) :: qv_L, qv_R
421 real(wp) :: c_L, c_R
422 real(wp), dimension(2) :: Re_L, Re_R
423 real(wp) :: s_L, s_R, s_M, s_P
424 real(wp) :: ptilde_L, ptilde_R
425 real(wp) :: vel_L_rms, vel_R_rms
426 real(wp) :: alpha_L_sum, alpha_R_sum
427 real(wp) :: pcorr !< low Mach number correction
428 integer :: i, j, k, l !< Generic loop iterators
429 integer :: Re_size_loc1, Re_size_loc2 !< host copies of Re_size; amdflang reads the declare-target original stale cross-TU
430 integer, dimension(3) :: idx_right_phys !< Physical (j,k,l) indices for right state.
431 ! Populating the buffers of the left and right Riemann problem states variables, based on the choice of boundary conditions
432
433 call s_populate_riemann_states_variables_buffers(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, &
434 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, norm_dir, ix, iy, iz)
435
436 ! Reshaping inputted data based on dimensional splitting direction
437 call s_initialize_riemann_solver(flux_src_vf, norm_dir)
438 re_size_loc1 = re_size(1); re_size_loc2 = re_size(2)
439# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
440# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
441# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
442 if (norm_dir == 1) then
443# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
444
445# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
446
447# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
448#if defined(MFC_OpenACC)
449# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
450!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k, l, alpha_rho_L, alpha_rho_R, vel_L, vel_R, alpha_L, alpha_R, Re_L, Re_R, s_L, s_R, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, &
451# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
452!$acc& Gamma_iL, Gamma_iR, pcorr, vel_grad_L, vel_grad_R, idx_right_phys, vel_L_rms, vel_R_rms, alpha_L_sum, alpha_R_sum, pres_L, pres_R, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_L, &
453# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
454!$acc& qv_R, c_L, c_R, Gamm_L, Gamm_R, E_L, E_R, ptilde_L, ptilde_R, s_M, s_P, Cp_L, Cp_R, Cv_L, Cv_R, R_gas_L, R_gas_R, MW_L, MW_R, T_L, T_R, Y_L, Y_R) firstprivate(Re_size_loc1, Re_size_loc2)
455# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
456#elif defined(MFC_OpenMP)
457# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
458
459# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
460
461# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
462
463# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
464!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l, &
465# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
466!$omp& alpha_rho_L, alpha_rho_R, vel_L, vel_R, alpha_L, alpha_R, Re_L, Re_R, s_L, s_R, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, Gamma_iR, pcorr, vel_grad_L, vel_grad_R, idx_right_phys, &
467# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
468!$omp& vel_L_rms, vel_R_rms, alpha_L_sum, alpha_R_sum, pres_L, pres_R, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_L, qv_R, c_L, c_R, Gamm_L, Gamm_R, E_L, E_R, ptilde_L, ptilde_R, s_M, s_P, &
469# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
470!$omp& Cp_L, Cp_R, Cv_L, Cv_R, R_gas_L, R_gas_R, MW_L, MW_R, T_L, T_R, Y_L, Y_R) firstprivate(Re_size_loc1, Re_size_loc2)
471# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
472#endif
473# 97 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
474 do l = is3%beg, is3%end
475# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
476 do k = is2%beg, is2%end
477# 99 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
478 do j = is1%beg, is1%end
479# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
480
481# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
482#if defined(MFC_OpenACC)
483# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
484!$acc loop seq
485# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
486#elif defined(MFC_OpenMP)
487# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
488
489# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
490#endif
491# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
492 do i = 1, eqn_idx%cont%end
493 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
494# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
495 alpha_rho_r(i) = qr_prim_rsx_vf(j + 1, k, l, i)
496# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
497 end do
498
499 vel_l_rms = 0._wp; vel_r_rms = 0._wp
500
501
502# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
503#if defined(MFC_OpenACC)
504# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
505!$acc loop seq
506# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
507#elif defined(MFC_OpenMP)
508# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
509
510# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
511#endif
512# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
513 do i = 1, num_vels
514 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end + i)
515# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
516 vel_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%cont%end + i)
517# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
518 vel_l_rms = vel_l_rms + vel_l(i)**2._wp
519 vel_r_rms = vel_r_rms + vel_r(i)**2._wp
520 end do
521
522
523# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
524#if defined(MFC_OpenACC)
525# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
526!$acc loop seq
527# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
528#elif defined(MFC_OpenMP)
529# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
530
531# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
532#endif
533# 117 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
534 do i = 1, num_fluids
535 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
536# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
537 alpha_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E + i)
538# 120 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
539 end do
540
541 pres_l = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
542# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
543 pres_r = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E)
544# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
545
546 rho_l = 0._wp
547 gamma_l = 0._wp
548 pi_inf_l = 0._wp
549 qv_l = 0._wp
550
551 rho_r = 0._wp
552 gamma_r = 0._wp
553 pi_inf_r = 0._wp
554 qv_r = 0._wp
555
556 alpha_l_sum = 0._wp
557 alpha_r_sum = 0._wp
558
559 if (mpp_lim) then
560
561# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
562#if defined(MFC_OpenACC)
563# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
564!$acc loop seq
565# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
566#elif defined(MFC_OpenMP)
567# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
568
569# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
570#endif
571# 140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
572 do i = 1, num_fluids
573 alpha_rho_l(i) = max(0._wp, alpha_rho_l(i))
574 alpha_l(i) = min(max(0._wp, alpha_l(i)), 1._wp)
575 alpha_l_sum = alpha_l_sum + alpha_l(i)
576 alpha_rho_r(i) = max(0._wp, alpha_rho_r(i))
577 alpha_r(i) = min(max(0._wp, alpha_r(i)), 1._wp)
578 alpha_r_sum = alpha_r_sum + alpha_r(i)
579 end do
580
581 alpha_l = alpha_l/max(alpha_l_sum, sgm_eps)
582 alpha_r = alpha_r/max(alpha_r_sum, sgm_eps)
583 end if
584
585 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_l)
586 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_r)
587
588 if (viscous) then
589 call s_compute_interface_reynolds(alpha_l, re_l, re_size_loc1, re_size_loc2)
590 call s_compute_interface_reynolds(alpha_r, re_r, re_size_loc1, re_size_loc2)
591 end if
592
593 if (chemistry) then
594
595# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
596#if defined(MFC_OpenACC)
597# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
598!$acc loop seq
599# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
600#elif defined(MFC_OpenMP)
601# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
602
603# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
604#endif
605# 163 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
606 do i = eqn_idx%species%beg, eqn_idx%species%end
607 ys_l(i - eqn_idx%species%beg + 1) = ql_prim_rsx_vf(j, k, l, i)
608# 165 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
609 ys_r(i - eqn_idx%species%beg + 1) = qr_prim_rsx_vf(j + 1, k, l, i)
610# 166 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
611 end do
612
613 call get_mixture_molecular_weight(ys_l, mw_l)
614 call get_mixture_molecular_weight(ys_r, mw_r)
615
616 xs_l(1:num_species) = ys_l(1:num_species)*mw_l/molecular_weights(:)
617 xs_r(1:num_species) = ys_r(1:num_species)*mw_r/molecular_weights(:)
618
619 r_gas_l = gas_constant/mw_l
620 r_gas_r = gas_constant/mw_r
621 t_l = pres_l/rho_l/r_gas_l
622 t_r = pres_r/rho_r/r_gas_r
623
624 call get_mixture_caloric_state(t_l, ys_l, cp_il, cp_l, cv_l, e_l)
625 call get_mixture_caloric_state(t_r, ys_r, cp_ir, cp_r, cv_r, e_r)
626
627 if (chem_params%gamma_method == 1) then
628 ! gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
629 gamma_il(1:num_species) = cp_il(1:num_species)/(cp_il(1:num_species) - 1.0_wp)
630 gamma_ir(1:num_species) = cp_ir(1:num_species)/(cp_ir(1:num_species) - 1.0_wp)
631
632 gamma_l = sum(xs_l(1:num_species)/(gamma_il(1:num_species) - 1.0_wp))
633 gamma_r = sum(xs_r(1:num_species)/(gamma_ir(1:num_species) - 1.0_wp))
634 else if (chem_params%gamma_method == 2) then
635 ! gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
636 gamm_l = cp_l/cv_l
637 gamma_l = 1.0_wp/(gamm_l - 1.0_wp)
638 gamm_r = cp_r/cv_r
639 gamma_r = 1.0_wp/(gamm_r - 1.0_wp)
640 end if
641
642 e_l = rho_l*e_l + 5.e-1*rho_l*vel_l_rms
643 e_r = rho_r*e_r + 5.e-1*rho_r*vel_r_rms
644 else
645 call s_compute_energy(pres_l, alpha_rho_l, alpha_l, vel_l_rms, e_l)
646 call s_compute_energy(pres_r, alpha_rho_r, alpha_r, vel_r_rms, e_r)
647 end if
648
649 call s_compute_speed_of_sound(pres_l, rho_l, gamma_l, pi_inf_l, alpha_l, c_l, alpha_rho_l)
650
651 call s_compute_speed_of_sound(pres_r, rho_r, gamma_r, pi_inf_r, alpha_r, c_r, alpha_rho_r)
652
653 s_l = 0._wp; s_r = 0._wp
654
655
656# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
657#if defined(MFC_OpenACC)
658# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
659!$acc loop seq
660# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
661#elif defined(MFC_OpenMP)
662# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
663
664# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
665#endif
666# 211 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
667 do i = 1, num_dims
668 s_l = s_l + vel_l(i)**2._wp
669 s_r = s_r + vel_r(i)**2._wp
670 end do
671
672 s_l = sqrt(s_l)
673 s_r = sqrt(s_r)
674
675 s_p = max(s_l, s_r) + max(c_l, c_r)
676 s_m = -s_p
677
678 s_l = s_m
679 s_r = s_p
680
681 ! Low Mach correction
682 pcorr = f_low_mach_pcorr_hll(vel_l_rms, vel_r_rms, c_l, c_r, rho_l, rho_r, s_m, s_p)
683
684 ! Mass
685
686# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
687#if defined(MFC_OpenACC)
688# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
689!$acc loop seq
690# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
691#elif defined(MFC_OpenMP)
692# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
693
694# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
695#endif
696# 230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
697 do i = 1, eqn_idx%cont%end
698 flux_rsx_vf(j, k, l, &
699# 232 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
700 & i) = (s_m*alpha_rho_r(i)*vel_r(norm_dir) - s_p*alpha_rho_l(i)*vel_l(norm_dir) &
701 & + s_m*s_p*(alpha_rho_l(i) - alpha_rho_r(i)))/(s_m - s_p)
702 end do
703
704 ! Momentum
705 if (bubbles_euler) then
706
707# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
708#if defined(MFC_OpenACC)
709# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
710!$acc loop seq
711# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
712#elif defined(MFC_OpenMP)
713# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
714
715# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
716#endif
717# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
718 do i = 1, num_vels
719 flux_rsx_vf(j, k, l, &
720# 241 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
721 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
722 & + dir_flg(dir_idx(i))*(pres_r - ptilde_r)) - s_p*(rho_l*vel_l(dir_idx(1)) &
723 & *vel_l(dir_idx(i)) + dir_flg(dir_idx(i))*(pres_l - ptilde_l)) &
724 & + s_m*s_p*(rho_l*vel_l(dir_idx(i)) - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) &
725 & + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
726 end do
727 else
728
729# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
730#if defined(MFC_OpenACC)
731# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
732!$acc loop seq
733# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
734#elif defined(MFC_OpenMP)
735# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
736
737# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
738#endif
739# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
740 do i = 1, num_vels
741 flux_rsx_vf(j, k, l, &
742# 251 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
743 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
744 & + dir_flg(dir_idx(i))*pres_r) - s_p*(rho_l*vel_l(dir_idx(1))*vel_l(dir_idx(i)) &
745 & + dir_flg(dir_idx(i))*pres_l) + s_m*s_p*(rho_l*vel_l(dir_idx(i)) &
746 & - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
747 & *pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
748 end do
749 end if
750
751 ! Energy
752 if (bubbles_euler) then
753 flux_rsx_vf(j, k, l, &
754# 262 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
755 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r - ptilde_r) - s_p*vel_l(dir_idx(1) &
756 & )*(e_l + pres_l - ptilde_l) + s_m*s_p*(e_l - e_r))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
757 & *pcorr*(vel_r_rms - vel_l_rms)/2._wp
758 else
759 flux_rsx_vf(j, k, l, &
760# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
761 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r) - s_p*vel_l(dir_idx(1))*(e_l &
762 & + pres_l) + s_m*s_p*(e_l - e_r))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r_rms &
763 & - vel_l_rms)/2._wp
764 end if
765
766 ! Advection flux and source: interface velocity for volume fraction transport
767
768# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
769#if defined(MFC_OpenACC)
770# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
771!$acc loop seq
772# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
773#elif defined(MFC_OpenMP)
774# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
775
776# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
777#endif
778# 274 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
779 do i = eqn_idx%adv%beg, eqn_idx%adv%end
780 flux_rsx_vf(j, k, l, i) = (ql_prim_rsx_vf(j, k, l, i) - qr_prim_rsx_vf(j + 1, k, l, &
781# 276 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
782 & i))*s_m*s_p/(s_m - s_p)
783 flux_src_rsx_vf(j, k, l, i) = (s_m*qr_prim_rsx_vf(j + 1, k, l, &
784# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
785 & i) - s_p*ql_prim_rsx_vf(j, k, l, i))/(s_m - s_p)
786# 279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
787 end do
788
789 if (bubbles_euler) then
790 ! From HLLC: Kills mass transport @ bubble gas density
791 if (num_fluids > 1) then
792 flux_rsx_vf(j, k, l, eqn_idx%cont%end) = 0._wp
793# 285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
794 end if
795 end if
796
797 if (chemistry) then
798
799# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
800#if defined(MFC_OpenACC)
801# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
802!$acc loop seq
803# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
804#elif defined(MFC_OpenMP)
805# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
806
807# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
808#endif
809# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
810 do i = eqn_idx%species%beg, eqn_idx%species%end
811 y_l = ql_prim_rsx_vf(j, k, l, i)
812# 292 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
813 y_r = qr_prim_rsx_vf(j + 1, k, l, i)
814# 293 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
815
816 flux_rsx_vf(j, k, l, &
817# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
818 & i) = (s_m*y_r*rho_r*vel_r(dir_idx(1)) - s_p*y_l*rho_l*vel_l(dir_idx(1)) &
819 & + s_m*s_p*(y_l*rho_l - y_r*rho_r))/(s_m - s_p)
820 flux_src_rsx_vf(j, k, l, i) = 0._wp
821# 298 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
822 end do
823 end if
824
825# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
826 end do
827 end do
828 end do
829
830# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
831#if defined(MFC_OpenACC)
832# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
833!$acc end parallel loop
834# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
835#elif defined(MFC_OpenMP)
836# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
837
838# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
839!$omp end target teams loop
840# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
841#endif
842# 322 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
843 end if
844# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
845# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
846# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
847 if (norm_dir == 2) then
848# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
849
850# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
851
852# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
853#if defined(MFC_OpenACC)
854# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
855!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k, l, alpha_rho_L, alpha_rho_R, vel_L, vel_R, alpha_L, alpha_R, Re_L, Re_R, s_L, s_R, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, &
856# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
857!$acc& Gamma_iL, Gamma_iR, pcorr, vel_grad_L, vel_grad_R, idx_right_phys, vel_L_rms, vel_R_rms, alpha_L_sum, alpha_R_sum, pres_L, pres_R, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_L, &
858# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
859!$acc& qv_R, c_L, c_R, Gamm_L, Gamm_R, E_L, E_R, ptilde_L, ptilde_R, s_M, s_P, Cp_L, Cp_R, Cv_L, Cv_R, R_gas_L, R_gas_R, MW_L, MW_R, T_L, T_R, Y_L, Y_R) firstprivate(Re_size_loc1, Re_size_loc2)
860# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
861#elif defined(MFC_OpenMP)
862# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
863
864# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
865
866# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
867
868# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
869!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l, &
870# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
871!$omp& alpha_rho_L, alpha_rho_R, vel_L, vel_R, alpha_L, alpha_R, Re_L, Re_R, s_L, s_R, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, Gamma_iR, pcorr, vel_grad_L, vel_grad_R, idx_right_phys, &
872# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
873!$omp& vel_L_rms, vel_R_rms, alpha_L_sum, alpha_R_sum, pres_L, pres_R, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_L, qv_R, c_L, c_R, Gamm_L, Gamm_R, E_L, E_R, ptilde_L, ptilde_R, s_M, s_P, &
874# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
875!$omp& Cp_L, Cp_R, Cv_L, Cv_R, R_gas_L, R_gas_R, MW_L, MW_R, T_L, T_R, Y_L, Y_R) firstprivate(Re_size_loc1, Re_size_loc2)
876# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
877#endif
878# 97 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
879 do l = is3%beg, is3%end
880# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
881 do k = is1%beg, is1%end
882# 99 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
883 do j = is2%beg, is2%end
884# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
885
886# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
887#if defined(MFC_OpenACC)
888# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
889!$acc loop seq
890# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
891#elif defined(MFC_OpenMP)
892# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
893
894# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
895#endif
896# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
897 do i = 1, eqn_idx%cont%end
898 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
899# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
900 alpha_rho_r(i) = qr_prim_rsx_vf(j, k + 1, l, i)
901# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
902 end do
903
904 vel_l_rms = 0._wp; vel_r_rms = 0._wp
905
906
907# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
908#if defined(MFC_OpenACC)
909# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
910!$acc loop seq
911# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
912#elif defined(MFC_OpenMP)
913# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
914
915# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
916#endif
917# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
918 do i = 1, num_vels
919 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end + i)
920# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
921 vel_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%cont%end + i)
922# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
923 vel_l_rms = vel_l_rms + vel_l(i)**2._wp
924 vel_r_rms = vel_r_rms + vel_r(i)**2._wp
925 end do
926
927
928# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
929#if defined(MFC_OpenACC)
930# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
931!$acc loop seq
932# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
933#elif defined(MFC_OpenMP)
934# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
935
936# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
937#endif
938# 117 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
939 do i = 1, num_fluids
940 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
941# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
942 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
943# 120 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
944 end do
945
946 pres_l = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
947# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
948 pres_r = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E)
949# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
950
951 rho_l = 0._wp
952 gamma_l = 0._wp
953 pi_inf_l = 0._wp
954 qv_l = 0._wp
955
956 rho_r = 0._wp
957 gamma_r = 0._wp
958 pi_inf_r = 0._wp
959 qv_r = 0._wp
960
961 alpha_l_sum = 0._wp
962 alpha_r_sum = 0._wp
963
964 if (mpp_lim) then
965
966# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
967#if defined(MFC_OpenACC)
968# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
969!$acc loop seq
970# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
971#elif defined(MFC_OpenMP)
972# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
973
974# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
975#endif
976# 140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
977 do i = 1, num_fluids
978 alpha_rho_l(i) = max(0._wp, alpha_rho_l(i))
979 alpha_l(i) = min(max(0._wp, alpha_l(i)), 1._wp)
980 alpha_l_sum = alpha_l_sum + alpha_l(i)
981 alpha_rho_r(i) = max(0._wp, alpha_rho_r(i))
982 alpha_r(i) = min(max(0._wp, alpha_r(i)), 1._wp)
983 alpha_r_sum = alpha_r_sum + alpha_r(i)
984 end do
985
986 alpha_l = alpha_l/max(alpha_l_sum, sgm_eps)
987 alpha_r = alpha_r/max(alpha_r_sum, sgm_eps)
988 end if
989
990 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_l)
991 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_r)
992
993 if (viscous) then
994 call s_compute_interface_reynolds(alpha_l, re_l, re_size_loc1, re_size_loc2)
995 call s_compute_interface_reynolds(alpha_r, re_r, re_size_loc1, re_size_loc2)
996 end if
997
998 if (chemistry) then
999
1000# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1001#if defined(MFC_OpenACC)
1002# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1003!$acc loop seq
1004# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1005#elif defined(MFC_OpenMP)
1006# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1007
1008# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1009#endif
1010# 163 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1011 do i = eqn_idx%species%beg, eqn_idx%species%end
1012 ys_l(i - eqn_idx%species%beg + 1) = ql_prim_rsx_vf(j, k, l, i)
1013# 165 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1014 ys_r(i - eqn_idx%species%beg + 1) = qr_prim_rsx_vf(j, k + 1, l, i)
1015# 166 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1016 end do
1017
1018 call get_mixture_molecular_weight(ys_l, mw_l)
1019 call get_mixture_molecular_weight(ys_r, mw_r)
1020
1021 xs_l(1:num_species) = ys_l(1:num_species)*mw_l/molecular_weights(:)
1022 xs_r(1:num_species) = ys_r(1:num_species)*mw_r/molecular_weights(:)
1023
1024 r_gas_l = gas_constant/mw_l
1025 r_gas_r = gas_constant/mw_r
1026 t_l = pres_l/rho_l/r_gas_l
1027 t_r = pres_r/rho_r/r_gas_r
1028
1029 call get_mixture_caloric_state(t_l, ys_l, cp_il, cp_l, cv_l, e_l)
1030 call get_mixture_caloric_state(t_r, ys_r, cp_ir, cp_r, cv_r, e_r)
1031
1032 if (chem_params%gamma_method == 1) then
1033 ! gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
1034 gamma_il(1:num_species) = cp_il(1:num_species)/(cp_il(1:num_species) - 1.0_wp)
1035 gamma_ir(1:num_species) = cp_ir(1:num_species)/(cp_ir(1:num_species) - 1.0_wp)
1036
1037 gamma_l = sum(xs_l(1:num_species)/(gamma_il(1:num_species) - 1.0_wp))
1038 gamma_r = sum(xs_r(1:num_species)/(gamma_ir(1:num_species) - 1.0_wp))
1039 else if (chem_params%gamma_method == 2) then
1040 ! gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
1041 gamm_l = cp_l/cv_l
1042 gamma_l = 1.0_wp/(gamm_l - 1.0_wp)
1043 gamm_r = cp_r/cv_r
1044 gamma_r = 1.0_wp/(gamm_r - 1.0_wp)
1045 end if
1046
1047 e_l = rho_l*e_l + 5.e-1*rho_l*vel_l_rms
1048 e_r = rho_r*e_r + 5.e-1*rho_r*vel_r_rms
1049 else
1050 call s_compute_energy(pres_l, alpha_rho_l, alpha_l, vel_l_rms, e_l)
1051 call s_compute_energy(pres_r, alpha_rho_r, alpha_r, vel_r_rms, e_r)
1052 end if
1053
1054 call s_compute_speed_of_sound(pres_l, rho_l, gamma_l, pi_inf_l, alpha_l, c_l, alpha_rho_l)
1055
1056 call s_compute_speed_of_sound(pres_r, rho_r, gamma_r, pi_inf_r, alpha_r, c_r, alpha_rho_r)
1057
1058 s_l = 0._wp; s_r = 0._wp
1059
1060
1061# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1062#if defined(MFC_OpenACC)
1063# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1064!$acc loop seq
1065# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1066#elif defined(MFC_OpenMP)
1067# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1068
1069# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1070#endif
1071# 211 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1072 do i = 1, num_dims
1073 s_l = s_l + vel_l(i)**2._wp
1074 s_r = s_r + vel_r(i)**2._wp
1075 end do
1076
1077 s_l = sqrt(s_l)
1078 s_r = sqrt(s_r)
1079
1080 s_p = max(s_l, s_r) + max(c_l, c_r)
1081 s_m = -s_p
1082
1083 s_l = s_m
1084 s_r = s_p
1085
1086 ! Low Mach correction
1087 pcorr = f_low_mach_pcorr_hll(vel_l_rms, vel_r_rms, c_l, c_r, rho_l, rho_r, s_m, s_p)
1088
1089 ! Mass
1090
1091# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1092#if defined(MFC_OpenACC)
1093# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1094!$acc loop seq
1095# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1096#elif defined(MFC_OpenMP)
1097# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1098
1099# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1100#endif
1101# 230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1102 do i = 1, eqn_idx%cont%end
1103 flux_rsx_vf(j, k, l, &
1104# 232 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1105 & i) = (s_m*alpha_rho_r(i)*vel_r(norm_dir) - s_p*alpha_rho_l(i)*vel_l(norm_dir) &
1106 & + s_m*s_p*(alpha_rho_l(i) - alpha_rho_r(i)))/(s_m - s_p)
1107 end do
1108
1109 ! Momentum
1110 if (bubbles_euler) then
1111
1112# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1113#if defined(MFC_OpenACC)
1114# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1115!$acc loop seq
1116# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1117#elif defined(MFC_OpenMP)
1118# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1119
1120# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1121#endif
1122# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1123 do i = 1, num_vels
1124 flux_rsx_vf(j, k, l, &
1125# 241 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1126 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1127 & + dir_flg(dir_idx(i))*(pres_r - ptilde_r)) - s_p*(rho_l*vel_l(dir_idx(1)) &
1128 & *vel_l(dir_idx(i)) + dir_flg(dir_idx(i))*(pres_l - ptilde_l)) &
1129 & + s_m*s_p*(rho_l*vel_l(dir_idx(i)) - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) &
1130 & + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1131 end do
1132 else
1133
1134# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1135#if defined(MFC_OpenACC)
1136# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1137!$acc loop seq
1138# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1139#elif defined(MFC_OpenMP)
1140# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1141
1142# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1143#endif
1144# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1145 do i = 1, num_vels
1146 flux_rsx_vf(j, k, l, &
1147# 251 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1148 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1149 & + dir_flg(dir_idx(i))*pres_r) - s_p*(rho_l*vel_l(dir_idx(1))*vel_l(dir_idx(i)) &
1150 & + dir_flg(dir_idx(i))*pres_l) + s_m*s_p*(rho_l*vel_l(dir_idx(i)) &
1151 & - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
1152 & *pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1153 end do
1154 end if
1155
1156 ! Energy
1157 if (bubbles_euler) then
1158 flux_rsx_vf(j, k, l, &
1159# 262 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1160 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r - ptilde_r) - s_p*vel_l(dir_idx(1) &
1161 & )*(e_l + pres_l - ptilde_l) + s_m*s_p*(e_l - e_r))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
1162 & *pcorr*(vel_r_rms - vel_l_rms)/2._wp
1163 else
1164 flux_rsx_vf(j, k, l, &
1165# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1166 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r) - s_p*vel_l(dir_idx(1))*(e_l &
1167 & + pres_l) + s_m*s_p*(e_l - e_r))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r_rms &
1168 & - vel_l_rms)/2._wp
1169 end if
1170
1171 ! Advection flux and source: interface velocity for volume fraction transport
1172
1173# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1174#if defined(MFC_OpenACC)
1175# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1176!$acc loop seq
1177# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1178#elif defined(MFC_OpenMP)
1179# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1180
1181# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1182#endif
1183# 274 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1184 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1185 flux_rsx_vf(j, k, l, i) = (ql_prim_rsx_vf(j, k, l, i) - qr_prim_rsx_vf(j, k + 1, l, &
1186# 276 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1187 & i))*s_m*s_p/(s_m - s_p)
1188 flux_src_rsx_vf(j, k, l, i) = (s_m*qr_prim_rsx_vf(j, k + 1, l, &
1189# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1190 & i) - s_p*ql_prim_rsx_vf(j, k, l, i))/(s_m - s_p)
1191# 279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1192 end do
1193
1194 if (bubbles_euler) then
1195 ! From HLLC: Kills mass transport @ bubble gas density
1196 if (num_fluids > 1) then
1197 flux_rsx_vf(j, k, l, eqn_idx%cont%end) = 0._wp
1198# 285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1199 end if
1200 end if
1201
1202 if (chemistry) then
1203
1204# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1205#if defined(MFC_OpenACC)
1206# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1207!$acc loop seq
1208# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1209#elif defined(MFC_OpenMP)
1210# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1211
1212# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1213#endif
1214# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1215 do i = eqn_idx%species%beg, eqn_idx%species%end
1216 y_l = ql_prim_rsx_vf(j, k, l, i)
1217# 292 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1218 y_r = qr_prim_rsx_vf(j, k + 1, l, i)
1219# 293 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1220
1221 flux_rsx_vf(j, k, l, &
1222# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1223 & i) = (s_m*y_r*rho_r*vel_r(dir_idx(1)) - s_p*y_l*rho_l*vel_l(dir_idx(1)) &
1224 & + s_m*s_p*(y_l*rho_l - y_r*rho_r))/(s_m - s_p)
1225 flux_src_rsx_vf(j, k, l, i) = 0._wp
1226# 298 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1227 end do
1228 end if
1229
1230# 302 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1231 if (cyl_coord) then
1232 ! Substituting the advective flux into the inviscid geometrical source flux
1233
1234# 304 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1235#if defined(MFC_OpenACC)
1236# 304 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1237!$acc loop seq
1238# 304 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1239#elif defined(MFC_OpenMP)
1240# 304 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1241
1242# 304 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1243#endif
1244# 305 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1245 do i = 1, eqn_idx%E
1246 flux_gsrc_rsx_vf(j, k, l, i) = flux_rsx_vf(j, k, l, i)
1247# 307 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1248 end do
1249 ! Recalculating the radial momentum geometric source flux
1250 flux_gsrc_rsx_vf(j, k, l, eqn_idx%cont%end + 2) = flux_rsx_vf(j, k, l, &
1251# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1252 & eqn_idx%cont%end + 2) - (s_m*pres_r - s_p*pres_l)/(s_m - s_p)
1253 ! Geometrical source of the void fraction(s) is zero
1254
1255# 312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1256#if defined(MFC_OpenACC)
1257# 312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1258!$acc loop seq
1259# 312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1260#elif defined(MFC_OpenMP)
1261# 312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1262
1263# 312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1264#endif
1265# 313 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1266 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1267 flux_gsrc_rsx_vf(j, k, l, i) = flux_rsx_vf(j, k, l, i)
1268# 315 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1269 end do
1270 end if
1271# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1272 end do
1273 end do
1274 end do
1275
1276# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1277#if defined(MFC_OpenACC)
1278# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1279!$acc end parallel loop
1280# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1281#elif defined(MFC_OpenMP)
1282# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1283
1284# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1285!$omp end target teams loop
1286# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1287#endif
1288# 322 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1289 end if
1290# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1291# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1292# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1293 if (norm_dir == 3) then
1294# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1295
1296# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1297
1298# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1299#if defined(MFC_OpenACC)
1300# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1301!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k, l, alpha_rho_L, alpha_rho_R, vel_L, vel_R, alpha_L, alpha_R, Re_L, Re_R, s_L, s_R, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, &
1302# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1303!$acc& Gamma_iL, Gamma_iR, pcorr, vel_grad_L, vel_grad_R, idx_right_phys, vel_L_rms, vel_R_rms, alpha_L_sum, alpha_R_sum, pres_L, pres_R, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_L, &
1304# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1305!$acc& qv_R, c_L, c_R, Gamm_L, Gamm_R, E_L, E_R, ptilde_L, ptilde_R, s_M, s_P, Cp_L, Cp_R, Cv_L, Cv_R, R_gas_L, R_gas_R, MW_L, MW_R, T_L, T_R, Y_L, Y_R) firstprivate(Re_size_loc1, Re_size_loc2)
1306# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1307#elif defined(MFC_OpenMP)
1308# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1309
1310# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1311
1312# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1313
1314# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1315!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l, &
1316# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1317!$omp& alpha_rho_L, alpha_rho_R, vel_L, vel_R, alpha_L, alpha_R, Re_L, Re_R, s_L, s_R, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, Gamma_iR, pcorr, vel_grad_L, vel_grad_R, idx_right_phys, &
1318# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1319!$omp& vel_L_rms, vel_R_rms, alpha_L_sum, alpha_R_sum, pres_L, pres_R, rho_L, rho_R, gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_L, qv_R, c_L, c_R, Gamm_L, Gamm_R, E_L, E_R, ptilde_L, ptilde_R, s_M, s_P, &
1320# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1321!$omp& Cp_L, Cp_R, Cv_L, Cv_R, R_gas_L, R_gas_R, MW_L, MW_R, T_L, T_R, Y_L, Y_R) firstprivate(Re_size_loc1, Re_size_loc2)
1322# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1323#endif
1324# 97 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1325 do l = is1%beg, is1%end
1326# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1327 do k = is2%beg, is2%end
1328# 99 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1329 do j = is3%beg, is3%end
1330# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1331
1332# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1333#if defined(MFC_OpenACC)
1334# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1335!$acc loop seq
1336# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1337#elif defined(MFC_OpenMP)
1338# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1339
1340# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1341#endif
1342# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1343 do i = 1, eqn_idx%cont%end
1344 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
1345# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1346 alpha_rho_r(i) = qr_prim_rsx_vf(j, k, l + 1, i)
1347# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1348 end do
1349
1350 vel_l_rms = 0._wp; vel_r_rms = 0._wp
1351
1352
1353# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1354#if defined(MFC_OpenACC)
1355# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1356!$acc loop seq
1357# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1358#elif defined(MFC_OpenMP)
1359# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1360
1361# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1362#endif
1363# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1364 do i = 1, num_vels
1365 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end + i)
1366# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1367 vel_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%cont%end + i)
1368# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1369 vel_l_rms = vel_l_rms + vel_l(i)**2._wp
1370 vel_r_rms = vel_r_rms + vel_r(i)**2._wp
1371 end do
1372
1373
1374# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1375#if defined(MFC_OpenACC)
1376# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1377!$acc loop seq
1378# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1379#elif defined(MFC_OpenMP)
1380# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1381
1382# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1383#endif
1384# 117 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1385 do i = 1, num_fluids
1386 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1387# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1388 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
1389# 120 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1390 end do
1391
1392 pres_l = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
1393# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1394 pres_r = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E)
1395# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1396
1397 rho_l = 0._wp
1398 gamma_l = 0._wp
1399 pi_inf_l = 0._wp
1400 qv_l = 0._wp
1401
1402 rho_r = 0._wp
1403 gamma_r = 0._wp
1404 pi_inf_r = 0._wp
1405 qv_r = 0._wp
1406
1407 alpha_l_sum = 0._wp
1408 alpha_r_sum = 0._wp
1409
1410 if (mpp_lim) then
1411
1412# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1413#if defined(MFC_OpenACC)
1414# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1415!$acc loop seq
1416# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1417#elif defined(MFC_OpenMP)
1418# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1419
1420# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1421#endif
1422# 140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1423 do i = 1, num_fluids
1424 alpha_rho_l(i) = max(0._wp, alpha_rho_l(i))
1425 alpha_l(i) = min(max(0._wp, alpha_l(i)), 1._wp)
1426 alpha_l_sum = alpha_l_sum + alpha_l(i)
1427 alpha_rho_r(i) = max(0._wp, alpha_rho_r(i))
1428 alpha_r(i) = min(max(0._wp, alpha_r(i)), 1._wp)
1429 alpha_r_sum = alpha_r_sum + alpha_r(i)
1430 end do
1431
1432 alpha_l = alpha_l/max(alpha_l_sum, sgm_eps)
1433 alpha_r = alpha_r/max(alpha_r_sum, sgm_eps)
1434 end if
1435
1436 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_l)
1437 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_r)
1438
1439 if (viscous) then
1440 call s_compute_interface_reynolds(alpha_l, re_l, re_size_loc1, re_size_loc2)
1441 call s_compute_interface_reynolds(alpha_r, re_r, re_size_loc1, re_size_loc2)
1442 end if
1443
1444 if (chemistry) then
1445
1446# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1447#if defined(MFC_OpenACC)
1448# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1449!$acc loop seq
1450# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1451#elif defined(MFC_OpenMP)
1452# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1453
1454# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1455#endif
1456# 163 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1457 do i = eqn_idx%species%beg, eqn_idx%species%end
1458 ys_l(i - eqn_idx%species%beg + 1) = ql_prim_rsx_vf(j, k, l, i)
1459# 165 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1460 ys_r(i - eqn_idx%species%beg + 1) = qr_prim_rsx_vf(j, k, l + 1, i)
1461# 166 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1462 end do
1463
1464 call get_mixture_molecular_weight(ys_l, mw_l)
1465 call get_mixture_molecular_weight(ys_r, mw_r)
1466
1467 xs_l(1:num_species) = ys_l(1:num_species)*mw_l/molecular_weights(:)
1468 xs_r(1:num_species) = ys_r(1:num_species)*mw_r/molecular_weights(:)
1469
1470 r_gas_l = gas_constant/mw_l
1471 r_gas_r = gas_constant/mw_r
1472 t_l = pres_l/rho_l/r_gas_l
1473 t_r = pres_r/rho_r/r_gas_r
1474
1475 call get_mixture_caloric_state(t_l, ys_l, cp_il, cp_l, cv_l, e_l)
1476 call get_mixture_caloric_state(t_r, ys_r, cp_ir, cp_r, cv_r, e_r)
1477
1478 if (chem_params%gamma_method == 1) then
1479 ! gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
1480 gamma_il(1:num_species) = cp_il(1:num_species)/(cp_il(1:num_species) - 1.0_wp)
1481 gamma_ir(1:num_species) = cp_ir(1:num_species)/(cp_ir(1:num_species) - 1.0_wp)
1482
1483 gamma_l = sum(xs_l(1:num_species)/(gamma_il(1:num_species) - 1.0_wp))
1484 gamma_r = sum(xs_r(1:num_species)/(gamma_ir(1:num_species) - 1.0_wp))
1485 else if (chem_params%gamma_method == 2) then
1486 ! gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
1487 gamm_l = cp_l/cv_l
1488 gamma_l = 1.0_wp/(gamm_l - 1.0_wp)
1489 gamm_r = cp_r/cv_r
1490 gamma_r = 1.0_wp/(gamm_r - 1.0_wp)
1491 end if
1492
1493 e_l = rho_l*e_l + 5.e-1*rho_l*vel_l_rms
1494 e_r = rho_r*e_r + 5.e-1*rho_r*vel_r_rms
1495 else
1496 call s_compute_energy(pres_l, alpha_rho_l, alpha_l, vel_l_rms, e_l)
1497 call s_compute_energy(pres_r, alpha_rho_r, alpha_r, vel_r_rms, e_r)
1498 end if
1499
1500 call s_compute_speed_of_sound(pres_l, rho_l, gamma_l, pi_inf_l, alpha_l, c_l, alpha_rho_l)
1501
1502 call s_compute_speed_of_sound(pres_r, rho_r, gamma_r, pi_inf_r, alpha_r, c_r, alpha_rho_r)
1503
1504 s_l = 0._wp; s_r = 0._wp
1505
1506
1507# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1508#if defined(MFC_OpenACC)
1509# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1510!$acc loop seq
1511# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1512#elif defined(MFC_OpenMP)
1513# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1514
1515# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1516#endif
1517# 211 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1518 do i = 1, num_dims
1519 s_l = s_l + vel_l(i)**2._wp
1520 s_r = s_r + vel_r(i)**2._wp
1521 end do
1522
1523 s_l = sqrt(s_l)
1524 s_r = sqrt(s_r)
1525
1526 s_p = max(s_l, s_r) + max(c_l, c_r)
1527 s_m = -s_p
1528
1529 s_l = s_m
1530 s_r = s_p
1531
1532 ! Low Mach correction
1533 pcorr = f_low_mach_pcorr_hll(vel_l_rms, vel_r_rms, c_l, c_r, rho_l, rho_r, s_m, s_p)
1534
1535 ! Mass
1536
1537# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1538#if defined(MFC_OpenACC)
1539# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1540!$acc loop seq
1541# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1542#elif defined(MFC_OpenMP)
1543# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1544
1545# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1546#endif
1547# 230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1548 do i = 1, eqn_idx%cont%end
1549 flux_rsx_vf(j, k, l, &
1550# 232 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1551 & i) = (s_m*alpha_rho_r(i)*vel_r(norm_dir) - s_p*alpha_rho_l(i)*vel_l(norm_dir) &
1552 & + s_m*s_p*(alpha_rho_l(i) - alpha_rho_r(i)))/(s_m - s_p)
1553 end do
1554
1555 ! Momentum
1556 if (bubbles_euler) then
1557
1558# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1559#if defined(MFC_OpenACC)
1560# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1561!$acc loop seq
1562# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1563#elif defined(MFC_OpenMP)
1564# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1565
1566# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1567#endif
1568# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1569 do i = 1, num_vels
1570 flux_rsx_vf(j, k, l, &
1571# 241 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1572 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1573 & + dir_flg(dir_idx(i))*(pres_r - ptilde_r)) - s_p*(rho_l*vel_l(dir_idx(1)) &
1574 & *vel_l(dir_idx(i)) + dir_flg(dir_idx(i))*(pres_l - ptilde_l)) &
1575 & + s_m*s_p*(rho_l*vel_l(dir_idx(i)) - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) &
1576 & + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1577 end do
1578 else
1579
1580# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1581#if defined(MFC_OpenACC)
1582# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1583!$acc loop seq
1584# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1585#elif defined(MFC_OpenMP)
1586# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1587
1588# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1589#endif
1590# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1591 do i = 1, num_vels
1592 flux_rsx_vf(j, k, l, &
1593# 251 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1594 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1595 & + dir_flg(dir_idx(i))*pres_r) - s_p*(rho_l*vel_l(dir_idx(1))*vel_l(dir_idx(i)) &
1596 & + dir_flg(dir_idx(i))*pres_l) + s_m*s_p*(rho_l*vel_l(dir_idx(i)) &
1597 & - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
1598 & *pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1599 end do
1600 end if
1601
1602 ! Energy
1603 if (bubbles_euler) then
1604 flux_rsx_vf(j, k, l, &
1605# 262 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1606 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r - ptilde_r) - s_p*vel_l(dir_idx(1) &
1607 & )*(e_l + pres_l - ptilde_l) + s_m*s_p*(e_l - e_r))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
1608 & *pcorr*(vel_r_rms - vel_l_rms)/2._wp
1609 else
1610 flux_rsx_vf(j, k, l, &
1611# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1612 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r) - s_p*vel_l(dir_idx(1))*(e_l &
1613 & + pres_l) + s_m*s_p*(e_l - e_r))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r_rms &
1614 & - vel_l_rms)/2._wp
1615 end if
1616
1617 ! Advection flux and source: interface velocity for volume fraction transport
1618
1619# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1620#if defined(MFC_OpenACC)
1621# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1622!$acc loop seq
1623# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1624#elif defined(MFC_OpenMP)
1625# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1626
1627# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1628#endif
1629# 274 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1630 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1631 flux_rsx_vf(j, k, l, i) = (ql_prim_rsx_vf(j, k, l, i) - qr_prim_rsx_vf(j, k, l + 1, &
1632# 276 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1633 & i))*s_m*s_p/(s_m - s_p)
1634 flux_src_rsx_vf(j, k, l, i) = (s_m*qr_prim_rsx_vf(j, k, l + 1, &
1635# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1636 & i) - s_p*ql_prim_rsx_vf(j, k, l, i))/(s_m - s_p)
1637# 279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1638 end do
1639
1640 if (bubbles_euler) then
1641 ! From HLLC: Kills mass transport @ bubble gas density
1642 if (num_fluids > 1) then
1643 flux_rsx_vf(j, k, l, eqn_idx%cont%end) = 0._wp
1644# 285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1645 end if
1646 end if
1647
1648 if (chemistry) then
1649
1650# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1651#if defined(MFC_OpenACC)
1652# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1653!$acc loop seq
1654# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1655#elif defined(MFC_OpenMP)
1656# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1657
1658# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1659#endif
1660# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1661 do i = eqn_idx%species%beg, eqn_idx%species%end
1662 y_l = ql_prim_rsx_vf(j, k, l, i)
1663# 292 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1664 y_r = qr_prim_rsx_vf(j, k, l + 1, i)
1665# 293 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1666
1667 flux_rsx_vf(j, k, l, &
1668# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1669 & i) = (s_m*y_r*rho_r*vel_r(dir_idx(1)) - s_p*y_l*rho_l*vel_l(dir_idx(1)) &
1670 & + s_m*s_p*(y_l*rho_l - y_r*rho_r))/(s_m - s_p)
1671 flux_src_rsx_vf(j, k, l, i) = 0._wp
1672# 298 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1673 end do
1674 end if
1675
1676# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1677 end do
1678 end do
1679 end do
1680
1681# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1682#if defined(MFC_OpenACC)
1683# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1684!$acc end parallel loop
1685# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1686#elif defined(MFC_OpenMP)
1687# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1688
1689# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1690!$omp end target teams loop
1691# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1692#endif
1693# 322 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1694 end if
1695# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1696
1697 if (viscous) then
1698
1699# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1700
1701# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1702#if defined(MFC_OpenACC)
1703# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1704!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k, l, idx_right_phys, vel_grad_L, vel_grad_R, alpha_L, alpha_R, vel_L, vel_R, Re_L, Re_R) &
1705# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1706!$acc& firstprivate(Re_size_loc1, Re_size_loc2) copyin(norm_dir)
1707# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1708#elif defined(MFC_OpenMP)
1709# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1710
1711# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1712
1713# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1714
1715# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1716!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1717# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1718!$omp& private(i, j, k, l, idx_right_phys, vel_grad_L, vel_grad_R, alpha_L, alpha_R, vel_L, vel_R, Re_L, Re_R) firstprivate(Re_size_loc1, Re_size_loc2) map(to:norm_dir)
1719# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1720#endif
1721# 328 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1722 do l = isz%beg, isz%end
1723 do k = isy%beg, isy%end
1724 do j = isx%beg, isx%end
1725 idx_right_phys(1) = j
1726 idx_right_phys(2) = k
1727 idx_right_phys(3) = l
1728 idx_right_phys(norm_dir) = idx_right_phys(norm_dir) + 1
1729
1730 if (norm_dir == 1) then
1731
1732# 337 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1733#if defined(MFC_OpenACC)
1734# 337 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1735!$acc loop seq
1736# 337 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1737#elif defined(MFC_OpenMP)
1738# 337 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1739
1740# 337 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1741#endif
1742# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1743 do i = 1, num_fluids
1744 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1745 alpha_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E + i)
1746 end do
1747
1748
1749# 343 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1750#if defined(MFC_OpenACC)
1751# 343 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1752!$acc loop seq
1753# 343 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1754#elif defined(MFC_OpenMP)
1755# 343 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1756
1757# 343 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1758#endif
1759# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1760 do i = 1, num_dims
1761 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%mom%beg + i - 1)
1762 vel_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%mom%beg + i - 1)
1763 end do
1764 else if (norm_dir == 2) then
1765
1766# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1767#if defined(MFC_OpenACC)
1768# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1769!$acc loop seq
1770# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1771#elif defined(MFC_OpenMP)
1772# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1773
1774# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1775#endif
1776# 350 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1777 do i = 1, num_fluids
1778 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1779 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
1780 end do
1781
1782# 354 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1783#if defined(MFC_OpenACC)
1784# 354 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1785!$acc loop seq
1786# 354 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1787#elif defined(MFC_OpenMP)
1788# 354 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1789
1790# 354 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1791#endif
1792# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1793 do i = 1, num_dims
1794 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%mom%beg + i - 1)
1795 vel_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%mom%beg + i - 1)
1796 end do
1797 else
1798
1799# 360 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1800#if defined(MFC_OpenACC)
1801# 360 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1802!$acc loop seq
1803# 360 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1804#elif defined(MFC_OpenMP)
1805# 360 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1806
1807# 360 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1808#endif
1809# 361 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1810 do i = 1, num_fluids
1811 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1812 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
1813 end do
1814
1815
1816# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1817#if defined(MFC_OpenACC)
1818# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1819!$acc loop seq
1820# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1821#elif defined(MFC_OpenMP)
1822# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1823
1824# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1825#endif
1826# 367 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1827 do i = 1, num_dims
1828 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%mom%beg + i - 1)
1829 vel_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%mom%beg + i - 1)
1830 end do
1831 end if
1832
1833 call s_compute_interface_reynolds(alpha_l, re_l, re_size_loc1, re_size_loc2)
1834 call s_compute_interface_reynolds(alpha_r, re_r, re_size_loc1, re_size_loc2)
1835
1836 if (shear_stress) then
1837
1838# 377 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1839#if defined(MFC_OpenACC)
1840# 377 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1841!$acc loop seq
1842# 377 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1843#elif defined(MFC_OpenMP)
1844# 377 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1845
1846# 377 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1847#endif
1848# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1849 do i = 1, num_dims
1850 vel_grad_l(i, 1) = (dql_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(1))
1851 vel_grad_r(i, 1) = (dqr_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1852 & idx_right_phys(2), idx_right_phys(3))/re_r(1))
1853# 383 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1854 if (num_dims > 1) then
1855 vel_grad_l(i, 2) = (dql_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(1))
1856 vel_grad_r(i, 2) = (dqr_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1857 & idx_right_phys(2), idx_right_phys(3))/re_r(1))
1858 end if
1859# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1860 if (num_dims > 2) then
1861 vel_grad_l(i, 3) = (dql_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(1))
1862 vel_grad_r(i, 3) = (dqr_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1863 & idx_right_phys(2), idx_right_phys(3))/re_r(1))
1864 end if
1865# 395 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1866# 396 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1867 end do
1868
1869 if (norm_dir == 1) then
1870 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1871 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
1872 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1873 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1)*vel_l(1) + vel_grad_r(1, 1)*vel_r(1))
1874# 404 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1875 if (num_dims > 1) then
1876 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1877 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
1878 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1879 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2)*vel_l(1) + vel_grad_r(2, &
1880 & 2)*vel_r(1))
1881
1882 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
1883 & l) - 0.5_wp*(vel_grad_l(1, 2) + vel_grad_r(1, 2)) - 0.5_wp*(vel_grad_l(2, &
1884 & 1) + vel_grad_r(2, 1))
1885 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1886 & l) - 0.5_wp*(vel_grad_l(1, 2)*vel_l(2) + vel_grad_r(1, &
1887 & 2)*vel_r(2)) - 0.5_wp*(vel_grad_l(2, 1)*vel_l(2) + vel_grad_r(2, 1)*vel_r(2))
1888# 418 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1889 if (num_dims > 2) then
1890 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1891 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
1892 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1893 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, &
1894 & 3)*vel_l(1) + vel_grad_r(3, 3)*vel_r(1))
1895
1896 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1897 & l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1898 & l) - 0.5_wp*(vel_grad_l(1, 3) + vel_grad_r(1, &
1899 & 3)) - 0.5_wp*(vel_grad_l(3, 1) + vel_grad_r(3, 1))
1900 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1901 & l) - 0.5_wp*(vel_grad_l(1, 3)*vel_l(3) + vel_grad_r(1, &
1902 & 3)*vel_r(3)) - 0.5_wp*(vel_grad_l(3, 1)*vel_l(3) + vel_grad_r(3, &
1903 & 1)*vel_r(3))
1904 end if
1905# 435 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1906 end if
1907# 437 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1908 else if (norm_dir == 2) then
1909# 439 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1910 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
1911 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
1912 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1913 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1)*vel_l(2) + vel_grad_r(1, 1)*vel_r(2))
1914
1915 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
1916 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
1917 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1918 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2)*vel_l(2) + vel_grad_r(2, 2)*vel_r(2))
1919
1920 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1921 & l) - 0.5_wp*(vel_grad_l(1, 2) + vel_grad_r(1, 2)) - 0.5_wp*(vel_grad_l(2, &
1922 & 1) + vel_grad_r(2, 1))
1923 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1924 & l) - 0.5_wp*(vel_grad_l(1, 2)*vel_l(1) + vel_grad_r(1, &
1925 & 2)*vel_r(1)) - 0.5_wp*(vel_grad_l(2, 1)*vel_l(1) + vel_grad_r(2, 1)*vel_r(1))
1926# 456 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1927 if (num_dims > 2) then
1928 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, &
1929 & k, l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
1930 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1931 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3)*vel_l(2) + vel_grad_r(3, &
1932 & 3)*vel_r(2))
1933
1934 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, &
1935 & k, l) - 0.5_wp*(vel_grad_l(2, 3) + vel_grad_r(2, &
1936 & 3)) - 0.5_wp*(vel_grad_l(3, 2) + vel_grad_r(3, 2))
1937 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1938 & l) - 0.5_wp*(vel_grad_l(2, 3)*vel_l(3) + vel_grad_r(2, &
1939 & 3)*vel_r(3)) - 0.5_wp*(vel_grad_l(3, 2)*vel_l(3) + vel_grad_r(3, &
1940 & 2)*vel_r(3))
1941 end if
1942# 472 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1943# 473 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1944 else
1945# 475 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1946 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1947 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
1948 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1949 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1)*vel_l(3) + vel_grad_r(1, 1)*vel_r(3))
1950
1951 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1952 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
1953 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1954 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2)*vel_l(3) + vel_grad_r(2, 2)*vel_r(3))
1955
1956 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1957 & l) - 0.5_wp*(vel_grad_l(1, 3) + vel_grad_r(1, 3)) - 0.5_wp*(vel_grad_l(3, &
1958 & 1) + vel_grad_r(3, 1))
1959 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1960 & l) - 0.5_wp*(vel_grad_l(1, 3)*vel_l(1) + vel_grad_r(1, &
1961 & 3)*vel_r(1)) - 0.5_wp*(vel_grad_l(3, 1)*vel_l(1) + vel_grad_r(3, 1)*vel_r(1))
1962
1963 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1964 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
1965 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1966 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3)*vel_l(3) + vel_grad_r(3, 3)*vel_r(3))
1967
1968 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
1969 & l) - 0.5_wp*(vel_grad_l(2, 3) + vel_grad_r(2, 3)) - 0.5_wp*(vel_grad_l(3, &
1970 & 2) + vel_grad_r(3, 2))
1971 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1972 & l) - 0.5_wp*(vel_grad_l(2, 3)*vel_l(2) + vel_grad_r(2, &
1973 & 3)*vel_r(2)) - 0.5_wp*(vel_grad_l(3, 2)*vel_l(2) + vel_grad_r(3, 2)*vel_r(2))
1974# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1975 end if
1976 end if
1977
1978 if (bulk_stress) then
1979
1980# 508 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1981#if defined(MFC_OpenACC)
1982# 508 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1983!$acc loop seq
1984# 508 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1985#elif defined(MFC_OpenMP)
1986# 508 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1987
1988# 508 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1989#endif
1990# 509 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1991 do i = 1, num_dims
1992 vel_grad_l(i, 1) = (dql_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(2))
1993 vel_grad_r(i, 1) = (dqr_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1994 & idx_right_phys(2), idx_right_phys(3))/re_r(2))
1995# 514 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1996 if (num_dims > 1) then
1997 vel_grad_l(i, 2) = (dql_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(2))
1998 vel_grad_r(i, 2) = (dqr_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1999 & idx_right_phys(2), idx_right_phys(3))/re_r(2))
2000 end if
2001# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2002# 521 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2003 if (num_dims > 2) then
2004 vel_grad_l(i, 3) = (dql_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(2))
2005 vel_grad_r(i, 3) = (dqr_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
2006 & idx_right_phys(2), idx_right_phys(3))/re_r(2))
2007 end if
2008# 527 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2009 end do
2010
2011 if (norm_dir == 1) then
2012 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
2013 & l) - 0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
2014 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, l) - 0.5_wp*(vel_grad_l(1, &
2015 & 1)*vel_l(1) + vel_grad_r(1, 1)*vel_r(1))
2016# 535 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2017 if (num_dims > 1) then
2018 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
2019 & l) - 0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
2020 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2021 & l) - 0.5_wp*(vel_grad_l(2, 2)*vel_l(1) + vel_grad_r(2, 2)*vel_r(1))
2022
2023# 542 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2024 if (num_dims > 2) then
2025 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
2026 & l) - 0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
2027 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2028 & l) - 0.5_wp*(vel_grad_l(3, 3)*vel_l(1) + vel_grad_r(3, 3)*vel_r(1))
2029 end if
2030# 549 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2031 end if
2032# 551 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2033 else if (norm_dir == 2) then
2034# 553 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2035 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
2036 & l) - 0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
2037 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2038 & l) - 0.5_wp*(vel_grad_l(1, 1)*vel_l(2) + vel_grad_r(1, 1)*vel_r(2))
2039
2040 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
2041 & l) - 0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
2042 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2043 & l) - 0.5_wp*(vel_grad_l(2, 2)*vel_l(2) + vel_grad_r(2, 2)*vel_r(2))
2044
2045# 564 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2046 if (num_dims > 2) then
2047 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, &
2048 & k, l) - 0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
2049 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2050 & l) - 0.5_wp*(vel_grad_l(3, 3)*vel_l(2) + vel_grad_r(3, 3)*vel_r(2))
2051 end if
2052# 571 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2053# 572 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2054 else
2055# 574 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2056 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
2057 & l) - 0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
2058 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2059 & l) - 0.5_wp*(vel_grad_l(1, 1)*vel_l(3) + vel_grad_r(1, 1)*vel_r(3))
2060
2061 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
2062 & l) - 0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
2063 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2064 & l) - 0.5_wp*(vel_grad_l(2, 2)*vel_l(3) + vel_grad_r(2, 2)*vel_r(3))
2065
2066 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
2067 & l) - 0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
2068 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2069 & l) - 0.5_wp*(vel_grad_l(3, 3)*vel_l(3) + vel_grad_r(3, 3)*vel_r(3))
2070# 589 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2071 end if
2072 end if
2073 end do
2074 end do
2075 end do
2076
2077# 594 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2078#if defined(MFC_OpenACC)
2079# 594 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2080!$acc end parallel loop
2081# 594 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2082#elif defined(MFC_OpenMP)
2083# 594 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2084
2085# 594 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2086!$omp end target teams loop
2087# 594 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2088#endif
2089# 595 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2090 end if
2091
2092 call s_finalize_riemann_solver(flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir)
2093
2094 end subroutine s_lf_riemann_solver
2095
2096end module m_riemann_solver_lf
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter riemann_solver_hll
real(wp), parameter sgm_eps
Segmentation tolerance.
integer, parameter riemann_solver_hllc
integer, parameter riemann_solver_lax_friedrichs
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...
logical bulk_stress
Bulk stresses.
integer, dimension(3) dir_idx
real(wp), dimension(3) dir_flg
logical shear_stress
Shear stresses.
Lax-Friedrichs (Rusanov) approximate Riemann solver.
subroutine s_lf_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
Lax-Friedrichs (Rusanov) approximate Riemann solver.
Shared Riemann-solver module state and the per-sweep setup, state-buffer population,...
real(wp), dimension(:,:,:,:), allocatable flux_src_rsx_vf
type(int_bounds_info) isz
type(int_bounds_info) isx
type(int_bounds_info) is3
real(wp), dimension(:,:,:,:), allocatable flux_rsx_vf
The cell-boundary values of the fluxes (src - source) that are computed through the chosen Riemann pr...
subroutine s_initialize_riemann_solver(flux_src_vf, norm_dir)
Set up the chosen Riemann solver algorithm for the current direction.
subroutine s_populate_riemann_states_variables_buffers(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, norm_dir, ix, iy, iz)
Populate the left and right Riemann state variable buffers based on boundary conditions.
real(wp) function f_low_mach_pcorr_hll(vel_l_rms, vel_r_rms, c_l, c_r, rho_l, rho_r, s_m, s_p)
Low-Mach pressure correction added to the HLL and Lax-Friedrichs fluxes, which restores the pressure ...
type(int_bounds_info) isy
type(int_bounds_info) is2
subroutine s_finalize_riemann_solver(flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir)
Reshape and copy the Riemann-solver flux buffers back to the physical-space output arrays for the sel...
subroutine s_compute_interface_reynolds(alpha_k, re_k, re_size_loc1, re_size_loc2)
Compute the shear and volume Reynolds numbers of one Riemann state by inverse-weighting the fluid Rey...
real(wp), dimension(:,:,:,:), allocatable flux_gsrc_rsx_vf
The cell-boundary values of the geometrical source flux that are computed through the chosen Riemann ...
type(int_bounds_info) is1
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
subroutine, public s_compute_energy(pres, alpha_rho_k, alpha_k, vel_sum, e)
Total energy per unit volume, thermodynamic terms only. Callers add magnetic and elastic energy,...
Integer bounds for variables.
Derived type annexing a scalar field (SF).