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