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