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