MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_riemann_state.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2!>
3!! @file
4!! @brief Contains module m_riemann_state
5
6!> @brief Shared Riemann-solver module state and the per-sweep setup, state-buffer population, viscous source flux, and finalization
7!! helpers
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_state.fpp" 2
19# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
20# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
21# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
22# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27
28# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47! New line at end of file is required for FYPP
48# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
49# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
50# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
51# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56
57# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72
73# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74
75# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76! New line at end of file is required for FYPP
77# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
78
79# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153
154# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155! New line at end of file is required for FYPP
156# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
157# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
158# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
159# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164
165# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176
177# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178
179# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180
181# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182
183# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184! New line at end of file is required for FYPP
185# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
186
187# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240
241# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242! New line at end of file is required for FYPP
243# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
244
245! GPU parallel region (scalar reductions, maxval/minval)
246# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247
248! GPU parallel loop over threads (most common GPU macro)
249# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251! Required closing for GPU_PARALLEL_LOOP
252# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253
254! Mark routine for device compilation
255# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257! Declare device-resident data
258# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259
260! Inner loop within a GPU parallel region
261# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263! Scoped GPU data region
264# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265
266! Host code with device pointers (for MPI with GPU buffers)
267# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269! Allocate device memory (unscoped)
270# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271
272! Free device memory
273# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274
275! Atomic operation on device
276# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277
278! End atomic capture block
279# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280
281! Copy data between host and device
282# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283
284! Synchronization barrier
285# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286
287! Import GPU library module (openacc or omp_lib)
288# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289
290! Emit code only for AMD compiler
291# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292
293! Emit code for non-Cray compilers
294# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295
296! Emit code only for Cray compiler
297# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298
299! Emit code for non-NVIDIA compilers
300# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301
302# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304! New line at end of file is required for FYPP
305# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
306
307# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308
309! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
310! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
311! example see misc/nvidia_uvm/bind.sh.
312# 55 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
313
314! Allocate and create GPU device memory
315# 75 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316
317! Free GPU device memory and deallocate
318# 83 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
319
320! Cray-specific GPU pointer setup for vector fields
321# 107 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322
323! Cray-specific GPU pointer setup for scalar fields
324# 123 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
325
326! Cray-specific GPU pointer setup for acoustic source spatials
327# 148 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329# 154 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
330
331# 161 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
332! New line at end of file is required for FYPP
333# 9 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp" 2
334
336
340 use m_hb_function
341
342 implicit none
343
344 !> The cell-boundary values of the fluxes (src - source) that are computed through the chosen Riemann problem solver, and the
345 !! direct evaluation of source terms, by using the left and right states given in qK_prim_rs_vf, dqK_prim_ds_vf where ds = dx,
346 !! dy or dz.
347 !> @{
348 real(wp), allocatable, dimension(:,:,:,:) :: flux_rsx_vf, flux_src_rsx_vf
349
350# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
351#if defined(MFC_OpenACC)
352# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
353!$acc declare create(flux_rsx_vf, flux_src_rsx_vf)
354# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
355#elif defined(MFC_OpenMP)
356# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
357!$omp declare target (flux_rsx_vf, flux_src_rsx_vf)
358# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
359#endif
360 !> @}
361
362 !> The cell-boundary values of the geometrical source flux that are computed through the chosen Riemann problem solver by using
363 !! the left and right states given in qK_prim_rs_vf. Currently 2D axisymmetric for inviscid only.
364 !> @{
365 real(wp), allocatable, dimension(:,:,:,:) :: flux_gsrc_rsx_vf
366
367# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
368#if defined(MFC_OpenACC)
369# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
370!$acc declare create(flux_gsrc_rsx_vf)
371# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
372#elif defined(MFC_OpenMP)
373# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
374!$omp declare target (flux_gsrc_rsx_vf)
375# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
376#endif
377
378 real(wp), allocatable, dimension(:,:,:,:) :: nc_iface_vel_rsx_vf
379
380# 34 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
381#if defined(MFC_OpenACC)
382# 34 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
383!$acc declare create(nc_iface_vel_rsx_vf)
384# 34 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
385#elif defined(MFC_OpenMP)
386# 34 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
387!$omp declare target (nc_iface_vel_rsx_vf)
388# 34 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
389#endif
390
391 !> Dual-pass HLLD second flux set: the hat_R-anchored fluxes (and, for axisymmetric runs, the hat_R interface velocities)
392 !! written by the same fused solve that fills flux_rsx / nc_iface_vel_rsx with the hat_L-anchored values. Allocated only when
393 !! hypo_nc_mode_dual_pass.
394 real(wp), allocatable, dimension(:,:,:,:) :: flux_hatr_rsx_vf
395
396# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
397#if defined(MFC_OpenACC)
398# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
399!$acc declare create(flux_hatR_rsx_vf)
400# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
401#elif defined(MFC_OpenMP)
402# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
403!$omp declare target (flux_hatR_rsx_vf)
404# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
405#endif
406
407 real(wp), allocatable, dimension(:,:,:,:) :: nc_iface_vel_hatr_rsx_vf
408
409# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
410#if defined(MFC_OpenACC)
411# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
412!$acc declare create(nc_iface_vel_hatR_rsx_vf)
413# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
414#elif defined(MFC_OpenMP)
415# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
416!$omp declare target (nc_iface_vel_hatR_rsx_vf)
417# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
418#endif
419
420 real(wp), allocatable, dimension(:,:,:,:) :: flux_gsrc_hatr_rsx_vf
421
422# 46 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
423#if defined(MFC_OpenACC)
424# 46 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
425!$acc declare create(flux_gsrc_hatR_rsx_vf)
426# 46 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
427#elif defined(MFC_OpenMP)
428# 46 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
429!$omp declare target (flux_gsrc_hatR_rsx_vf)
430# 46 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
431#endif
432 !> @}
433
434 ! Cell-boundary velocity from Riemann solution; used for source flux
435
436 real(wp), allocatable, dimension(:,:,:,:) :: vel_src_rsx_vf
437
438# 52 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
439#if defined(MFC_OpenACC)
440# 52 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
441!$acc declare create(vel_src_rsx_vf)
442# 52 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
443#elif defined(MFC_OpenMP)
444# 52 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
445!$omp declare target (vel_src_rsx_vf)
446# 52 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
447#endif
448
449 real(wp), allocatable, dimension(:,:,:,:) :: mom_sp_rsx_vf
450
451# 55 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
452#if defined(MFC_OpenACC)
453# 55 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
454!$acc declare create(mom_sp_rsx_vf)
455# 55 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
456#elif defined(MFC_OpenMP)
457# 55 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
458!$omp declare target (mom_sp_rsx_vf)
459# 55 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
460#endif
461
462 real(wp), allocatable, dimension(:,:,:,:) :: re_avg_rsx_vf
463
464# 58 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
465#if defined(MFC_OpenACC)
466# 58 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
467!$acc declare create(Re_avg_rsx_vf)
468# 58 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
469#elif defined(MFC_OpenMP)
470# 58 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
471!$omp declare target (Re_avg_rsx_vf)
472# 58 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
473#endif
474
475 !> @name Indical bounds in the s1-, s2- and s3-directions
476 !> @{
479 !> @}
480
481
482# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
483#if defined(MFC_OpenACC)
484# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
485!$acc declare create(is1, is2, is3, isx, isy, isz)
486# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
487#elif defined(MFC_OpenMP)
488# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
489!$omp declare target (is1, is2, is3, isx, isy, isz)
490# 66 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
491#endif
492
493 real(wp), allocatable, dimension(:) :: gs_rs
494
495# 69 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
496#if defined(MFC_OpenACC)
497# 69 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
498!$acc declare create(Gs_rs)
499# 69 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
500#elif defined(MFC_OpenMP)
501# 69 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
502!$omp declare target (Gs_rs)
503# 69 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
504#endif
505
506 real(wp), allocatable, dimension(:,:) :: res_gs
507
508# 72 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
509#if defined(MFC_OpenACC)
510# 72 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
511!$acc declare create(Res_gs)
512# 72 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
513#elif defined(MFC_OpenMP)
514# 72 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
515!$omp declare target (Res_gs)
516# 72 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
517#endif
518
519contains
520
521 !> Dispatch to the subroutines that are utilized to compute the viscous source fluxes for either Cartesian or cylindrical
522 !! geometries. For more information please refer to: 1) s_compute_cartesian_viscous_source_flux 2)
523 !! s_compute_cylindrical_viscous_source_flux
524 subroutine s_compute_viscous_source_flux(velL_vf, dvelL_dx_vf, dvelL_dy_vf, dvelL_dz_vf, velR_vf, dvelR_dx_vf, dvelR_dy_vf, &
525 & dvelR_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
526
527 type(scalar_field), dimension(num_vels), intent(in) :: velL_vf, velR_vf, dvelL_dx_vf, dvelR_dx_vf, dvelL_dy_vf, &
528 & dvelR_dy_vf, dvelL_dz_vf, dvelR_dz_vf
529
530 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
531 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
532 integer, intent(in) :: norm_dir
533 type(int_bounds_info), intent(in) :: ix, iy, iz
534
535 if (grid_geometry == 3) then
536 call s_compute_cylindrical_viscous_source_flux(vell_vf, dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, velr_vf, dvelr_dx_vf, &
537 & dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
538 else
539 call s_compute_cartesian_viscous_source_flux(dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, dvelr_dx_vf, dvelr_dy_vf, &
540 & dvelr_dz_vf, flux_src_vf, q_prim_vf, norm_dir)
541 end if
542
543 end subroutine s_compute_viscous_source_flux
544
545 !> Populate the left and right Riemann state variable buffers based on boundary conditions
546 subroutine s_populate_riemann_states_variables_buffers(qL_prim_rsx_vf, dqL_prim_dx_vf, dqL_prim_dy_vf, dqL_prim_dz_vf, &
547 & qR_prim_rsx_vf, dqR_prim_dx_vf, dqR_prim_dy_vf, dqR_prim_dz_vf, norm_dir, ix, iy, iz)
548
549 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: qL_prim_rsx_vf, qR_prim_rsx_vf
550 type(scalar_field), allocatable, dimension(:), intent(inout) :: dqL_prim_dx_vf, dqR_prim_dx_vf, dqL_prim_dy_vf, &
551 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
552
553 integer, intent(in) :: norm_dir
554 type(int_bounds_info), intent(in) :: ix, iy, iz
555 integer :: i, j, k, l !< Generic loop iterator
556
557 if (norm_dir == 1) then
558 is1 = ix; is2 = iy; is3 = iz
559 dir_idx = (/1, 2, 3/); dir_flg = (/1._wp, 0._wp, 0._wp/)
560 else if (norm_dir == 2) then
561 is1 = iy; is2 = ix; is3 = iz
562 dir_idx = (/2, 1, 3/); dir_flg = (/0._wp, 1._wp, 0._wp/)
563 else
564 is1 = iz; is2 = iy; is3 = ix
565 dir_idx = (/3, 1, 2/); dir_flg = (/0._wp, 0._wp, 1._wp/)
566 end if
567
568
569# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
570#if defined(MFC_OpenACC)
571# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
572!$acc update device(is1, is2, is3)
573# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
574#elif defined(MFC_OpenMP)
575# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
576!$omp target update to(is1, is2, is3)
577# 123 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
578#endif
579
580 if (hypoelasticity) then
581 ! dir_idx_tau(1:3) = (nn, nt, nt2): face-normal stress row for wave speeds and momentum flux. stress_perm(1:n_stress) =
582 ! full tensor permutation mapping F_HLL local basis index -> physical storage index. Local order: (nn, nt, tt, nt2,
583 ! t1t2, t2t2). In 2D only entries 1-3 are used.
584 if (norm_dir == 1) then
585 dir_idx_tau = (/1, 2, 4/)
586 stress_perm = (/1, 2, 3, 4, 5, 6/)
587 else if (norm_dir == 2) then
588 dir_idx_tau = (/3, 2, 5/)
589 stress_perm = (/3, 2, 1, 5, 4, 6/)
590 else
591 dir_idx_tau = (/6, 4, 5/)
592 stress_perm = (/6, 4, 1, 5, 2, 3/)
593 end if
594 end if
595
596 isx = ix; isy = iy; isz = iz
597 ! for stuff in the same module
598
599# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
600#if defined(MFC_OpenACC)
601# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
602!$acc update device(isx, isy, isz)
603# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
604#elif defined(MFC_OpenMP)
605# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
606!$omp target update to(isx, isy, isz)
607# 143 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
608#endif
609 ! for stuff in different modules
610
611# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
612#if defined(MFC_OpenACC)
613# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
614!$acc update device(dir_idx, dir_flg, dir_idx_tau, stress_perm)
615# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
616#elif defined(MFC_OpenMP)
617# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
618!$omp target update to(dir_idx, dir_flg, dir_idx_tau, stress_perm)
619# 145 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
620#endif
621
622 ! Population of Buffers in x-direction
623 if (norm_dir == 1) then
624 if (bc_x%beg == bc_riemann_extrap) then ! Riemann state extrap. BC at beginning
625
626# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
627
628# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
629#if defined(MFC_OpenACC)
630# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
631!$acc parallel loop collapse(3) gang vector default(present)
632# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
633#elif defined(MFC_OpenMP)
634# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
635
636# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
637
638# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
639
640# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
641!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
642# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
643#endif
644 do i = 1, sys_size
645 do l = is3%beg, is3%end
646 do k = is2%beg, is2%end
647 ql_prim_rsx_vf(-1, k, l, i) = qr_prim_rsx_vf(0, k, l, i)
648 end do
649 end do
650 end do
651
652# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
653#if defined(MFC_OpenACC)
654# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
655!$acc end parallel loop
656# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
657#elif defined(MFC_OpenMP)
658# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
659
660# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
661!$omp end target teams loop
662# 158 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
663#endif
664
665 if (viscous) then
666
667# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
668
669# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
670#if defined(MFC_OpenACC)
671# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
672!$acc parallel loop collapse(3) gang vector default(present)
673# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
674#elif defined(MFC_OpenMP)
675# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
676
677# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
678
679# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
680
681# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
682!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
683# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
684#endif
685 do i = eqn_idx%mom%beg, eqn_idx%mom%end
686 do l = isz%beg, isz%end
687 do k = isy%beg, isy%end
688 dql_prim_dx_vf(i)%sf(-1, k, l) = dqr_prim_dx_vf(i)%sf(0, k, l)
689 end do
690 end do
691 end do
692
693# 169 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
694#if defined(MFC_OpenACC)
695# 169 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
696!$acc end parallel loop
697# 169 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
698#elif defined(MFC_OpenMP)
699# 169 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
700
701# 169 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
702!$omp end target teams loop
703# 169 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
704#endif
705
706 if (n > 0) then
707
708# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
709
710# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
711#if defined(MFC_OpenACC)
712# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
713!$acc parallel loop collapse(3) gang vector default(present)
714# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
715#elif defined(MFC_OpenMP)
716# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
717
718# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
719
720# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
721
722# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
723!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
724# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
725#endif
726 do i = eqn_idx%mom%beg, eqn_idx%mom%end
727 do l = isz%beg, isz%end
728 do k = isy%beg, isy%end
729 dql_prim_dy_vf(i)%sf(-1, k, l) = dqr_prim_dy_vf(i)%sf(0, k, l)
730 end do
731 end do
732 end do
733
734# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
735#if defined(MFC_OpenACC)
736# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
737!$acc end parallel loop
738# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
739#elif defined(MFC_OpenMP)
740# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
741
742# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
743!$omp end target teams loop
744# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
745#endif
746
747 if (p > 0) then
748
749# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
750
751# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
752#if defined(MFC_OpenACC)
753# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
754!$acc parallel loop collapse(3) gang vector default(present)
755# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
756#elif defined(MFC_OpenMP)
757# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
758
759# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
760
761# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
762
763# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
764!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
765# 183 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
766#endif
767 do i = eqn_idx%mom%beg, eqn_idx%mom%end
768 do l = isz%beg, isz%end
769 do k = isy%beg, isy%end
770 dql_prim_dz_vf(i)%sf(-1, k, l) = dqr_prim_dz_vf(i)%sf(0, k, l)
771 end do
772 end do
773 end do
774
775# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
776#if defined(MFC_OpenACC)
777# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
778!$acc end parallel loop
779# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
780#elif defined(MFC_OpenMP)
781# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
782
783# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
784!$omp end target teams loop
785# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
786#endif
787 end if
788 end if
789 end if
790 end if
791
792 if (bc_x%end == bc_riemann_extrap) then ! Riemann state extrap. BC at end
793
794# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
795
796# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
797#if defined(MFC_OpenACC)
798# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
799!$acc parallel loop collapse(3) gang vector default(present)
800# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
801#elif defined(MFC_OpenMP)
802# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
803
804# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
805
806# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
807
808# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
809!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
810# 198 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
811#endif
812 do i = 1, sys_size
813 do l = is3%beg, is3%end
814 do k = is2%beg, is2%end
815 qr_prim_rsx_vf(m + 1, k, l, i) = ql_prim_rsx_vf(m, k, l, i)
816 end do
817 end do
818 end do
819
820# 206 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
821#if defined(MFC_OpenACC)
822# 206 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
823!$acc end parallel loop
824# 206 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
825#elif defined(MFC_OpenMP)
826# 206 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
827
828# 206 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
829!$omp end target teams loop
830# 206 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
831#endif
832
833 if (viscous) then
834
835# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
836
837# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
838#if defined(MFC_OpenACC)
839# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
840!$acc parallel loop collapse(3) gang vector default(present)
841# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
842#elif defined(MFC_OpenMP)
843# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
844
845# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
846
847# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
848
849# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
850!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
851# 209 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
852#endif
853 do i = eqn_idx%mom%beg, eqn_idx%mom%end
854 do l = isz%beg, isz%end
855 do k = isy%beg, isy%end
856 dqr_prim_dx_vf(i)%sf(m + 1, k, l) = dql_prim_dx_vf(i)%sf(m, k, l)
857 end do
858 end do
859 end do
860
861# 217 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
862#if defined(MFC_OpenACC)
863# 217 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
864!$acc end parallel loop
865# 217 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
866#elif defined(MFC_OpenMP)
867# 217 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
868
869# 217 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
870!$omp end target teams loop
871# 217 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
872#endif
873
874 if (n > 0) then
875
876# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
877
878# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
879#if defined(MFC_OpenACC)
880# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
881!$acc parallel loop collapse(3) gang vector default(present)
882# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
883#elif defined(MFC_OpenMP)
884# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
885
886# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
887
888# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
889
890# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
891!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
892# 220 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
893#endif
894 do i = eqn_idx%mom%beg, eqn_idx%mom%end
895 do l = isz%beg, isz%end
896 do k = isy%beg, isy%end
897 dqr_prim_dy_vf(i)%sf(m + 1, k, l) = dql_prim_dy_vf(i)%sf(m, k, l)
898 end do
899 end do
900 end do
901
902# 228 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
903#if defined(MFC_OpenACC)
904# 228 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
905!$acc end parallel loop
906# 228 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
907#elif defined(MFC_OpenMP)
908# 228 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
909
910# 228 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
911!$omp end target teams loop
912# 228 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
913#endif
914
915 if (p > 0) then
916
917# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
918
919# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
920#if defined(MFC_OpenACC)
921# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
922!$acc parallel loop collapse(3) gang vector default(present)
923# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
924#elif defined(MFC_OpenMP)
925# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
926
927# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
928
929# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
930
931# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
932!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
933# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
934#endif
935 do i = eqn_idx%mom%beg, eqn_idx%mom%end
936 do l = isz%beg, isz%end
937 do k = isy%beg, isy%end
938 dqr_prim_dz_vf(i)%sf(m + 1, k, l) = dql_prim_dz_vf(i)%sf(m, k, l)
939 end do
940 end do
941 end do
942
943# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
944#if defined(MFC_OpenACC)
945# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
946!$acc end parallel loop
947# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
948#elif defined(MFC_OpenMP)
949# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
950
951# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
952!$omp end target teams loop
953# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
954#endif
955 end if
956 end if
957 end if
958 end if
959 ! END: Population of Buffers in x-direction
960
961 ! Population of Buffers in y-direction
962 else if (norm_dir == 2) then
963 if (bc_y%beg == bc_riemann_extrap) then ! Riemann state extrap. BC at beginning
964
965# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
966
967# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
968#if defined(MFC_OpenACC)
969# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
970!$acc parallel loop collapse(3) gang vector default(present)
971# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
972#elif defined(MFC_OpenMP)
973# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
974
975# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
976
977# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
978
979# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
980!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
981# 249 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
982#endif
983 do i = 1, sys_size
984 do l = is3%beg, is3%end
985 do k = is2%beg, is2%end
986 ql_prim_rsx_vf(k, -1, l, i) = qr_prim_rsx_vf(k, 0, l, i)
987 end do
988 end do
989 end do
990
991# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
992#if defined(MFC_OpenACC)
993# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
994!$acc end parallel loop
995# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
996#elif defined(MFC_OpenMP)
997# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
998
999# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1000!$omp end target teams loop
1001# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1002#endif
1003
1004 if (viscous) then
1005
1006# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1007
1008# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1009#if defined(MFC_OpenACC)
1010# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1011!$acc parallel loop collapse(3) gang vector default(present)
1012# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1013#elif defined(MFC_OpenMP)
1014# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1015
1016# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1017
1018# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1019
1020# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1021!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1022# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1023#endif
1024 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1025 do l = isz%beg, isz%end
1026 do j = isx%beg, isx%end
1027 dql_prim_dx_vf(i)%sf(j, -1, l) = dqr_prim_dx_vf(i)%sf(j, 0, l)
1028 end do
1029 end do
1030 end do
1031
1032# 268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1033#if defined(MFC_OpenACC)
1034# 268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1035!$acc end parallel loop
1036# 268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1037#elif defined(MFC_OpenMP)
1038# 268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1039
1040# 268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1041!$omp end target teams loop
1042# 268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1043#endif
1044
1045
1046# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1047
1048# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1049#if defined(MFC_OpenACC)
1050# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1051!$acc parallel loop collapse(3) gang vector default(present)
1052# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1053#elif defined(MFC_OpenMP)
1054# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1055
1056# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1057
1058# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1059
1060# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1061!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1062# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1063#endif
1064 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1065 do l = isz%beg, isz%end
1066 do j = isx%beg, isx%end
1067 dql_prim_dy_vf(i)%sf(j, -1, l) = dqr_prim_dy_vf(i)%sf(j, 0, l)
1068 end do
1069 end do
1070 end do
1071
1072# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1073#if defined(MFC_OpenACC)
1074# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1075!$acc end parallel loop
1076# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1077#elif defined(MFC_OpenMP)
1078# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1079
1080# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1081!$omp end target teams loop
1082# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1083#endif
1084
1085 if (p > 0) then
1086
1087# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1088
1089# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1090#if defined(MFC_OpenACC)
1091# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1092!$acc parallel loop collapse(3) gang vector default(present)
1093# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1094#elif defined(MFC_OpenMP)
1095# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1096
1097# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1098
1099# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1100
1101# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1102!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1103# 281 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1104#endif
1105 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1106 do l = isz%beg, isz%end
1107 do j = isx%beg, isx%end
1108 dql_prim_dz_vf(i)%sf(j, -1, l) = dqr_prim_dz_vf(i)%sf(j, 0, l)
1109 end do
1110 end do
1111 end do
1112
1113# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1114#if defined(MFC_OpenACC)
1115# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1116!$acc end parallel loop
1117# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1118#elif defined(MFC_OpenMP)
1119# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1120
1121# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1122!$omp end target teams loop
1123# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1124#endif
1125 end if
1126 end if
1127 end if
1128
1129 if (bc_y%end == bc_riemann_extrap) then ! Riemann state extrap. BC at end
1130
1131# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1132
1133# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1134#if defined(MFC_OpenACC)
1135# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1136!$acc parallel loop collapse(3) gang vector default(present)
1137# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1138#elif defined(MFC_OpenMP)
1139# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1140
1141# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1142
1143# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1144
1145# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1146!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1147# 295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1148#endif
1149 do i = 1, sys_size
1150 do l = is3%beg, is3%end
1151 do k = is2%beg, is2%end
1152 qr_prim_rsx_vf(k, n + 1, l, i) = ql_prim_rsx_vf(k, n, l, i)
1153 end do
1154 end do
1155 end do
1156
1157# 303 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1158#if defined(MFC_OpenACC)
1159# 303 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1160!$acc end parallel loop
1161# 303 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1162#elif defined(MFC_OpenMP)
1163# 303 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1164
1165# 303 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1166!$omp end target teams loop
1167# 303 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1168#endif
1169
1170 if (viscous) then
1171
1172# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1173
1174# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1175#if defined(MFC_OpenACC)
1176# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1177!$acc parallel loop collapse(3) gang vector default(present)
1178# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1179#elif defined(MFC_OpenMP)
1180# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1181
1182# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1183
1184# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1185
1186# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1187!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1188# 306 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1189#endif
1190 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1191 do l = isz%beg, isz%end
1192 do j = isx%beg, isx%end
1193 dqr_prim_dx_vf(i)%sf(j, n + 1, l) = dql_prim_dx_vf(i)%sf(j, n, l)
1194 end do
1195 end do
1196 end do
1197
1198# 314 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1199#if defined(MFC_OpenACC)
1200# 314 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1201!$acc end parallel loop
1202# 314 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1203#elif defined(MFC_OpenMP)
1204# 314 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1205
1206# 314 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1207!$omp end target teams loop
1208# 314 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1209#endif
1210
1211
1212# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1213
1214# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1215#if defined(MFC_OpenACC)
1216# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1217!$acc parallel loop collapse(3) gang vector default(present)
1218# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1219#elif defined(MFC_OpenMP)
1220# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1221
1222# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1223
1224# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1225
1226# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1227!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1228# 316 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1229#endif
1230 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1231 do l = isz%beg, isz%end
1232 do j = isx%beg, isx%end
1233 dqr_prim_dy_vf(i)%sf(j, n + 1, l) = dql_prim_dy_vf(i)%sf(j, n, l)
1234 end do
1235 end do
1236 end do
1237
1238# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1239#if defined(MFC_OpenACC)
1240# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1241!$acc end parallel loop
1242# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1243#elif defined(MFC_OpenMP)
1244# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1245
1246# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1247!$omp end target teams loop
1248# 324 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1249#endif
1250
1251 if (p > 0) then
1252
1253# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1254
1255# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1256#if defined(MFC_OpenACC)
1257# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1258!$acc parallel loop collapse(3) gang vector default(present)
1259# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1260#elif defined(MFC_OpenMP)
1261# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1262
1263# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1264
1265# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1266
1267# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1268!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1269# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1270#endif
1271 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1272 do l = isz%beg, isz%end
1273 do j = isx%beg, isx%end
1274 dqr_prim_dz_vf(i)%sf(j, n + 1, l) = dql_prim_dz_vf(i)%sf(j, n, l)
1275 end do
1276 end do
1277 end do
1278
1279# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1280#if defined(MFC_OpenACC)
1281# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1282!$acc end parallel loop
1283# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1284#elif defined(MFC_OpenMP)
1285# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1286
1287# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1288!$omp end target teams loop
1289# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1290#endif
1291 end if
1292 end if
1293 end if
1294 ! END: Population of Buffers in y-direction
1295
1296 ! Population of Buffers in z-direction
1297 else
1298 if (bc_z%beg == bc_riemann_extrap) then ! Riemann state extrap. BC at beginning
1299
1300# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1301
1302# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1303#if defined(MFC_OpenACC)
1304# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1305!$acc parallel loop collapse(3) gang vector default(present)
1306# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1307#elif defined(MFC_OpenMP)
1308# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1309
1310# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1311
1312# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1313
1314# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1315!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1316# 344 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1317#endif
1318 do i = 1, sys_size
1319 do k = is2%beg, is2%end
1320 do l = is3%beg, is3%end
1321 ql_prim_rsx_vf(l, k, -1, i) = qr_prim_rsx_vf(l, k, 0, i)
1322 end do
1323 end do
1324 end do
1325
1326# 352 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1327#if defined(MFC_OpenACC)
1328# 352 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1329!$acc end parallel loop
1330# 352 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1331#elif defined(MFC_OpenMP)
1332# 352 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1333
1334# 352 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1335!$omp end target teams loop
1336# 352 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1337#endif
1338
1339 if (viscous) then
1340
1341# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1342
1343# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1344#if defined(MFC_OpenACC)
1345# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1346!$acc parallel loop collapse(3) gang vector default(present)
1347# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1348#elif defined(MFC_OpenMP)
1349# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1350
1351# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1352
1353# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1354
1355# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1356!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1357# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1358#endif
1359 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1360 do k = isy%beg, isy%end
1361 do j = isx%beg, isx%end
1362 dql_prim_dx_vf(i)%sf(j, k, -1) = dqr_prim_dx_vf(i)%sf(j, k, 0)
1363 end do
1364 end do
1365 end do
1366
1367# 363 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1368#if defined(MFC_OpenACC)
1369# 363 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1370!$acc end parallel loop
1371# 363 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1372#elif defined(MFC_OpenMP)
1373# 363 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1374
1375# 363 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1376!$omp end target teams loop
1377# 363 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1378#endif
1379
1380# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1381
1382# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1383#if defined(MFC_OpenACC)
1384# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1385!$acc parallel loop collapse(3) gang vector default(present)
1386# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1387#elif defined(MFC_OpenMP)
1388# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1389
1390# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1391
1392# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1393
1394# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1395!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1396# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1397#endif
1398 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1399 do k = isy%beg, isy%end
1400 do j = isx%beg, isx%end
1401 dql_prim_dy_vf(i)%sf(j, k, -1) = dqr_prim_dy_vf(i)%sf(j, k, 0)
1402 end do
1403 end do
1404 end do
1405
1406# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1407#if defined(MFC_OpenACC)
1408# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1409!$acc end parallel loop
1410# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1411#elif defined(MFC_OpenMP)
1412# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1413
1414# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1415!$omp end target teams loop
1416# 372 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1417#endif
1418
1419# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1420
1421# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1422#if defined(MFC_OpenACC)
1423# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1424!$acc parallel loop collapse(3) gang vector default(present)
1425# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1426#elif defined(MFC_OpenMP)
1427# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1428
1429# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1430
1431# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1432
1433# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1434!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1435# 373 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1436#endif
1437 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1438 do k = isy%beg, isy%end
1439 do j = isx%beg, isx%end
1440 dql_prim_dz_vf(i)%sf(j, k, -1) = dqr_prim_dz_vf(i)%sf(j, k, 0)
1441 end do
1442 end do
1443 end do
1444
1445# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1446#if defined(MFC_OpenACC)
1447# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1448!$acc end parallel loop
1449# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1450#elif defined(MFC_OpenMP)
1451# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1452
1453# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1454!$omp end target teams loop
1455# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1456#endif
1457 end if
1458 end if
1459
1460 if (bc_z%end == bc_riemann_extrap) then ! Riemann state extrap. BC at end
1461
1462# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1463
1464# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1465#if defined(MFC_OpenACC)
1466# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1467!$acc parallel loop collapse(3) gang vector default(present)
1468# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1469#elif defined(MFC_OpenMP)
1470# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1471
1472# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1473
1474# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1475
1476# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1477!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1478# 386 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1479#endif
1480 do i = 1, sys_size
1481 do k = is2%beg, is2%end
1482 do l = is3%beg, is3%end
1483 qr_prim_rsx_vf(l, k, p + 1, i) = ql_prim_rsx_vf(l, k, p, i)
1484 end do
1485 end do
1486 end do
1487
1488# 394 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1489#if defined(MFC_OpenACC)
1490# 394 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1491!$acc end parallel loop
1492# 394 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1493#elif defined(MFC_OpenMP)
1494# 394 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1495
1496# 394 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1497!$omp end target teams loop
1498# 394 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1499#endif
1500
1501 if (viscous) then
1502
1503# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1504
1505# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1506#if defined(MFC_OpenACC)
1507# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1508!$acc parallel loop collapse(3) gang vector default(present)
1509# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1510#elif defined(MFC_OpenMP)
1511# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1512
1513# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1514
1515# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1516
1517# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1518!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1519# 397 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1520#endif
1521 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1522 do k = isy%beg, isy%end
1523 do j = isx%beg, isx%end
1524 dqr_prim_dx_vf(i)%sf(j, k, p + 1) = dql_prim_dx_vf(i)%sf(j, k, p)
1525 end do
1526 end do
1527 end do
1528
1529# 405 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1530#if defined(MFC_OpenACC)
1531# 405 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1532!$acc end parallel loop
1533# 405 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1534#elif defined(MFC_OpenMP)
1535# 405 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1536
1537# 405 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1538!$omp end target teams loop
1539# 405 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1540#endif
1541
1542
1543# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1544
1545# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1546#if defined(MFC_OpenACC)
1547# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1548!$acc parallel loop collapse(3) gang vector default(present)
1549# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1550#elif defined(MFC_OpenMP)
1551# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1552
1553# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1554
1555# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1556
1557# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1558!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1559# 407 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1560#endif
1561 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1562 do k = isy%beg, isy%end
1563 do j = isx%beg, isx%end
1564 dqr_prim_dy_vf(i)%sf(j, k, p + 1) = dql_prim_dy_vf(i)%sf(j, k, p)
1565 end do
1566 end do
1567 end do
1568
1569# 415 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1570#if defined(MFC_OpenACC)
1571# 415 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1572!$acc end parallel loop
1573# 415 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1574#elif defined(MFC_OpenMP)
1575# 415 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1576
1577# 415 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1578!$omp end target teams loop
1579# 415 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1580#endif
1581
1582
1583# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1584
1585# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1586#if defined(MFC_OpenACC)
1587# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1588!$acc parallel loop collapse(3) gang vector default(present)
1589# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1590#elif defined(MFC_OpenMP)
1591# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1592
1593# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1594
1595# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1596
1597# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1598!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1599# 417 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1600#endif
1601 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1602 do k = isy%beg, isy%end
1603 do j = isx%beg, isx%end
1604 dqr_prim_dz_vf(i)%sf(j, k, p + 1) = dql_prim_dz_vf(i)%sf(j, k, p)
1605 end do
1606 end do
1607 end do
1608
1609# 425 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1610#if defined(MFC_OpenACC)
1611# 425 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1612!$acc end parallel loop
1613# 425 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1614#elif defined(MFC_OpenMP)
1615# 425 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1616
1617# 425 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1618!$omp end target teams loop
1619# 425 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1620#endif
1621 end if
1622 end if
1623 end if
1624 ! END: Population of Buffers in z-direction
1625
1627
1628 !> Set up the chosen Riemann solver algorithm for the current direction
1629 subroutine s_initialize_riemann_solver(flux_src_vf, norm_dir)
1630
1631 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
1632 integer, intent(in) :: norm_dir
1633 integer :: i, j, k, l !< Generic loop iterators
1634
1635 ! Reshaping Inputted Data in x-direction
1636
1637 if (norm_dir == 1) then
1638 if (viscous .or. (surface_tension)) then
1639
1640# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1641
1642# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1643#if defined(MFC_OpenACC)
1644# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1645!$acc parallel loop collapse(4) gang vector default(present)
1646# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1647#elif defined(MFC_OpenMP)
1648# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1649
1650# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1651
1652# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1653
1654# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1655!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1656# 444 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1657#endif
1658 do i = eqn_idx%mom%beg, eqn_idx%E
1659 do l = is3%beg, is3%end
1660 do k = is2%beg, is2%end
1661 do j = is1%beg, is1%end
1662 flux_src_vf(i)%sf(j, k, l) = 0._wp
1663 end do
1664 end do
1665 end do
1666 end do
1667
1668# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1669#if defined(MFC_OpenACC)
1670# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1671!$acc end parallel loop
1672# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1673#elif defined(MFC_OpenMP)
1674# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1675
1676# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1677!$omp end target teams loop
1678# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1679#endif
1680 end if
1681
1682 if (chem_params%diffusion) then
1683
1684# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1685
1686# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1687#if defined(MFC_OpenACC)
1688# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1689!$acc parallel loop collapse(4) gang vector default(present)
1690# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1691#elif defined(MFC_OpenMP)
1692# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1693
1694# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1695
1696# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1697
1698# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1699!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1700# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1701#endif
1702 do i = eqn_idx%E, eqn_idx%species%end
1703 do l = is3%beg, is3%end
1704 do k = is2%beg, is2%end
1705 do j = is1%beg, is1%end
1706 if (i == eqn_idx%E .or. i >= eqn_idx%species%beg) then
1707 flux_src_vf(i)%sf(j, k, l) = 0._wp
1708 end if
1709 end do
1710 end do
1711 end do
1712 end do
1713
1714# 470 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1715#if defined(MFC_OpenACC)
1716# 470 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1717!$acc end parallel loop
1718# 470 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1719#elif defined(MFC_OpenMP)
1720# 470 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1721
1722# 470 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1723!$omp end target teams loop
1724# 470 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1725#endif
1726 end if
1727
1728 if (qbmm) then
1729
1730# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1731
1732# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1733#if defined(MFC_OpenACC)
1734# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1735!$acc parallel loop collapse(4) gang vector default(present)
1736# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1737#elif defined(MFC_OpenMP)
1738# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1739
1740# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1741
1742# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1743
1744# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1745!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1746# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1747#endif
1748 do i = 1, 4
1749 do l = is3%beg, is3%end
1750 do k = is2%beg, is2%end
1751 do j = is1%beg, is1%end + 1
1752 mom_sp_rsx_vf(j, k, l, i) = mom_sp(i)%sf(j, k, l)
1753 end do
1754 end do
1755 end do
1756 end do
1757
1758# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1759#if defined(MFC_OpenACC)
1760# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1761!$acc end parallel loop
1762# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1763#elif defined(MFC_OpenMP)
1764# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1765
1766# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1767!$omp end target teams loop
1768# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1769#endif
1770 end if
1771
1772 ! Reshaping Inputted Data in y-direction
1773 else if (norm_dir == 2) then
1774 if (viscous .or. (surface_tension)) then
1775
1776# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1777
1778# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1779#if defined(MFC_OpenACC)
1780# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1781!$acc parallel loop collapse(4) gang vector default(present)
1782# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1783#elif defined(MFC_OpenMP)
1784# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1785
1786# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1787
1788# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1789
1790# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1791!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1792# 490 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1793#endif
1794 do i = eqn_idx%mom%beg, eqn_idx%E
1795 do l = is3%beg, is3%end
1796 do j = is1%beg, is1%end
1797 do k = is2%beg, is2%end
1798 flux_src_vf(i)%sf(k, j, l) = 0._wp
1799 end do
1800 end do
1801 end do
1802 end do
1803
1804# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1805#if defined(MFC_OpenACC)
1806# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1807!$acc end parallel loop
1808# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1809#elif defined(MFC_OpenMP)
1810# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1811
1812# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1813!$omp end target teams loop
1814# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1815#endif
1816 end if
1817
1818 if (chem_params%diffusion) then
1819
1820# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1821
1822# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1823#if defined(MFC_OpenACC)
1824# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1825!$acc parallel loop collapse(4) gang vector default(present)
1826# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1827#elif defined(MFC_OpenMP)
1828# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1829
1830# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1831
1832# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1833
1834# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1835!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1836# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1837#endif
1838 do i = eqn_idx%E, eqn_idx%species%end
1839 do l = is3%beg, is3%end
1840 do j = is1%beg, is1%end
1841 do k = is2%beg, is2%end
1842 if (i == eqn_idx%E .or. i >= eqn_idx%species%beg) then
1843 flux_src_vf(i)%sf(k, j, l) = 0._wp
1844 end if
1845 end do
1846 end do
1847 end do
1848 end do
1849
1850# 516 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1851#if defined(MFC_OpenACC)
1852# 516 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1853!$acc end parallel loop
1854# 516 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1855#elif defined(MFC_OpenMP)
1856# 516 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1857
1858# 516 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1859!$omp end target teams loop
1860# 516 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1861#endif
1862 end if
1863
1864 if (qbmm) then
1865
1866# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1867
1868# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1869#if defined(MFC_OpenACC)
1870# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1871!$acc parallel loop collapse(4) gang vector default(present)
1872# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1873#elif defined(MFC_OpenMP)
1874# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1875
1876# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1877
1878# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1879
1880# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1881!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1882# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1883#endif
1884 do i = 1, 4
1885 do l = is3%beg, is3%end
1886 do k = is2%beg, is2%end
1887 do j = is1%beg, is1%end + 1
1888 mom_sp_rsx_vf(k, j, l, i) = mom_sp(i)%sf(k, j, l)
1889 end do
1890 end do
1891 end do
1892 end do
1893
1894# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1895#if defined(MFC_OpenACC)
1896# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1897!$acc end parallel loop
1898# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1899#elif defined(MFC_OpenMP)
1900# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1901
1902# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1903!$omp end target teams loop
1904# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1905#endif
1906 end if
1907
1908 ! Reshaping Inputted Data in z-direction
1909 else
1910 if (viscous .or. (surface_tension)) then
1911
1912# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1913
1914# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1915#if defined(MFC_OpenACC)
1916# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1917!$acc parallel loop collapse(4) gang vector default(present)
1918# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1919#elif defined(MFC_OpenMP)
1920# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1921
1922# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1923
1924# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1925
1926# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1927!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1928# 536 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1929#endif
1930 do i = eqn_idx%mom%beg, eqn_idx%E
1931 do j = is1%beg, is1%end
1932 do k = is2%beg, is2%end
1933 do l = is3%beg, is3%end
1934 flux_src_vf(i)%sf(l, k, j) = 0._wp
1935 end do
1936 end do
1937 end do
1938 end do
1939
1940# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1941#if defined(MFC_OpenACC)
1942# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1943!$acc end parallel loop
1944# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1945#elif defined(MFC_OpenMP)
1946# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1947
1948# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1949!$omp end target teams loop
1950# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1951#endif
1952 end if
1953
1954 if (chem_params%diffusion) then
1955
1956# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1957
1958# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1959#if defined(MFC_OpenACC)
1960# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1961!$acc parallel loop collapse(4) gang vector default(present)
1962# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1963#elif defined(MFC_OpenMP)
1964# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1965
1966# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1967
1968# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1969
1970# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1971!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1972# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1973#endif
1974 do i = eqn_idx%E, eqn_idx%species%end
1975 do j = is1%beg, is1%end
1976 do k = is2%beg, is2%end
1977 do l = is3%beg, is3%end
1978 if (i == eqn_idx%E .or. i >= eqn_idx%species%beg) then
1979 flux_src_vf(i)%sf(l, k, j) = 0._wp
1980 end if
1981 end do
1982 end do
1983 end do
1984 end do
1985
1986# 562 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1987#if defined(MFC_OpenACC)
1988# 562 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1989!$acc end parallel loop
1990# 562 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1991#elif defined(MFC_OpenMP)
1992# 562 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1993
1994# 562 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1995!$omp end target teams loop
1996# 562 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1997#endif
1998 end if
1999
2000 if (qbmm) then
2001
2002# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2003
2004# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2005#if defined(MFC_OpenACC)
2006# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2007!$acc parallel loop collapse(4) gang vector default(present)
2008# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2009#elif defined(MFC_OpenMP)
2010# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2011
2012# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2013
2014# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2015
2016# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2017!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2018# 566 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2019#endif
2020 do i = 1, 4
2021 do l = is3%beg, is3%end
2022 do k = is2%beg, is2%end
2023 do j = is1%beg, is1%end + 1
2024 mom_sp_rsx_vf(l, k, j, i) = mom_sp(i)%sf(l, k, j)
2025 end do
2026 end do
2027 end do
2028 end do
2029
2030# 576 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2031#if defined(MFC_OpenACC)
2032# 576 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2033!$acc end parallel loop
2034# 576 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2035#elif defined(MFC_OpenMP)
2036# 576 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2037
2038# 576 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2039!$omp end target teams loop
2040# 576 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2041#endif
2042 end if
2043 end if
2044
2045 end subroutine s_initialize_riemann_solver
2046
2047 !> Compute cylindrical viscous source flux contributions for momentum and energy
2048 subroutine s_compute_cylindrical_viscous_source_flux(velL_vf, dvelL_dx_vf, dvelL_dy_vf, dvelL_dz_vf, velR_vf, dvelR_dx_vf, &
2049 & dvelR_dy_vf, dvelR_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
2050
2051 type(scalar_field), dimension(num_dims), intent(in) :: velL_vf, velR_vf
2052 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dx_vf, dvelR_dx_vf
2053 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dy_vf, dvelR_dy_vf
2054 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dz_vf, dvelR_dz_vf
2055 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
2056 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
2057 integer, intent(in) :: norm_dir
2058 type(int_bounds_info), intent(in) :: ix, iy, iz
2059
2060 ! Local variables
2061
2062# 607 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2063 real(wp), dimension(num_dims) :: avg_v_int !< Averaged interface velocity (\f$v_x, v_y, v_z\f$) (grid directions).
2064 real(wp), dimension(num_dims) :: avg_dvdx_int !< Averaged interface \f$\partial v_i/\partial x\f$ (grid dir 1).
2065 real(wp), dimension(num_dims) :: avg_dvdy_int !< Averaged interface \f$\partial v_i/\partial y\f$ (grid dir 2).
2066 real(wp), dimension(num_dims) :: avg_dvdz_int !< Averaged interface \f$\partial v_i/\partial z\f$ (grid dir 3).
2067 !> Interface velocity (\f$v_1,v_2,v_3\f$) (grid directions) for viscous work.
2068 real(wp), dimension(num_dims) :: vel_src_int
2069 !> Shear stress vector (\f$\sigma_{N1}, \sigma_{N2}, \sigma_{N3}\f$) on N-face (grid directions).
2070 real(wp), dimension(num_dims) :: stress_vector_shear
2071# 616 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2072 real(wp) :: stress_normal_bulk !< Normal bulk stress component \f$\sigma_{NN}\f$ on N-face.
2073 real(wp) :: Re_s, Re_b !< Effective interface shear and bulk Reynolds numbers.
2074 real(wp) :: r_eff !< Effective radius at interface for cylindrical terms.
2075 real(wp) :: div_v_term_const !< Common term \f$-(2/3)(\nabla \cdot \mathbf{v}) / \text{Re}_s\f$ for shear stress diagonal.
2076 real(wp) :: divergence_cyl !< Full divergence \f$\nabla \cdot \mathbf{v}\f$ in cylindrical coordinates.
2077 integer :: j, k, l !< Loop iterators for \f$x, y, z\f$ grid directions.
2078 integer :: i_vel !< Loop iterator for velocity components.
2079 integer :: idx_rp(3) !< Indices \f$(j,k,l)\f$ of 'right' point for averaging.
2080 real(wp) :: gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz
2081 real(wp), dimension(2) :: Re_nn
2082 real(wp), dimension(num_fluids) :: alpha_avg
2083 integer :: fl
2084
2085
2086# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2087
2088# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2089#if defined(MFC_OpenACC)
2090# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2091!$acc parallel loop collapse(3) gang vector default(present) private(idx_rp, avg_v_int, avg_dvdx_int, avg_dvdy_int, avg_dvdz_int, Re_s, Re_b, vel_src_int, r_eff, divergence_cyl, stress_vector_shear, &
2092# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2093!$acc& stress_normal_bulk, div_v_term_const, gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz, Re_nn, alpha_avg, fl)
2094# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2095#elif defined(MFC_OpenMP)
2096# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2097
2098# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2099
2100# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2101
2102# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2103!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(idx_rp, &
2104# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2105!$omp& avg_v_int, avg_dvdx_int, avg_dvdy_int, avg_dvdz_int, Re_s, Re_b, vel_src_int, r_eff, divergence_cyl, stress_vector_shear, stress_normal_bulk, div_v_term_const, gamma_dot, D_xx, D_yy, D_zz, &
2106# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2107!$omp& D_xy, D_xz, D_yz, Re_nn, alpha_avg, fl)
2108# 629 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2109#endif
2110# 632 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2111 do l = iz%beg, iz%end
2112 do k = iy%beg, iy%end
2113 do j = ix%beg, ix%end
2114 ! Determine indices for the 'right' state for averaging across the interface
2115 idx_rp = [j, k, l]
2116 idx_rp(norm_dir) = idx_rp(norm_dir) + 1
2117
2118 ! Average velocities and their derivatives at the interface For cylindrical: x-dir ~ axial (z_cyl), y-dir ~
2119 ! radial (r_cyl), z-dir ~ azimuthal (theta_cyl)
2120
2121# 641 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2122#if defined(MFC_OpenACC)
2123# 641 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2124!$acc loop seq
2125# 641 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2126#elif defined(MFC_OpenMP)
2127# 641 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2128
2129# 641 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2130#endif
2131 do i_vel = 1, num_dims
2132 avg_v_int(i_vel) = 0.5_wp*(vell_vf(i_vel)%sf(j, k, l) + velr_vf(i_vel)%sf(idx_rp(1), idx_rp(2), idx_rp(3)))
2133
2134 avg_dvdx_int(i_vel) = 0.5_wp*(dvell_dx_vf(i_vel)%sf(j, k, l) + dvelr_dx_vf(i_vel)%sf(idx_rp(1), &
2135 & idx_rp(2), idx_rp(3)))
2136 if (num_dims > 1) then
2137 avg_dvdy_int(i_vel) = 0.5_wp*(dvell_dy_vf(i_vel)%sf(j, k, l) + dvelr_dy_vf(i_vel)%sf(idx_rp(1), &
2138 & idx_rp(2), idx_rp(3)))
2139 else
2140 avg_dvdy_int(i_vel) = 0.0_wp
2141 end if
2142 if (num_dims > 2) then
2143 avg_dvdz_int(i_vel) = 0.5_wp*(dvell_dz_vf(i_vel)%sf(j, k, l) + dvelr_dz_vf(i_vel)%sf(idx_rp(1), &
2144 & idx_rp(2), idx_rp(3)))
2145 else
2146 avg_dvdz_int(i_vel) = 0.0_wp
2147 end if
2148 end do
2149
2150 ! Non-Newtonian effective shear rate from grid-direction strain components.
2151 ! NOTE: curvature corrections to gamma_dot (e.g. hoop strain) are not included
2152 ! here - a documented first-version limitation. The Reynolds override and the
2153 ! Newtonian path below are exact.
2154 if (any_non_newtonian) then
2155 d_xx = avg_dvdx_int(1); d_yy = 0._wp; d_zz = 0._wp
2156 d_xy = 0._wp; d_xz = 0._wp; d_yz = 0._wp
2157# 669 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2158 if (num_dims > 1) then
2159 d_yy = avg_dvdy_int(2)
2160 d_xy = 0.5_wp*(avg_dvdy_int(1) + avg_dvdx_int(2))
2161 end if
2162# 674 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2163# 675 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2164 if (num_dims > 2) then
2165 d_zz = avg_dvdz_int(3)
2166 d_xz = 0.5_wp*(avg_dvdz_int(1) + avg_dvdx_int(3))
2167 d_yz = 0.5_wp*(avg_dvdz_int(2) + avg_dvdy_int(3))
2168 end if
2169# 681 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2170 gamma_dot = f_compute_shear_rate_from_components(d_xx, d_yy, d_zz, d_xy, d_xz, d_yz)
2171 do fl = 1, num_fluids
2172 alpha_avg(fl) = 0.5_wp*(q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(j, k, &
2173 & l) + q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(idx_rp(1), idx_rp(2), idx_rp(3)))
2174 ! Raw cell-centered alphas can under/overshoot near interfaces; clamp to [0,1]
2175 alpha_avg(fl) = min(max(alpha_avg(fl), 0._wp), 1._wp)
2176 end do
2177 call s_compute_mixture_inv_re(alpha_avg, gamma_dot, res_gs, re_nn)
2178 end if
2179
2180 ! Get Re numbers and interface velocity for viscous work
2181 select case (norm_dir)
2182 case (1) ! x-face (axial face in z_cyl direction)
2183 if (any_non_newtonian) then
2184 re_s = re_nn(1)
2185 re_b = re_nn(2)
2186 else
2187 re_s = re_avg_rsx_vf(j, k, l, 1)
2188 re_b = re_avg_rsx_vf(j, k, l, 2)
2189 end if
2190 vel_src_int = vel_src_rsx_vf(j, k, l,1:num_dims)
2191 r_eff = y_cc(k)
2192 case (2) ! y-face (radial face in r_cyl direction)
2193 if (any_non_newtonian) then
2194 re_s = re_nn(1)
2195 re_b = re_nn(2)
2196 else
2197 re_s = re_avg_rsx_vf(j, k, l, 1)
2198 re_b = re_avg_rsx_vf(j, k, l, 2)
2199 end if
2200 vel_src_int = vel_src_rsx_vf(j, k, l,1:num_dims)
2201 r_eff = y_cb(k)
2202 case (3) ! z-face (azimuthal face in theta_cyl direction)
2203 if (any_non_newtonian) then
2204 re_s = re_nn(1)
2205 re_b = re_nn(2)
2206 else
2207 re_s = re_avg_rsx_vf(j, k, l, 1)
2208 re_b = re_avg_rsx_vf(j, k, l, 2)
2209 end if
2210 vel_src_int = vel_src_rsx_vf(j, k, l,1:num_dims)
2211 r_eff = y_cc(k)
2212 end select
2213
2214 ! Divergence in cylindrical coordinates (vx=vz_cyl, vy=vr_cyl, vz=vtheta_cyl)
2215# 727 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2216 divergence_cyl = avg_dvdx_int(1) + avg_dvdy_int(2) + avg_v_int(2)/r_eff
2217 if (num_dims > 2) then
2218# 730 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2219 divergence_cyl = divergence_cyl + avg_dvdz_int(3)/r_eff
2220# 732 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2221 end if
2222# 734 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2223
2224 stress_vector_shear = 0.0_wp
2225 stress_normal_bulk = 0.0_wp
2226
2227 if (shear_stress) then
2228 div_v_term_const = -(2.0_wp/3.0_wp)*divergence_cyl/re_s
2229
2230 select case (norm_dir)
2231 case (1) ! X-face (axial normal, z_cyl)
2232 stress_vector_shear(1) = (2.0_wp*avg_dvdx_int(1))/re_s + div_v_term_const
2233 if (num_dims > 1) then
2234# 746 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2235 stress_vector_shear(2) = (avg_dvdy_int(1) + avg_dvdx_int(2))/re_s
2236# 748 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2237 end if
2238 if (num_dims > 2) then
2239# 751 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2240 stress_vector_shear(3) = (avg_dvdz_int(1)/r_eff + avg_dvdx_int(3))/re_s
2241# 753 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2242 end if
2243 case (2) ! Y-face (radial normal, r_cyl)
2244 if (num_dims > 1) then
2245# 757 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2246 stress_vector_shear(1) = (avg_dvdy_int(1) + avg_dvdx_int(2))/re_s
2247 stress_vector_shear(2) = (2.0_wp*avg_dvdy_int(2))/re_s + div_v_term_const
2248 if (num_dims > 2) then
2249# 761 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2250 stress_vector_shear(3) = (avg_dvdz_int(2)/r_eff - avg_v_int(3)/r_eff + avg_dvdy_int(3) &
2251 & )/re_s
2252# 764 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2253 end if
2254# 766 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2255 else
2256 stress_vector_shear(1) = (2.0_wp*avg_dvdx_int(1))/re_s + div_v_term_const
2257 end if
2258 case (3) ! Z-face (azimuthal normal, theta_cyl)
2259 if (num_dims > 2) then
2260# 772 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2261 stress_vector_shear(1) = (avg_dvdz_int(1)/r_eff + avg_dvdx_int(3))/re_s
2262 stress_vector_shear(2) = (avg_dvdz_int(2)/r_eff - avg_v_int(3)/r_eff + avg_dvdy_int(3))/re_s
2263 stress_vector_shear(3) = (2.0_wp*(avg_dvdz_int(3)/r_eff + avg_v_int(2)/r_eff))/re_s &
2264 & + div_v_term_const
2265# 777 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2266 end if
2267 end select
2268
2269
2270# 780 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2271#if defined(MFC_OpenACC)
2272# 780 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2273!$acc loop seq
2274# 780 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2275#elif defined(MFC_OpenMP)
2276# 780 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2277
2278# 780 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2279#endif
2280 do i_vel = 1, num_dims
2281 flux_src_vf(eqn_idx%mom%beg + i_vel - 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + i_vel - 1)%sf(j, &
2282 & k, l) - stress_vector_shear(i_vel)
2283 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2284 & l) - vel_src_int(i_vel)*stress_vector_shear(i_vel)
2285 end do
2286 end if
2287
2288 if (bulk_stress) then
2289 stress_normal_bulk = divergence_cyl/re_b
2290
2291 flux_src_vf(eqn_idx%mom%beg + norm_dir - 1)%sf(j, k, &
2292 & l) = flux_src_vf(eqn_idx%mom%beg + norm_dir - 1)%sf(j, k, l) - stress_normal_bulk
2293 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2294 & l) - vel_src_int(norm_dir)*stress_normal_bulk
2295 end if
2296 end do
2297 end do
2298 end do
2299
2300# 800 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2301#if defined(MFC_OpenACC)
2302# 800 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2303!$acc end parallel loop
2304# 800 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2305#elif defined(MFC_OpenMP)
2306# 800 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2307
2308# 800 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2309!$omp end target teams loop
2310# 800 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2311#endif
2312
2314
2315 !> Compute Cartesian viscous source flux contributions for momentum and energy
2316 subroutine s_compute_cartesian_viscous_source_flux(dvelL_dx_vf, dvelL_dy_vf, dvelL_dz_vf, dvelR_dx_vf, dvelR_dy_vf, &
2317 & dvelR_dz_vf, flux_src_vf, q_prim_vf, norm_dir)
2318
2319 ! Arguments
2320 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dx_vf, dvelR_dx_vf
2321 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dy_vf, dvelR_dy_vf
2322 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dz_vf, dvelR_dz_vf
2323 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
2324 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
2325 integer, intent(in) :: norm_dir
2326
2327 ! Local variables
2328
2329# 824 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2330 real(wp), dimension(num_dims, num_dims) :: vel_grad_avg !< Averaged velocity gradient tensor `d(vel_i)/d(coord_j)`.
2331 real(wp), dimension(num_dims, num_dims) :: current_tau_shear !< Current shear stress tensor.
2332 real(wp), dimension(num_dims, num_dims) :: current_tau_bulk !< Current bulk stress tensor.
2333 real(wp), dimension(num_dims) :: vel_src_at_interface !< Interface velocities (u,v,w) for viscous work.
2334# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2335 integer, dimension(3) :: idx_right_phys !< Physical (j,k,l) indices for right state.
2336 real(wp) :: Re_shear !< Interface shear Reynolds number.
2337 real(wp) :: Re_bulk !< Interface bulk Reynolds number.
2338 integer :: j_loop !< Physical x-index loop iterator.
2339 integer :: k_loop !< Physical y-index loop iterator.
2340 integer :: l_loop !< Physical z-index loop iterator.
2341 integer :: i_dim !< Generic dimension/component iterator.
2342 integer :: vel_comp_idx !< Velocity component iterator (1=u, 2=v, 3=w).
2343 real(wp) :: divergence_v !< Velocity divergence at interface.
2344 real(wp) :: gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz
2345 real(wp), dimension(2) :: Re_nn
2346 real(wp), dimension(num_fluids) :: alpha_avg
2347 integer :: fl
2348
2349
2350# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2351
2352# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2353#if defined(MFC_OpenACC)
2354# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2355!$acc parallel loop collapse(3) gang vector default(present) private(idx_right_phys, vel_grad_avg, current_tau_shear, current_tau_bulk, vel_src_at_interface, Re_shear, Re_bulk, divergence_v, i_dim, &
2356# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2357!$acc& vel_comp_idx, gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz, Re_nn, alpha_avg, fl)
2358# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2359#elif defined(MFC_OpenMP)
2360# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2361
2362# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2363
2364# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2365
2366# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2367!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(idx_right_phys, &
2368# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2369!$omp& vel_grad_avg, current_tau_shear, current_tau_bulk, vel_src_at_interface, Re_shear, Re_bulk, divergence_v, i_dim, vel_comp_idx, gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz, Re_nn, alpha_avg, &
2370# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2371!$omp& fl)
2372# 843 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2373#endif
2374# 846 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2375 do l_loop = isz%beg, isz%end
2376 do k_loop = isy%beg, isy%end
2377 do j_loop = isx%beg, isx%end
2378 idx_right_phys(1) = j_loop
2379 idx_right_phys(2) = k_loop
2380 idx_right_phys(3) = l_loop
2381 idx_right_phys(norm_dir) = idx_right_phys(norm_dir) + 1
2382
2383 vel_grad_avg = 0.0_wp
2384 do vel_comp_idx = 1, num_dims
2385 vel_grad_avg(vel_comp_idx, 1) = 0.5_wp*(dvell_dx_vf(vel_comp_idx)%sf(j_loop, k_loop, &
2386 & l_loop) + dvelr_dx_vf(vel_comp_idx)%sf(idx_right_phys(1), idx_right_phys(2), &
2387 & idx_right_phys(3)))
2388 if (num_dims > 1) then
2389# 861 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2390 vel_grad_avg(vel_comp_idx, 2) = 0.5_wp*(dvell_dy_vf(vel_comp_idx)%sf(j_loop, k_loop, &
2391 & l_loop) + dvelr_dy_vf(vel_comp_idx)%sf(idx_right_phys(1), idx_right_phys(2), &
2392 & idx_right_phys(3)))
2393# 865 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2394 end if
2395 if (num_dims > 2) then
2396# 868 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2397 vel_grad_avg(vel_comp_idx, 3) = 0.5_wp*(dvell_dz_vf(vel_comp_idx)%sf(j_loop, k_loop, &
2398 & l_loop) + dvelr_dz_vf(vel_comp_idx)%sf(idx_right_phys(1), idx_right_phys(2), &
2399 & idx_right_phys(3)))
2400# 872 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2401 end if
2402 end do
2403
2404 if (any_non_newtonian) then
2405 d_xx = vel_grad_avg(1, 1); d_yy = 0._wp; d_zz = 0._wp
2406 d_xy = 0._wp; d_xz = 0._wp; d_yz = 0._wp
2407# 879 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2408 if (num_dims > 1) then
2409 d_yy = vel_grad_avg(2, 2)
2410 d_xy = 0.5_wp*(vel_grad_avg(1, 2) + vel_grad_avg(2, 1))
2411 end if
2412# 884 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2413# 885 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2414 if (num_dims > 2) then
2415 d_zz = vel_grad_avg(3, 3)
2416 d_xz = 0.5_wp*(vel_grad_avg(1, 3) + vel_grad_avg(3, 1))
2417 d_yz = 0.5_wp*(vel_grad_avg(2, 3) + vel_grad_avg(3, 2))
2418 end if
2419# 891 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2420 gamma_dot = f_compute_shear_rate_from_components(d_xx, d_yy, d_zz, d_xy, d_xz, d_yz)
2421 do fl = 1, num_fluids
2422 alpha_avg(fl) = 0.5_wp*(q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(j_loop, k_loop, &
2423 & l_loop) + q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(idx_right_phys(1), idx_right_phys(2), &
2424 & idx_right_phys(3)))
2425 ! Raw cell-centered alphas can under/overshoot near interfaces; clamp to [0,1]
2426 alpha_avg(fl) = min(max(alpha_avg(fl), 0._wp), 1._wp)
2427 end do
2428 call s_compute_mixture_inv_re(alpha_avg, gamma_dot, res_gs, re_nn)
2429 end if
2430
2431 divergence_v = 0.0_wp
2432 do i_dim = 1, num_dims
2433 divergence_v = divergence_v + vel_grad_avg(i_dim, i_dim)
2434 end do
2435
2436 vel_src_at_interface = 0.0_wp
2437 if (norm_dir == 1) then
2438 if (any_non_newtonian) then
2439 re_shear = re_nn(1)
2440 re_bulk = re_nn(2)
2441 else
2442 re_shear = re_avg_rsx_vf(j_loop, k_loop, l_loop, 1)
2443 re_bulk = re_avg_rsx_vf(j_loop, k_loop, l_loop, 2)
2444 end if
2445 do i_dim = 1, num_dims
2446 vel_src_at_interface(i_dim) = vel_src_rsx_vf(j_loop, k_loop, l_loop, i_dim)
2447 end do
2448 else if (norm_dir == 2) then
2449 if (any_non_newtonian) then
2450 re_shear = re_nn(1)
2451 re_bulk = re_nn(2)
2452 else
2453 re_shear = re_avg_rsx_vf(j_loop, k_loop, l_loop, 1)
2454 re_bulk = re_avg_rsx_vf(j_loop, k_loop, l_loop, 2)
2455 end if
2456 do i_dim = 1, num_dims
2457 vel_src_at_interface(i_dim) = vel_src_rsx_vf(j_loop, k_loop, l_loop, i_dim)
2458 end do
2459 else
2460 if (any_non_newtonian) then
2461 re_shear = re_nn(1)
2462 re_bulk = re_nn(2)
2463 else
2464 re_shear = re_avg_rsx_vf(j_loop, k_loop, l_loop, 1)
2465 re_bulk = re_avg_rsx_vf(j_loop, k_loop, l_loop, 2)
2466 end if
2467 do i_dim = 1, num_dims
2468 vel_src_at_interface(i_dim) = vel_src_rsx_vf(j_loop, k_loop, l_loop, i_dim)
2469 end do
2470 end if
2471
2472 if (shear_stress) then
2473 ! current_tau_shear = 0.0_wp
2474 call s_calculate_shear_stress_tensor(vel_grad_avg, re_shear, divergence_v, current_tau_shear)
2475
2476 do i_dim = 1, num_dims
2477 flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2478 & l_loop) = flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2479 & l_loop) - current_tau_shear(norm_dir, i_dim)
2480
2481 flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, l_loop) = flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, &
2482 & l_loop) - vel_src_at_interface(i_dim)*current_tau_shear(norm_dir, i_dim)
2483 end do
2484 end if
2485
2486 if (bulk_stress) then
2487 ! current_tau_bulk = 0.0_wp
2488 call s_calculate_bulk_stress_tensor(re_bulk, divergence_v, current_tau_bulk)
2489
2490 do i_dim = 1, num_dims
2491 flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2492 & l_loop) = flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2493 & l_loop) - current_tau_bulk(norm_dir, i_dim)
2494
2495 flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, l_loop) = flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, &
2496 & l_loop) - vel_src_at_interface(i_dim)*current_tau_bulk(norm_dir, i_dim)
2497 end do
2498 end if
2499 end do
2500 end do
2501 end do
2502
2503# 973 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2504#if defined(MFC_OpenACC)
2505# 973 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2506!$acc end parallel loop
2507# 973 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2508#elif defined(MFC_OpenMP)
2509# 973 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2510
2511# 973 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2512!$omp end target teams loop
2513# 973 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2514#endif
2515
2517
2518 !> Compute shear stress tensor components
2519 subroutine s_calculate_shear_stress_tensor(vel_grad_avg, Re_shear, divergence_v, tau_shear_out)
2520
2521
2522# 980 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2523#if MFC_OpenACC
2524# 980 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2525!$acc routine seq
2526# 980 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2527#elif MFC_OpenMP
2528# 980 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2529
2530# 980 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2531
2532# 980 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2533!$omp declare target device_type(any)
2534# 980 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2535#endif
2536
2537 ! Arguments
2538# 987 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2539 real(wp), dimension(num_dims, num_dims), intent(in) :: vel_grad_avg
2540 real(wp), dimension(num_dims, num_dims), intent(out) :: tau_shear_out
2541# 990 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2542 real(wp), intent(in) :: Re_shear
2543 real(wp), intent(in) :: divergence_v
2544
2545 ! Local variables
2546 integer :: i_dim !< Loop iterator for face normal.
2547 integer :: j_dim !< Loop iterator for force component direction.
2548 tau_shear_out = 0.0_wp
2549
2550 do i_dim = 1, num_dims
2551 do j_dim = 1, num_dims
2552 tau_shear_out(i_dim, j_dim) = (vel_grad_avg(j_dim, i_dim) + vel_grad_avg(i_dim, j_dim))/re_shear
2553 if (i_dim == j_dim) then
2554 tau_shear_out(i_dim, j_dim) = tau_shear_out(i_dim, j_dim) - (2.0_wp/3.0_wp)*divergence_v/re_shear
2555 end if
2556 end do
2557 end do
2558
2559 end subroutine s_calculate_shear_stress_tensor
2560
2561 !> Compute bulk stress tensor components (diagonal only)
2562 subroutine s_calculate_bulk_stress_tensor(Re_bulk, divergence_v, tau_bulk_out)
2563
2564
2565# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2566#if MFC_OpenACC
2567# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2568!$acc routine seq
2569# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2570#elif MFC_OpenMP
2571# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2572
2573# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2574
2575# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2576!$omp declare target device_type(any)
2577# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2578#endif
2579
2580 ! Arguments
2581 real(wp), intent(in) :: Re_bulk
2582 real(wp), intent(in) :: divergence_v
2583# 1020 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2584 real(wp), dimension(num_dims, num_dims), intent(out) :: tau_bulk_out
2585# 1022 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2586
2587 ! Local variables
2588 integer :: i_dim !< Loop iterator for diagonal components.
2589 tau_bulk_out = 0.0_wp
2590
2591 do i_dim = 1, num_dims
2592 tau_bulk_out(i_dim, i_dim) = divergence_v/re_bulk
2593 end do
2594
2595 end subroutine s_calculate_bulk_stress_tensor
2596
2597 !> Accumulate the mixture density, specific heat ratio function, liquid stiffness function, and internal energy reference of one
2598 !! Riemann state from its partial densities and volume fractions. The number of fluids is an explicit argument because the
2599 !! 5-equation bubble model accumulates over num_fluids - 1 fluids.
2600 subroutine s_accumulate_mixture_properties(nf, alpha_rho_K, alpha_K, rho_K, gamma_K, pi_inf_K, qv_K)
2601
2602
2603# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2604#ifdef _CRAYFTN
2605# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2606#if MFC_OpenACC
2607# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2608!$acc routine seq
2609# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2610#elif MFC_OpenMP
2611# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2612
2613# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2614
2615# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2616!$omp declare target device_type(any)
2617# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2618#else
2619# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2620!DIR$ INLINEALWAYS s_accumulate_mixture_properties
2621# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2622#endif
2623# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2624#elif MFC_OpenACC
2625# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2626!$acc routine seq
2627# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2628#elif MFC_OpenMP
2629# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2630
2631# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2632
2633# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2634!$omp declare target device_type(any)
2635# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2636#endif
2637
2638 integer, intent(in) :: nf !< Number of fluids to accumulate over
2639 real(wp), dimension(nf), intent(in) :: alpha_rho_K, alpha_K
2640 real(wp), intent(out) :: rho_K, gamma_K, pi_inf_K, qv_K
2641 integer :: i !< Loop iterator over fluids
2642
2643 rho_k = 0._wp
2644 gamma_k = 0._wp
2645 pi_inf_k = 0._wp
2646 qv_k = 0._wp
2647
2648
2649# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2650#if defined(MFC_OpenACC)
2651# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2652!$acc loop seq
2653# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2654#elif defined(MFC_OpenMP)
2655# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2656
2657# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2658#endif
2659 do i = 1, nf
2660 rho_k = rho_k + alpha_rho_k(i)
2661 gamma_k = gamma_k + alpha_k(i)*gammas(i)
2662 pi_inf_k = pi_inf_k + alpha_k(i)*pi_infs(i)
2663 qv_k = qv_k + alpha_rho_k(i)*qvs(i)
2664 end do
2665
2666 end subroutine s_accumulate_mixture_properties
2667
2668 !> Compute the shear and volume Reynolds numbers of one Riemann state by inverse-weighting the fluid Reynolds numbers with the
2669 !! volume fractions.
2670 subroutine s_compute_interface_reynolds(alpha_K, Re_K, Re_size_loc1, Re_size_loc2)
2671
2672
2673# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2674#ifdef _CRAYFTN
2675# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2676#if MFC_OpenACC
2677# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2678!$acc routine seq
2679# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2680#elif MFC_OpenMP
2681# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2682
2683# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2684
2685# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2686!$omp declare target device_type(any)
2687# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2688#else
2689# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2690!DIR$ INLINEALWAYS s_compute_interface_reynolds
2691# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2692#endif
2693# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2694#elif MFC_OpenACC
2695# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2696!$acc routine seq
2697# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2698#elif MFC_OpenMP
2699# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2700
2701# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2702
2703# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2704!$omp declare target device_type(any)
2705# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2706#endif
2707
2708# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2709 real(wp), dimension(num_fluids), intent(in) :: alpha_K
2710# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2711 real(wp), dimension(2), intent(out) :: Re_K
2712 !> host copies of Re_size; amdflang reads the declare-target original stale cross-TU
2713 integer, intent(in) :: Re_size_loc1, Re_size_loc2
2714 integer :: i, q !< Loop iterators
2715
2716
2717# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2718#if defined(MFC_OpenACC)
2719# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2720!$acc loop seq
2721# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2722#elif defined(MFC_OpenMP)
2723# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2724
2725# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2726#endif
2727 do i = 1, 2
2728 re_k(i) = dflt_real
2729
2730 if (merge(re_size_loc1, re_size_loc2, i == 1) > 0) re_k(i) = 0._wp
2731
2732
2733# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2734#if defined(MFC_OpenACC)
2735# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2736!$acc loop seq
2737# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2738#elif defined(MFC_OpenMP)
2739# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2740
2741# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2742#endif
2743 do q = 1, merge(re_size_loc1, re_size_loc2, i == 1)
2744 re_k(i) = alpha_k(re_idx(i, q))/res_gs(i, q) + re_k(i)
2745 end do
2746
2747 re_k(i) = 1._wp/max(re_k(i), sgm_eps)
2748 end do
2749
2750 end subroutine s_compute_interface_reynolds
2751
2752 !> Accumulate the hypoelastic stress contribution to the energies of the left and right Riemann states: mix the shear modulus
2753 !! over the fluids, scale it by the continuum damage state when damage is modeled, and add the elastic energy of each stress
2754 !! component (doubled for the shear components) on each side whose mixture modulus is non-negligible. The elastic shear stresses
2755 !! are loaded from the state buffers by the caller, which reuses them for the stress fluxes and elastic wave speeds. The G >
2756 !! verysmall per-side gate is a deliberate maintainer ruling that replaces HLL's former hard-coded G > 1000 stability floor,
2757 !! retiring its "TODO take out if statement if stable without".
2758 subroutine s_compute_hypoelastic_interface_energy(nf, alpha_L, alpha_R, damage_L, damage_R, tau_e_L, tau_e_R, G_L, G_R, E_L, &
2759 & E_R)
2760
2761
2762# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2763#ifdef _CRAYFTN
2764# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2765#if MFC_OpenACC
2766# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2767!$acc routine seq
2768# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2769#elif MFC_OpenMP
2770# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2771
2772# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2773
2774# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2775!$omp declare target device_type(any)
2776# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2777#else
2778# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2779!DIR$ INLINEALWAYS s_compute_hypoelastic_interface_energy
2780# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2781#endif
2782# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2783#elif MFC_OpenACC
2784# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2785!$acc routine seq
2786# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2787#elif MFC_OpenMP
2788# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2789
2790# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2791
2792# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2793!$omp declare target device_type(any)
2794# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2795#endif
2796
2797 integer, intent(in) :: nf !< Number of fluids to mix the shear modulus over
2798 real(wp), dimension(nf), intent(in) :: alpha_L, alpha_R !< Left and right volume fractions
2799 real(wp), intent(in) :: damage_L, damage_R !< Continuum damage states (referenced only when cont_damage)
2800 real(wp), dimension(6), intent(in) :: tau_e_L, tau_e_R !< Left and right elastic shear stresses
2801 real(wp), intent(out) :: G_L, G_R !< Left and right mixture shear moduli
2802 real(wp), intent(inout) :: E_L, E_R !< Left and right state energies
2803 integer :: i !< Loop iterator
2804
2805 g_l = 0._wp; g_r = 0._wp
2806
2807
2808# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2809#if defined(MFC_OpenACC)
2810# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2811!$acc loop seq
2812# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2813#elif defined(MFC_OpenMP)
2814# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2815
2816# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2817#endif
2818 do i = 1, nf
2819 g_l = g_l + alpha_l(i)*gs_rs(i)
2820 g_r = g_r + alpha_r(i)*gs_rs(i)
2821 end do
2822
2823 if (cont_damage) then
2824 g_l = g_l*max((1._wp - damage_l), 0._wp)
2825 g_r = g_r*max((1._wp - damage_r), 0._wp)
2826 end if
2827
2828
2829# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2830#if defined(MFC_OpenACC)
2831# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2832!$acc loop seq
2833# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2834#elif defined(MFC_OpenMP)
2835# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2836
2837# 1124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2838#endif
2839 do i = 1, eqn_idx%stress%end - eqn_idx%stress%beg + 1
2840 ! Elastic contribution to energy if G large enough
2841 if (g_l > verysmall) then
2842 e_l = e_l + (tau_e_l(i)*tau_e_l(i))/(4._wp*g_l)
2843 ! Double for shear stresses
2844 if (any(eqn_idx%stress%beg - 1 + i == shear_indices)) then
2845 e_l = e_l + (tau_e_l(i)*tau_e_l(i))/(4._wp*g_l)
2846 end if
2847 end if
2848 if (g_r > verysmall) then
2849 e_r = e_r + (tau_e_r(i)*tau_e_r(i))/(4._wp*g_r)
2850 ! Double for shear stresses
2851 if (any(eqn_idx%stress%beg - 1 + i == shear_indices)) then
2852 e_r = e_r + (tau_e_r(i)*tau_e_r(i))/(4._wp*g_r)
2853 end if
2854 end if
2855 end do
2856
2858
2859 !> Compute the advective part of the HLLC star-state momentum flux in the wave-normal direction (pressure excluded), used to
2860 !! assemble the geometrical source flux of the cylindrical and azimuthal sweeps.
2861 function f_compute_hllc_star_momentum_flux(rho_L, rho_R, vel_L_norm, vel_R_norm, s_M, s_P, s_S, xi_L, xi_R, xi_M, xi_P, &
2862 & dir_flg_norm) result(flux_mom)
2863
2864
2865# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2866#ifdef _CRAYFTN
2867# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2868#if MFC_OpenACC
2869# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2870!$acc routine seq
2871# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2872#elif MFC_OpenMP
2873# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2874
2875# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2876
2877# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2878!$omp declare target device_type(any)
2879# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2880#else
2881# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2882!DIR$ INLINEALWAYS f_compute_hllc_star_momentum_flux
2883# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2884#endif
2885# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2886#elif MFC_OpenACC
2887# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2888!$acc routine seq
2889# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2890#elif MFC_OpenMP
2891# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2892
2893# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2894
2895# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2896!$omp declare target device_type(any)
2897# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2898#endif
2899
2900 real(wp), intent(in) :: rho_l, rho_r !< Left and right densities
2901 real(wp), intent(in) :: vel_l_norm, vel_r_norm !< Left and right wave-normal velocities
2902 real(wp), intent(in) :: s_m, s_p, s_s !< Clamped left/right and contact wave speeds
2903 real(wp), intent(in) :: xi_l, xi_r, xi_m, xi_p !< Star-state compression factors and upwind selectors
2904 real(wp), intent(in) :: dir_flg_norm !< Direction flag of the wave-normal direction
2905 real(wp) :: flux_mom
2906
2907 flux_mom = xi_m*(rho_l*(vel_l_norm*vel_l_norm + s_m*(xi_l*(dir_flg_norm*s_s + (1._wp - dir_flg_norm)*vel_l_norm) &
2908 & - vel_l_norm))) + xi_p*(rho_r*(vel_r_norm*vel_r_norm + s_p*(xi_r*(dir_flg_norm*s_s + (1._wp &
2909 & - dir_flg_norm)*vel_r_norm) - vel_r_norm)))
2910
2912
2913 !> Reshape and copy the Riemann-solver flux buffers back to the physical-space output arrays for the selected sweep direction,
2914 !! finalizing the Riemann solve. Two variants are emitted from one template so the shared unpermute logic cannot drift apart:
2915 !! the plain routine also copies the advection flux_src set and the grid_geometry==3 z-sweep geometric source flux, while the
2916 !! _hatR variant unpermutes the hat_R-anchored flux_hatR_rs* set of the fused dual-pass HLLD solve (called between the two RHS
2917 !! assemblies) and is a strict subset: flux_src is anchor-independent (already finalized with the hat_L set) and its geometric
2918 !! source flux only exists for the axisymmetric y-sweep.
2919# 1172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2920# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2921# 1174 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2922 subroutine s_finalize_riemann_solver(flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir)
2923
2924 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
2925
2926# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2927 integer, intent(in) :: norm_dir
2928 integer :: i, j, k, l !< Generic loop iterators
2929 ! Reshaping Outputted Data in y-direction
2930
2931 if (norm_dir == 2) then
2932
2933# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2934
2935# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2936#if defined(MFC_OpenACC)
2937# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2938!$acc parallel loop collapse(4) gang vector default(present)
2939# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2940#elif defined(MFC_OpenMP)
2941# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2942
2943# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2944
2945# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2946
2947# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2948!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2949# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2950#endif
2951 do i = 1, sys_size
2952 do l = is3%beg, is3%end
2953 do j = is1%beg, is1%end
2954 do k = is2%beg, is2%end
2955 flux_vf(i)%sf(k, j, l) = flux_rsx_vf(k, j, l, i)
2956 end do
2957 end do
2958 end do
2959 end do
2960
2961# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2962#if defined(MFC_OpenACC)
2963# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2964!$acc end parallel loop
2965# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2966#elif defined(MFC_OpenMP)
2967# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2968
2969# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2970!$omp end target teams loop
2971# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2972#endif
2973
2974 if (cyl_coord) then
2975
2976# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2977
2978# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2979#if defined(MFC_OpenACC)
2980# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2981!$acc parallel loop collapse(4) gang vector default(present)
2982# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2983#elif defined(MFC_OpenMP)
2984# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2985
2986# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2987
2988# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2989
2990# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2991!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2992# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2993#endif
2994 do i = 1, sys_size
2995 do l = is3%beg, is3%end
2996 do j = is1%beg, is1%end
2997 do k = is2%beg, is2%end
2998 flux_gsrc_vf(i)%sf(k, j, l) = flux_gsrc_rsx_vf(k, j, l, i)
2999 end do
3000 end do
3001 end do
3002 end do
3003
3004# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3005#if defined(MFC_OpenACC)
3006# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3007!$acc end parallel loop
3008# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3009#elif defined(MFC_OpenMP)
3010# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3011
3012# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3013!$omp end target teams loop
3014# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3015#endif
3016 end if
3017
3018# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3019
3020# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3021
3022# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3023#if defined(MFC_OpenACC)
3024# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3025!$acc parallel loop collapse(3) gang vector default(present)
3026# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3027#elif defined(MFC_OpenMP)
3028# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3029
3030# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3031
3032# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3033
3034# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3035!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3036# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3037#endif
3038 do l = is3%beg, is3%end
3039 do j = is1%beg, is1%end
3040 do k = is2%beg, is2%end
3041 flux_src_vf(eqn_idx%adv%beg)%sf(k, j, l) = flux_src_rsx_vf(k, j, l, eqn_idx%adv%beg)
3042 end do
3043 end do
3044 end do
3045
3046# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3047#if defined(MFC_OpenACC)
3048# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3049!$acc end parallel loop
3050# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3051#elif defined(MFC_OpenMP)
3052# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3053
3054# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3055!$omp end target teams loop
3056# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3057#endif
3058
3059 ! Copy the per-fluid flux_src entries only for the alpha-interface representation. HLLD
3060 ! (adv_src_mode_none) writes only the adv%beg row, so its per-fluid entries are never
3061 ! initialized and must not be copied out; nothing consumes them in that mode.
3063
3064# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3065
3066# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3067#if defined(MFC_OpenACC)
3068# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3069!$acc parallel loop collapse(4) gang vector default(present)
3070# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3071#elif defined(MFC_OpenMP)
3072# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3073
3074# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3075
3076# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3077
3078# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3079!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3080# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3081#endif
3082 do i = eqn_idx%adv%beg + 1, eqn_idx%adv%end
3083 do l = is3%beg, is3%end
3084 do j = is1%beg, is1%end
3085 do k = is2%beg, is2%end
3086 flux_src_vf(i)%sf(k, j, l) = flux_src_rsx_vf(k, j, l, i)
3087 end do
3088 end do
3089 end do
3090 end do
3091
3092# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3093#if defined(MFC_OpenACC)
3094# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3095!$acc end parallel loop
3096# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3097#elif defined(MFC_OpenMP)
3098# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3099
3100# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3101!$omp end target teams loop
3102# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3103#endif
3104 end if
3105# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3106 ! Reshaping Outputted Data in z-direction
3107 else if (norm_dir == 3) then
3108
3109# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3110
3111# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3112#if defined(MFC_OpenACC)
3113# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3114!$acc parallel loop collapse(4) gang vector default(present)
3115# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3116#elif defined(MFC_OpenMP)
3117# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3118
3119# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3120
3121# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3122
3123# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3124!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3125# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3126#endif
3127 do i = 1, sys_size
3128 do j = is1%beg, is1%end
3129 do k = is2%beg, is2%end
3130 do l = is3%beg, is3%end
3131 flux_vf(i)%sf(l, k, j) = flux_rsx_vf(l, k, j, i)
3132 end do
3133 end do
3134 end do
3135 end do
3136
3137# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3138#if defined(MFC_OpenACC)
3139# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3140!$acc end parallel loop
3141# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3142#elif defined(MFC_OpenMP)
3143# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3144
3145# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3146!$omp end target teams loop
3147# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3148#endif
3149# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3150 if (grid_geometry == 3) then
3151
3152# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3153
3154# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3155#if defined(MFC_OpenACC)
3156# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3157!$acc parallel loop collapse(4) gang vector default(present)
3158# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3159#elif defined(MFC_OpenMP)
3160# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3161
3162# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3163
3164# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3165
3166# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3167!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3168# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3169#endif
3170 do i = 1, sys_size
3171 do j = is1%beg, is1%end
3172 do k = is2%beg, is2%end
3173 do l = is3%beg, is3%end
3174 flux_gsrc_vf(i)%sf(l, k, j) = flux_gsrc_rsx_vf(l, k, j, i)
3175 end do
3176 end do
3177 end do
3178 end do
3179
3180# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3181#if defined(MFC_OpenACC)
3182# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3183!$acc end parallel loop
3184# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3185#elif defined(MFC_OpenMP)
3186# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3187
3188# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3189!$omp end target teams loop
3190# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3191#endif
3192 end if
3193
3194
3195# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3196
3197# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3198#if defined(MFC_OpenACC)
3199# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3200!$acc parallel loop collapse(3) gang vector default(present)
3201# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3202#elif defined(MFC_OpenMP)
3203# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3204
3205# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3206
3207# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3208
3209# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3210!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3211# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3212#endif
3213 do j = is1%beg, is1%end
3214 do k = is2%beg, is2%end
3215 do l = is3%beg, is3%end
3216 flux_src_vf(eqn_idx%adv%beg)%sf(l, k, j) = flux_src_rsx_vf(l, k, j, eqn_idx%adv%beg)
3217 end do
3218 end do
3219 end do
3220
3221# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3222#if defined(MFC_OpenACC)
3223# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3224!$acc end parallel loop
3225# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3226#elif defined(MFC_OpenMP)
3227# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3228
3229# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3230!$omp end target teams loop
3231# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3232#endif
3233
3234 ! Copy the per-fluid flux_src entries only for the alpha-interface representation. HLLD
3235 ! (adv_src_mode_none) writes only the adv%beg row, so its per-fluid entries are never
3236 ! initialized and must not be copied out; nothing consumes them in that mode.
3238
3239# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3240
3241# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3242#if defined(MFC_OpenACC)
3243# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3244!$acc parallel loop collapse(4) gang vector default(present)
3245# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3246#elif defined(MFC_OpenMP)
3247# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3248
3249# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3250
3251# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3252
3253# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3254!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3255# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3256#endif
3257 do i = eqn_idx%adv%beg + 1, eqn_idx%adv%end
3258 do j = is1%beg, is1%end
3259 do k = is2%beg, is2%end
3260 do l = is3%beg, is3%end
3261 flux_src_vf(i)%sf(l, k, j) = flux_src_rsx_vf(l, k, j, i)
3262 end do
3263 end do
3264 end do
3265 end do
3266
3267# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3268#if defined(MFC_OpenACC)
3269# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3270!$acc end parallel loop
3271# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3272#elif defined(MFC_OpenMP)
3273# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3274
3275# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3276!$omp end target teams loop
3277# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3278#endif
3279 end if
3280# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3281 else if (norm_dir == 1) then
3282
3283# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3284
3285# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3286#if defined(MFC_OpenACC)
3287# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3288!$acc parallel loop collapse(4) gang vector default(present)
3289# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3290#elif defined(MFC_OpenMP)
3291# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3292
3293# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3294
3295# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3296
3297# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3298!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3299# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3300#endif
3301 do i = 1, sys_size
3302 do l = is3%beg, is3%end
3303 do k = is2%beg, is2%end
3304 do j = is1%beg, is1%end
3305 flux_vf(i)%sf(j, k, l) = flux_rsx_vf(j, k, l, i)
3306 end do
3307 end do
3308 end do
3309 end do
3310
3311# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3312#if defined(MFC_OpenACC)
3313# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3314!$acc end parallel loop
3315# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3316#elif defined(MFC_OpenMP)
3317# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3318
3319# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3320!$omp end target teams loop
3321# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3322#endif
3323
3324# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3325
3326# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3327
3328# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3329#if defined(MFC_OpenACC)
3330# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3331!$acc parallel loop collapse(3) gang vector default(present)
3332# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3333#elif defined(MFC_OpenMP)
3334# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3335
3336# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3337
3338# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3339
3340# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3341!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3342# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3343#endif
3344 do l = is3%beg, is3%end
3345 do k = is2%beg, is2%end
3346 do j = is1%beg, is1%end
3347 flux_src_vf(eqn_idx%adv%beg)%sf(j, k, l) = flux_src_rsx_vf(j, k, l, eqn_idx%adv%beg)
3348 end do
3349 end do
3350 end do
3351
3352# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3353#if defined(MFC_OpenACC)
3354# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3355!$acc end parallel loop
3356# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3357#elif defined(MFC_OpenMP)
3358# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3359
3360# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3361!$omp end target teams loop
3362# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3363#endif
3364
3365 ! Copy the per-fluid flux_src entries only for the alpha-interface representation. HLLD
3366 ! (adv_src_mode_none) writes only the adv%beg row, so its per-fluid entries are never
3367 ! initialized and must not be copied out; nothing consumes them in that mode.
3369
3370# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3371
3372# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3373#if defined(MFC_OpenACC)
3374# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3375!$acc parallel loop collapse(4) gang vector default(present)
3376# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3377#elif defined(MFC_OpenMP)
3378# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3379
3380# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3381
3382# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3383
3384# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3385!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3386# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3387#endif
3388 do i = eqn_idx%adv%beg + 1, eqn_idx%adv%end
3389 do l = is3%beg, is3%end
3390 do k = is2%beg, is2%end
3391 do j = is1%beg, is1%end
3392 flux_src_vf(i)%sf(j, k, l) = flux_src_rsx_vf(j, k, l, i)
3393 end do
3394 end do
3395 end do
3396 end do
3397
3398# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3399#if defined(MFC_OpenACC)
3400# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3401!$acc end parallel loop
3402# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3403#elif defined(MFC_OpenMP)
3404# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3405
3406# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3407!$omp end target teams loop
3408# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3409#endif
3410 end if
3411# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3412 end if
3413
3414 end subroutine s_finalize_riemann_solver
3415# 1172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3416# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3417# 1179 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3418 subroutine s_finalize_riemann_solver_hatr(flux_vf, flux_gsrc_vf, norm_dir)
3419
3420 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_gsrc_vf
3421
3422# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3423 integer, intent(in) :: norm_dir
3424 integer :: i, j, k, l !< Generic loop iterators
3425 ! Reshaping Outputted Data in y-direction
3426
3427 if (norm_dir == 2) then
3428
3429# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3430
3431# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3432#if defined(MFC_OpenACC)
3433# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3434!$acc parallel loop collapse(4) gang vector default(present)
3435# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3436#elif defined(MFC_OpenMP)
3437# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3438
3439# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3440
3441# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3442
3443# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3444!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3445# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3446#endif
3447 do i = 1, sys_size
3448 do l = is3%beg, is3%end
3449 do j = is1%beg, is1%end
3450 do k = is2%beg, is2%end
3451 flux_vf(i)%sf(k, j, l) = flux_hatr_rsx_vf(k, j, l, i)
3452 end do
3453 end do
3454 end do
3455 end do
3456
3457# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3458#if defined(MFC_OpenACC)
3459# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3460!$acc end parallel loop
3461# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3462#elif defined(MFC_OpenMP)
3463# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3464
3465# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3466!$omp end target teams loop
3467# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3468#endif
3469
3470 if (cyl_coord) then
3471
3472# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3473
3474# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3475#if defined(MFC_OpenACC)
3476# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3477!$acc parallel loop collapse(4) gang vector default(present)
3478# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3479#elif defined(MFC_OpenMP)
3480# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3481
3482# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3483
3484# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3485
3486# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3487!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3488# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3489#endif
3490 do i = 1, sys_size
3491 do l = is3%beg, is3%end
3492 do j = is1%beg, is1%end
3493 do k = is2%beg, is2%end
3494 flux_gsrc_vf(i)%sf(k, j, l) = flux_gsrc_hatr_rsx_vf(k, j, l, i)
3495 end do
3496 end do
3497 end do
3498 end do
3499
3500# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3501#if defined(MFC_OpenACC)
3502# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3503!$acc end parallel loop
3504# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3505#elif defined(MFC_OpenMP)
3506# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3507
3508# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3509!$omp end target teams loop
3510# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3511#endif
3512 end if
3513
3514# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3515 ! Reshaping Outputted Data in z-direction
3516 else if (norm_dir == 3) then
3517
3518# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3519
3520# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3521#if defined(MFC_OpenACC)
3522# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3523!$acc parallel loop collapse(4) gang vector default(present)
3524# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3525#elif defined(MFC_OpenMP)
3526# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3527
3528# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3529
3530# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3531
3532# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3533!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3534# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3535#endif
3536 do i = 1, sys_size
3537 do j = is1%beg, is1%end
3538 do k = is2%beg, is2%end
3539 do l = is3%beg, is3%end
3540 flux_vf(i)%sf(l, k, j) = flux_hatr_rsx_vf(l, k, j, i)
3541 end do
3542 end do
3543 end do
3544 end do
3545
3546# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3547#if defined(MFC_OpenACC)
3548# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3549!$acc end parallel loop
3550# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3551#elif defined(MFC_OpenMP)
3552# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3553
3554# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3555!$omp end target teams loop
3556# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3557#endif
3558# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3559 else if (norm_dir == 1) then
3560
3561# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3562
3563# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3564#if defined(MFC_OpenACC)
3565# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3566!$acc parallel loop collapse(4) gang vector default(present)
3567# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3568#elif defined(MFC_OpenMP)
3569# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3570
3571# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3572
3573# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3574
3575# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3576!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3577# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3578#endif
3579 do i = 1, sys_size
3580 do l = is3%beg, is3%end
3581 do k = is2%beg, is2%end
3582 do j = is1%beg, is1%end
3583 flux_vf(i)%sf(j, k, l) = flux_hatr_rsx_vf(j, k, l, i)
3584 end do
3585 end do
3586 end do
3587 end do
3588
3589# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3590#if defined(MFC_OpenACC)
3591# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3592!$acc end parallel loop
3593# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3594#elif defined(MFC_OpenMP)
3595# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3596
3597# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3598!$omp end target teams loop
3599# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3600#endif
3601
3602# 1339 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3603 end if
3604
3605 end subroutine s_finalize_riemann_solver_hatr
3606# 1343 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
3607 end module m_riemann_state
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter riemann_solver_hll
integer, parameter riemann_solver_hlld
real(wp), parameter sgm_eps
Segmentation tolerance.
real(wp), parameter dflt_real
Default real value.
integer, parameter bc_riemann_extrap
real(wp), parameter verysmall
Very small number.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
logical bulk_stress
Bulk stresses.
logical any_non_newtonian
.true. if any fluid is non-Newtonian
integer, parameter adv_src_mode_alpha_iface
flux_src exports per-fluid interface alpha
integer, dimension(3) dir_idx
integer, dimension(3) dir_idx_tau
(nn, nt, nt2) stress indices for wave speeds and momentum flux
real(wp), dimension(:), allocatable, target y_cc
real(wp), dimension(3) dir_flg
real(wp), dimension(:), allocatable, target y_cb
type(scalar_field), dimension(:), allocatable mom_sp
integer, dimension(6) stress_perm
Full tensor permutation: local basis -> physical storage index.
logical shear_stress
Shear stresses.
Herschel-Bulkley non-Newtonian viscosity: formula, shear rate, and mixture inverse-Re.
subroutine, public s_compute_mixture_inv_re(alpha, shear_rate, res, re_out)
Mixture inverse Reynolds (= 1/mu_mix) per direction (1=shear, 2=bulk) at one state....
real(wp) function, public f_compute_shear_rate_from_components(d_xx, d_yy, d_zz, d_xy, d_xz, d_yz)
Shear rate gamma_dot = sqrt(2 D_ij D_ij). Absent dims pass 0.
Shared Riemann-solver module state and the per-sweep setup, state-buffer population,...
real(wp), dimension(:,:,:,:), allocatable flux_src_rsx_vf
type(int_bounds_info) isz
real(wp), dimension(:,:,:,:), allocatable mom_sp_rsx_vf
type(int_bounds_info) isx
type(int_bounds_info) is3
real(wp), dimension(:,:,:,:), allocatable flux_rsx_vf
The cell-boundary values of the fluxes (src - source) that are computed through the chosen Riemann pr...
real(wp), dimension(:,:), allocatable res_gs
subroutine s_finalize_riemann_solver_hatr(flux_vf, flux_gsrc_vf, norm_dir)
subroutine s_initialize_riemann_solver(flux_src_vf, norm_dir)
Set up the chosen Riemann solver algorithm for the current direction.
subroutine s_compute_viscous_source_flux(vell_vf, dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, velr_vf, dvelr_dx_vf, dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
Dispatch to the subroutines that are utilized to compute the viscous source fluxes for either Cartesi...
real(wp), dimension(:,:,:,:), allocatable nc_iface_vel_rsx_vf
real(wp), dimension(:), allocatable gs_rs
subroutine s_populate_riemann_states_variables_buffers(ql_prim_rsx_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, norm_dir, ix, iy, iz)
Populate the left and right Riemann state variable buffers based on boundary conditions.
subroutine s_compute_hypoelastic_interface_energy(nf, alpha_l, alpha_r, damage_l, damage_r, tau_e_l, tau_e_r, g_l, g_r, e_l, e_r)
Accumulate the hypoelastic stress contribution to the energies of the left and right Riemann states: ...
type(int_bounds_info) isy
real(wp) function f_compute_hllc_star_momentum_flux(rho_l, rho_r, vel_l_norm, vel_r_norm, s_m, s_p, s_s, xi_l, xi_r, xi_m, xi_p, dir_flg_norm)
Compute the advective part of the HLLC star-state momentum flux in the wave-normal direction (pressur...
real(wp), dimension(:,:,:,:), allocatable vel_src_rsx_vf
type(int_bounds_info) is2
subroutine s_finalize_riemann_solver(flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir)
Reshape and copy the Riemann-solver flux buffers back to the physical-space output arrays for the sel...
subroutine s_compute_interface_reynolds(alpha_k, re_k, re_size_loc1, re_size_loc2)
Compute the shear and volume Reynolds numbers of one Riemann state by inverse-weighting the fluid Rey...
real(wp), dimension(:,:,:,:), allocatable flux_hatr_rsx_vf
Dual-pass HLLD second flux set: the hat_R-anchored fluxes (and, for axisymmetric runs,...
subroutine s_compute_cartesian_viscous_source_flux(dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, dvelr_dx_vf, dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, q_prim_vf, norm_dir)
Compute Cartesian viscous source flux contributions for momentum and energy.
real(wp), dimension(:,:,:,:), allocatable flux_gsrc_rsx_vf
The cell-boundary values of the geometrical source flux that are computed through the chosen Riemann ...
real(wp), dimension(:,:,:,:), allocatable nc_iface_vel_hatr_rsx_vf
subroutine s_compute_cylindrical_viscous_source_flux(vell_vf, dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, velr_vf, dvelr_dx_vf, dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
Compute cylindrical viscous source flux contributions for momentum and energy.
real(wp), dimension(:,:,:,:), allocatable re_avg_rsx_vf
real(wp), dimension(:,:,:,:), allocatable flux_gsrc_hatr_rsx_vf
subroutine s_calculate_bulk_stress_tensor(re_bulk, divergence_v, tau_bulk_out)
Compute bulk stress tensor components (diagonal only).
subroutine s_accumulate_mixture_properties(nf, alpha_rho_k, alpha_k, rho_k, gamma_k, pi_inf_k, qv_k)
Accumulate the mixture density, specific heat ratio function, liquid stiffness function,...
subroutine s_calculate_shear_stress_tensor(vel_grad_avg, re_shear, divergence_v, tau_shear_out)
Compute shear stress tensor components.
type(int_bounds_info) is1
Integer bounds for variables.
Derived type annexing a scalar field (SF).