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