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