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) = (s_m*qr_prim_rsx_vf(j + 1, k, l, &
781# 276 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
782 & i)*vel_r(norm_dir) - s_p*ql_prim_rsx_vf(j, k, l, &
783# 277 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
784 & i)*vel_l(norm_dir) + s_m*s_p*(ql_prim_rsx_vf(j, k, l, &
785# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
786 & i) - qr_prim_rsx_vf(j + 1, k, l, i)))/(s_m - s_p)
787# 279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
788 end do
789 flux_src_rsx_vf(j, k, l, eqn_idx%adv%beg) = (s_m*vel_r(norm_dir) - s_p*vel_l(norm_dir))/(s_m - s_p)
790# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
791
792 if (bubbles_euler) then
793 ! From HLLC: Kills mass transport @ bubble gas density
794 if (num_fluids > 1) then
795 flux_rsx_vf(j, k, l, eqn_idx%cont%end) = 0._wp
796# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
797 end if
798 end if
799
800 if (chemistry) then
801
802# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
803#if defined(MFC_OpenACC)
804# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
805!$acc loop seq
806# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
807#elif defined(MFC_OpenMP)
808# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
809
810# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
811#endif
812# 291 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
813 do i = eqn_idx%species%beg, eqn_idx%species%end
814 y_l = ql_prim_rsx_vf(j, k, l, i)
815# 293 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
816 y_r = qr_prim_rsx_vf(j + 1, k, l, i)
817# 294 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
818
819 flux_rsx_vf(j, k, l, &
820# 296 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
821 & i) = (s_m*y_r*rho_r*vel_r(dir_idx(1)) - s_p*y_l*rho_l*vel_l(dir_idx(1)) &
822 & + s_m*s_p*(y_l*rho_l - y_r*rho_r))/(s_m - s_p)
823 flux_src_rsx_vf(j, k, l, i) = 0._wp
824# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
825 end do
826 end if
827
828# 319 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
829# 330 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
830 end do
831 end do
832 end do
833
834# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
835#if defined(MFC_OpenACC)
836# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
837!$acc end parallel loop
838# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
839#elif defined(MFC_OpenMP)
840# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
841
842# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
843!$omp end target teams loop
844# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
845#endif
846# 334 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
847 end if
848# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
849# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
850# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
851 if (norm_dir == 2) then
852# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
853
854# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
855
856# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
857#if defined(MFC_OpenACC)
858# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
859!$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, &
860# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
861!$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, &
862# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
863!$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)
864# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
865#elif defined(MFC_OpenMP)
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
870# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
871
872# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
873!$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, &
874# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
875!$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, &
876# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
877!$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, &
878# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
879!$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)
880# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
881#endif
882# 97 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
883 do l = is3%beg, is3%end
884# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
885 do k = is1%beg, is1%end
886# 99 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
887 do j = is2%beg, is2%end
888# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
889
890# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
891#if defined(MFC_OpenACC)
892# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
893!$acc loop seq
894# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
895#elif defined(MFC_OpenMP)
896# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
897
898# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
899#endif
900# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
901 do i = 1, eqn_idx%cont%end
902 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
903# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
904 alpha_rho_r(i) = qr_prim_rsx_vf(j, k + 1, l, i)
905# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
906 end do
907
908 vel_l_rms = 0._wp; vel_r_rms = 0._wp
909
910
911# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
912#if defined(MFC_OpenACC)
913# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
914!$acc loop seq
915# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
916#elif defined(MFC_OpenMP)
917# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
918
919# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
920#endif
921# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
922 do i = 1, num_vels
923 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end + i)
924# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
925 vel_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%cont%end + i)
926# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
927 vel_l_rms = vel_l_rms + vel_l(i)**2._wp
928 vel_r_rms = vel_r_rms + vel_r(i)**2._wp
929 end do
930
931
932# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
933#if defined(MFC_OpenACC)
934# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
935!$acc loop seq
936# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
937#elif defined(MFC_OpenMP)
938# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
939
940# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
941#endif
942# 117 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
943 do i = 1, num_fluids
944 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
945# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
946 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
947# 120 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
948 end do
949
950 pres_l = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
951# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
952 pres_r = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E)
953# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
954
955 rho_l = 0._wp
956 gamma_l = 0._wp
957 pi_inf_l = 0._wp
958 qv_l = 0._wp
959
960 rho_r = 0._wp
961 gamma_r = 0._wp
962 pi_inf_r = 0._wp
963 qv_r = 0._wp
964
965 alpha_l_sum = 0._wp
966 alpha_r_sum = 0._wp
967
968 if (mpp_lim) then
969
970# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
971#if defined(MFC_OpenACC)
972# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
973!$acc loop seq
974# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
975#elif defined(MFC_OpenMP)
976# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
977
978# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
979#endif
980# 140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
981 do i = 1, num_fluids
982 alpha_rho_l(i) = max(0._wp, alpha_rho_l(i))
983 alpha_l(i) = min(max(0._wp, alpha_l(i)), 1._wp)
984 alpha_l_sum = alpha_l_sum + alpha_l(i)
985 alpha_rho_r(i) = max(0._wp, alpha_rho_r(i))
986 alpha_r(i) = min(max(0._wp, alpha_r(i)), 1._wp)
987 alpha_r_sum = alpha_r_sum + alpha_r(i)
988 end do
989
990 alpha_l = alpha_l/max(alpha_l_sum, sgm_eps)
991 alpha_r = alpha_r/max(alpha_r_sum, sgm_eps)
992 end if
993
994 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_l)
995 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_r)
996
997 if (viscous) then
998 call s_compute_interface_reynolds(alpha_l, re_l, re_size_loc1, re_size_loc2)
999 call s_compute_interface_reynolds(alpha_r, re_r, re_size_loc1, re_size_loc2)
1000 end if
1001
1002 if (chemistry) then
1003
1004# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1005#if defined(MFC_OpenACC)
1006# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1007!$acc loop seq
1008# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1009#elif defined(MFC_OpenMP)
1010# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1011
1012# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1013#endif
1014# 163 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1015 do i = eqn_idx%species%beg, eqn_idx%species%end
1016 ys_l(i - eqn_idx%species%beg + 1) = ql_prim_rsx_vf(j, k, l, i)
1017# 165 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1018 ys_r(i - eqn_idx%species%beg + 1) = qr_prim_rsx_vf(j, k + 1, l, i)
1019# 166 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1020 end do
1021
1022 call get_mixture_molecular_weight(ys_l, mw_l)
1023 call get_mixture_molecular_weight(ys_r, mw_r)
1024
1025 xs_l(1:num_species) = ys_l(1:num_species)*mw_l/molecular_weights(:)
1026 xs_r(1:num_species) = ys_r(1:num_species)*mw_r/molecular_weights(:)
1027
1028 r_gas_l = gas_constant/mw_l
1029 r_gas_r = gas_constant/mw_r
1030 t_l = pres_l/rho_l/r_gas_l
1031 t_r = pres_r/rho_r/r_gas_r
1032
1033 call get_mixture_caloric_state(t_l, ys_l, cp_il, cp_l, cv_l, e_l)
1034 call get_mixture_caloric_state(t_r, ys_r, cp_ir, cp_r, cv_r, e_r)
1035
1036 if (chem_params%gamma_method == 1) then
1037 ! gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
1038 gamma_il(1:num_species) = cp_il(1:num_species)/(cp_il(1:num_species) - 1.0_wp)
1039 gamma_ir(1:num_species) = cp_ir(1:num_species)/(cp_ir(1:num_species) - 1.0_wp)
1040
1041 gamma_l = sum(xs_l(1:num_species)/(gamma_il(1:num_species) - 1.0_wp))
1042 gamma_r = sum(xs_r(1:num_species)/(gamma_ir(1:num_species) - 1.0_wp))
1043 else if (chem_params%gamma_method == 2) then
1044 ! gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
1045 gamm_l = cp_l/cv_l
1046 gamma_l = 1.0_wp/(gamm_l - 1.0_wp)
1047 gamm_r = cp_r/cv_r
1048 gamma_r = 1.0_wp/(gamm_r - 1.0_wp)
1049 end if
1050
1051 e_l = rho_l*e_l + 5.e-1*rho_l*vel_l_rms
1052 e_r = rho_r*e_r + 5.e-1*rho_r*vel_r_rms
1053 else
1054 call s_compute_energy(pres_l, alpha_rho_l, alpha_l, vel_l_rms, e_l)
1055 call s_compute_energy(pres_r, alpha_rho_r, alpha_r, vel_r_rms, e_r)
1056 end if
1057
1058 call s_compute_speed_of_sound(pres_l, rho_l, gamma_l, pi_inf_l, alpha_l, c_l, alpha_rho_l)
1059
1060 call s_compute_speed_of_sound(pres_r, rho_r, gamma_r, pi_inf_r, alpha_r, c_r, alpha_rho_r)
1061
1062 s_l = 0._wp; s_r = 0._wp
1063
1064
1065# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1066#if defined(MFC_OpenACC)
1067# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1068!$acc loop seq
1069# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1070#elif defined(MFC_OpenMP)
1071# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1072
1073# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1074#endif
1075# 211 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1076 do i = 1, num_dims
1077 s_l = s_l + vel_l(i)**2._wp
1078 s_r = s_r + vel_r(i)**2._wp
1079 end do
1080
1081 s_l = sqrt(s_l)
1082 s_r = sqrt(s_r)
1083
1084 s_p = max(s_l, s_r) + max(c_l, c_r)
1085 s_m = -s_p
1086
1087 s_l = s_m
1088 s_r = s_p
1089
1090 ! Low Mach correction
1091 pcorr = f_low_mach_pcorr_hll(vel_l_rms, vel_r_rms, c_l, c_r, rho_l, rho_r, s_m, s_p)
1092
1093 ! Mass
1094
1095# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1096#if defined(MFC_OpenACC)
1097# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1098!$acc loop seq
1099# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1100#elif defined(MFC_OpenMP)
1101# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1102
1103# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1104#endif
1105# 230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1106 do i = 1, eqn_idx%cont%end
1107 flux_rsx_vf(j, k, l, &
1108# 232 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1109 & i) = (s_m*alpha_rho_r(i)*vel_r(norm_dir) - s_p*alpha_rho_l(i)*vel_l(norm_dir) &
1110 & + s_m*s_p*(alpha_rho_l(i) - alpha_rho_r(i)))/(s_m - s_p)
1111 end do
1112
1113 ! Momentum
1114 if (bubbles_euler) then
1115
1116# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1117#if defined(MFC_OpenACC)
1118# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1119!$acc loop seq
1120# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1121#elif defined(MFC_OpenMP)
1122# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1123
1124# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1125#endif
1126# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1127 do i = 1, num_vels
1128 flux_rsx_vf(j, k, l, &
1129# 241 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1130 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1131 & + dir_flg(dir_idx(i))*(pres_r - ptilde_r)) - s_p*(rho_l*vel_l(dir_idx(1)) &
1132 & *vel_l(dir_idx(i)) + dir_flg(dir_idx(i))*(pres_l - ptilde_l)) &
1133 & + s_m*s_p*(rho_l*vel_l(dir_idx(i)) - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) &
1134 & + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1135 end do
1136 else
1137
1138# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1139#if defined(MFC_OpenACC)
1140# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1141!$acc loop seq
1142# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1143#elif defined(MFC_OpenMP)
1144# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1145
1146# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1147#endif
1148# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1149 do i = 1, num_vels
1150 flux_rsx_vf(j, k, l, &
1151# 251 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1152 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1153 & + dir_flg(dir_idx(i))*pres_r) - s_p*(rho_l*vel_l(dir_idx(1))*vel_l(dir_idx(i)) &
1154 & + dir_flg(dir_idx(i))*pres_l) + s_m*s_p*(rho_l*vel_l(dir_idx(i)) &
1155 & - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
1156 & *pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1157 end do
1158 end if
1159
1160 ! Energy
1161 if (bubbles_euler) then
1162 flux_rsx_vf(j, k, l, &
1163# 262 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1164 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r - ptilde_r) - s_p*vel_l(dir_idx(1) &
1165 & )*(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) &
1166 & *pcorr*(vel_r_rms - vel_l_rms)/2._wp
1167 else
1168 flux_rsx_vf(j, k, l, &
1169# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1170 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r) - s_p*vel_l(dir_idx(1))*(e_l &
1171 & + 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 &
1172 & - vel_l_rms)/2._wp
1173 end if
1174
1175 ! Advection flux and source: interface velocity for volume fraction transport
1176
1177# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1178#if defined(MFC_OpenACC)
1179# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1180!$acc loop seq
1181# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1182#elif defined(MFC_OpenMP)
1183# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1184
1185# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1186#endif
1187# 274 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1188 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1189 flux_rsx_vf(j, k, l, i) = (s_m*qr_prim_rsx_vf(j, k + 1, l, &
1190# 276 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1191 & i)*vel_r(norm_dir) - s_p*ql_prim_rsx_vf(j, k, l, &
1192# 277 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1193 & i)*vel_l(norm_dir) + s_m*s_p*(ql_prim_rsx_vf(j, k, l, &
1194# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1195 & i) - qr_prim_rsx_vf(j, k + 1, l, i)))/(s_m - s_p)
1196# 279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1197 end do
1198 flux_src_rsx_vf(j, k, l, eqn_idx%adv%beg) = (s_m*vel_r(norm_dir) - s_p*vel_l(norm_dir))/(s_m - s_p)
1199# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1200
1201 if (bubbles_euler) then
1202 ! From HLLC: Kills mass transport @ bubble gas density
1203 if (num_fluids > 1) then
1204 flux_rsx_vf(j, k, l, eqn_idx%cont%end) = 0._wp
1205# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1206 end if
1207 end if
1208
1209 if (chemistry) then
1210
1211# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1212#if defined(MFC_OpenACC)
1213# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1214!$acc loop seq
1215# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1216#elif defined(MFC_OpenMP)
1217# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1218
1219# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1220#endif
1221# 291 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1222 do i = eqn_idx%species%beg, eqn_idx%species%end
1223 y_l = ql_prim_rsx_vf(j, k, l, i)
1224# 293 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1225 y_r = qr_prim_rsx_vf(j, k + 1, l, i)
1226# 294 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1227
1228 flux_rsx_vf(j, k, l, &
1229# 296 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1230 & i) = (s_m*y_r*rho_r*vel_r(dir_idx(1)) - s_p*y_l*rho_l*vel_l(dir_idx(1)) &
1231 & + s_m*s_p*(y_l*rho_l - y_r*rho_r))/(s_m - s_p)
1232 flux_src_rsx_vf(j, k, l, i) = 0._wp
1233# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1234 end do
1235 end if
1236
1237# 303 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1238 if (cyl_coord) then
1239 ! Substituting the advective flux into the inviscid geometrical source flux
1240
1241# 305 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1242#if defined(MFC_OpenACC)
1243# 305 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1244!$acc loop seq
1245# 305 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1246#elif defined(MFC_OpenMP)
1247# 305 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1248
1249# 305 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1250#endif
1251# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1252 do i = 1, eqn_idx%E
1253 flux_gsrc_rsx_vf(j, k, l, i) = flux_rsx_vf(j, k, l, i)
1254# 308 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1255 end do
1256 ! Recalculating the radial momentum geometric source flux
1257 flux_gsrc_rsx_vf(j, k, l, eqn_idx%cont%end + 2) = flux_rsx_vf(j, k, l, &
1258# 311 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1259 & eqn_idx%cont%end + 2) - (s_m*pres_r - s_p*pres_l)/(s_m - s_p)
1260 ! Geometrical source of the void fraction(s) is zero
1261
1262# 313 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1263#if defined(MFC_OpenACC)
1264# 313 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1265!$acc loop seq
1266# 313 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1267#elif defined(MFC_OpenMP)
1268# 313 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1269
1270# 313 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1271#endif
1272# 314 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1273 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1274 flux_gsrc_rsx_vf(j, k, l, i) = 0._wp
1275# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1276 end do
1277 end if
1278# 319 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1279# 330 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1280 end do
1281 end do
1282 end do
1283
1284# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1285#if defined(MFC_OpenACC)
1286# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1287!$acc end parallel loop
1288# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1289#elif defined(MFC_OpenMP)
1290# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1291
1292# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1293!$omp end target teams loop
1294# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1295#endif
1296# 334 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1297 end if
1298# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1299# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1300# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1301 if (norm_dir == 3) then
1302# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1303
1304# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1305
1306# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1307#if defined(MFC_OpenACC)
1308# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1309!$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, &
1310# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1311!$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, &
1312# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1313!$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)
1314# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1315#elif defined(MFC_OpenMP)
1316# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1317
1318# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1319
1320# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1321
1322# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1323!$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, &
1324# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1325!$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, &
1326# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1327!$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, &
1328# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1329!$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)
1330# 91 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1331#endif
1332# 97 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1333 do l = is1%beg, is1%end
1334# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1335 do k = is2%beg, is2%end
1336# 99 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1337 do j = is3%beg, is3%end
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#if defined(MFC_OpenACC)
1342# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1343!$acc loop seq
1344# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1345#elif defined(MFC_OpenMP)
1346# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1347
1348# 100 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1349#endif
1350# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1351 do i = 1, eqn_idx%cont%end
1352 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
1353# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1354 alpha_rho_r(i) = qr_prim_rsx_vf(j, k, l + 1, i)
1355# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1356 end do
1357
1358 vel_l_rms = 0._wp; vel_r_rms = 0._wp
1359
1360
1361# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1362#if defined(MFC_OpenACC)
1363# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1364!$acc loop seq
1365# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1366#elif defined(MFC_OpenMP)
1367# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1368
1369# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1370#endif
1371# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1372 do i = 1, num_vels
1373 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end + i)
1374# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1375 vel_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%cont%end + i)
1376# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1377 vel_l_rms = vel_l_rms + vel_l(i)**2._wp
1378 vel_r_rms = vel_r_rms + vel_r(i)**2._wp
1379 end do
1380
1381
1382# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1383#if defined(MFC_OpenACC)
1384# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1385!$acc loop seq
1386# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1387#elif defined(MFC_OpenMP)
1388# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1389
1390# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1391#endif
1392# 117 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1393 do i = 1, num_fluids
1394 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1395# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1396 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
1397# 120 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1398 end do
1399
1400 pres_l = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
1401# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1402 pres_r = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E)
1403# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1404
1405 rho_l = 0._wp
1406 gamma_l = 0._wp
1407 pi_inf_l = 0._wp
1408 qv_l = 0._wp
1409
1410 rho_r = 0._wp
1411 gamma_r = 0._wp
1412 pi_inf_r = 0._wp
1413 qv_r = 0._wp
1414
1415 alpha_l_sum = 0._wp
1416 alpha_r_sum = 0._wp
1417
1418 if (mpp_lim) then
1419
1420# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1421#if defined(MFC_OpenACC)
1422# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1423!$acc loop seq
1424# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1425#elif defined(MFC_OpenMP)
1426# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1427
1428# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1429#endif
1430# 140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1431 do i = 1, num_fluids
1432 alpha_rho_l(i) = max(0._wp, alpha_rho_l(i))
1433 alpha_l(i) = min(max(0._wp, alpha_l(i)), 1._wp)
1434 alpha_l_sum = alpha_l_sum + alpha_l(i)
1435 alpha_rho_r(i) = max(0._wp, alpha_rho_r(i))
1436 alpha_r(i) = min(max(0._wp, alpha_r(i)), 1._wp)
1437 alpha_r_sum = alpha_r_sum + alpha_r(i)
1438 end do
1439
1440 alpha_l = alpha_l/max(alpha_l_sum, sgm_eps)
1441 alpha_r = alpha_r/max(alpha_r_sum, sgm_eps)
1442 end if
1443
1444 call s_compute_mixture_coefficients(alpha_rho_l, alpha_l, rho_l, gamma_l, pi_inf_l, qv_l)
1445 call s_compute_mixture_coefficients(alpha_rho_r, alpha_r, rho_r, gamma_r, pi_inf_r, qv_r)
1446
1447 if (viscous) then
1448 call s_compute_interface_reynolds(alpha_l, re_l, re_size_loc1, re_size_loc2)
1449 call s_compute_interface_reynolds(alpha_r, re_r, re_size_loc1, re_size_loc2)
1450 end if
1451
1452 if (chemistry) then
1453
1454# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1455#if defined(MFC_OpenACC)
1456# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1457!$acc loop seq
1458# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1459#elif defined(MFC_OpenMP)
1460# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1461
1462# 162 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1463#endif
1464# 163 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1465 do i = eqn_idx%species%beg, eqn_idx%species%end
1466 ys_l(i - eqn_idx%species%beg + 1) = ql_prim_rsx_vf(j, k, l, i)
1467# 165 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1468 ys_r(i - eqn_idx%species%beg + 1) = qr_prim_rsx_vf(j, k, l + 1, i)
1469# 166 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1470 end do
1471
1472 call get_mixture_molecular_weight(ys_l, mw_l)
1473 call get_mixture_molecular_weight(ys_r, mw_r)
1474
1475 xs_l(1:num_species) = ys_l(1:num_species)*mw_l/molecular_weights(:)
1476 xs_r(1:num_species) = ys_r(1:num_species)*mw_r/molecular_weights(:)
1477
1478 r_gas_l = gas_constant/mw_l
1479 r_gas_r = gas_constant/mw_r
1480 t_l = pres_l/rho_l/r_gas_l
1481 t_r = pres_r/rho_r/r_gas_r
1482
1483 call get_mixture_caloric_state(t_l, ys_l, cp_il, cp_l, cv_l, e_l)
1484 call get_mixture_caloric_state(t_r, ys_r, cp_ir, cp_r, cv_r, e_r)
1485
1486 if (chem_params%gamma_method == 1) then
1487 ! gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
1488 gamma_il(1:num_species) = cp_il(1:num_species)/(cp_il(1:num_species) - 1.0_wp)
1489 gamma_ir(1:num_species) = cp_ir(1:num_species)/(cp_ir(1:num_species) - 1.0_wp)
1490
1491 gamma_l = sum(xs_l(1:num_species)/(gamma_il(1:num_species) - 1.0_wp))
1492 gamma_r = sum(xs_r(1:num_species)/(gamma_ir(1:num_species) - 1.0_wp))
1493 else if (chem_params%gamma_method == 2) then
1494 ! gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
1495 gamm_l = cp_l/cv_l
1496 gamma_l = 1.0_wp/(gamm_l - 1.0_wp)
1497 gamm_r = cp_r/cv_r
1498 gamma_r = 1.0_wp/(gamm_r - 1.0_wp)
1499 end if
1500
1501 e_l = rho_l*e_l + 5.e-1*rho_l*vel_l_rms
1502 e_r = rho_r*e_r + 5.e-1*rho_r*vel_r_rms
1503 else
1504 call s_compute_energy(pres_l, alpha_rho_l, alpha_l, vel_l_rms, e_l)
1505 call s_compute_energy(pres_r, alpha_rho_r, alpha_r, vel_r_rms, e_r)
1506 end if
1507
1508 call s_compute_speed_of_sound(pres_l, rho_l, gamma_l, pi_inf_l, alpha_l, c_l, alpha_rho_l)
1509
1510 call s_compute_speed_of_sound(pres_r, rho_r, gamma_r, pi_inf_r, alpha_r, c_r, alpha_rho_r)
1511
1512 s_l = 0._wp; s_r = 0._wp
1513
1514
1515# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1516#if defined(MFC_OpenACC)
1517# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1518!$acc loop seq
1519# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1520#elif defined(MFC_OpenMP)
1521# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1522
1523# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1524#endif
1525# 211 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1526 do i = 1, num_dims
1527 s_l = s_l + vel_l(i)**2._wp
1528 s_r = s_r + vel_r(i)**2._wp
1529 end do
1530
1531 s_l = sqrt(s_l)
1532 s_r = sqrt(s_r)
1533
1534 s_p = max(s_l, s_r) + max(c_l, c_r)
1535 s_m = -s_p
1536
1537 s_l = s_m
1538 s_r = s_p
1539
1540 ! Low Mach correction
1541 pcorr = f_low_mach_pcorr_hll(vel_l_rms, vel_r_rms, c_l, c_r, rho_l, rho_r, s_m, s_p)
1542
1543 ! Mass
1544
1545# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1546#if defined(MFC_OpenACC)
1547# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1548!$acc loop seq
1549# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1550#elif defined(MFC_OpenMP)
1551# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1552
1553# 229 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1554#endif
1555# 230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1556 do i = 1, eqn_idx%cont%end
1557 flux_rsx_vf(j, k, l, &
1558# 232 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1559 & i) = (s_m*alpha_rho_r(i)*vel_r(norm_dir) - s_p*alpha_rho_l(i)*vel_l(norm_dir) &
1560 & + s_m*s_p*(alpha_rho_l(i) - alpha_rho_r(i)))/(s_m - s_p)
1561 end do
1562
1563 ! Momentum
1564 if (bubbles_euler) then
1565
1566# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1567#if defined(MFC_OpenACC)
1568# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1569!$acc loop seq
1570# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1571#elif defined(MFC_OpenMP)
1572# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1573
1574# 238 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1575#endif
1576# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1577 do i = 1, num_vels
1578 flux_rsx_vf(j, k, l, &
1579# 241 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1580 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1581 & + dir_flg(dir_idx(i))*(pres_r - ptilde_r)) - s_p*(rho_l*vel_l(dir_idx(1)) &
1582 & *vel_l(dir_idx(i)) + dir_flg(dir_idx(i))*(pres_l - ptilde_l)) &
1583 & + s_m*s_p*(rho_l*vel_l(dir_idx(i)) - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) &
1584 & + (s_m/s_l)*(s_p/s_r)*pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1585 end do
1586 else
1587
1588# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1589#if defined(MFC_OpenACC)
1590# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1591!$acc loop seq
1592# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1593#elif defined(MFC_OpenMP)
1594# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1595
1596# 248 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1597#endif
1598# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1599 do i = 1, num_vels
1600 flux_rsx_vf(j, k, l, &
1601# 251 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1602 & eqn_idx%cont%end + dir_idx(i)) = (s_m*(rho_r*vel_r(dir_idx(1))*vel_r(dir_idx(i)) &
1603 & + dir_flg(dir_idx(i))*pres_r) - s_p*(rho_l*vel_l(dir_idx(1))*vel_l(dir_idx(i)) &
1604 & + dir_flg(dir_idx(i))*pres_l) + s_m*s_p*(rho_l*vel_l(dir_idx(i)) &
1605 & - rho_r*vel_r(dir_idx(i))))/(s_m - s_p) + (s_m/s_l)*(s_p/s_r) &
1606 & *pcorr*(vel_r(dir_idx(i)) - vel_l(dir_idx(i)))
1607 end do
1608 end if
1609
1610 ! Energy
1611 if (bubbles_euler) then
1612 flux_rsx_vf(j, k, l, &
1613# 262 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1614 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r - ptilde_r) - s_p*vel_l(dir_idx(1) &
1615 & )*(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) &
1616 & *pcorr*(vel_r_rms - vel_l_rms)/2._wp
1617 else
1618 flux_rsx_vf(j, k, l, &
1619# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1620 & eqn_idx%E) = (s_m*vel_r(dir_idx(1))*(e_r + pres_r) - s_p*vel_l(dir_idx(1))*(e_l &
1621 & + 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 &
1622 & - vel_l_rms)/2._wp
1623 end if
1624
1625 ! Advection flux and source: interface velocity for volume fraction transport
1626
1627# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1628#if defined(MFC_OpenACC)
1629# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1630!$acc loop seq
1631# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1632#elif defined(MFC_OpenMP)
1633# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1634
1635# 273 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1636#endif
1637# 274 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1638 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1639 flux_rsx_vf(j, k, l, i) = (s_m*qr_prim_rsx_vf(j, k, l + 1, &
1640# 276 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1641 & i)*vel_r(norm_dir) - s_p*ql_prim_rsx_vf(j, k, l, &
1642# 277 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1643 & i)*vel_l(norm_dir) + s_m*s_p*(ql_prim_rsx_vf(j, k, l, &
1644# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1645 & i) - qr_prim_rsx_vf(j, k, l + 1, i)))/(s_m - s_p)
1646# 279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1647 end do
1648 flux_src_rsx_vf(j, k, l, eqn_idx%adv%beg) = (s_m*vel_r(norm_dir) - s_p*vel_l(norm_dir))/(s_m - s_p)
1649# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1650
1651 if (bubbles_euler) then
1652 ! From HLLC: Kills mass transport @ bubble gas density
1653 if (num_fluids > 1) then
1654 flux_rsx_vf(j, k, l, eqn_idx%cont%end) = 0._wp
1655# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1656 end if
1657 end if
1658
1659 if (chemistry) then
1660
1661# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1662#if defined(MFC_OpenACC)
1663# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1664!$acc loop seq
1665# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1666#elif defined(MFC_OpenMP)
1667# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1668
1669# 290 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1670#endif
1671# 291 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1672 do i = eqn_idx%species%beg, eqn_idx%species%end
1673 y_l = ql_prim_rsx_vf(j, k, l, i)
1674# 293 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1675 y_r = qr_prim_rsx_vf(j, k, l + 1, i)
1676# 294 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1677
1678 flux_rsx_vf(j, k, l, &
1679# 296 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1680 & i) = (s_m*y_r*rho_r*vel_r(dir_idx(1)) - s_p*y_l*rho_l*vel_l(dir_idx(1)) &
1681 & + s_m*s_p*(y_l*rho_l - y_r*rho_r))/(s_m - s_p)
1682 flux_src_rsx_vf(j, k, l, i) = 0._wp
1683# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1684 end do
1685 end if
1686
1687# 319 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1688# 320 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1689 if (grid_geometry == 3) then
1690
1691# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1692#if defined(MFC_OpenACC)
1693# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1694!$acc loop seq
1695# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1696#elif defined(MFC_OpenMP)
1697# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1698
1699# 321 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1700#endif
1701# 322 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1702 do i = 1, sys_size
1703 flux_gsrc_rsx_vf(j, k, l, i) = 0._wp
1704# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1705 end do
1706 flux_gsrc_rsx_vf(j, k, l, eqn_idx%mom%beg + 1) = -flux_rsx_vf(j, k, l, &
1707# 326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1708 & eqn_idx%mom%end) + (s_m*pres_r - s_p*pres_l)/(s_m - s_p)
1709 flux_gsrc_rsx_vf(j, k, l, eqn_idx%mom%end) = flux_rsx_vf(j, k, l, eqn_idx%mom%beg + 1)
1710# 328 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1711 end if
1712# 330 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1713 end do
1714 end do
1715 end do
1716
1717# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1718#if defined(MFC_OpenACC)
1719# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1720!$acc end parallel loop
1721# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1722#elif defined(MFC_OpenMP)
1723# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1724
1725# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1726!$omp end target teams loop
1727# 333 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1728#endif
1729# 334 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1730 end if
1731# 336 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1732
1733 if (viscous) then
1734
1735# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1736
1737# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1738#if defined(MFC_OpenACC)
1739# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1740!$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) &
1741# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1742!$acc& firstprivate(Re_size_loc1, Re_size_loc2) copyin(norm_dir)
1743# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1744#elif defined(MFC_OpenMP)
1745# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1746
1747# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1748
1749# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1750
1751# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1752!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1753# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1754!$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)
1755# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1756#endif
1757# 340 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1758 do l = isz%beg, isz%end
1759 do k = isy%beg, isy%end
1760 do j = isx%beg, isx%end
1761 idx_right_phys(1) = j
1762 idx_right_phys(2) = k
1763 idx_right_phys(3) = l
1764 idx_right_phys(norm_dir) = idx_right_phys(norm_dir) + 1
1765
1766 if (norm_dir == 1) then
1767
1768# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1769#if defined(MFC_OpenACC)
1770# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1771!$acc loop seq
1772# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1773#elif defined(MFC_OpenMP)
1774# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1775
1776# 349 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1777#endif
1778# 350 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1779 do i = 1, num_fluids
1780 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1781 alpha_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E + i)
1782 end do
1783
1784
1785# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1786#if defined(MFC_OpenACC)
1787# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1788!$acc loop seq
1789# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1790#elif defined(MFC_OpenMP)
1791# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1792
1793# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1794#endif
1795# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1796 do i = 1, num_dims
1797 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%mom%beg + i - 1)
1798 vel_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%mom%beg + i - 1)
1799 end do
1800 else if (norm_dir == 2) then
1801
1802# 361 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1803#if defined(MFC_OpenACC)
1804# 361 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1805!$acc loop seq
1806# 361 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1807#elif defined(MFC_OpenMP)
1808# 361 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1809
1810# 361 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1811#endif
1812# 362 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1813 do i = 1, num_fluids
1814 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1815 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
1816 end do
1817
1818# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1819#if defined(MFC_OpenACC)
1820# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1821!$acc loop seq
1822# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1823#elif defined(MFC_OpenMP)
1824# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1825
1826# 366 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1827#endif
1828# 367 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1829 do i = 1, num_dims
1830 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%mom%beg + i - 1)
1831 vel_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%mom%beg + i - 1)
1832 end do
1833 else
1834
1835# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1836#if defined(MFC_OpenACC)
1837# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1838!$acc loop seq
1839# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1840#elif defined(MFC_OpenMP)
1841# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1842
1843# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1844#endif
1845# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1846 do i = 1, num_fluids
1847 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
1848 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
1849 end do
1850
1851
1852# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1853#if defined(MFC_OpenACC)
1854# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1855!$acc loop seq
1856# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1857#elif defined(MFC_OpenMP)
1858# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1859
1860# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1861#endif
1862# 379 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1863 do i = 1, num_dims
1864 vel_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%mom%beg + i - 1)
1865 vel_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%mom%beg + i - 1)
1866 end do
1867 end if
1868
1869 call s_compute_interface_reynolds(alpha_l, re_l, re_size_loc1, re_size_loc2)
1870 call s_compute_interface_reynolds(alpha_r, re_r, re_size_loc1, re_size_loc2)
1871
1872 if (shear_stress) then
1873
1874# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1875#if defined(MFC_OpenACC)
1876# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1877!$acc loop seq
1878# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1879#elif defined(MFC_OpenMP)
1880# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1881
1882# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1883#endif
1884# 390 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1885 do i = 1, num_dims
1886 vel_grad_l(i, 1) = (dql_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(1))
1887 vel_grad_r(i, 1) = (dqr_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1888 & idx_right_phys(2), idx_right_phys(3))/re_r(1))
1889# 395 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1890 if (num_dims > 1) then
1891 vel_grad_l(i, 2) = (dql_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(1))
1892 vel_grad_r(i, 2) = (dqr_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1893 & idx_right_phys(2), idx_right_phys(3))/re_r(1))
1894 end if
1895# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1896 if (num_dims > 2) then
1897 vel_grad_l(i, 3) = (dql_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(1))
1898 vel_grad_r(i, 3) = (dqr_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
1899 & idx_right_phys(2), idx_right_phys(3))/re_r(1))
1900 end if
1901# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1902# 408 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1903 end do
1904
1905 if (norm_dir == 1) then
1906 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1907 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
1908 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1909 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1)*vel_l(1) + vel_grad_r(1, 1)*vel_r(1))
1910# 416 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1911 if (num_dims > 1) then
1912 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1913 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
1914 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1915 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2)*vel_l(1) + vel_grad_r(2, &
1916 & 2)*vel_r(1))
1917
1918 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
1919 & l) - 0.5_wp*(vel_grad_l(1, 2) + vel_grad_r(1, 2)) - 0.5_wp*(vel_grad_l(2, &
1920 & 1) + vel_grad_r(2, 1))
1921 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1922 & l) - 0.5_wp*(vel_grad_l(1, 2)*vel_l(2) + vel_grad_r(1, &
1923 & 2)*vel_r(2)) - 0.5_wp*(vel_grad_l(2, 1)*vel_l(2) + vel_grad_r(2, 1)*vel_r(2))
1924# 430 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1925 if (num_dims > 2) then
1926 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1927 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
1928 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1929 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, &
1930 & 3)*vel_l(1) + vel_grad_r(3, 3)*vel_r(1))
1931
1932 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1933 & l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1934 & l) - 0.5_wp*(vel_grad_l(1, 3) + vel_grad_r(1, &
1935 & 3)) - 0.5_wp*(vel_grad_l(3, 1) + vel_grad_r(3, 1))
1936 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1937 & l) - 0.5_wp*(vel_grad_l(1, 3)*vel_l(3) + vel_grad_r(1, &
1938 & 3)*vel_r(3)) - 0.5_wp*(vel_grad_l(3, 1)*vel_l(3) + vel_grad_r(3, &
1939 & 1)*vel_r(3))
1940 end if
1941# 447 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1942 end if
1943# 449 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1944 else if (norm_dir == 2) then
1945# 451 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1946 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%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(2) + vel_grad_r(1, 1)*vel_r(2))
1950
1951 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
1952 & l) - (4._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) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2)*vel_l(2) + vel_grad_r(2, 2)*vel_r(2))
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, 2) + vel_grad_r(1, 2)) - 0.5_wp*(vel_grad_l(2, &
1958 & 1) + vel_grad_r(2, 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, 2)*vel_l(1) + vel_grad_r(1, &
1961 & 2)*vel_r(1)) - 0.5_wp*(vel_grad_l(2, 1)*vel_l(1) + vel_grad_r(2, 1)*vel_r(1))
1962# 468 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1963 if (num_dims > 2) then
1964 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, &
1965 & k, l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
1966 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1967 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3)*vel_l(2) + vel_grad_r(3, &
1968 & 3)*vel_r(2))
1969
1970 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, &
1971 & k, l) - 0.5_wp*(vel_grad_l(2, 3) + vel_grad_r(2, &
1972 & 3)) - 0.5_wp*(vel_grad_l(3, 2) + vel_grad_r(3, 2))
1973 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1974 & l) - 0.5_wp*(vel_grad_l(2, 3)*vel_l(3) + vel_grad_r(2, &
1975 & 3)*vel_r(3)) - 0.5_wp*(vel_grad_l(3, 2)*vel_l(3) + vel_grad_r(3, &
1976 & 2)*vel_r(3))
1977 end if
1978# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1979# 485 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1980 else
1981# 487 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
1982 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1983 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
1984 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1985 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(1, 1)*vel_l(3) + vel_grad_r(1, 1)*vel_r(3))
1986
1987 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
1988 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
1989 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1990 & l) - (-2._wp/3._wp)*0.5_wp*(vel_grad_l(2, 2)*vel_l(3) + vel_grad_r(2, 2)*vel_r(3))
1991
1992 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
1993 & l) - 0.5_wp*(vel_grad_l(1, 3) + vel_grad_r(1, 3)) - 0.5_wp*(vel_grad_l(3, &
1994 & 1) + vel_grad_r(3, 1))
1995 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1996 & l) - 0.5_wp*(vel_grad_l(1, 3)*vel_l(1) + vel_grad_r(1, &
1997 & 3)*vel_r(1)) - 0.5_wp*(vel_grad_l(3, 1)*vel_l(1) + vel_grad_r(3, 1)*vel_r(1))
1998
1999 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
2000 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
2001 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2002 & l) - (4._wp/3._wp)*0.5_wp*(vel_grad_l(3, 3)*vel_l(3) + vel_grad_r(3, 3)*vel_r(3))
2003
2004 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
2005 & l) - 0.5_wp*(vel_grad_l(2, 3) + vel_grad_r(2, 3)) - 0.5_wp*(vel_grad_l(3, &
2006 & 2) + vel_grad_r(3, 2))
2007 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2008 & l) - 0.5_wp*(vel_grad_l(2, 3)*vel_l(2) + vel_grad_r(2, &
2009 & 3)*vel_r(2)) - 0.5_wp*(vel_grad_l(3, 2)*vel_l(2) + vel_grad_r(3, 2)*vel_r(2))
2010# 516 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2011 end if
2012 end if
2013
2014 if (bulk_stress) then
2015
2016# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2017#if defined(MFC_OpenACC)
2018# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2019!$acc loop seq
2020# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2021#elif defined(MFC_OpenMP)
2022# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2023
2024# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2025#endif
2026# 521 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2027 do i = 1, num_dims
2028 vel_grad_l(i, 1) = (dql_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(2))
2029 vel_grad_r(i, 1) = (dqr_prim_dx_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
2030 & idx_right_phys(2), idx_right_phys(3))/re_r(2))
2031# 526 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2032 if (num_dims > 1) then
2033 vel_grad_l(i, 2) = (dql_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(2))
2034 vel_grad_r(i, 2) = (dqr_prim_dy_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
2035 & idx_right_phys(2), idx_right_phys(3))/re_r(2))
2036 end if
2037# 532 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2038# 533 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2039 if (num_dims > 2) then
2040 vel_grad_l(i, 3) = (dql_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l)/re_l(2))
2041 vel_grad_r(i, 3) = (dqr_prim_dz_vf(eqn_idx%mom%beg + i - 1)%sf(idx_right_phys(1), &
2042 & idx_right_phys(2), idx_right_phys(3))/re_r(2))
2043 end if
2044# 539 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2045 end do
2046
2047 if (norm_dir == 1) then
2048 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
2049 & l) - 0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
2050 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, &
2051 & 1)*vel_l(1) + vel_grad_r(1, 1)*vel_r(1))
2052# 547 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2053 if (num_dims > 1) then
2054 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
2055 & l) - 0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
2056 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2057 & l) - 0.5_wp*(vel_grad_l(2, 2)*vel_l(1) + vel_grad_r(2, 2)*vel_r(1))
2058
2059# 554 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2060 if (num_dims > 2) then
2061 flux_src_vf(eqn_idx%mom%beg)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg)%sf(j, k, &
2062 & l) - 0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
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(3, 3)*vel_l(1) + vel_grad_r(3, 3)*vel_r(1))
2065 end if
2066# 561 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2067 end if
2068# 563 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2069 else if (norm_dir == 2) then
2070# 565 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2071 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
2072 & l) - 0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
2073 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2074 & l) - 0.5_wp*(vel_grad_l(1, 1)*vel_l(2) + vel_grad_r(1, 1)*vel_r(2))
2075
2076 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, &
2077 & l) - 0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
2078 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2079 & l) - 0.5_wp*(vel_grad_l(2, 2)*vel_l(2) + vel_grad_r(2, 2)*vel_r(2))
2080
2081# 576 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2082 if (num_dims > 2) then
2083 flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 1)%sf(j, &
2084 & k, l) - 0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
2085 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2086 & l) - 0.5_wp*(vel_grad_l(3, 3)*vel_l(2) + vel_grad_r(3, 3)*vel_r(2))
2087 end if
2088# 583 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2089# 584 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2090 else
2091# 586 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2092 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
2093 & l) - 0.5_wp*(vel_grad_l(1, 1) + vel_grad_r(1, 1))
2094 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2095 & l) - 0.5_wp*(vel_grad_l(1, 1)*vel_l(3) + vel_grad_r(1, 1)*vel_r(3))
2096
2097 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
2098 & l) - 0.5_wp*(vel_grad_l(2, 2) + vel_grad_r(2, 2))
2099 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2100 & l) - 0.5_wp*(vel_grad_l(2, 2)*vel_l(3) + vel_grad_r(2, 2)*vel_r(3))
2101
2102 flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + 2)%sf(j, k, &
2103 & l) - 0.5_wp*(vel_grad_l(3, 3) + vel_grad_r(3, 3))
2104 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2105 & l) - 0.5_wp*(vel_grad_l(3, 3)*vel_l(3) + vel_grad_r(3, 3)*vel_r(3))
2106# 601 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2107 end if
2108 end if
2109 end do
2110 end do
2111 end do
2112
2113# 606 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2114#if defined(MFC_OpenACC)
2115# 606 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2116!$acc end parallel loop
2117# 606 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2118#elif defined(MFC_OpenMP)
2119# 606 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2120
2121# 606 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2122!$omp end target teams loop
2123# 606 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2124#endif
2125# 607 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_lf.fpp"
2126 end if
2127
2128 call s_finalize_riemann_solver(flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir)
2129
2130 end subroutine s_lf_riemann_solver
2131
2132end 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).