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