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# 145 "/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# 145 "/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# 145 "/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. NVIDIA unified memory page placement hint
312# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
313
314! Allocate and create GPU device memory
315# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316
317! Free GPU device memory and deallocate
318# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
319
320! Cray-specific GPU pointer setup for vector fields
321# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322
323! Cray-specific GPU pointer setup for scalar fields
324# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
325
326! Cray-specific GPU pointer setup for acoustic source spatials
327# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
330
331# 163 "/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
344
345 implicit none
346
349
350contains
351
352 !> Dispatch to the subroutines that are utilized to compute the Riemann problem solution. For additional information please
353 !! reference: 1) s_hll_riemann_solver 2) s_hllc_riemann_solver 3) s_lf_riemann_solver 4) s_hlld_riemann_solver
354 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, &
355 & dqR_prim_dx_vf, dqR_prim_dy_vf, dqR_prim_dz_vf, qR_prim_vf, q_prim_vf, flux_vf, flux_src_vf, &
356 & flux_gsrc_vf, norm_dir, ix, iy, iz)
357
358 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: ql_prim_rsx_vf, qr_prim_rsx_vf
359 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
360 type(scalar_field), allocatable, dimension(:), intent(inout) :: ql_prim_vf, qr_prim_vf
361 type(scalar_field), allocatable, dimension(:), intent(inout) :: dql_prim_dx_vf, dqr_prim_dx_vf, dql_prim_dy_vf, &
362 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
363
364 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
365 integer, intent(in) :: norm_dir
366 type(int_bounds_info), intent(in) :: ix, iy, iz
367
368# 44 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
369 if (riemann_solver == 1) then
370 call s_hll_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
371 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
372 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
373 end if
374# 44 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
375 if (riemann_solver == 2) then
376 call s_hllc_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
377 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
378 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
379 end if
380# 44 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
381 if (riemann_solver == 4) then
382 call s_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 end if
386# 44 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
387 if (riemann_solver == 5) then
388 call s_lf_riemann_solver(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, &
389 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, &
390 & q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
391 end if
392# 50 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
393
394 end subroutine s_riemann_solver
395
396 !> Initialize the Riemann solvers module
398
399 ! Allocating the variables that will be utilized to formulate the left, right, and average states of the Riemann problem, as
400 ! well the Riemann problem solution
401 integer :: i, j
402
403#ifdef MFC_DEBUG
404# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
405 block
406# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
407 use iso_fortran_env, only: output_unit
408# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
409
410# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
411 print *, 'm_riemann_solvers.fpp:60: ', '@:ALLOCATE(Gs_rs(1:num_fluids))'
412# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
413
414# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
415 call flush (output_unit)
416# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
417 end block
418# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
419#endif
420# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
421 allocate (gs_rs(1:num_fluids))
422# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
423
424# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
425
426# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
427#if defined(MFC_OpenACC)
428# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
429!$acc enter data create(Gs_rs)
430# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
431#elif defined(MFC_OpenMP)
432# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
433!$omp target enter data map(always,alloc:Gs_rs)
434# 60 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
435#endif
436
437 do i = 1, num_fluids
438 gs_rs(i) = fluid_pp(i)%G
439 end do
440
441# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
442#if defined(MFC_OpenACC)
443# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
444!$acc update device(Gs_rs)
445# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
446#elif defined(MFC_OpenMP)
447# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
448!$omp target update to(Gs_rs)
449# 65 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
450#endif
451
452 if (viscous) then
453#ifdef MFC_DEBUG
454# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
455 block
456# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
457 use iso_fortran_env, only: output_unit
458# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
459
460# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
461 print *, 'm_riemann_solvers.fpp:68: ', '@:ALLOCATE(Res_gs(1:2, 1:Re_size_max))'
462# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
463
464# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
465 call flush (output_unit)
466# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
467 end block
468# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
469#endif
470# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
471 allocate (res_gs(1:2, 1:re_size_max))
472# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
473
474# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
475
476# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
477#if defined(MFC_OpenACC)
478# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
479!$acc enter data create(Res_gs)
480# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
481#elif defined(MFC_OpenMP)
482# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
483!$omp target enter data map(always,alloc:Res_gs)
484# 68 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
485#endif
486 end if
487
488 if (viscous) then
489 do i = 1, 2
490 do j = 1, re_size(i)
491 res_gs(i, j) = fluid_pp(re_idx(i, j))%Re(i)
492 end do
493 end do
494
495# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
496#if defined(MFC_OpenACC)
497# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
498!$acc update device(Res_gs, Re_idx, Re_size)
499# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
500#elif defined(MFC_OpenMP)
501# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
502!$omp target update to(Res_gs, Re_idx, Re_size)
503# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
504#endif
505 end if
506
507
508# 80 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
509#if defined(MFC_OpenACC)
510# 80 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
511!$acc enter data copyin(is1, is2, is3, isx, isy, isz)
512# 80 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
513#elif defined(MFC_OpenMP)
514# 80 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
515!$omp target enter data map(to:is1, is2, is3, isx, isy, isz)
516# 80 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
517#endif
518
519 is1%beg = -1; is2%beg = 0; is3%beg = 0
520 is1%end = m; is2%end = n; is3%end = p
521
522#ifdef MFC_DEBUG
523# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
524 block
525# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
526 use iso_fortran_env, only: output_unit
527# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
528
529# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
530 print *, 'm_riemann_solvers.fpp:85: ', '@:ALLOCATE(flux_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))'
531# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
532
533# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
534 call flush (output_unit)
535# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
536 end block
537# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
538#endif
539# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
540 allocate (flux_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))
541# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
542
543# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
544
545# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
546#if defined(MFC_OpenACC)
547# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
548!$acc enter data create(flux_rsx_vf)
549# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
550#elif defined(MFC_OpenMP)
551# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
552!$omp target enter data map(always,alloc:flux_rsx_vf)
553# 85 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
554#endif
555#ifdef MFC_DEBUG
556# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
557 block
558# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
559 use iso_fortran_env, only: output_unit
560# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
561
562# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
563 print *, 'm_riemann_solvers.fpp:86: ', '@:ALLOCATE(flux_gsrc_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))'
564# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
565
566# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
567 call flush (output_unit)
568# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
569 end block
570# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
571#endif
572# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
573 allocate (flux_gsrc_rsx_vf(-1:m, -1:n, -1:p, 1:sys_size))
574# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
575
576# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
577
578# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
579#if defined(MFC_OpenACC)
580# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
581!$acc enter data create(flux_gsrc_rsx_vf)
582# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
583#elif defined(MFC_OpenMP)
584# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
585!$omp target enter data map(always,alloc:flux_gsrc_rsx_vf)
586# 86 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
587#endif
588#ifdef MFC_DEBUG
589# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
590 block
591# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
592 use iso_fortran_env, only: output_unit
593# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
594
595# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
596 print *, 'm_riemann_solvers.fpp:87: ', '@:ALLOCATE(flux_src_rsx_vf(-1:m, -1:n, -1:p, eqn_idx%adv%beg:sys_size))'
597# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
598
599# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
600 call flush (output_unit)
601# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
602 end block
603# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
604#endif
605# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
606 allocate (flux_src_rsx_vf(-1:m, -1:n, -1:p, eqn_idx%adv%beg:sys_size))
607# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
608
609# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
610
611# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
612#if defined(MFC_OpenACC)
613# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
614!$acc enter data create(flux_src_rsx_vf)
615# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
616#elif defined(MFC_OpenMP)
617# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
618!$omp target enter data map(always,alloc:flux_src_rsx_vf)
619# 87 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
620#endif
621#ifdef MFC_DEBUG
622# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
623 block
624# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
625 use iso_fortran_env, only: output_unit
626# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
627
628# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
629 print *, 'm_riemann_solvers.fpp:88: ', '@:ALLOCATE(vel_src_rsx_vf(-1:m, -1:n, -1:p, 1:num_vels))'
630# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
631
632# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
633 call flush (output_unit)
634# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
635 end block
636# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
637#endif
638# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
639 allocate (vel_src_rsx_vf(-1:m, -1:n, -1:p, 1:num_vels))
640# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
641
642# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
643
644# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
645#if defined(MFC_OpenACC)
646# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
647!$acc enter data create(vel_src_rsx_vf)
648# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
649#elif defined(MFC_OpenMP)
650# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
651!$omp target enter data map(always,alloc:vel_src_rsx_vf)
652# 88 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
653#endif
654 if (qbmm) then
655#ifdef MFC_DEBUG
656# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
657 block
658# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
659 use iso_fortran_env, only: output_unit
660# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
661
662# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
663 print *, 'm_riemann_solvers.fpp:90: ', '@:ALLOCATE(mom_sp_rsx_vf(-1:m+1, -1:n+1, -1:p+1, 1:4))'
664# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
665
666# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
667 call flush (output_unit)
668# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
669 end block
670# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
671#endif
672# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
673 allocate (mom_sp_rsx_vf(-1:m+1, -1:n+1, -1:p+1, 1:4))
674# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
675
676# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
677
678# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
679#if defined(MFC_OpenACC)
680# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
681!$acc enter data create(mom_sp_rsx_vf)
682# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
683#elif defined(MFC_OpenMP)
684# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
685!$omp target enter data map(always,alloc:mom_sp_rsx_vf)
686# 90 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
687#endif
688 end if
689
690 if (viscous) then
691#ifdef MFC_DEBUG
692# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
693 block
694# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
695 use iso_fortran_env, only: output_unit
696# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
697
698# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
699 print *, 'm_riemann_solvers.fpp:94: ', '@:ALLOCATE(Re_avg_rsx_vf(-1:m, -1:n, -1:p, 1:2))'
700# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
701
702# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
703 call flush (output_unit)
704# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
705 end block
706# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
707#endif
708# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
709 allocate (re_avg_rsx_vf(-1:m, -1:n, -1:p, 1:2))
710# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
711
712# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
713
714# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
715#if defined(MFC_OpenACC)
716# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
717!$acc enter data create(Re_avg_rsx_vf)
718# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
719#elif defined(MFC_OpenMP)
720# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
721!$omp target enter data map(always,alloc:Re_avg_rsx_vf)
722# 94 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
723#endif
724 end if
725
727
728 !> Module deallocation and/or disassociation procedures
730
731 if (viscous) then
732#ifdef MFC_DEBUG
733# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
734 block
735# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
736 use iso_fortran_env, only: output_unit
737# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
738
739# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
740 print *, 'm_riemann_solvers.fpp:103: ', '@:DEALLOCATE(Re_avg_rsx_vf)'
741# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
742
743# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
744 call flush (output_unit)
745# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
746 end block
747# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
748#endif
749# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
750
751# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
752#if defined(MFC_OpenACC)
753# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
754!$acc exit data delete(Re_avg_rsx_vf)
755# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
756#elif defined(MFC_OpenMP)
757# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
758!$omp target exit data map(release:Re_avg_rsx_vf)
759# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
760#endif
761# 103 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
762 deallocate (re_avg_rsx_vf)
763#ifdef MFC_DEBUG
764# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
765 block
766# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
767 use iso_fortran_env, only: output_unit
768# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
769
770# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
771 print *, 'm_riemann_solvers.fpp:104: ', '@:DEALLOCATE(Res_gs)'
772# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
773
774# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
775 call flush (output_unit)
776# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
777 end block
778# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
779#endif
780# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
781
782# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
783#if defined(MFC_OpenACC)
784# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
785!$acc exit data delete(Res_gs)
786# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
787#elif defined(MFC_OpenMP)
788# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
789!$omp target exit data map(release:Res_gs)
790# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
791#endif
792# 104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
793 deallocate (res_gs)
794 end if
795#ifdef MFC_DEBUG
796# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
797 block
798# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
799 use iso_fortran_env, only: output_unit
800# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
801
802# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
803 print *, 'm_riemann_solvers.fpp:106: ', '@:DEALLOCATE(vel_src_rsx_vf)'
804# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
805
806# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
807 call flush (output_unit)
808# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
809 end block
810# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
811#endif
812# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
813
814# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
815#if defined(MFC_OpenACC)
816# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
817!$acc exit data delete(vel_src_rsx_vf)
818# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
819#elif defined(MFC_OpenMP)
820# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
821!$omp target exit data map(release:vel_src_rsx_vf)
822# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
823#endif
824# 106 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
825 deallocate (vel_src_rsx_vf)
826#ifdef MFC_DEBUG
827# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
828 block
829# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
830 use iso_fortran_env, only: output_unit
831# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
832
833# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
834 print *, 'm_riemann_solvers.fpp:107: ', '@:DEALLOCATE(flux_rsx_vf)'
835# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
836
837# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
838 call flush (output_unit)
839# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
840 end block
841# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
842#endif
843# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
844
845# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
846#if defined(MFC_OpenACC)
847# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
848!$acc exit data delete(flux_rsx_vf)
849# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
850#elif defined(MFC_OpenMP)
851# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
852!$omp target exit data map(release:flux_rsx_vf)
853# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
854#endif
855# 107 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
856 deallocate (flux_rsx_vf)
857#ifdef MFC_DEBUG
858# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
859 block
860# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
861 use iso_fortran_env, only: output_unit
862# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
863
864# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
865 print *, 'm_riemann_solvers.fpp:108: ', '@:DEALLOCATE(flux_src_rsx_vf)'
866# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
867
868# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
869 call flush (output_unit)
870# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
871 end block
872# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
873#endif
874# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
875
876# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
877#if defined(MFC_OpenACC)
878# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
879!$acc exit data delete(flux_src_rsx_vf)
880# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
881#elif defined(MFC_OpenMP)
882# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
883!$omp target exit data map(release:flux_src_rsx_vf)
884# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
885#endif
886# 108 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
887 deallocate (flux_src_rsx_vf)
888#ifdef MFC_DEBUG
889# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
890 block
891# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
892 use iso_fortran_env, only: output_unit
893# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
894
895# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
896 print *, 'm_riemann_solvers.fpp:109: ', '@:DEALLOCATE(flux_gsrc_rsx_vf)'
897# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
898
899# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
900 call flush (output_unit)
901# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
902 end block
903# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
904#endif
905# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
906
907# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
908#if defined(MFC_OpenACC)
909# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
910!$acc exit data delete(flux_gsrc_rsx_vf)
911# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
912#elif defined(MFC_OpenMP)
913# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
914!$omp target exit data map(release:flux_gsrc_rsx_vf)
915# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
916#endif
917# 109 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
918 deallocate (flux_gsrc_rsx_vf)
919#ifdef MFC_DEBUG
920# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
921 block
922# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
923 use iso_fortran_env, only: output_unit
924# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
925
926# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
927 print *, 'm_riemann_solvers.fpp:110: ', '@:DEALLOCATE(Gs_rs)'
928# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
929
930# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
931 call flush (output_unit)
932# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
933 end block
934# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
935#endif
936# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
937
938# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
939#if defined(MFC_OpenACC)
940# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
941!$acc exit data delete(Gs_rs)
942# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
943#elif defined(MFC_OpenMP)
944# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
945!$omp target exit data map(release:Gs_rs)
946# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
947#endif
948# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
949 deallocate (gs_rs)
950 if (qbmm) then
951#ifdef MFC_DEBUG
952# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
953 block
954# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
955 use iso_fortran_env, only: output_unit
956# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
957
958# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
959 print *, 'm_riemann_solvers.fpp:112: ', '@:DEALLOCATE(mom_sp_rsx_vf)'
960# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
961
962# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
963 call flush (output_unit)
964# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
965 end block
966# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
967#endif
968# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
969
970# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
971#if defined(MFC_OpenACC)
972# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
973!$acc exit data delete(mom_sp_rsx_vf)
974# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
975#elif defined(MFC_OpenMP)
976# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
977!$omp target exit data map(release:mom_sp_rsx_vf)
978# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
979#endif
980# 112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solvers.fpp"
981 deallocate (mom_sp_rsx_vf)
982 end if
983
985
986end 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...
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).
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,...
real(wp), dimension(:), allocatable gs_rs
Integer bounds for variables.
Derived type annexing a scalar field (SF).