MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_riemann_state.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2!>
3!! @file
4!! @brief Contains module m_riemann_state
5
6!> @brief Shared Riemann-solver module state and the per-sweep setup, state-buffer population, viscous source flux, and finalization
7!! helpers
8# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
9! This file exists so that Fypp can be run without generating case.fpp files for
10! each target. This is useful when generating documentation, for example. This
11! should also let MFC be built with CMake directly, without invoking mfc.sh.
12
13! For pre-process.
14# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15
16! For moving immersed boundaries in simulation
17# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
18# 8 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp" 2
19# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
20# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
21# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
22# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27
28# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45! New line at end of file is required for FYPP
46# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
47# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
48# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
49# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54
55# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72! New line at end of file is required for FYPP
73# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
74
75# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80
81# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151! New line at end of file is required for FYPP
152# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
153# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
154# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
155# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160
161# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164
165# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176
177# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178! New line at end of file is required for FYPP
179# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
180
181# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182
183# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184
185# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236! New line at end of file is required for FYPP
237# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
238
239! GPU parallel region (scalar reductions, maxval/minval)
240# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241
242! GPU parallel loop over threads (most common GPU macro)
243# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244
245! Required closing for GPU_PARALLEL_LOOP
246# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247
248! Mark routine for device compilation
249# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251! Declare device-resident data
252# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253
254! Inner loop within a GPU parallel region
255# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257! Scoped GPU data region
258# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259
260! Host code with device pointers (for MPI with GPU buffers)
261# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263! Allocate device memory (unscoped)
264# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265
266! Free device memory
267# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269! Atomic operation on device
270# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271
272! End atomic capture block
273# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274
275! Copy data between host and device
276# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277
278! Synchronization barrier
279# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280
281! Import GPU library module (openacc or omp_lib)
282# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283
284! Emit code only for AMD compiler
285# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286
287! Emit code for non-Cray compilers
288# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289
290! Emit code only for Cray compiler
291# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292
293! Emit code for non-NVIDIA compilers
294# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295
296# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298! New line at end of file is required for FYPP
299# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
300
301# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302
303! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
304! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
305! example see misc/nvidia_uvm/bind.sh. NVIDIA unified memory page placement hint
306# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
307
308! Allocate and create GPU device memory
309# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
310
311! Free GPU device memory and deallocate
312# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
313
314! Cray-specific GPU pointer setup for vector fields
315# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316
317! Cray-specific GPU pointer setup for scalar fields
318# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
319
320! Cray-specific GPU pointer setup for acoustic source spatials
321# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322
323# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
324
325# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326! New line at end of file is required for FYPP
327# 9 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp" 2
328
330
334 use m_hb_function
335
336 implicit none
337
338 !> The cell-boundary values of the fluxes (src - source) that are computed through the chosen Riemann problem solver, and the
339 !! 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,
340 !! dy or dz.
341 !> @{
342 real(wp), allocatable, dimension(:,:,:,:) :: flux_rsx_vf, flux_src_rsx_vf
343
344# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
345#if defined(MFC_OpenACC)
346# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
347!$acc declare create(flux_rsx_vf, flux_src_rsx_vf)
348# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
349#elif defined(MFC_OpenMP)
350# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
351!$omp declare target (flux_rsx_vf, flux_src_rsx_vf)
352# 24 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
353#endif
354 !> @}
355
356 !> The cell-boundary values of the geometrical source flux that are computed through the chosen Riemann problem solver by using
357 !! the left and right states given in qK_prim_rs_vf. Currently 2D axisymmetric for inviscid only.
358 !> @{
359 real(wp), allocatable, dimension(:,:,:,:) :: flux_gsrc_rsx_vf
360
361# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
362#if defined(MFC_OpenACC)
363# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
364!$acc declare create(flux_gsrc_rsx_vf)
365# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
366#elif defined(MFC_OpenMP)
367# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
368!$omp declare target (flux_gsrc_rsx_vf)
369# 31 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
370#endif
371 !> @}
372
373 ! Cell-boundary velocity from Riemann solution; used for source flux
374
375 real(wp), allocatable, dimension(:,:,:,:) :: vel_src_rsx_vf
376
377# 37 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
378#if defined(MFC_OpenACC)
379# 37 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
380!$acc declare create(vel_src_rsx_vf)
381# 37 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
382#elif defined(MFC_OpenMP)
383# 37 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
384!$omp declare target (vel_src_rsx_vf)
385# 37 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
386#endif
387
388 real(wp), allocatable, dimension(:,:,:,:) :: mom_sp_rsx_vf
389
390# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
391#if defined(MFC_OpenACC)
392# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
393!$acc declare create(mom_sp_rsx_vf)
394# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
395#elif defined(MFC_OpenMP)
396# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
397!$omp declare target (mom_sp_rsx_vf)
398# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
399#endif
400
401 real(wp), allocatable, dimension(:,:,:,:) :: re_avg_rsx_vf
402
403# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
404#if defined(MFC_OpenACC)
405# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
406!$acc declare create(Re_avg_rsx_vf)
407# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
408#elif defined(MFC_OpenMP)
409# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
410!$omp declare target (Re_avg_rsx_vf)
411# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
412#endif
413
414 !> @name Indical bounds in the s1-, s2- and s3-directions
415 !> @{
418 !> @}
419
420
421# 51 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
422#if defined(MFC_OpenACC)
423# 51 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
424!$acc declare create(is1, is2, is3, isx, isy, isz)
425# 51 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
426#elif defined(MFC_OpenMP)
427# 51 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
428!$omp declare target (is1, is2, is3, isx, isy, isz)
429# 51 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
430#endif
431
432 real(wp), allocatable, dimension(:) :: gs_rs
433
434# 54 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
435#if defined(MFC_OpenACC)
436# 54 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
437!$acc declare create(Gs_rs)
438# 54 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
439#elif defined(MFC_OpenMP)
440# 54 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
441!$omp declare target (Gs_rs)
442# 54 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
443#endif
444
445 real(wp), allocatable, dimension(:,:) :: res_gs
446
447# 57 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
448#if defined(MFC_OpenACC)
449# 57 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
450!$acc declare create(Res_gs)
451# 57 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
452#elif defined(MFC_OpenMP)
453# 57 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
454!$omp declare target (Res_gs)
455# 57 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
456#endif
457
458contains
459
460 !> Dispatch to the subroutines that are utilized to compute the viscous source fluxes for either Cartesian or cylindrical
461 !! geometries. For more information please refer to: 1) s_compute_cartesian_viscous_source_flux 2)
462 !! s_compute_cylindrical_viscous_source_flux
463 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, &
464
465 & dvelR_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
466
467 type(scalar_field), dimension(num_vels), intent(in) :: velL_vf, velR_vf, dvelL_dx_vf, dvelR_dx_vf, dvelL_dy_vf, &
468 & dvelR_dy_vf, dvelL_dz_vf, dvelR_dz_vf
469
470 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
471 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
472 integer, intent(in) :: norm_dir
473 type(int_bounds_info), intent(in) :: ix, iy, iz
474
475 if (grid_geometry == 3) then
476 call s_compute_cylindrical_viscous_source_flux(vell_vf, dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, velr_vf, dvelr_dx_vf, &
477 & dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
478 else
479 call s_compute_cartesian_viscous_source_flux(dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, dvelr_dx_vf, dvelr_dy_vf, &
480 & dvelr_dz_vf, flux_src_vf, q_prim_vf, norm_dir)
481 end if
482
483 end subroutine s_compute_viscous_source_flux
484
485 !> Populate the left and right Riemann state variable buffers based on boundary conditions
486 subroutine s_populate_riemann_states_variables_buffers(qL_prim_rsx_vf, dqL_prim_dx_vf, &
487
488 & 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)
489
490 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: qL_prim_rsx_vf, qR_prim_rsx_vf
491 type(scalar_field), allocatable, dimension(:), intent(inout) :: dqL_prim_dx_vf, dqR_prim_dx_vf, dqL_prim_dy_vf, &
492 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
493
494 integer, intent(in) :: norm_dir
495 type(int_bounds_info), intent(in) :: ix, iy, iz
496 integer :: i, j, k, l !< Generic loop iterator
497
498 if (norm_dir == 1) then
499 is1 = ix; is2 = iy; is3 = iz
500 dir_idx = (/1, 2, 3/); dir_flg = (/1._wp, 0._wp, 0._wp/)
501 else if (norm_dir == 2) then
502 is1 = iy; is2 = ix; is3 = iz
503 dir_idx = (/2, 1, 3/); dir_flg = (/0._wp, 1._wp, 0._wp/)
504 else
505 is1 = iz; is2 = iy; is3 = ix
506 dir_idx = (/3, 1, 2/); dir_flg = (/0._wp, 0._wp, 1._wp/)
507 end if
508
509
510# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
511#if defined(MFC_OpenACC)
512# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
513!$acc update device(is1, is2, is3)
514# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
515#elif defined(MFC_OpenMP)
516# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
517!$omp target update to(is1, is2, is3)
518# 110 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
519#endif
520
521 if (elasticity) then
522 if (norm_dir == 1) then
523 dir_idx_tau = (/1, 2, 4/)
524 else if (norm_dir == 2) then
525 dir_idx_tau = (/3, 2, 5/)
526 else
527 dir_idx_tau = (/6, 4, 5/)
528 end if
529 end if
530
531 isx = ix; isy = iy; isz = iz
532 ! for stuff in the same module
533
534# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
535#if defined(MFC_OpenACC)
536# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
537!$acc update device(isx, isy, isz)
538# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
539#elif defined(MFC_OpenMP)
540# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
541!$omp target update to(isx, isy, isz)
542# 124 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
543#endif
544 ! for stuff in different modules
545
546# 126 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
547#if defined(MFC_OpenACC)
548# 126 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
549!$acc update device(dir_idx, dir_flg, dir_idx_tau)
550# 126 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
551#elif defined(MFC_OpenMP)
552# 126 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
553!$omp target update to(dir_idx, dir_flg, dir_idx_tau)
554# 126 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
555#endif
556
557 ! Population of Buffers in x-direction
558 if (norm_dir == 1) then
559 if (bc_x%beg == bc_riemann_extrap) then ! Riemann state extrap. BC at beginning
560
561# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
562
563# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
564#if defined(MFC_OpenACC)
565# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
566!$acc parallel loop collapse(3) gang vector default(present)
567# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
568#elif defined(MFC_OpenMP)
569# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
570
571# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
572
573# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
574
575# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
576!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
577# 131 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
578#endif
579 do i = 1, sys_size
580 do l = is3%beg, is3%end
581 do k = is2%beg, is2%end
582 ql_prim_rsx_vf(-1, k, l, i) = qr_prim_rsx_vf(0, k, l, i)
583 end do
584 end do
585 end do
586
587# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
588#if defined(MFC_OpenACC)
589# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
590!$acc end parallel loop
591# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
592#elif defined(MFC_OpenMP)
593# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
594
595# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
596!$omp end target teams loop
597# 139 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
598#endif
599
600 if (viscous) then
601
602# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
603
604# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
605#if defined(MFC_OpenACC)
606# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
607!$acc parallel loop collapse(3) gang vector default(present)
608# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
609#elif defined(MFC_OpenMP)
610# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
611
612# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
613
614# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
615
616# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
617!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
618# 142 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
619#endif
620 do i = eqn_idx%mom%beg, eqn_idx%mom%end
621 do l = isz%beg, isz%end
622 do k = isy%beg, isy%end
623 dql_prim_dx_vf(i)%sf(-1, k, l) = dqr_prim_dx_vf(i)%sf(0, k, l)
624 end do
625 end do
626 end do
627
628# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
629#if defined(MFC_OpenACC)
630# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
631!$acc end parallel loop
632# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
633#elif defined(MFC_OpenMP)
634# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
635
636# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
637!$omp end target teams loop
638# 150 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
639#endif
640
641 if (n > 0) then
642
643# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
644
645# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
646#if defined(MFC_OpenACC)
647# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
648!$acc parallel loop collapse(3) gang vector default(present)
649# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
650#elif defined(MFC_OpenMP)
651# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
652
653# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
654
655# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
656
657# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
658!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
659# 153 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
660#endif
661 do i = eqn_idx%mom%beg, eqn_idx%mom%end
662 do l = isz%beg, isz%end
663 do k = isy%beg, isy%end
664 dql_prim_dy_vf(i)%sf(-1, k, l) = dqr_prim_dy_vf(i)%sf(0, k, l)
665 end do
666 end do
667 end do
668
669# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
670#if defined(MFC_OpenACC)
671# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
672!$acc end parallel loop
673# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
674#elif defined(MFC_OpenMP)
675# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
676
677# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
678!$omp end target teams loop
679# 161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
680#endif
681
682 if (p > 0) then
683
684# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
685
686# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
687#if defined(MFC_OpenACC)
688# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
689!$acc parallel loop collapse(3) gang vector default(present)
690# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
691#elif defined(MFC_OpenMP)
692# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
693
694# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
695
696# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
697
698# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
699!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
700# 164 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
701#endif
702 do i = eqn_idx%mom%beg, eqn_idx%mom%end
703 do l = isz%beg, isz%end
704 do k = isy%beg, isy%end
705 dql_prim_dz_vf(i)%sf(-1, k, l) = dqr_prim_dz_vf(i)%sf(0, k, l)
706 end do
707 end do
708 end do
709
710# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
711#if defined(MFC_OpenACC)
712# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
713!$acc end parallel loop
714# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
715#elif defined(MFC_OpenMP)
716# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
717
718# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
719!$omp end target teams loop
720# 172 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
721#endif
722 end if
723 end if
724 end if
725 end if
726
727 if (bc_x%end == bc_riemann_extrap) then ! Riemann state extrap. BC at end
728
729
730# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
731
732# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
733#if defined(MFC_OpenACC)
734# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
735!$acc parallel loop collapse(3) gang vector default(present)
736# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
737#elif defined(MFC_OpenMP)
738# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
739
740# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
741
742# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
743
744# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
745!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
746# 180 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
747#endif
748 do i = 1, sys_size
749 do l = is3%beg, is3%end
750 do k = is2%beg, is2%end
751 qr_prim_rsx_vf(m + 1, k, l, i) = ql_prim_rsx_vf(m, k, l, i)
752 end do
753 end do
754 end do
755
756# 188 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
757#if defined(MFC_OpenACC)
758# 188 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
759!$acc end parallel loop
760# 188 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
761#elif defined(MFC_OpenMP)
762# 188 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
763
764# 188 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
765!$omp end target teams loop
766# 188 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
767#endif
768
769 if (viscous) then
770
771# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
772
773# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
774#if defined(MFC_OpenACC)
775# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
776!$acc parallel loop collapse(3) gang vector default(present)
777# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
778#elif defined(MFC_OpenMP)
779# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
780
781# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
782
783# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
784
785# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
786!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
787# 191 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
788#endif
789 do i = eqn_idx%mom%beg, eqn_idx%mom%end
790 do l = isz%beg, isz%end
791 do k = isy%beg, isy%end
792 dqr_prim_dx_vf(i)%sf(m + 1, k, l) = dql_prim_dx_vf(i)%sf(m, k, l)
793 end do
794 end do
795 end do
796
797# 199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
798#if defined(MFC_OpenACC)
799# 199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
800!$acc end parallel loop
801# 199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
802#elif defined(MFC_OpenMP)
803# 199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
804
805# 199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
806!$omp end target teams loop
807# 199 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
808#endif
809
810 if (n > 0) then
811
812# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
813
814# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
815#if defined(MFC_OpenACC)
816# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
817!$acc parallel loop collapse(3) gang vector default(present)
818# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
819#elif defined(MFC_OpenMP)
820# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
821
822# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
823
824# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
825
826# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
827!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
828# 202 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
829#endif
830 do i = eqn_idx%mom%beg, eqn_idx%mom%end
831 do l = isz%beg, isz%end
832 do k = isy%beg, isy%end
833 dqr_prim_dy_vf(i)%sf(m + 1, k, l) = dql_prim_dy_vf(i)%sf(m, k, l)
834 end do
835 end do
836 end do
837
838# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
839#if defined(MFC_OpenACC)
840# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
841!$acc end parallel loop
842# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
843#elif defined(MFC_OpenMP)
844# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
845
846# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
847!$omp end target teams loop
848# 210 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
849#endif
850
851 if (p > 0) then
852
853# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
854
855# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
856#if defined(MFC_OpenACC)
857# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
858!$acc parallel loop collapse(3) gang vector default(present)
859# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
860#elif defined(MFC_OpenMP)
861# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
862
863# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
864
865# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
866
867# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
868!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
869# 213 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
870#endif
871 do i = eqn_idx%mom%beg, eqn_idx%mom%end
872 do l = isz%beg, isz%end
873 do k = isy%beg, isy%end
874 dqr_prim_dz_vf(i)%sf(m + 1, k, l) = dql_prim_dz_vf(i)%sf(m, k, l)
875 end do
876 end do
877 end do
878
879# 221 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
880#if defined(MFC_OpenACC)
881# 221 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
882!$acc end parallel loop
883# 221 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
884#elif defined(MFC_OpenMP)
885# 221 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
886
887# 221 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
888!$omp end target teams loop
889# 221 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
890#endif
891 end if
892 end if
893 end if
894 end if
895 ! END: Population of Buffers in x-direction
896
897 ! Population of Buffers in y-direction
898 else if (norm_dir == 2) then
899 if (bc_y%beg == bc_riemann_extrap) then ! Riemann state extrap. BC at beginning
900
901# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
902
903# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
904#if defined(MFC_OpenACC)
905# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
906!$acc parallel loop collapse(3) gang vector default(present)
907# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
908#elif defined(MFC_OpenMP)
909# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
910
911# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
912
913# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
914
915# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
916!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
917# 231 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
918#endif
919 do i = 1, sys_size
920 do l = is3%beg, is3%end
921 do k = is2%beg, is2%end
922 ql_prim_rsx_vf(k, -1, l, i) = qr_prim_rsx_vf(k, 0, l, i)
923 end do
924 end do
925 end do
926
927# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
928#if defined(MFC_OpenACC)
929# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
930!$acc end parallel loop
931# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
932#elif defined(MFC_OpenMP)
933# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
934
935# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
936!$omp end target teams loop
937# 239 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
938#endif
939
940 if (viscous) then
941
942# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
943
944# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
945#if defined(MFC_OpenACC)
946# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
947!$acc parallel loop collapse(3) gang vector default(present)
948# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
949#elif defined(MFC_OpenMP)
950# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
951
952# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
953
954# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
955
956# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
957!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
958# 242 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
959#endif
960 do i = eqn_idx%mom%beg, eqn_idx%mom%end
961 do l = isz%beg, isz%end
962 do j = isx%beg, isx%end
963 dql_prim_dx_vf(i)%sf(j, -1, l) = dqr_prim_dx_vf(i)%sf(j, 0, l)
964 end do
965 end do
966 end do
967
968# 250 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
969#if defined(MFC_OpenACC)
970# 250 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
971!$acc end parallel loop
972# 250 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
973#elif defined(MFC_OpenMP)
974# 250 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
975
976# 250 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
977!$omp end target teams loop
978# 250 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
979#endif
980
981
982# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
983
984# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
985#if defined(MFC_OpenACC)
986# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
987!$acc parallel loop collapse(3) gang vector default(present)
988# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
989#elif defined(MFC_OpenMP)
990# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
991
992# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
993
994# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
995
996# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
997!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
998# 252 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
999#endif
1000 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1001 do l = isz%beg, isz%end
1002 do j = isx%beg, isx%end
1003 dql_prim_dy_vf(i)%sf(j, -1, l) = dqr_prim_dy_vf(i)%sf(j, 0, l)
1004 end do
1005 end do
1006 end do
1007
1008# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1009#if defined(MFC_OpenACC)
1010# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1011!$acc end parallel loop
1012# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1013#elif defined(MFC_OpenMP)
1014# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1015
1016# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1017!$omp end target teams loop
1018# 260 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1019#endif
1020
1021 if (p > 0) then
1022
1023# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1024
1025# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1026#if defined(MFC_OpenACC)
1027# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1028!$acc parallel loop collapse(3) gang vector default(present)
1029# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1030#elif defined(MFC_OpenMP)
1031# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1032
1033# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1034
1035# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1036
1037# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1038!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1039# 263 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1040#endif
1041 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1042 do l = isz%beg, isz%end
1043 do j = isx%beg, isx%end
1044 dql_prim_dz_vf(i)%sf(j, -1, l) = dqr_prim_dz_vf(i)%sf(j, 0, l)
1045 end do
1046 end do
1047 end do
1048
1049# 271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1050#if defined(MFC_OpenACC)
1051# 271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1052!$acc end parallel loop
1053# 271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1054#elif defined(MFC_OpenMP)
1055# 271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1056
1057# 271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1058!$omp end target teams loop
1059# 271 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1060#endif
1061 end if
1062 end if
1063 end if
1064
1065 if (bc_y%end == bc_riemann_extrap) then ! Riemann state extrap. BC at end
1066
1067
1068# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1069
1070# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1071#if defined(MFC_OpenACC)
1072# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1073!$acc parallel loop collapse(3) gang vector default(present)
1074# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1075#elif defined(MFC_OpenMP)
1076# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1077
1078# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1079
1080# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1081
1082# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1083!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1084# 278 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1085#endif
1086 do i = 1, sys_size
1087 do l = is3%beg, is3%end
1088 do k = is2%beg, is2%end
1089 qr_prim_rsx_vf(k, n + 1, l, i) = ql_prim_rsx_vf(k, n, l, i)
1090 end do
1091 end do
1092 end do
1093
1094# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1095#if defined(MFC_OpenACC)
1096# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1097!$acc end parallel loop
1098# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1099#elif defined(MFC_OpenMP)
1100# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1101
1102# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1103!$omp end target teams loop
1104# 286 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1105#endif
1106
1107 if (viscous) then
1108
1109# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1110
1111# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1112#if defined(MFC_OpenACC)
1113# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1114!$acc parallel loop collapse(3) gang vector default(present)
1115# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1116#elif defined(MFC_OpenMP)
1117# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1118
1119# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1120
1121# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1122
1123# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1124!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1125# 289 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1126#endif
1127 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1128 do l = isz%beg, isz%end
1129 do j = isx%beg, isx%end
1130 dqr_prim_dx_vf(i)%sf(j, n + 1, l) = dql_prim_dx_vf(i)%sf(j, n, l)
1131 end do
1132 end do
1133 end do
1134
1135# 297 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1136#if defined(MFC_OpenACC)
1137# 297 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1138!$acc end parallel loop
1139# 297 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1140#elif defined(MFC_OpenMP)
1141# 297 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1142
1143# 297 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1144!$omp end target teams loop
1145# 297 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1146#endif
1147
1148
1149# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1150
1151# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1152#if defined(MFC_OpenACC)
1153# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1154!$acc parallel loop collapse(3) gang vector default(present)
1155# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1156#elif defined(MFC_OpenMP)
1157# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1158
1159# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1160
1161# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1162
1163# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1164!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1165# 299 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1166#endif
1167 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1168 do l = isz%beg, isz%end
1169 do j = isx%beg, isx%end
1170 dqr_prim_dy_vf(i)%sf(j, n + 1, l) = dql_prim_dy_vf(i)%sf(j, n, l)
1171 end do
1172 end do
1173 end do
1174
1175# 307 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1176#if defined(MFC_OpenACC)
1177# 307 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1178!$acc end parallel loop
1179# 307 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1180#elif defined(MFC_OpenMP)
1181# 307 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1182
1183# 307 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1184!$omp end target teams loop
1185# 307 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1186#endif
1187
1188 if (p > 0) then
1189
1190# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1191
1192# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1193#if defined(MFC_OpenACC)
1194# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1195!$acc parallel loop collapse(3) gang vector default(present)
1196# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1197#elif defined(MFC_OpenMP)
1198# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1199
1200# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1201
1202# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1203
1204# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1205!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1206# 310 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1207#endif
1208 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1209 do l = isz%beg, isz%end
1210 do j = isx%beg, isx%end
1211 dqr_prim_dz_vf(i)%sf(j, n + 1, l) = dql_prim_dz_vf(i)%sf(j, n, l)
1212 end do
1213 end do
1214 end do
1215
1216# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1217#if defined(MFC_OpenACC)
1218# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1219!$acc end parallel loop
1220# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1221#elif defined(MFC_OpenMP)
1222# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1223
1224# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1225!$omp end target teams loop
1226# 318 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1227#endif
1228 end if
1229 end if
1230 end if
1231 ! END: Population of Buffers in y-direction
1232
1233 ! Population of Buffers in z-direction
1234 else
1235 if (bc_z%beg == bc_riemann_extrap) then ! Riemann state extrap. BC at beginning
1236
1237# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1238
1239# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1240#if defined(MFC_OpenACC)
1241# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1242!$acc parallel loop collapse(3) gang vector default(present)
1243# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1244#elif defined(MFC_OpenMP)
1245# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1246
1247# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1248
1249# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1250
1251# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1252!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1253# 327 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1254#endif
1255 do i = 1, sys_size
1256 do k = is2%beg, is2%end
1257 do l = is3%beg, is3%end
1258 ql_prim_rsx_vf(l, k, -1, i) = qr_prim_rsx_vf(l, k, 0, i)
1259 end do
1260 end do
1261 end do
1262
1263# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1264#if defined(MFC_OpenACC)
1265# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1266!$acc end parallel loop
1267# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1268#elif defined(MFC_OpenMP)
1269# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1270
1271# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1272!$omp end target teams loop
1273# 335 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1274#endif
1275
1276 if (viscous) then
1277
1278# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1279
1280# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1281#if defined(MFC_OpenACC)
1282# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1283!$acc parallel loop collapse(3) gang vector default(present)
1284# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1285#elif defined(MFC_OpenMP)
1286# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1287
1288# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1289
1290# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1291
1292# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1293!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1294# 338 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1295#endif
1296 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1297 do k = isy%beg, isy%end
1298 do j = isx%beg, isx%end
1299 dql_prim_dx_vf(i)%sf(j, k, -1) = dqr_prim_dx_vf(i)%sf(j, k, 0)
1300 end do
1301 end do
1302 end do
1303
1304# 346 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1305#if defined(MFC_OpenACC)
1306# 346 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1307!$acc end parallel loop
1308# 346 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1309#elif defined(MFC_OpenMP)
1310# 346 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1311
1312# 346 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1313!$omp end target teams loop
1314# 346 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1315#endif
1316
1317# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1318
1319# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1320#if defined(MFC_OpenACC)
1321# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1322!$acc parallel loop collapse(3) gang vector default(present)
1323# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1324#elif defined(MFC_OpenMP)
1325# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1326
1327# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1328
1329# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1330
1331# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1332!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1333# 347 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1334#endif
1335 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1336 do k = isy%beg, isy%end
1337 do j = isx%beg, isx%end
1338 dql_prim_dy_vf(i)%sf(j, k, -1) = dqr_prim_dy_vf(i)%sf(j, k, 0)
1339 end do
1340 end do
1341 end do
1342
1343# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1344#if defined(MFC_OpenACC)
1345# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1346!$acc end parallel loop
1347# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1348#elif defined(MFC_OpenMP)
1349# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1350
1351# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1352!$omp end target teams loop
1353# 355 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1354#endif
1355
1356# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1357
1358# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1359#if defined(MFC_OpenACC)
1360# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1361!$acc parallel loop collapse(3) gang vector default(present)
1362# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1363#elif defined(MFC_OpenMP)
1364# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1365
1366# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1367
1368# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1369
1370# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1371!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1372# 356 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1373#endif
1374 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1375 do k = isy%beg, isy%end
1376 do j = isx%beg, isx%end
1377 dql_prim_dz_vf(i)%sf(j, k, -1) = dqr_prim_dz_vf(i)%sf(j, k, 0)
1378 end do
1379 end do
1380 end do
1381
1382# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1383#if defined(MFC_OpenACC)
1384# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1385!$acc end parallel loop
1386# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1387#elif defined(MFC_OpenMP)
1388# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1389
1390# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1391!$omp end target teams loop
1392# 364 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1393#endif
1394 end if
1395 end if
1396
1397 if (bc_z%end == bc_riemann_extrap) then ! Riemann state extrap. BC at end
1398
1399
1400# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1401
1402# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1403#if defined(MFC_OpenACC)
1404# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1405!$acc parallel loop collapse(3) gang vector default(present)
1406# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1407#elif defined(MFC_OpenMP)
1408# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1409
1410# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1411
1412# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1413
1414# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1415!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1416# 370 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1417#endif
1418 do i = 1, sys_size
1419 do k = is2%beg, is2%end
1420 do l = is3%beg, is3%end
1421 qr_prim_rsx_vf(l, k, p + 1, i) = ql_prim_rsx_vf(l, k, p, i)
1422 end do
1423 end do
1424 end do
1425
1426# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1427#if defined(MFC_OpenACC)
1428# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1429!$acc end parallel loop
1430# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1431#elif defined(MFC_OpenMP)
1432# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1433
1434# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1435!$omp end target teams loop
1436# 378 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1437#endif
1438
1439 if (viscous) then
1440
1441# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1442
1443# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1444#if defined(MFC_OpenACC)
1445# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1446!$acc parallel loop collapse(3) gang vector default(present)
1447# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1448#elif defined(MFC_OpenMP)
1449# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1450
1451# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1452
1453# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1454
1455# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1456!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1457# 381 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1458#endif
1459 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1460 do k = isy%beg, isy%end
1461 do j = isx%beg, isx%end
1462 dqr_prim_dx_vf(i)%sf(j, k, p + 1) = dql_prim_dx_vf(i)%sf(j, k, p)
1463 end do
1464 end do
1465 end do
1466
1467# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1468#if defined(MFC_OpenACC)
1469# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1470!$acc end parallel loop
1471# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1472#elif defined(MFC_OpenMP)
1473# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1474
1475# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1476!$omp end target teams loop
1477# 389 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1478#endif
1479
1480
1481# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1482
1483# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1484#if defined(MFC_OpenACC)
1485# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1486!$acc parallel loop collapse(3) gang vector default(present)
1487# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1488#elif defined(MFC_OpenMP)
1489# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1490
1491# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1492
1493# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1494
1495# 391 "/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# 391 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1498#endif
1499 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1500 do k = isy%beg, isy%end
1501 do j = isx%beg, isx%end
1502 dqr_prim_dy_vf(i)%sf(j, k, p + 1) = dql_prim_dy_vf(i)%sf(j, k, p)
1503 end do
1504 end do
1505 end do
1506
1507# 399 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1508#if defined(MFC_OpenACC)
1509# 399 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1510!$acc end parallel loop
1511# 399 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1512#elif defined(MFC_OpenMP)
1513# 399 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1514
1515# 399 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1516!$omp end target teams loop
1517# 399 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1518#endif
1519
1520
1521# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1522
1523# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1524#if defined(MFC_OpenACC)
1525# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1526!$acc parallel loop collapse(3) gang vector default(present)
1527# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1528#elif defined(MFC_OpenMP)
1529# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1530
1531# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1532
1533# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1534
1535# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1536!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1537# 401 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1538#endif
1539 do i = eqn_idx%mom%beg, eqn_idx%mom%end
1540 do k = isy%beg, isy%end
1541 do j = isx%beg, isx%end
1542 dqr_prim_dz_vf(i)%sf(j, k, p + 1) = dql_prim_dz_vf(i)%sf(j, k, p)
1543 end do
1544 end do
1545 end do
1546
1547# 409 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1548#if defined(MFC_OpenACC)
1549# 409 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1550!$acc end parallel loop
1551# 409 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1552#elif defined(MFC_OpenMP)
1553# 409 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1554
1555# 409 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1556!$omp end target teams loop
1557# 409 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1558#endif
1559 end if
1560 end if
1561 end if
1562 ! END: Population of Buffers in z-direction
1563
1565
1566 !> Set up the chosen Riemann solver algorithm for the current direction
1567 subroutine s_initialize_riemann_solver(flux_src_vf, norm_dir)
1568
1569 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
1570 integer, intent(in) :: norm_dir
1571 integer :: i, j, k, l !< Generic loop iterators
1572
1573 ! Reshaping Inputted Data in x-direction
1574
1575 if (norm_dir == 1) then
1576 if (viscous .or. (surface_tension)) then
1577
1578# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1579
1580# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1581#if defined(MFC_OpenACC)
1582# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1583!$acc parallel loop collapse(4) gang vector default(present)
1584# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1585#elif defined(MFC_OpenMP)
1586# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1587
1588# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1589
1590# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1591
1592# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1593!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1594# 428 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1595#endif
1596 do i = eqn_idx%mom%beg, eqn_idx%E
1597 do l = is3%beg, is3%end
1598 do k = is2%beg, is2%end
1599 do j = is1%beg, is1%end
1600 flux_src_vf(i)%sf(j, k, l) = 0._wp
1601 end do
1602 end do
1603 end do
1604 end do
1605
1606# 438 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1607#if defined(MFC_OpenACC)
1608# 438 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1609!$acc end parallel loop
1610# 438 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1611#elif defined(MFC_OpenMP)
1612# 438 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1613
1614# 438 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1615!$omp end target teams loop
1616# 438 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1617#endif
1618 end if
1619
1620 if (chem_params%diffusion) then
1621
1622# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1623
1624# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1625#if defined(MFC_OpenACC)
1626# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1627!$acc parallel loop collapse(4) gang vector default(present)
1628# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1629#elif defined(MFC_OpenMP)
1630# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1631
1632# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1633
1634# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1635
1636# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1637!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1638# 442 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1639#endif
1640 do i = eqn_idx%E, eqn_idx%species%end
1641 do l = is3%beg, is3%end
1642 do k = is2%beg, is2%end
1643 do j = is1%beg, is1%end
1644 if (i == eqn_idx%E .or. i >= eqn_idx%species%beg) then
1645 flux_src_vf(i)%sf(j, k, l) = 0._wp
1646 end if
1647 end do
1648 end do
1649 end do
1650 end do
1651
1652# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1653#if defined(MFC_OpenACC)
1654# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1655!$acc end parallel loop
1656# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1657#elif defined(MFC_OpenMP)
1658# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1659
1660# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1661!$omp end target teams loop
1662# 454 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1663#endif
1664 end if
1665
1666 if (qbmm) then
1667
1668# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1669
1670# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1671#if defined(MFC_OpenACC)
1672# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1673!$acc parallel loop collapse(4) gang vector default(present)
1674# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1675#elif defined(MFC_OpenMP)
1676# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1677
1678# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1679
1680# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1681
1682# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1683!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1684# 458 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1685#endif
1686 do i = 1, 4
1687 do l = is3%beg, is3%end
1688 do k = is2%beg, is2%end
1689 do j = is1%beg, is1%end + 1
1690 mom_sp_rsx_vf(j, k, l, i) = mom_sp(i)%sf(j, k, l)
1691 end do
1692 end do
1693 end do
1694 end do
1695
1696# 468 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1697#if defined(MFC_OpenACC)
1698# 468 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1699!$acc end parallel loop
1700# 468 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1701#elif defined(MFC_OpenMP)
1702# 468 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1703
1704# 468 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1705!$omp end target teams loop
1706# 468 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1707#endif
1708 end if
1709
1710 ! Reshaping Inputted Data in y-direction
1711 else if (norm_dir == 2) then
1712 if (viscous .or. (surface_tension)) then
1713
1714# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1715
1716# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1717#if defined(MFC_OpenACC)
1718# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1719!$acc parallel loop collapse(4) gang vector default(present)
1720# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1721#elif defined(MFC_OpenMP)
1722# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1723
1724# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1725
1726# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1727
1728# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1729!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1730# 474 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1731#endif
1732 do i = eqn_idx%mom%beg, eqn_idx%E
1733 do l = is3%beg, is3%end
1734 do j = is1%beg, is1%end
1735 do k = is2%beg, is2%end
1736 flux_src_vf(i)%sf(k, j, l) = 0._wp
1737 end do
1738 end do
1739 end do
1740 end do
1741
1742# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1743#if defined(MFC_OpenACC)
1744# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1745!$acc end parallel loop
1746# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1747#elif defined(MFC_OpenMP)
1748# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1749
1750# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1751!$omp end target teams loop
1752# 484 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1753#endif
1754 end if
1755
1756 if (chem_params%diffusion) then
1757
1758# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1759
1760# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1761#if defined(MFC_OpenACC)
1762# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1763!$acc parallel loop collapse(4) gang vector default(present)
1764# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1765#elif defined(MFC_OpenMP)
1766# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1767
1768# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1769
1770# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1771
1772# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1773!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1774# 488 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1775#endif
1776 do i = eqn_idx%E, eqn_idx%species%end
1777 do l = is3%beg, is3%end
1778 do j = is1%beg, is1%end
1779 do k = is2%beg, is2%end
1780 if (i == eqn_idx%E .or. i >= eqn_idx%species%beg) then
1781 flux_src_vf(i)%sf(k, j, l) = 0._wp
1782 end if
1783 end do
1784 end do
1785 end do
1786 end do
1787
1788# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1789#if defined(MFC_OpenACC)
1790# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1791!$acc end parallel loop
1792# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1793#elif defined(MFC_OpenMP)
1794# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1795
1796# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1797!$omp end target teams loop
1798# 500 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1799#endif
1800 end if
1801
1802 if (qbmm) then
1803
1804# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1805
1806# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1807#if defined(MFC_OpenACC)
1808# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1809!$acc parallel loop collapse(4) gang vector default(present)
1810# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1811#elif defined(MFC_OpenMP)
1812# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1813
1814# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1815
1816# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1817
1818# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1819!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1820# 504 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1821#endif
1822 do i = 1, 4
1823 do l = is3%beg, is3%end
1824 do k = is2%beg, is2%end
1825 do j = is1%beg, is1%end + 1
1826 mom_sp_rsx_vf(k, j, l, i) = mom_sp(i)%sf(k, j, l)
1827 end do
1828 end do
1829 end do
1830 end do
1831
1832# 514 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1833#if defined(MFC_OpenACC)
1834# 514 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1835!$acc end parallel loop
1836# 514 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1837#elif defined(MFC_OpenMP)
1838# 514 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1839
1840# 514 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1841!$omp end target teams loop
1842# 514 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1843#endif
1844 end if
1845
1846 ! Reshaping Inputted Data in z-direction
1847 else
1848 if (viscous .or. (surface_tension)) then
1849
1850# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1851
1852# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1853#if defined(MFC_OpenACC)
1854# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1855!$acc parallel loop collapse(4) gang vector default(present)
1856# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1857#elif defined(MFC_OpenMP)
1858# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1859
1860# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1861
1862# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1863
1864# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1865!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1866# 520 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1867#endif
1868 do i = eqn_idx%mom%beg, eqn_idx%E
1869 do j = is1%beg, is1%end
1870 do k = is2%beg, is2%end
1871 do l = is3%beg, is3%end
1872 flux_src_vf(i)%sf(l, k, j) = 0._wp
1873 end do
1874 end do
1875 end do
1876 end do
1877
1878# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1879#if defined(MFC_OpenACC)
1880# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1881!$acc end parallel loop
1882# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1883#elif defined(MFC_OpenMP)
1884# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1885
1886# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1887!$omp end target teams loop
1888# 530 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1889#endif
1890 end if
1891
1892 if (chem_params%diffusion) then
1893
1894# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1895
1896# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1897#if defined(MFC_OpenACC)
1898# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1899!$acc parallel loop collapse(4) gang vector default(present)
1900# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1901#elif defined(MFC_OpenMP)
1902# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1903
1904# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1905
1906# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1907
1908# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1909!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1910# 534 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1911#endif
1912 do i = eqn_idx%E, eqn_idx%species%end
1913 do j = is1%beg, is1%end
1914 do k = is2%beg, is2%end
1915 do l = is3%beg, is3%end
1916 if (i == eqn_idx%E .or. i >= eqn_idx%species%beg) then
1917 flux_src_vf(i)%sf(l, k, j) = 0._wp
1918 end if
1919 end do
1920 end do
1921 end do
1922 end do
1923
1924# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1925#if defined(MFC_OpenACC)
1926# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1927!$acc end parallel loop
1928# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1929#elif defined(MFC_OpenMP)
1930# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1931
1932# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1933!$omp end target teams loop
1934# 546 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1935#endif
1936 end if
1937
1938 if (qbmm) then
1939
1940# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1941
1942# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1943#if defined(MFC_OpenACC)
1944# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1945!$acc parallel loop collapse(4) gang vector default(present)
1946# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1947#elif defined(MFC_OpenMP)
1948# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1949
1950# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1951
1952# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1953
1954# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1955!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1956# 550 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1957#endif
1958 do i = 1, 4
1959 do l = is3%beg, is3%end
1960 do k = is2%beg, is2%end
1961 do j = is1%beg, is1%end + 1
1962 mom_sp_rsx_vf(l, k, j, i) = mom_sp(i)%sf(l, k, j)
1963 end do
1964 end do
1965 end do
1966 end do
1967
1968# 560 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1969#if defined(MFC_OpenACC)
1970# 560 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1971!$acc end parallel loop
1972# 560 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1973#elif defined(MFC_OpenMP)
1974# 560 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1975
1976# 560 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1977!$omp end target teams loop
1978# 560 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
1979#endif
1980 end if
1981 end if
1982
1983 end subroutine s_initialize_riemann_solver
1984
1985 !> Compute cylindrical viscous source flux contributions for momentum and energy
1986 subroutine s_compute_cylindrical_viscous_source_flux(velL_vf, dvelL_dx_vf, dvelL_dy_vf, dvelL_dz_vf, velR_vf, dvelR_dx_vf, &
1987
1988 & dvelR_dy_vf, dvelR_dz_vf, flux_src_vf, q_prim_vf, norm_dir, ix, iy, iz)
1989
1990 type(scalar_field), dimension(num_dims), intent(in) :: velL_vf, velR_vf
1991 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dx_vf, dvelR_dx_vf
1992 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dy_vf, dvelR_dy_vf
1993 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dz_vf, dvelR_dz_vf
1994 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
1995 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
1996 integer, intent(in) :: norm_dir
1997 type(int_bounds_info), intent(in) :: ix, iy, iz
1998
1999 ! Local variables
2000
2001# 592 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2002 real(wp), dimension(num_dims) :: avg_v_int !< Averaged interface velocity (\f$v_x, v_y, v_z\f$) (grid directions).
2003 real(wp), dimension(num_dims) :: avg_dvdx_int !< Averaged interface \f$\partial v_i/\partial x\f$ (grid dir 1).
2004 real(wp), dimension(num_dims) :: avg_dvdy_int !< Averaged interface \f$\partial v_i/\partial y\f$ (grid dir 2).
2005 real(wp), dimension(num_dims) :: avg_dvdz_int !< Averaged interface \f$\partial v_i/\partial z\f$ (grid dir 3).
2006 !> Interface velocity (\f$v_1,v_2,v_3\f$) (grid directions) for viscous work.
2007 real(wp), dimension(num_dims) :: vel_src_int
2008 !> Shear stress vector (\f$\sigma_{N1}, \sigma_{N2}, \sigma_{N3}\f$) on N-face (grid directions).
2009 real(wp), dimension(num_dims) :: stress_vector_shear
2010# 601 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2011 real(wp) :: stress_normal_bulk !< Normal bulk stress component \f$\sigma_{NN}\f$ on N-face.
2012 real(wp) :: Re_s, Re_b !< Effective interface shear and bulk Reynolds numbers.
2013 real(wp) :: r_eff !< Effective radius at interface for cylindrical terms.
2014 real(wp) :: div_v_term_const !< Common term \f$-(2/3)(\nabla \cdot \mathbf{v}) / \text{Re}_s\f$ for shear stress diagonal.
2015 real(wp) :: divergence_cyl !< Full divergence \f$\nabla \cdot \mathbf{v}\f$ in cylindrical coordinates.
2016 integer :: j, k, l !< Loop iterators for \f$x, y, z\f$ grid directions.
2017 integer :: i_vel !< Loop iterator for velocity components.
2018 integer :: idx_rp(3) !< Indices \f$(j,k,l)\f$ of 'right' point for averaging.
2019 real(wp) :: gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz
2020 real(wp), dimension(2) :: Re_nn
2021 real(wp), dimension(num_fluids) :: alpha_avg
2022 integer :: fl
2023
2024
2025# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2026
2027# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2028#if defined(MFC_OpenACC)
2029# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2030!$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, 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)
2031# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2032#elif defined(MFC_OpenMP)
2033# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2034
2035# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2036
2037# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2038
2039# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2040!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) 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, 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)
2041# 614 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2042#endif
2043# 617 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2044 do l = iz%beg, iz%end
2045 do k = iy%beg, iy%end
2046 do j = ix%beg, ix%end
2047 ! Determine indices for the 'right' state for averaging across the interface
2048 idx_rp = [j, k, l]
2049 idx_rp(norm_dir) = idx_rp(norm_dir) + 1
2050
2051 ! Average velocities and their derivatives at the interface For cylindrical: x-dir ~ axial (z_cyl), y-dir ~
2052 ! radial (r_cyl), z-dir ~ azimuthal (theta_cyl)
2053
2054# 626 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2055#if defined(MFC_OpenACC)
2056# 626 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2057!$acc loop seq
2058# 626 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2059#elif defined(MFC_OpenMP)
2060# 626 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2061
2062# 626 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2063#endif
2064 do i_vel = 1, num_dims
2065 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)))
2066
2067 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), &
2068 & idx_rp(2), idx_rp(3)))
2069 if (num_dims > 1) then
2070 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), &
2071 & idx_rp(2), idx_rp(3)))
2072 else
2073 avg_dvdy_int(i_vel) = 0.0_wp
2074 end if
2075 if (num_dims > 2) then
2076 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), &
2077 & idx_rp(2), idx_rp(3)))
2078 else
2079 avg_dvdz_int(i_vel) = 0.0_wp
2080 end if
2081 end do
2082
2083 ! Non-Newtonian effective shear rate from grid-direction strain components.
2084 ! NOTE: curvature corrections to gamma_dot (e.g. hoop strain) are not included
2085 ! here - a documented first-version limitation. The Reynolds override and the
2086 ! Newtonian path below are exact.
2087 if (any_non_newtonian) then
2088 d_xx = avg_dvdx_int(1); d_yy = 0._wp; d_zz = 0._wp
2089 d_xy = 0._wp; d_xz = 0._wp; d_yz = 0._wp
2090# 654 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2091 if (num_dims > 1) then
2092 d_yy = avg_dvdy_int(2)
2093 d_xy = 0.5_wp*(avg_dvdy_int(1) + avg_dvdx_int(2))
2094 end if
2095# 659 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2096# 660 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2097 if (num_dims > 2) then
2098 d_zz = avg_dvdz_int(3)
2099 d_xz = 0.5_wp*(avg_dvdz_int(1) + avg_dvdx_int(3))
2100 d_yz = 0.5_wp*(avg_dvdz_int(2) + avg_dvdy_int(3))
2101 end if
2102# 666 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2103 gamma_dot = f_compute_shear_rate_from_components(d_xx, d_yy, d_zz, d_xy, d_xz, d_yz)
2104 do fl = 1, num_fluids
2105 alpha_avg(fl) = 0.5_wp*(q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(j, k, &
2106 & l) + q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(idx_rp(1), idx_rp(2), idx_rp(3)))
2107 ! Raw cell-centered alphas can under/overshoot near interfaces; clamp to [0,1]
2108 alpha_avg(fl) = min(max(alpha_avg(fl), 0._wp), 1._wp)
2109 end do
2110 call s_compute_mixture_inv_re(alpha_avg, gamma_dot, res_gs, re_nn)
2111 end if
2112
2113 ! Get Re numbers and interface velocity for viscous work
2114 select case (norm_dir)
2115 case (1) ! x-face (axial face in z_cyl direction)
2116 if (any_non_newtonian) then
2117 re_s = re_nn(1)
2118 re_b = re_nn(2)
2119 else
2120 re_s = re_avg_rsx_vf(j, k, l, 1)
2121 re_b = re_avg_rsx_vf(j, k, l, 2)
2122 end if
2123 vel_src_int = vel_src_rsx_vf(j, k, l,1:num_dims)
2124 r_eff = y_cc(k)
2125 case (2) ! y-face (radial face in r_cyl direction)
2126 if (any_non_newtonian) then
2127 re_s = re_nn(1)
2128 re_b = re_nn(2)
2129 else
2130 re_s = re_avg_rsx_vf(j, k, l, 1)
2131 re_b = re_avg_rsx_vf(j, k, l, 2)
2132 end if
2133 vel_src_int = vel_src_rsx_vf(j, k, l,1:num_dims)
2134 r_eff = y_cb(k)
2135 case (3) ! z-face (azimuthal face in theta_cyl direction)
2136 if (any_non_newtonian) then
2137 re_s = re_nn(1)
2138 re_b = re_nn(2)
2139 else
2140 re_s = re_avg_rsx_vf(j, k, l, 1)
2141 re_b = re_avg_rsx_vf(j, k, l, 2)
2142 end if
2143 vel_src_int = vel_src_rsx_vf(j, k, l,1:num_dims)
2144 r_eff = y_cc(k)
2145 end select
2146
2147 ! Divergence in cylindrical coordinates (vx=vz_cyl, vy=vr_cyl, vz=vtheta_cyl)
2148# 712 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2149 divergence_cyl = avg_dvdx_int(1) + avg_dvdy_int(2) + avg_v_int(2)/r_eff
2150 if (num_dims > 2) then
2151# 715 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2152 divergence_cyl = divergence_cyl + avg_dvdz_int(3)/r_eff
2153# 717 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2154 end if
2155# 719 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2156
2157 stress_vector_shear = 0.0_wp
2158 stress_normal_bulk = 0.0_wp
2159
2160 if (shear_stress) then
2161 div_v_term_const = -(2.0_wp/3.0_wp)*divergence_cyl/re_s
2162
2163 select case (norm_dir)
2164 case (1) ! X-face (axial normal, z_cyl)
2165 stress_vector_shear(1) = (2.0_wp*avg_dvdx_int(1))/re_s + div_v_term_const
2166 if (num_dims > 1) then
2167# 731 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2168 stress_vector_shear(2) = (avg_dvdy_int(1) + avg_dvdx_int(2))/re_s
2169# 733 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2170 end if
2171 if (num_dims > 2) then
2172# 736 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2173 stress_vector_shear(3) = (avg_dvdz_int(1)/r_eff + avg_dvdx_int(3))/re_s
2174# 738 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2175 end if
2176 case (2) ! Y-face (radial normal, r_cyl)
2177 if (num_dims > 1) then
2178# 742 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2179 stress_vector_shear(1) = (avg_dvdy_int(1) + avg_dvdx_int(2))/re_s
2180 stress_vector_shear(2) = (2.0_wp*avg_dvdy_int(2))/re_s + div_v_term_const
2181 if (num_dims > 2) then
2182# 746 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2183 stress_vector_shear(3) = (avg_dvdz_int(2)/r_eff - avg_v_int(3)/r_eff + avg_dvdy_int(3) &
2184 & )/re_s
2185# 749 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2186 end if
2187# 751 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2188 else
2189 stress_vector_shear(1) = (2.0_wp*avg_dvdx_int(1))/re_s + div_v_term_const
2190 end if
2191 case (3) ! Z-face (azimuthal normal, theta_cyl)
2192 if (num_dims > 2) then
2193# 757 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2194 stress_vector_shear(1) = (avg_dvdz_int(1)/r_eff + avg_dvdx_int(3))/re_s
2195 stress_vector_shear(2) = (avg_dvdz_int(2)/r_eff - avg_v_int(3)/r_eff + avg_dvdy_int(3))/re_s
2196 stress_vector_shear(3) = (2.0_wp*(avg_dvdz_int(3)/r_eff + avg_v_int(2)/r_eff))/re_s &
2197 & + div_v_term_const
2198# 762 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2199 end if
2200 end select
2201
2202
2203# 765 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2204#if defined(MFC_OpenACC)
2205# 765 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2206!$acc loop seq
2207# 765 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2208#elif defined(MFC_OpenMP)
2209# 765 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2210
2211# 765 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2212#endif
2213 do i_vel = 1, num_dims
2214 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, &
2215 & k, l) - stress_vector_shear(i_vel)
2216 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2217 & l) - vel_src_int(i_vel)*stress_vector_shear(i_vel)
2218 end do
2219 end if
2220
2221 if (bulk_stress) then
2222 stress_normal_bulk = divergence_cyl/re_b
2223
2224 flux_src_vf(eqn_idx%mom%beg + norm_dir - 1)%sf(j, k, &
2225 & l) = flux_src_vf(eqn_idx%mom%beg + norm_dir - 1)%sf(j, k, l) - stress_normal_bulk
2226 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
2227 & l) - vel_src_int(norm_dir)*stress_normal_bulk
2228 end if
2229 end do
2230 end do
2231 end do
2232
2233# 785 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2234#if defined(MFC_OpenACC)
2235# 785 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2236!$acc end parallel loop
2237# 785 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2238#elif defined(MFC_OpenMP)
2239# 785 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2240
2241# 785 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2242!$omp end target teams loop
2243# 785 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2244#endif
2245
2247
2248 !> Compute Cartesian viscous source flux contributions for momentum and energy
2249 subroutine s_compute_cartesian_viscous_source_flux(dvelL_dx_vf, dvelL_dy_vf, dvelL_dz_vf, dvelR_dx_vf, dvelR_dy_vf, &
2250
2251 & dvelR_dz_vf, flux_src_vf, q_prim_vf, norm_dir)
2252
2253 ! Arguments
2254 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dx_vf, dvelR_dx_vf
2255 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dy_vf, dvelR_dy_vf
2256 type(scalar_field), dimension(num_dims), intent(in) :: dvelL_dz_vf, dvelR_dz_vf
2257 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
2258 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
2259 integer, intent(in) :: norm_dir
2260
2261 ! Local variables
2262
2263# 810 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2264 real(wp), dimension(num_dims, num_dims) :: vel_grad_avg !< Averaged velocity gradient tensor `d(vel_i)/d(coord_j)`.
2265 real(wp), dimension(num_dims, num_dims) :: current_tau_shear !< Current shear stress tensor.
2266 real(wp), dimension(num_dims, num_dims) :: current_tau_bulk !< Current bulk stress tensor.
2267 real(wp), dimension(num_dims) :: vel_src_at_interface !< Interface velocities (u,v,w) for viscous work.
2268# 815 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2269 integer, dimension(3) :: idx_right_phys !< Physical (j,k,l) indices for right state.
2270 real(wp) :: Re_shear !< Interface shear Reynolds number.
2271 real(wp) :: Re_bulk !< Interface bulk Reynolds number.
2272 integer :: j_loop !< Physical x-index loop iterator.
2273 integer :: k_loop !< Physical y-index loop iterator.
2274 integer :: l_loop !< Physical z-index loop iterator.
2275 integer :: i_dim !< Generic dimension/component iterator.
2276 integer :: vel_comp_idx !< Velocity component iterator (1=u, 2=v, 3=w).
2277 real(wp) :: divergence_v !< Velocity divergence at interface.
2278 real(wp) :: gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz
2279 real(wp), dimension(2) :: Re_nn
2280 real(wp), dimension(num_fluids) :: alpha_avg
2281 integer :: fl
2282
2283
2284# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2285
2286# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2287#if defined(MFC_OpenACC)
2288# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2289!$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, vel_comp_idx, gamma_dot, D_xx, D_yy, D_zz, D_xy, D_xz, D_yz, Re_nn, alpha_avg, fl)
2290# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2291#elif defined(MFC_OpenMP)
2292# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2293
2294# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2295
2296# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2297
2298# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2299!$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, 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, fl)
2300# 829 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2301#endif
2302# 832 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2303 do l_loop = isz%beg, isz%end
2304 do k_loop = isy%beg, isy%end
2305 do j_loop = isx%beg, isx%end
2306 idx_right_phys(1) = j_loop
2307 idx_right_phys(2) = k_loop
2308 idx_right_phys(3) = l_loop
2309 idx_right_phys(norm_dir) = idx_right_phys(norm_dir) + 1
2310
2311 vel_grad_avg = 0.0_wp
2312 do vel_comp_idx = 1, num_dims
2313 vel_grad_avg(vel_comp_idx, 1) = 0.5_wp*(dvell_dx_vf(vel_comp_idx)%sf(j_loop, k_loop, &
2314 & l_loop) + dvelr_dx_vf(vel_comp_idx)%sf(idx_right_phys(1), idx_right_phys(2), &
2315 & idx_right_phys(3)))
2316 if (num_dims > 1) then
2317# 847 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2318 vel_grad_avg(vel_comp_idx, 2) = 0.5_wp*(dvell_dy_vf(vel_comp_idx)%sf(j_loop, k_loop, &
2319 & l_loop) + dvelr_dy_vf(vel_comp_idx)%sf(idx_right_phys(1), idx_right_phys(2), &
2320 & idx_right_phys(3)))
2321# 851 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2322 end if
2323 if (num_dims > 2) then
2324# 854 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2325 vel_grad_avg(vel_comp_idx, 3) = 0.5_wp*(dvell_dz_vf(vel_comp_idx)%sf(j_loop, k_loop, &
2326 & l_loop) + dvelr_dz_vf(vel_comp_idx)%sf(idx_right_phys(1), idx_right_phys(2), &
2327 & idx_right_phys(3)))
2328# 858 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2329 end if
2330 end do
2331
2332 if (any_non_newtonian) then
2333 d_xx = vel_grad_avg(1, 1); d_yy = 0._wp; d_zz = 0._wp
2334 d_xy = 0._wp; d_xz = 0._wp; d_yz = 0._wp
2335# 865 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2336 if (num_dims > 1) then
2337 d_yy = vel_grad_avg(2, 2)
2338 d_xy = 0.5_wp*(vel_grad_avg(1, 2) + vel_grad_avg(2, 1))
2339 end if
2340# 870 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2341# 871 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2342 if (num_dims > 2) then
2343 d_zz = vel_grad_avg(3, 3)
2344 d_xz = 0.5_wp*(vel_grad_avg(1, 3) + vel_grad_avg(3, 1))
2345 d_yz = 0.5_wp*(vel_grad_avg(2, 3) + vel_grad_avg(3, 2))
2346 end if
2347# 877 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2348 gamma_dot = f_compute_shear_rate_from_components(d_xx, d_yy, d_zz, d_xy, d_xz, d_yz)
2349 do fl = 1, num_fluids
2350 alpha_avg(fl) = 0.5_wp*(q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(j_loop, k_loop, &
2351 & l_loop) + q_prim_vf(eqn_idx%adv%beg + fl - 1)%sf(idx_right_phys(1), idx_right_phys(2), &
2352 & idx_right_phys(3)))
2353 ! Raw cell-centered alphas can under/overshoot near interfaces; clamp to [0,1]
2354 alpha_avg(fl) = min(max(alpha_avg(fl), 0._wp), 1._wp)
2355 end do
2356 call s_compute_mixture_inv_re(alpha_avg, gamma_dot, res_gs, re_nn)
2357 end if
2358
2359 divergence_v = 0.0_wp
2360 do i_dim = 1, num_dims
2361 divergence_v = divergence_v + vel_grad_avg(i_dim, i_dim)
2362 end do
2363
2364 vel_src_at_interface = 0.0_wp
2365 if (norm_dir == 1) then
2366 if (any_non_newtonian) then
2367 re_shear = re_nn(1)
2368 re_bulk = re_nn(2)
2369 else
2370 re_shear = re_avg_rsx_vf(j_loop, k_loop, l_loop, 1)
2371 re_bulk = re_avg_rsx_vf(j_loop, k_loop, l_loop, 2)
2372 end if
2373 do i_dim = 1, num_dims
2374 vel_src_at_interface(i_dim) = vel_src_rsx_vf(j_loop, k_loop, l_loop, i_dim)
2375 end do
2376 else if (norm_dir == 2) then
2377 if (any_non_newtonian) then
2378 re_shear = re_nn(1)
2379 re_bulk = re_nn(2)
2380 else
2381 re_shear = re_avg_rsx_vf(j_loop, k_loop, l_loop, 1)
2382 re_bulk = re_avg_rsx_vf(j_loop, k_loop, l_loop, 2)
2383 end if
2384 do i_dim = 1, num_dims
2385 vel_src_at_interface(i_dim) = vel_src_rsx_vf(j_loop, k_loop, l_loop, i_dim)
2386 end do
2387 else
2388 if (any_non_newtonian) then
2389 re_shear = re_nn(1)
2390 re_bulk = re_nn(2)
2391 else
2392 re_shear = re_avg_rsx_vf(j_loop, k_loop, l_loop, 1)
2393 re_bulk = re_avg_rsx_vf(j_loop, k_loop, l_loop, 2)
2394 end if
2395 do i_dim = 1, num_dims
2396 vel_src_at_interface(i_dim) = vel_src_rsx_vf(j_loop, k_loop, l_loop, i_dim)
2397 end do
2398 end if
2399
2400 if (shear_stress) then
2401 ! current_tau_shear = 0.0_wp
2402 call s_calculate_shear_stress_tensor(vel_grad_avg, re_shear, divergence_v, current_tau_shear)
2403
2404 do i_dim = 1, num_dims
2405 flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2406 & l_loop) = flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2407 & l_loop) - current_tau_shear(norm_dir, i_dim)
2408
2409 flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, l_loop) = flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, &
2410 & l_loop) - vel_src_at_interface(i_dim)*current_tau_shear(norm_dir, i_dim)
2411 end do
2412 end if
2413
2414 if (bulk_stress) then
2415 ! current_tau_bulk = 0.0_wp
2416 call s_calculate_bulk_stress_tensor(re_bulk, divergence_v, current_tau_bulk)
2417
2418 do i_dim = 1, num_dims
2419 flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2420 & l_loop) = flux_src_vf(eqn_idx%mom%beg + i_dim - 1)%sf(j_loop, k_loop, &
2421 & l_loop) - current_tau_bulk(norm_dir, i_dim)
2422
2423 flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, l_loop) = flux_src_vf(eqn_idx%E)%sf(j_loop, k_loop, &
2424 & l_loop) - vel_src_at_interface(i_dim)*current_tau_bulk(norm_dir, i_dim)
2425 end do
2426 end if
2427 end do
2428 end do
2429 end do
2430
2431# 959 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2432#if defined(MFC_OpenACC)
2433# 959 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2434!$acc end parallel loop
2435# 959 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2436#elif defined(MFC_OpenMP)
2437# 959 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2438
2439# 959 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2440!$omp end target teams loop
2441# 959 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2442#endif
2443
2445
2446 !> Compute shear stress tensor components
2447 subroutine s_calculate_shear_stress_tensor(vel_grad_avg, Re_shear, divergence_v, tau_shear_out)
2448
2449
2450# 966 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2451#if MFC_OpenACC
2452# 966 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2453!$acc routine seq
2454# 966 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2455#elif MFC_OpenMP
2456# 966 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2457
2458# 966 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2459
2460# 966 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2461!$omp declare target device_type(any)
2462# 966 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2463#endif
2464
2465 ! Arguments
2466# 973 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2467 real(wp), dimension(num_dims, num_dims), intent(in) :: vel_grad_avg
2468 real(wp), dimension(num_dims, num_dims), intent(out) :: tau_shear_out
2469# 976 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2470 real(wp), intent(in) :: Re_shear
2471 real(wp), intent(in) :: divergence_v
2472
2473 ! Local variables
2474 integer :: i_dim !< Loop iterator for face normal.
2475 integer :: j_dim !< Loop iterator for force component direction.
2476 tau_shear_out = 0.0_wp
2477
2478 do i_dim = 1, num_dims
2479 do j_dim = 1, num_dims
2480 tau_shear_out(i_dim, j_dim) = (vel_grad_avg(j_dim, i_dim) + vel_grad_avg(i_dim, j_dim))/re_shear
2481 if (i_dim == j_dim) then
2482 tau_shear_out(i_dim, j_dim) = tau_shear_out(i_dim, j_dim) - (2.0_wp/3.0_wp)*divergence_v/re_shear
2483 end if
2484 end do
2485 end do
2486
2487 end subroutine s_calculate_shear_stress_tensor
2488
2489 !> Compute bulk stress tensor components (diagonal only)
2490 subroutine s_calculate_bulk_stress_tensor(Re_bulk, divergence_v, tau_bulk_out)
2491
2492
2493# 998 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2494#if MFC_OpenACC
2495# 998 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2496!$acc routine seq
2497# 998 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2498#elif MFC_OpenMP
2499# 998 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2500
2501# 998 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2502
2503# 998 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2504!$omp declare target device_type(any)
2505# 998 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2506#endif
2507
2508 ! Arguments
2509 real(wp), intent(in) :: Re_bulk
2510 real(wp), intent(in) :: divergence_v
2511# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2512 real(wp), dimension(num_dims, num_dims), intent(out) :: tau_bulk_out
2513# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2514
2515 ! Local variables
2516 integer :: i_dim !< Loop iterator for diagonal components.
2517 tau_bulk_out = 0.0_wp
2518
2519 do i_dim = 1, num_dims
2520 tau_bulk_out(i_dim, i_dim) = divergence_v/re_bulk
2521 end do
2522
2523 end subroutine s_calculate_bulk_stress_tensor
2524
2525 !> Deallocation and/or disassociation procedures that are needed to finalize the selected Riemann problem solver
2526 subroutine s_finalize_riemann_solver(flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir)
2527
2528 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
2529 integer, intent(in) :: norm_dir
2530 integer :: i, j, k, l !< Generic loop iterators
2531 ! Reshaping Outputted Data in y-direction
2532
2533 if (norm_dir == 2) then
2534
2535# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2536
2537# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2538#if defined(MFC_OpenACC)
2539# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2540!$acc parallel loop collapse(4) gang vector default(present)
2541# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2542#elif defined(MFC_OpenMP)
2543# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2544
2545# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2546
2547# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2548
2549# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2550!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2551# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2552#endif
2553 do i = 1, sys_size
2554 do l = is3%beg, is3%end
2555 do j = is1%beg, is1%end
2556 do k = is2%beg, is2%end
2557 flux_vf(i)%sf(k, j, l) = flux_rsx_vf(k, j, l, i)
2558 end do
2559 end do
2560 end do
2561 end do
2562
2563# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2564#if defined(MFC_OpenACC)
2565# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2566!$acc end parallel loop
2567# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2568#elif defined(MFC_OpenMP)
2569# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2570
2571# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2572!$omp end target teams loop
2573# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2574#endif
2575
2576 if (cyl_coord) then
2577
2578# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2579
2580# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2581#if defined(MFC_OpenACC)
2582# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2583!$acc parallel loop collapse(4) gang vector default(present)
2584# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2585#elif defined(MFC_OpenMP)
2586# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2587
2588# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2589
2590# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2591
2592# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2593!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2594# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2595#endif
2596 do i = 1, sys_size
2597 do l = is3%beg, is3%end
2598 do j = is1%beg, is1%end
2599 do k = is2%beg, is2%end
2600 flux_gsrc_vf(i)%sf(k, j, l) = flux_gsrc_rsx_vf(k, j, l, i)
2601 end do
2602 end do
2603 end do
2604 end do
2605
2606# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2607#if defined(MFC_OpenACC)
2608# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2609!$acc end parallel loop
2610# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2611#elif defined(MFC_OpenMP)
2612# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2613
2614# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2615!$omp end target teams loop
2616# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2617#endif
2618 end if
2619
2620
2621# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2622
2623# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2624#if defined(MFC_OpenACC)
2625# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2626!$acc parallel loop collapse(3) gang vector default(present)
2627# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2628#elif defined(MFC_OpenMP)
2629# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2630
2631# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2632
2633# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2634
2635# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2636!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2637# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2638#endif
2639 do l = is3%beg, is3%end
2640 do j = is1%beg, is1%end
2641 do k = is2%beg, is2%end
2642 flux_src_vf(eqn_idx%adv%beg)%sf(k, j, l) = flux_src_rsx_vf(k, j, l, eqn_idx%adv%beg)
2643 end do
2644 end do
2645 end do
2646
2647# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2648#if defined(MFC_OpenACC)
2649# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2650!$acc end parallel loop
2651# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2652#elif defined(MFC_OpenMP)
2653# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2654
2655# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2656!$omp end target teams loop
2657# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2658#endif
2659
2660 if (riemann_solver == riemann_solver_hll .or. riemann_solver == riemann_solver_hlld) then
2661
2662# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2663
2664# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2665#if defined(MFC_OpenACC)
2666# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2667!$acc parallel loop collapse(4) gang vector default(present)
2668# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2669#elif defined(MFC_OpenMP)
2670# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2671
2672# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2673
2674# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2675
2676# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2677!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2678# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2679#endif
2680 do i = eqn_idx%adv%beg + 1, eqn_idx%adv%end
2681 do l = is3%beg, is3%end
2682 do j = is1%beg, is1%end
2683 do k = is2%beg, is2%end
2684 flux_src_vf(i)%sf(k, j, l) = flux_src_rsx_vf(k, j, l, i)
2685 end do
2686 end do
2687 end do
2688 end do
2689
2690# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2691#if defined(MFC_OpenACC)
2692# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2693!$acc end parallel loop
2694# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2695#elif defined(MFC_OpenMP)
2696# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2697
2698# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2699!$omp end target teams loop
2700# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2701#endif
2702 end if
2703 ! Reshaping Outputted Data in z-direction
2704 else if (norm_dir == 3) then
2705
2706# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2707
2708# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2709#if defined(MFC_OpenACC)
2710# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2711!$acc parallel loop collapse(4) gang vector default(present)
2712# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2713#elif defined(MFC_OpenMP)
2714# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2715
2716# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2717
2718# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2719
2720# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2721!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2722# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2723#endif
2724 do i = 1, sys_size
2725 do j = is1%beg, is1%end
2726 do k = is2%beg, is2%end
2727 do l = is3%beg, is3%end
2728 flux_vf(i)%sf(l, k, j) = flux_rsx_vf(l, k, j, i)
2729 end do
2730 end do
2731 end do
2732 end do
2733
2734# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2735#if defined(MFC_OpenACC)
2736# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2737!$acc end parallel loop
2738# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2739#elif defined(MFC_OpenMP)
2740# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2741
2742# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2743!$omp end target teams loop
2744# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2745#endif
2746 if (grid_geometry == 3) then
2747
2748# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2749
2750# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2751#if defined(MFC_OpenACC)
2752# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2753!$acc parallel loop collapse(4) gang vector default(present)
2754# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2755#elif defined(MFC_OpenMP)
2756# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2757
2758# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2759
2760# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2761
2762# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2763!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2764# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2765#endif
2766 do i = 1, sys_size
2767 do j = is1%beg, is1%end
2768 do k = is2%beg, is2%end
2769 do l = is3%beg, is3%end
2770 flux_gsrc_vf(i)%sf(l, k, j) = flux_gsrc_rsx_vf(l, k, j, i)
2771 end do
2772 end do
2773 end do
2774 end do
2775
2776# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2777#if defined(MFC_OpenACC)
2778# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2779!$acc end parallel loop
2780# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2781#elif defined(MFC_OpenMP)
2782# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2783
2784# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2785!$omp end target teams loop
2786# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2787#endif
2788 end if
2789
2790
2791# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2792
2793# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2794#if defined(MFC_OpenACC)
2795# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2796!$acc parallel loop collapse(3) gang vector default(present)
2797# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2798#elif defined(MFC_OpenMP)
2799# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2800
2801# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2802
2803# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2804
2805# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2806!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2807# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2808#endif
2809 do j = is1%beg, is1%end
2810 do k = is2%beg, is2%end
2811 do l = is3%beg, is3%end
2812 flux_src_vf(eqn_idx%adv%beg)%sf(l, k, j) = flux_src_rsx_vf(l, k, j, eqn_idx%adv%beg)
2813 end do
2814 end do
2815 end do
2816
2817# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2818#if defined(MFC_OpenACC)
2819# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2820!$acc end parallel loop
2821# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2822#elif defined(MFC_OpenMP)
2823# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2824
2825# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2826!$omp end target teams loop
2827# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2828#endif
2829
2830 if (riemann_solver == riemann_solver_hll .or. riemann_solver == riemann_solver_hlld) then
2831
2832# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2833
2834# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2835#if defined(MFC_OpenACC)
2836# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2837!$acc parallel loop collapse(4) gang vector default(present)
2838# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2839#elif defined(MFC_OpenMP)
2840# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2841
2842# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2843
2844# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2845
2846# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2847!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2848# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2849#endif
2850 do i = eqn_idx%adv%beg + 1, eqn_idx%adv%end
2851 do j = is1%beg, is1%end
2852 do k = is2%beg, is2%end
2853 do l = is3%beg, is3%end
2854 flux_src_vf(i)%sf(l, k, j) = flux_src_rsx_vf(l, k, j, i)
2855 end do
2856 end do
2857 end do
2858 end do
2859
2860# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2861#if defined(MFC_OpenACC)
2862# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2863!$acc end parallel loop
2864# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2865#elif defined(MFC_OpenMP)
2866# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2867
2868# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2869!$omp end target teams loop
2870# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2871#endif
2872 end if
2873 else if (norm_dir == 1) then
2874
2875# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2876
2877# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2878#if defined(MFC_OpenACC)
2879# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2880!$acc parallel loop collapse(4) gang vector default(present)
2881# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2882#elif defined(MFC_OpenMP)
2883# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2884
2885# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2886
2887# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2888
2889# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2890!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2891# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2892#endif
2893 do i = 1, sys_size
2894 do l = is3%beg, is3%end
2895 do k = is2%beg, is2%end
2896 do j = is1%beg, is1%end
2897 flux_vf(i)%sf(j, k, l) = flux_rsx_vf(j, k, l, i)
2898 end do
2899 end do
2900 end do
2901 end do
2902
2903# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2904#if defined(MFC_OpenACC)
2905# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2906!$acc end parallel loop
2907# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2908#elif defined(MFC_OpenMP)
2909# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2910
2911# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2912!$omp end target teams loop
2913# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2914#endif
2915
2916
2917# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2918
2919# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2920#if defined(MFC_OpenACC)
2921# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2922!$acc parallel loop collapse(3) gang vector default(present)
2923# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2924#elif defined(MFC_OpenMP)
2925# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2926
2927# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2928
2929# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2930
2931# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2932!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2933# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2934#endif
2935 do l = is3%beg, is3%end
2936 do k = is2%beg, is2%end
2937 do j = is1%beg, is1%end
2938 flux_src_vf(eqn_idx%adv%beg)%sf(j, k, l) = flux_src_rsx_vf(j, k, l, eqn_idx%adv%beg)
2939 end do
2940 end do
2941 end do
2942
2943# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2944#if defined(MFC_OpenACC)
2945# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2946!$acc end parallel loop
2947# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2948#elif defined(MFC_OpenMP)
2949# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2950
2951# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2952!$omp end target teams loop
2953# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2954#endif
2955
2956 if (riemann_solver == riemann_solver_hll .or. riemann_solver == riemann_solver_hlld) then
2957
2958# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2959
2960# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2961#if defined(MFC_OpenACC)
2962# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2963!$acc parallel loop collapse(4) gang vector default(present)
2964# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2965#elif defined(MFC_OpenMP)
2966# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2967
2968# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2969
2970# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2971
2972# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2973!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2974# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2975#endif
2976 do i = eqn_idx%adv%beg + 1, eqn_idx%adv%end
2977 do l = is3%beg, is3%end
2978 do k = is2%beg, is2%end
2979 do j = is1%beg, is1%end
2980 flux_src_vf(i)%sf(j, k, l) = flux_src_rsx_vf(j, k, l, i)
2981 end do
2982 end do
2983 end do
2984 end do
2985
2986# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2987#if defined(MFC_OpenACC)
2988# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2989!$acc end parallel loop
2990# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2991#elif defined(MFC_OpenMP)
2992# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2993
2994# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2995!$omp end target teams loop
2996# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_state.fpp"
2997#endif
2998 end if
2999 end if
3000
3001 end subroutine s_finalize_riemann_solver
3002
3003end module m_riemann_state
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter riemann_solver_hll
integer, parameter riemann_solver_hlld
integer, parameter bc_riemann_extrap
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, dimension(3) dir_idx
integer, dimension(3) dir_idx_tau
used for hypoelasticity=true
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
logical shear_stress
Shear stresses.
Herschel-Bulkley non-Newtonian viscosity: formula, shear rate, and mixture inverse-Re.
subroutine, public s_compute_mixture_inv_re(alpha, shear_rate, res, re_out)
Mixture inverse Reynolds (= 1/mu_mix) per direction (1=shear, 2=bulk) at one state....
real(wp) function, public f_compute_shear_rate_from_components(d_xx, d_yy, d_zz, d_xy, d_xz, d_yz)
Shear rate gamma_dot = sqrt(2 D_ij D_ij). Absent dims pass 0.
Shared Riemann-solver module state and the per-sweep setup, state-buffer population,...
real(wp), dimension(:,:,:,:), allocatable flux_src_rsx_vf
type(int_bounds_info) isz
real(wp), dimension(:,:,:,:), allocatable mom_sp_rsx_vf
type(int_bounds_info) isx
type(int_bounds_info) is3
real(wp), dimension(:,:,:,:), allocatable flux_rsx_vf
The cell-boundary values of the fluxes (src - source) that are computed through the chosen Riemann pr...
real(wp), dimension(:,:), allocatable res_gs
subroutine s_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 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.
type(int_bounds_info) isy
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)
Deallocation and/or disassociation procedures that are needed to finalize the selected Riemann proble...
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_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
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).