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