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