MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_riemann_solvers.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
2!>
3!! @file
4!! @brief Contains module m_riemann_solvers
5
6!> @brief Approximate and exact Riemann solvers (HLL, HLLC, HLLD, exact) for the multicomponent Navier--Stokes equations
7
8# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
9! This file exists so that Fypp can be run without generating case.fpp files for
10! each target. This is useful when generating documentation, for example. This
11! should also let MFC be built with CMake directly, without invoking mfc.sh.
12
13! For pre-process.
14# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15
16! For moving immersed boundaries in simulation
17# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
18# 8 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp" 2
19# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
20# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
21# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
22# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27
28# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
34! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
35! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
36# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
37# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
38# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
39
40# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42
43# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44
45# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46
47# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48
49# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50
51# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52
53# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54
55# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56
57# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58! New line at end of file is required for FYPP
59# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
60# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
61# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
62# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67
68# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
71
72# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
73# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
74! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
75! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
76# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
77# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
78# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
79
80# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
81# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82
83# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
84
85# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
86
87# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
88
89# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
90
91# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
92
93# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
94
95# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
96
97# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
98! New line at end of file is required for FYPP
99# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
100
101# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138
139# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140
141# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142
143# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144
145# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146
147# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148
149# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150
151# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153
154# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155
156# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157
158# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159
160# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161
162# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
163
164# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
165
166# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
167
168# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
169
170# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
171
172# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
173
174# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
175
176# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
177! New line at end of file is required for FYPP
178# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
179# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
180# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
181# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
183# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
185# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186
187# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
189# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190
191# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
192# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
193! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
194! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
195# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
196# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
197# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
198
199# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
200# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
201
202# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
203
204# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
205
206# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
207
208# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
209
210# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
211
212# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
213
214# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
215
216# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
217! New line at end of file is required for FYPP
218# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
219
220# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221
222# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223
224# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225
226# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227
228# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229
230# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231
232# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233
234# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
235
236# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
237
238# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
239
240# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
241
242# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
243
244# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
245
246# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
247
248# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
249
250# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
251
252# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
253
254# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
255
256# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
257
258# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
259
260# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
261
262# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
263
264# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
265
266# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
267
268# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
269
270# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
271
272# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
273
274# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
275! New line at end of file is required for FYPP
276# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
277
278! GPU parallel region (scalar reductions, maxval/minval)
279# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280
281! GPU parallel loop over threads (most common GPU macro)
282# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283
284! Required closing for GPU_PARALLEL_LOOP
285# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286
287! Mark routine for device compilation
288# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289
290! Declare device-resident data
291# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292
293! Inner loop within a GPU parallel region
294# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295
296! Scoped GPU data region
297# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298
299! Host code with device pointers (for MPI with GPU buffers)
300# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301
302! Allocate device memory (unscoped)
303# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304
305! Free device memory
306# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
307
308! Atomic operation on device
309# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
310
311! End atomic capture block
312# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
313
314! Copy data between host and device
315# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
316
317! Synchronization barrier
318# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
319
320! Import GPU library module (openacc or omp_lib)
321# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
322
323! Emit code only for AMD compiler
324# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
325
326! Emit code for non-Cray compilers
327# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
328
329! Emit code only for Cray compiler
330# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
331
332! Emit code for non-NVIDIA compilers
333# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
334
335# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
336# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
337! New line at end of file is required for FYPP
338# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
339
340# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
341
342! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
343! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
344! example see misc/nvidia_uvm/bind.sh.
345# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
346
347! Allocate and create GPU device memory
348# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
349
350! Free GPU device memory and deallocate
351# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
352
353! Cray-specific GPU pointer setup for vector fields
354# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
355
356! Cray-specific GPU pointer setup for scalar fields
357# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
358
359! Cray-specific GPU pointer setup for acoustic source spatials
360# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
361
362# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
363
364# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
365! New line at end of file is required for FYPP
366# 9 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp" 2
367
369
378
379 implicit none
380
384
385contains
386
387 !> Dispatch to the subroutines that are utilized to compute the Riemann problem solution. For additional information please
388 !! reference: 1) s_hll_riemann_solver 2) s_hllc_riemann_solver 3) s_lf_riemann_solver 4) s_hlld_riemann_solver
389 subroutine s_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, &
390 & dqR_prim_dx_vf, dqR_prim_dy_vf, dqR_prim_dz_vf, qR_prim_vf, q_prim_vf, flux_vf, flux_src_vf, &
391 & flux_gsrc_vf, norm_dir, ix, iy, iz)
392
393 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: ql_prim_rsx_vf, qr_prim_rsx_vf
394 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
395 type(scalar_field), allocatable, dimension(:), intent(inout) :: ql_prim_vf, qr_prim_vf
396 type(scalar_field), allocatable, dimension(:), intent(inout) :: dql_prim_dx_vf, dqr_prim_dx_vf, dql_prim_dy_vf, &
397 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
398
399 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
400 integer, intent(in) :: norm_dir
401 type(int_bounds_info), intent(in) :: ix, iy, iz
402
403 ! Hypoelasticity enters the Riemann layer in THREE distinct code shapes:
404 ! 1. HLLC - inline "if (hypoelasticity)" branches inside s_hllc_riemann_solver
405 ! 2. HLL - inline "if (hypoelasticity)" branches inside s_hll_riemann_solver
406 ! 3. HLLD - a separate module (m_riemann_solver_hypo_hlld), reached by the hypo_nc_mode_dual_pass path below
407 ! HLLD needs its own path because its anchored dual pass produces BOTH the hat_L and hat_R anchored flux
408 ! sets in one fused solve, whose partial RHS are then summed in m_rhs; HLLC/HLL instead add their
409 ! non-conservative contribution within a single-pass solve. See
410 ! misc/dev_notes/Riemann_and_RHS_source_terms_explanations.md (S5.3).
411
413 ! Fused dual-pass: one call computes BOTH anchored flux sets (hat_L -> flux_vf via the regular finalize; hat_R into
414 ! flux_hatR_rs*, finalized separately via s_finalize_riemann_solver_hatR between the two RHS assemblies).
415 call s_hypo_hlld_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
416 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
417 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
418
419 return
420 end if
421
422# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
423 if (riemann_solver == 1) then
424# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
425 call s_hll_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
426# 67 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
427 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
428 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
429 end if
430# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
431 if (riemann_solver == 2) then
432# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
433 call s_hllc_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
434# 67 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
435 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
436 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
437 end if
438# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
439 if (riemann_solver == 4) then
440# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
441 call s_hlld_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
442# 67 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
443 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
444 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
445 end if
446# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
447 if (riemann_solver == 5) then
448# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
449 call s_lf_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
450# 67 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
451 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
452 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
453 end if
454# 71 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
455
456 end subroutine s_riemann_solver
457
458 !> Initialize the Riemann solvers module
460
461 ! Allocating the variables that will be utilized to formulate the left, right, and average states of the Riemann problem, as
462 ! well the Riemann problem solution
463 integer :: i, j
464
465#ifdef MFC_DEBUG
466# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
467 block
468# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
469 use iso_fortran_env, only: output_unit
470# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
471
472# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
473 print *, 'm_riemann_solvers.fpp:81: ', '@:ALLOCATE(Gs_rs(1:num_fluids))'
474# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
475
476# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
477 call flush (output_unit)
478# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
479 end block
480# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
481#endif
482# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
483 allocate (gs_rs(1:num_fluids))
484# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
485
486# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
487
488# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
489#if defined(MFC_OpenACC)
490# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
491!$acc enter data create(Gs_rs)
492# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
493#elif defined(MFC_OpenMP)
494# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
495!$omp target enter data map(always,alloc:Gs_rs)
496# 81 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
497#endif
498# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
499
500 do i = 1, num_fluids
501 gs_rs(i) = fluid_pp(i)%G
502 end do
503
504# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
505#if defined(MFC_OpenACC)
506# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
507!$acc update device(Gs_rs)
508# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
509#elif defined(MFC_OpenMP)
510# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
511!$omp target update to(Gs_rs)
512# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
513#endif
514# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
515
516 if (viscous) then
517#ifdef MFC_DEBUG
518# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
519 block
520# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
521 use iso_fortran_env, only: output_unit
522# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
523
524# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
525 print *, 'm_riemann_solvers.fpp:89: ', '@:ALLOCATE(Res_gs(1:2, 1:Re_size_max))'
526# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
527
528# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
529 call flush (output_unit)
530# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
531 end block
532# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
533#endif
534# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
535 allocate (res_gs(1:2, 1:re_size_max))
536# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
537
538# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
539
540# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
541#if defined(MFC_OpenACC)
542# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
543!$acc enter data create(Res_gs)
544# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
545#elif defined(MFC_OpenMP)
546# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
547!$omp target enter data map(always,alloc:Res_gs)
548# 89 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
549#endif
550# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
551 end if
552
553 if (viscous) then
554 do i = 1, 2
555 do j = 1, re_size(i)
556 res_gs(i, j) = fluid_pp(re_idx(i, j))%Re(i)
557 end do
558 end do
559
560# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
561#if defined(MFC_OpenACC)
562# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
563!$acc update device(Res_gs, Re_idx, Re_size)
564# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
565#elif defined(MFC_OpenMP)
566# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
567!$omp target update to(Res_gs, Re_idx, Re_size)
568# 98 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
569#endif
570# 99 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
571 end if
572
573
574# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
575#if defined(MFC_OpenACC)
576# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
577!$acc enter data copyin(is1, is2, is3, isx, isy, isz)
578# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
579#elif defined(MFC_OpenMP)
580# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
581!$omp target enter data map(to:is1, is2, is3, isx, isy, isz)
582# 101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
583#endif
584# 102 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
585
586 is1%beg = -1; is2%beg = 0; is3%beg = 0
587 is1%end = m; is2%end = n; is3%end = p
588
589#ifdef MFC_DEBUG
590# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
591 block
592# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
593 use iso_fortran_env, only: output_unit
594# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
595
596# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
597 print *, 'm_riemann_solvers.fpp:106: ', '@:ALLOCATE(flux_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))'
598# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
599
600# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
601 call flush (output_unit)
602# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
603 end block
604# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
605#endif
606# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
607 allocate (flux_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))
608# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
609
610# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
611
612# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
613#if defined(MFC_OpenACC)
614# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
615!$acc enter data create(flux_rsx_vf)
616# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
617#elif defined(MFC_OpenMP)
618# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
619!$omp target enter data map(always,alloc:flux_rsx_vf)
620# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
621#endif
622# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
623#ifdef MFC_DEBUG
624# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
625 block
626# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
627 use iso_fortran_env, only: output_unit
628# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
629
630# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
631 print *, 'm_riemann_solvers.fpp:107: ', '@:ALLOCATE(flux_gsrc_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))'
632# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
633
634# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
635 call flush (output_unit)
636# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
637 end block
638# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
639#endif
640# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
641 allocate (flux_gsrc_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))
642# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
643
644# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
645
646# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
647#if defined(MFC_OpenACC)
648# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
649!$acc enter data create(flux_gsrc_rsx_vf)
650# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
651#elif defined(MFC_OpenMP)
652# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
653!$omp target enter data map(always,alloc:flux_gsrc_rsx_vf)
654# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
655#endif
656# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
657#ifdef MFC_DEBUG
658# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
659 block
660# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
661 use iso_fortran_env, only: output_unit
662# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
663
664# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
665 print *, 'm_riemann_solvers.fpp:108: ', '@:ALLOCATE(flux_src_rsx_vf(-1:m, -1:n, -1:p, eqn_idx%adv%beg:sys_size))'
666# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
667
668# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
669 call flush (output_unit)
670# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
671 end block
672# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
673#endif
674# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
675 allocate (flux_src_rsx_vf(-1:m, -1:n, -1:p, eqn_idx%adv%beg:sys_size))
676# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
677
678# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
679
680# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
681#if defined(MFC_OpenACC)
682# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
683!$acc enter data create(flux_src_rsx_vf)
684# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
685#elif defined(MFC_OpenMP)
686# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
687!$omp target enter data map(always,alloc:flux_src_rsx_vf)
688# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
689#endif
690# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
691#ifdef MFC_DEBUG
692# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
693 block
694# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
695 use iso_fortran_env, only: output_unit
696# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
697
698# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
699 print *, 'm_riemann_solvers.fpp:109: ', '@:ALLOCATE(vel_src_rsx_vf(-1:m, -1:n, -1:p, 1:num_vels))'
700# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
701
702# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
703 call flush (output_unit)
704# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
705 end block
706# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
707#endif
708# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
709 allocate (vel_src_rsx_vf(-1:m, -1:n, -1:p, 1:num_vels))
710# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
711
712# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
713
714# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
715#if defined(MFC_OpenACC)
716# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
717!$acc enter data create(vel_src_rsx_vf)
718# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
719#elif defined(MFC_OpenMP)
720# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
721!$omp target enter data map(always,alloc:vel_src_rsx_vf)
722# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
723#endif
724# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
725 if (qbmm) then
726#ifdef MFC_DEBUG
727# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
728 block
729# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
730 use iso_fortran_env, only: output_unit
731# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
732
733# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
734 print *, 'm_riemann_solvers.fpp:111: ', '@:ALLOCATE(mom_sp_rsx_vf(-1:m+1, -1:n+1, -1:p+1, 1:4))'
735# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
736
737# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
738 call flush (output_unit)
739# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
740 end block
741# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
742#endif
743# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
744 allocate (mom_sp_rsx_vf(-1:m+1, -1:n+1, -1:p+1, 1:4))
745# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
746
747# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
748
749# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
750#if defined(MFC_OpenACC)
751# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
752!$acc enter data create(mom_sp_rsx_vf)
753# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
754#elif defined(MFC_OpenMP)
755# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
756!$omp target enter data map(always,alloc:mom_sp_rsx_vf)
757# 111 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
758#endif
759# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
760 end if
761
762 if (viscous) then
763#ifdef MFC_DEBUG
764# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
765 block
766# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
767 use iso_fortran_env, only: output_unit
768# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
769
770# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
771 print *, 'm_riemann_solvers.fpp:115: ', '@:ALLOCATE(Re_avg_rsx_vf(-1:m, -1:n, -1:p, 1:2))'
772# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
773
774# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
775 call flush (output_unit)
776# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
777 end block
778# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
779#endif
780# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
781 allocate (re_avg_rsx_vf(-1:m, -1:n, -1:p, 1:2))
782# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
783
784# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
785
786# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
787#if defined(MFC_OpenACC)
788# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
789!$acc enter data create(Re_avg_rsx_vf)
790# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
791#elif defined(MFC_OpenMP)
792# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
793!$omp target enter data map(always,alloc:Re_avg_rsx_vf)
794# 115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
795#endif
796# 116 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
797 end if
798
799 if (use_nc_iface_vel) then
800#ifdef MFC_DEBUG
801# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
802 block
803# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
804 use iso_fortran_env, only: output_unit
805# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
806
807# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
808 print *, 'm_riemann_solvers.fpp:119: ', '@:ALLOCATE(nc_iface_vel_rsx_vf(-1:m, -1:n, -1:p, 1:num_dims))'
809# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
810
811# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
812 call flush (output_unit)
813# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
814 end block
815# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
816#endif
817# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
818 allocate (nc_iface_vel_rsx_vf(-1:m, -1:n, -1:p, 1:num_dims))
819# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
820
821# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
822
823# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
824#if defined(MFC_OpenACC)
825# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
826!$acc enter data create(nc_iface_vel_rsx_vf)
827# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
828#elif defined(MFC_OpenMP)
829# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
830!$omp target enter data map(always,alloc:nc_iface_vel_rsx_vf)
831# 119 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
832#endif
833# 120 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
834 end if
835
836 if (hypo_nc_mode == hypo_nc_mode_dual_pass) then
837#ifdef MFC_DEBUG
838# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
839 block
840# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
841 use iso_fortran_env, only: output_unit
842# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
843
844# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
845 print *, 'm_riemann_solvers.fpp:123: ', '@:ALLOCATE(flux_hatR_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))'
846# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
847
848# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
849 call flush (output_unit)
850# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
851 end block
852# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
853#endif
854# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
855 allocate (flux_hatr_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))
856# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
857
858# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
859
860# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
861#if defined(MFC_OpenACC)
862# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
863!$acc enter data create(flux_hatR_rsx_vf)
864# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
865#elif defined(MFC_OpenMP)
866# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
867!$omp target enter data map(always,alloc:flux_hatR_rsx_vf)
868# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
869#endif
870# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
871 if (use_nc_iface_vel) then
872#ifdef MFC_DEBUG
873# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
874 block
875# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
876 use iso_fortran_env, only: output_unit
877# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
878
879# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
880 print *, 'm_riemann_solvers.fpp:125: ', '@:ALLOCATE(nc_iface_vel_hatR_rsx_vf(-1:m, -1:n, -1:p, 1:num_dims))'
881# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
882
883# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
884 call flush (output_unit)
885# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
886 end block
887# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
888#endif
889# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
890 allocate (nc_iface_vel_hatr_rsx_vf(-1:m, -1:n, -1:p, 1:num_dims))
891# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
892
893# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
894
895# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
896#if defined(MFC_OpenACC)
897# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
898!$acc enter data create(nc_iface_vel_hatR_rsx_vf)
899# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
900#elif defined(MFC_OpenMP)
901# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
902!$omp target enter data map(always,alloc:nc_iface_vel_hatR_rsx_vf)
903# 125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
904#endif
905# 126 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
906 end if
907 if (cyl_coord) then
908#ifdef MFC_DEBUG
909# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
910 block
911# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
912 use iso_fortran_env, only: output_unit
913# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
914
915# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
916 print *, 'm_riemann_solvers.fpp:128: ', '@:ALLOCATE(flux_gsrc_hatR_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))'
917# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
918
919# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
920 call flush (output_unit)
921# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
922 end block
923# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
924#endif
925# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
926 allocate (flux_gsrc_hatr_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))
927# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
928
929# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
930
931# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
932#if defined(MFC_OpenACC)
933# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
934!$acc enter data create(flux_gsrc_hatR_rsx_vf)
935# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
936#elif defined(MFC_OpenMP)
937# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
938!$omp target enter data map(always,alloc:flux_gsrc_hatR_rsx_vf)
939# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
940#endif
941# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
942 end if
943 end if
944
946
947 !> Module deallocation and/or disassociation procedures
949
950 if (viscous) then
951#ifdef MFC_DEBUG
952# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
953 block
954# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
955 use iso_fortran_env, only: output_unit
956# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
957
958# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
959 print *, 'm_riemann_solvers.fpp:138: ', '@:DEALLOCATE(Re_avg_rsx_vf)'
960# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
961
962# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
963 call flush (output_unit)
964# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
965 end block
966# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
967#endif
968# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
969
970# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
971#if defined(MFC_OpenACC)
972# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
973!$acc exit data delete(Re_avg_rsx_vf)
974# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
975#elif defined(MFC_OpenMP)
976# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
977!$omp target exit data map(release:Re_avg_rsx_vf)
978# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
979#endif
980# 138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
981 deallocate (re_avg_rsx_vf)
982# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
983#ifdef MFC_DEBUG
984# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
985 block
986# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
987 use iso_fortran_env, only: output_unit
988# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
989
990# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
991 print *, 'm_riemann_solvers.fpp:139: ', '@:DEALLOCATE(Res_gs)'
992# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
993
994# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
995 call flush (output_unit)
996# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
997 end block
998# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
999#endif
1000# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1001
1002# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1003#if defined(MFC_OpenACC)
1004# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1005!$acc exit data delete(Res_gs)
1006# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1007#elif defined(MFC_OpenMP)
1008# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1009!$omp target exit data map(release:Res_gs)
1010# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1011#endif
1012# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1013 deallocate (res_gs)
1014# 140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1015 end if
1016#ifdef MFC_DEBUG
1017# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1018 block
1019# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1020 use iso_fortran_env, only: output_unit
1021# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1022
1023# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1024 print *, 'm_riemann_solvers.fpp:141: ', '@:DEALLOCATE(vel_src_rsx_vf)'
1025# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1026
1027# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1028 call flush (output_unit)
1029# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1030 end block
1031# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1032#endif
1033# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1034
1035# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1036#if defined(MFC_OpenACC)
1037# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1038!$acc exit data delete(vel_src_rsx_vf)
1039# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1040#elif defined(MFC_OpenMP)
1041# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1042!$omp target exit data map(release:vel_src_rsx_vf)
1043# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1044#endif
1045# 141 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1046 deallocate (vel_src_rsx_vf)
1047# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1048#ifdef MFC_DEBUG
1049# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1050 block
1051# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1052 use iso_fortran_env, only: output_unit
1053# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1054
1055# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1056 print *, 'm_riemann_solvers.fpp:142: ', '@:DEALLOCATE(flux_rsx_vf)'
1057# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1058
1059# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1060 call flush (output_unit)
1061# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1062 end block
1063# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1064#endif
1065# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1066
1067# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1068#if defined(MFC_OpenACC)
1069# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1070!$acc exit data delete(flux_rsx_vf)
1071# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1072#elif defined(MFC_OpenMP)
1073# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1074!$omp target exit data map(release:flux_rsx_vf)
1075# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1076#endif
1077# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1078 deallocate (flux_rsx_vf)
1079# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1080#ifdef MFC_DEBUG
1081# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1082 block
1083# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1084 use iso_fortran_env, only: output_unit
1085# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1086
1087# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1088 print *, 'm_riemann_solvers.fpp:143: ', '@:DEALLOCATE(flux_src_rsx_vf)'
1089# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1090
1091# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1092 call flush (output_unit)
1093# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1094 end block
1095# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1096#endif
1097# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1098
1099# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1100#if defined(MFC_OpenACC)
1101# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1102!$acc exit data delete(flux_src_rsx_vf)
1103# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1104#elif defined(MFC_OpenMP)
1105# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1106!$omp target exit data map(release:flux_src_rsx_vf)
1107# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1108#endif
1109# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1110 deallocate (flux_src_rsx_vf)
1111# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1112#ifdef MFC_DEBUG
1113# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1114 block
1115# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1116 use iso_fortran_env, only: output_unit
1117# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1118
1119# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1120 print *, 'm_riemann_solvers.fpp:144: ', '@:DEALLOCATE(flux_gsrc_rsx_vf)'
1121# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1122
1123# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1124 call flush (output_unit)
1125# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1126 end block
1127# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1128#endif
1129# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1130
1131# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1132#if defined(MFC_OpenACC)
1133# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1134!$acc exit data delete(flux_gsrc_rsx_vf)
1135# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1136#elif defined(MFC_OpenMP)
1137# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1138!$omp target exit data map(release:flux_gsrc_rsx_vf)
1139# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1140#endif
1141# 144 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1142 deallocate (flux_gsrc_rsx_vf)
1143# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1144#ifdef MFC_DEBUG
1145# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1146 block
1147# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1148 use iso_fortran_env, only: output_unit
1149# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1150
1151# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1152 print *, 'm_riemann_solvers.fpp:145: ', '@:DEALLOCATE(Gs_rs)'
1153# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1154
1155# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1156 call flush (output_unit)
1157# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1158 end block
1159# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1160#endif
1161# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1162
1163# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1164#if defined(MFC_OpenACC)
1165# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1166!$acc exit data delete(Gs_rs)
1167# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1168#elif defined(MFC_OpenMP)
1169# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1170!$omp target exit data map(release:Gs_rs)
1171# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1172#endif
1173# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1174 deallocate (gs_rs)
1175# 146 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1176 if (use_nc_iface_vel) then
1177#ifdef MFC_DEBUG
1178# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1179 block
1180# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1181 use iso_fortran_env, only: output_unit
1182# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1183
1184# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1185 print *, 'm_riemann_solvers.fpp:147: ', '@:DEALLOCATE(nc_iface_vel_rsx_vf)'
1186# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1187
1188# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1189 call flush (output_unit)
1190# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1191 end block
1192# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1193#endif
1194# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1195
1196# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1197#if defined(MFC_OpenACC)
1198# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1199!$acc exit data delete(nc_iface_vel_rsx_vf)
1200# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1201#elif defined(MFC_OpenMP)
1202# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1203!$omp target exit data map(release:nc_iface_vel_rsx_vf)
1204# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1205#endif
1206# 147 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1207 deallocate (nc_iface_vel_rsx_vf)
1208# 148 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1209 end if
1210 if (qbmm) then
1211#ifdef MFC_DEBUG
1212# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1213 block
1214# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1215 use iso_fortran_env, only: output_unit
1216# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1217
1218# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1219 print *, 'm_riemann_solvers.fpp:150: ', '@:DEALLOCATE(mom_sp_rsx_vf)'
1220# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1221
1222# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1223 call flush (output_unit)
1224# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1225 end block
1226# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1227#endif
1228# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1229
1230# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1231#if defined(MFC_OpenACC)
1232# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1233!$acc exit data delete(mom_sp_rsx_vf)
1234# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1235#elif defined(MFC_OpenMP)
1236# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1237!$omp target exit data map(release:mom_sp_rsx_vf)
1238# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1239#endif
1240# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1241 deallocate (mom_sp_rsx_vf)
1242# 151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1243 end if
1244 if (hypo_nc_mode == hypo_nc_mode_dual_pass) then
1245#ifdef MFC_DEBUG
1246# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1247 block
1248# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1249 use iso_fortran_env, only: output_unit
1250# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1251
1252# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1253 print *, 'm_riemann_solvers.fpp:153: ', '@:DEALLOCATE(flux_hatR_rsx_vf)'
1254# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1255
1256# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1257 call flush (output_unit)
1258# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1259 end block
1260# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1261#endif
1262# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1263
1264# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1265#if defined(MFC_OpenACC)
1266# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1267!$acc exit data delete(flux_hatR_rsx_vf)
1268# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1269#elif defined(MFC_OpenMP)
1270# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1271!$omp target exit data map(release:flux_hatR_rsx_vf)
1272# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1273#endif
1274# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1275 deallocate (flux_hatr_rsx_vf)
1276# 154 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1277 if (use_nc_iface_vel) then
1278#ifdef MFC_DEBUG
1279# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1280 block
1281# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1282 use iso_fortran_env, only: output_unit
1283# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1284
1285# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1286 print *, 'm_riemann_solvers.fpp:155: ', '@:DEALLOCATE(nc_iface_vel_hatR_rsx_vf)'
1287# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1288
1289# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1290 call flush (output_unit)
1291# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1292 end block
1293# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1294#endif
1295# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1296
1297# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1298#if defined(MFC_OpenACC)
1299# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1300!$acc exit data delete(nc_iface_vel_hatR_rsx_vf)
1301# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1302#elif defined(MFC_OpenMP)
1303# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1304!$omp target exit data map(release:nc_iface_vel_hatR_rsx_vf)
1305# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1306#endif
1307# 155 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1308 deallocate (nc_iface_vel_hatr_rsx_vf)
1309# 156 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1310 end if
1311 if (cyl_coord) then
1312#ifdef MFC_DEBUG
1313# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1314 block
1315# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1316 use iso_fortran_env, only: output_unit
1317# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1318
1319# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1320 print *, 'm_riemann_solvers.fpp:158: ', '@:DEALLOCATE(flux_gsrc_hatR_rsx_vf)'
1321# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1322
1323# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1324 call flush (output_unit)
1325# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1326 end block
1327# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1328#endif
1329# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1330
1331# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1332#if defined(MFC_OpenACC)
1333# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1334!$acc exit data delete(flux_gsrc_hatR_rsx_vf)
1335# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1336#elif defined(MFC_OpenMP)
1337# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1338!$omp target exit data map(release:flux_gsrc_hatR_rsx_vf)
1339# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1340#endif
1341# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1342 deallocate (flux_gsrc_hatr_rsx_vf)
1343# 159 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
1344 end if
1345 end if
1346
1348
1349end module m_riemann_solvers
integer, intent(in) j
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer, parameter hypo_nc_mode_dual_pass
anchored dual-pass HLLD; all NC terms stay in the Riemann flux
HLL approximate Riemann solver, Harten et al. SIAM Review (1983).
subroutine s_hll_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)
HLL approximate Riemann solver, Harten et al. SIAM Review (1983).
HLLC Riemann solver with contact restoration, Toro et al. Shock Waves (1994).
subroutine s_hllc_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)
HLLC Riemann solver with contact restoration, Toro et al. Shock Waves (1994).
HLLD approximate Riemann solver for MHD, Miyoshi & Kusano JCP (2005).
subroutine s_hlld_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)
HLLD Riemann solver for MHD, Miyoshi & Kusano JCP (2005).
Dual-pass HLLD approximate Riemann solver for hypoelastic flows, with non-conservative interface-velo...
subroutine s_finalize_nc_iface_vel_hatr(nc_iface_vel_vf, norm_dir)
subroutine s_finalize_nc_iface_vel(nc_iface_vel_vf, norm_dir)
Copy the hypo interface velocities of a fused-solve pass from Riemann-space buffers to physical-space...
subroutine s_hypo_hlld_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)
HLLD Riemann solver resolves all 5 waves for the hypoelastic equations: 1 entropy wave,...
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.
Approximate and exact Riemann solvers (HLL, HLLC, HLLD, exact) for the multicomponent Navier–Stokes e...
impure subroutine, public s_finalize_riemann_solvers_module
Module deallocation and/or disassociation procedures.
subroutine, public s_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)
Dispatch to the subroutines that are utilized to compute the Riemann problem solution....
impure subroutine, public s_initialize_riemann_solvers_module
Initialize the Riemann solvers module.
Shared Riemann-solver module state and the per-sweep setup, state-buffer population,...
subroutine s_finalize_riemann_solver_hatr(flux_vf, flux_gsrc_vf, norm_dir)
real(wp), dimension(:), allocatable gs_rs
Integer bounds for variables.
Derived type annexing a scalar field (SF).