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, dqL_prim_dx_n, dqL_prim_dy_n, dqL_prim_dz_n, &
1340
1341 & qL_prim, qR_prim_rsx_vf, dqR_prim_dx_n, dqR_prim_dy_n, dqR_prim_dz_n, qR_prim, q_prim_qp, dq_prim_dx_qp, dq_prim_dy_qp, &
1342 & 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 type(vector_field), dimension(num_dims), intent(inout) :: ql_prim, qr_prim
1346 type(vector_field), intent(in) :: q_prim_qp
1347 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, &
1348 & dqL_prim_dz_n, dqR_prim_dz_n
1349
1350 type(vector_field), dimension(1), intent(inout) :: dq_prim_dx_qp, dq_prim_dy_qp, dq_prim_dz_qp
1351 type(int_bounds_info), intent(in) :: ix, iy, iz
1352 integer :: i, j, k, l
1353
1354 iv%beg = eqn_idx%mom%beg; iv%end = eqn_idx%mom%end
1355
1356# 497 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1357#if defined(MFC_OpenACC)
1358# 497 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1359!$acc update device(iv)
1360# 497 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1361#elif defined(MFC_OpenMP)
1362# 497 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1363!$omp target update to(iv)
1364# 497 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1365#endif
1366
1367 if (weno_re_flux) then
1368 do i = 1, num_dims
1369 call s_reconstruct_cell_boundary_values_visc(q_prim_qp%vf(iv%beg:iv%end), ql_prim_rsx_vf, qr_prim_rsx_vf, i, &
1370 & ql_prim(i)%vf(iv%beg:iv%end), qr_prim(i)%vf(iv%beg:iv%end), ix, iy, iz)
1371 end do
1372
1373 ! Compute velocity gradients via divergence theorem on cell-boundary reconstructed values
1374 do i = 1, num_dims
1375 if (i == 1) then
1376 call s_apply_scalar_divergence_theorem(ql_prim(i)%vf(iv%beg:iv%end), qr_prim(i)%vf(iv%beg:iv%end), &
1377 & dq_prim_dx_qp(1)%vf(iv%beg:iv%end), i, ix, iy, iz, iv, dx, m, &
1378 & buff_size)
1379 else if (i == 2) 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_dy_qp(1)%vf(iv%beg:iv%end), i, ix, iy, iz, iv, dy, n, &
1382 & buff_size)
1383 else
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_dz_qp(1)%vf(iv%beg:iv%end), i, ix, iy, iz, iv, dz, p, &
1386 & buff_size)
1387 end if
1388 end do
1389 else ! Compute velocity gradients at cell centers using central finite differences
1390 iv%beg = eqn_idx%mom%beg; iv%end = eqn_idx%mom%end
1391
1392# 523 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1393#if defined(MFC_OpenACC)
1394# 523 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1395!$acc update device(iv)
1396# 523 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1397#elif defined(MFC_OpenMP)
1398# 523 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1399!$omp target update to(iv)
1400# 523 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1401#endif
1402
1403 is1_viscous = ix; is2_viscous = iy; is3_viscous = iz
1404
1405
1406# 527 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1407#if defined(MFC_OpenACC)
1408# 527 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1409!$acc update device(is1_viscous, is2_viscous, is3_viscous)
1410# 527 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1411#elif defined(MFC_OpenMP)
1412# 527 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1413!$omp target update to(is1_viscous, is2_viscous, is3_viscous)
1414# 527 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1415#endif
1416
1417
1418# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1419
1420# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1421#if defined(MFC_OpenACC)
1422# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1423!$acc parallel loop collapse(3) gang vector default(present)
1424# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1425#elif defined(MFC_OpenMP)
1426# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1427
1428# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1429
1430# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1431
1432# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1433!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1434# 529 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1435#endif
1436 do l = is3_viscous%beg, is3_viscous%end
1437 do k = iy%beg, iy%end
1438 do j = is1_viscous%beg + 1, is1_viscous%end
1439
1440# 533 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1441#if defined(MFC_OpenACC)
1442# 533 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1443!$acc loop seq
1444# 533 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1445#elif defined(MFC_OpenMP)
1446# 533 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1447
1448# 533 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1449#endif
1450 do i = iv%beg, iv%end
1451 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, &
1452 & l))/(x_cc(j) - x_cc(j - 1))
1453 end do
1454 end do
1455 end do
1456 end do
1457
1458# 541 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1459#if defined(MFC_OpenACC)
1460# 541 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1461!$acc end parallel loop
1462# 541 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1463#elif defined(MFC_OpenMP)
1464# 541 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1465
1466# 541 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1467!$omp end target teams loop
1468# 541 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1469#endif
1470
1471
1472# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1473
1474# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1475#if defined(MFC_OpenACC)
1476# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1477!$acc parallel loop collapse(3) gang vector default(present)
1478# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1479#elif defined(MFC_OpenMP)
1480# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1481
1482# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1483
1484# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1485
1486# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1487!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1488# 543 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1489#endif
1490 do l = is3_viscous%beg, is3_viscous%end
1491 do k = is2_viscous%beg, is2_viscous%end
1492 do j = is1_viscous%beg, is1_viscous%end - 1
1493
1494# 547 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1495#if defined(MFC_OpenACC)
1496# 547 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1497!$acc loop seq
1498# 547 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1499#elif defined(MFC_OpenMP)
1500# 547 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1501
1502# 547 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1503#endif
1504 do i = iv%beg, iv%end
1505 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, &
1506 & l))/(x_cc(j + 1) - x_cc(j))
1507 end do
1508 end do
1509 end do
1510 end do
1511
1512# 555 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1513#if defined(MFC_OpenACC)
1514# 555 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1515!$acc end parallel loop
1516# 555 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1517#elif defined(MFC_OpenMP)
1518# 555 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1519
1520# 555 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1521!$omp end target teams loop
1522# 555 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1523#endif
1524
1525 if (n > 0) then
1526# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1527
1528# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1529
1530# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1531#if defined(MFC_OpenACC)
1532# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1533!$acc parallel loop collapse(3) gang vector default(present)
1534# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1535#elif defined(MFC_OpenMP)
1536# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1537
1538# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1539
1540# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1541
1542# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1543!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1544# 559 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1545#endif
1546 do l = is3_viscous%beg, is3_viscous%end
1547 do j = is2_viscous%beg + 1, is2_viscous%end
1548 do k = is1_viscous%beg, is1_viscous%end
1549
1550# 563 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1551#if defined(MFC_OpenACC)
1552# 563 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1553!$acc loop seq
1554# 563 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1555#elif defined(MFC_OpenMP)
1556# 563 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1557
1558# 563 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1559#endif
1560 do i = iv%beg, iv%end
1561 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, &
1562 & j - 1, l))/(y_cc(j) - y_cc(j - 1))
1563 end do
1564 end do
1565 end do
1566 end do
1567
1568# 571 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1569#if defined(MFC_OpenACC)
1570# 571 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1571!$acc end parallel loop
1572# 571 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1573#elif defined(MFC_OpenMP)
1574# 571 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1575
1576# 571 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1577!$omp end target teams loop
1578# 571 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1579#endif
1580
1581
1582# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1583
1584# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1585#if defined(MFC_OpenACC)
1586# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1587!$acc parallel loop collapse(3) gang vector default(present)
1588# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1589#elif defined(MFC_OpenMP)
1590# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1591
1592# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1593
1594# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1595
1596# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1597!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1598# 573 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1599#endif
1600 do l = is3_viscous%beg, is3_viscous%end
1601 do j = is2_viscous%beg, is2_viscous%end - 1
1602 do k = is1_viscous%beg, is1_viscous%end
1603
1604# 577 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1605#if defined(MFC_OpenACC)
1606# 577 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1607!$acc loop seq
1608# 577 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1609#elif defined(MFC_OpenMP)
1610# 577 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1611
1612# 577 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1613#endif
1614 do i = iv%beg, iv%end
1615 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, &
1616 & j, l))/(y_cc(j + 1) - y_cc(j))
1617 end do
1618 end do
1619 end do
1620 end do
1621
1622# 585 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1623#if defined(MFC_OpenACC)
1624# 585 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1625!$acc end parallel loop
1626# 585 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1627#elif defined(MFC_OpenMP)
1628# 585 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1629
1630# 585 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1631!$omp end target teams loop
1632# 585 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1633#endif
1634
1635
1636# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1637
1638# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1639#if defined(MFC_OpenACC)
1640# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1641!$acc parallel loop collapse(3) gang vector default(present)
1642# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1643#elif defined(MFC_OpenMP)
1644# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1645
1646# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1647
1648# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1649
1650# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1651!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1652# 587 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1653#endif
1654 do l = is3_viscous%beg, is3_viscous%end
1655 do j = is2_viscous%beg + 1, is2_viscous%end
1656 do k = is1_viscous%beg + 1, is1_viscous%end - 1
1657
1658# 591 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1659#if defined(MFC_OpenACC)
1660# 591 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1661!$acc loop seq
1662# 591 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1663#elif defined(MFC_OpenMP)
1664# 591 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1665
1666# 591 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1667#endif
1668 do i = iv%beg, iv%end
1669 dql_prim_dx_n(2)%vf(i)%sf(k, j, l) = (dql_prim_dx_n(1)%vf(i)%sf(k, j, &
1670 & l) + dqr_prim_dx_n(1)%vf(i)%sf(k, j, l) + dql_prim_dx_n(1)%vf(i)%sf(k, j - 1, &
1671 & l) + dqr_prim_dx_n(1)%vf(i)%sf(k, j - 1, l))
1672
1673 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)
1674 end do
1675 end do
1676 end do
1677 end do
1678
1679# 602 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1680#if defined(MFC_OpenACC)
1681# 602 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1682!$acc end parallel loop
1683# 602 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1684#elif defined(MFC_OpenMP)
1685# 602 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1686
1687# 602 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1688!$omp end target teams loop
1689# 602 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1690#endif
1691
1692
1693# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1694
1695# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1696#if defined(MFC_OpenACC)
1697# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1698!$acc parallel loop collapse(3) gang vector default(present)
1699# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1700#elif defined(MFC_OpenMP)
1701# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1702
1703# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1704
1705# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1706
1707# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1708!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1709# 604 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1710#endif
1711 do l = is3_viscous%beg, is3_viscous%end
1712 do j = is2_viscous%beg, is2_viscous%end - 1
1713 do k = is1_viscous%beg + 1, is1_viscous%end - 1
1714
1715# 608 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1716#if defined(MFC_OpenACC)
1717# 608 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1718!$acc loop seq
1719# 608 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1720#elif defined(MFC_OpenMP)
1721# 608 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1722
1723# 608 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1724#endif
1725 do i = iv%beg, iv%end
1726 dqr_prim_dx_n(2)%vf(i)%sf(k, j, l) = (dql_prim_dx_n(1)%vf(i)%sf(k, j + 1, &
1727 & l) + dqr_prim_dx_n(1)%vf(i)%sf(k, j + 1, l) + dql_prim_dx_n(1)%vf(i)%sf(k, j, &
1728 & l) + dqr_prim_dx_n(1)%vf(i)%sf(k, j, l))
1729
1730 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)
1731 end do
1732 end do
1733 end do
1734 end do
1735
1736# 619 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1737#if defined(MFC_OpenACC)
1738# 619 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1739!$acc end parallel loop
1740# 619 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1741#elif defined(MFC_OpenMP)
1742# 619 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1743
1744# 619 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1745!$omp end target teams loop
1746# 619 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1747#endif
1748
1749
1750# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1751
1752# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1753#if defined(MFC_OpenACC)
1754# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1755!$acc parallel loop collapse(3) gang vector default(present)
1756# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1757#elif defined(MFC_OpenMP)
1758# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1759
1760# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1761
1762# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1763
1764# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1765!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1766# 621 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1767#endif
1768 do l = is3_viscous%beg, is3_viscous%end
1769 do k = is2_viscous%beg + 1, is2_viscous%end - 1
1770 do j = is1_viscous%beg + 1, is1_viscous%end
1771
1772# 625 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1773#if defined(MFC_OpenACC)
1774# 625 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1775!$acc loop seq
1776# 625 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1777#elif defined(MFC_OpenMP)
1778# 625 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1779
1780# 625 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1781#endif
1782 do i = iv%beg, iv%end
1783 dql_prim_dy_n(1)%vf(i)%sf(j, k, l) = (dql_prim_dy_n(2)%vf(i)%sf(j, k, &
1784 & l) + dqr_prim_dy_n(2)%vf(i)%sf(j, k, l) + dql_prim_dy_n(2)%vf(i)%sf(j - 1, k, &
1785 & l) + dqr_prim_dy_n(2)%vf(i)%sf(j - 1, k, l))
1786
1787 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)
1788 end do
1789 end do
1790 end do
1791 end do
1792
1793# 636 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1794#if defined(MFC_OpenACC)
1795# 636 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1796!$acc end parallel loop
1797# 636 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1798#elif defined(MFC_OpenMP)
1799# 636 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1800
1801# 636 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1802!$omp end target teams loop
1803# 636 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1804#endif
1805
1806
1807# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1808
1809# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1810#if defined(MFC_OpenACC)
1811# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1812!$acc parallel loop collapse(3) gang vector default(present)
1813# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1814#elif defined(MFC_OpenMP)
1815# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1816
1817# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1818
1819# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1820
1821# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1822!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1823# 638 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1824#endif
1825 do l = is3_viscous%beg, is3_viscous%end
1826 do k = is2_viscous%beg + 1, is2_viscous%end - 1
1827 do j = is1_viscous%beg, is1_viscous%end - 1
1828
1829# 642 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1830#if defined(MFC_OpenACC)
1831# 642 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1832!$acc loop seq
1833# 642 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1834#elif defined(MFC_OpenMP)
1835# 642 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1836
1837# 642 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1838#endif
1839 do i = iv%beg, iv%end
1840 dqr_prim_dy_n(1)%vf(i)%sf(j, k, l) = (dql_prim_dy_n(2)%vf(i)%sf(j + 1, k, &
1841 & l) + dqr_prim_dy_n(2)%vf(i)%sf(j + 1, k, l) + dql_prim_dy_n(2)%vf(i)%sf(j, k, &
1842 & l) + dqr_prim_dy_n(2)%vf(i)%sf(j, k, l))
1843
1844 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)
1845 end do
1846 end do
1847 end do
1848 end do
1849
1850# 653 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1851#if defined(MFC_OpenACC)
1852# 653 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1853!$acc end parallel loop
1854# 653 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1855#elif defined(MFC_OpenMP)
1856# 653 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1857
1858# 653 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1859!$omp end target teams loop
1860# 653 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1861#endif
1862# 655 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1863
1864 if (p > 0) then
1865# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1866
1867# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1868
1869# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1870#if defined(MFC_OpenACC)
1871# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1872!$acc parallel loop collapse(3) gang vector default(present)
1873# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1874#elif defined(MFC_OpenMP)
1875# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1876
1877# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1878
1879# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1880
1881# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1882!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1883# 658 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1884#endif
1885 do j = is3_viscous%beg + 1, is3_viscous%end
1886 do l = is2_viscous%beg, is2_viscous%end
1887 do k = is1_viscous%beg, is1_viscous%end
1888
1889# 662 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1890#if defined(MFC_OpenACC)
1891# 662 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1892!$acc loop seq
1893# 662 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1894#elif defined(MFC_OpenMP)
1895# 662 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1896
1897# 662 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1898#endif
1899 do i = iv%beg, iv%end
1900 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, &
1901 & l, j - 1))/(z_cc(j) - z_cc(j - 1))
1902 end do
1903 end do
1904 end do
1905 end do
1906
1907# 670 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1908#if defined(MFC_OpenACC)
1909# 670 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1910!$acc end parallel loop
1911# 670 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1912#elif defined(MFC_OpenMP)
1913# 670 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1914
1915# 670 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1916!$omp end target teams loop
1917# 670 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1918#endif
1919
1920
1921# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1922
1923# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1924#if defined(MFC_OpenACC)
1925# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1926!$acc parallel loop collapse(3) gang vector default(present)
1927# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1928#elif defined(MFC_OpenMP)
1929# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1930
1931# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1932
1933# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1934
1935# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1936!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1937# 672 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1938#endif
1939 do j = is3_viscous%beg, is3_viscous%end - 1
1940 do l = is2_viscous%beg, is2_viscous%end
1941 do k = is1_viscous%beg, is1_viscous%end
1942
1943# 676 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1944#if defined(MFC_OpenACC)
1945# 676 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1946!$acc loop seq
1947# 676 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1948#elif defined(MFC_OpenMP)
1949# 676 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1950
1951# 676 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1952#endif
1953 do i = iv%beg, iv%end
1954 dqr_prim_dz_n(3)%vf(i)%sf(k, l, j) = (q_prim_qp%vf(i)%sf(k, l, &
1955 & j + 1) - q_prim_qp%vf(i)%sf(k, l, j))/(z_cc(j + 1) - z_cc(j))
1956 end do
1957 end do
1958 end do
1959 end do
1960
1961# 684 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1962#if defined(MFC_OpenACC)
1963# 684 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1964!$acc end parallel loop
1965# 684 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1966#elif defined(MFC_OpenMP)
1967# 684 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1968
1969# 684 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1970!$omp end target teams loop
1971# 684 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1972#endif
1973
1974
1975# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1976
1977# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1978#if defined(MFC_OpenACC)
1979# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1980!$acc parallel loop collapse(3) gang vector default(present)
1981# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1982#elif defined(MFC_OpenMP)
1983# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1984
1985# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1986
1987# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1988
1989# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1990!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1991# 686 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1992#endif
1993 do l = is3_viscous%beg + 1, is3_viscous%end - 1
1994 do k = is2_viscous%beg, is2_viscous%end
1995 do j = is1_viscous%beg + 1, is1_viscous%end
1996
1997# 690 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
1998#if defined(MFC_OpenACC)
1999# 690 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2000!$acc loop seq
2001# 690 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2002#elif defined(MFC_OpenMP)
2003# 690 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2004
2005# 690 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2006#endif
2007 do i = iv%beg, iv%end
2008 dql_prim_dz_n(1)%vf(i)%sf(j, k, l) = (dql_prim_dz_n(3)%vf(i)%sf(j, k, &
2009 & l) + dqr_prim_dz_n(3)%vf(i)%sf(j, k, &
2010 & l) + dql_prim_dz_n(3)%vf(i)%sf(j - 1, k, &
2011 & l) + dqr_prim_dz_n(3)%vf(i)%sf(j - 1, k, l))
2012
2013 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)
2014 end do
2015 end do
2016 end do
2017 end do
2018
2019# 702 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2020#if defined(MFC_OpenACC)
2021# 702 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2022!$acc end parallel loop
2023# 702 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2024#elif defined(MFC_OpenMP)
2025# 702 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2026
2027# 702 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2028!$omp end target teams loop
2029# 702 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2030#endif
2031
2032
2033# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2034
2035# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2036#if defined(MFC_OpenACC)
2037# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2038!$acc parallel loop collapse(3) gang vector default(present)
2039# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2040#elif defined(MFC_OpenMP)
2041# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2042
2043# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2044
2045# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2046
2047# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2048!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2049# 704 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2050#endif
2051 do l = is3_viscous%beg + 1, is3_viscous%end - 1
2052 do k = is2_viscous%beg, is2_viscous%end
2053 do j = is1_viscous%beg, is1_viscous%end - 1
2054
2055# 708 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2056#if defined(MFC_OpenACC)
2057# 708 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2058!$acc loop seq
2059# 708 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2060#elif defined(MFC_OpenMP)
2061# 708 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2062
2063# 708 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2064#endif
2065 do i = iv%beg, iv%end
2066 dqr_prim_dz_n(1)%vf(i)%sf(j, k, l) = (dql_prim_dz_n(3)%vf(i)%sf(j + 1, k, &
2067 & l) + dqr_prim_dz_n(3)%vf(i)%sf(j + 1, k, &
2068 & l) + dql_prim_dz_n(3)%vf(i)%sf(j, k, l) + dqr_prim_dz_n(3)%vf(i)%sf(j, k, &
2069 & l))
2070
2071 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)
2072 end do
2073 end do
2074 end do
2075 end do
2076
2077# 720 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2078#if defined(MFC_OpenACC)
2079# 720 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2080!$acc end parallel loop
2081# 720 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2082#elif defined(MFC_OpenMP)
2083# 720 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2084
2085# 720 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2086!$omp end target teams loop
2087# 720 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2088#endif
2089
2090
2091# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2092
2093# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2094#if defined(MFC_OpenACC)
2095# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2096!$acc parallel loop collapse(3) gang vector default(present)
2097# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2098#elif defined(MFC_OpenMP)
2099# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2100
2101# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2102
2103# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2104
2105# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2106!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2107# 722 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2108#endif
2109 do l = is3_viscous%beg + 1, is3_viscous%end - 1
2110 do j = is2_viscous%beg + 1, is2_viscous%end
2111 do k = is1_viscous%beg, is1_viscous%end
2112
2113# 726 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2114#if defined(MFC_OpenACC)
2115# 726 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2116!$acc loop seq
2117# 726 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2118#elif defined(MFC_OpenMP)
2119# 726 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2120
2121# 726 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2122#endif
2123 do i = iv%beg, iv%end
2124 dql_prim_dz_n(2)%vf(i)%sf(k, j, l) = (dql_prim_dz_n(3)%vf(i)%sf(k, j, &
2125 & l) + dqr_prim_dz_n(3)%vf(i)%sf(k, j, l) + dql_prim_dz_n(3)%vf(i)%sf(k, &
2126 & j - 1, l) + dqr_prim_dz_n(3)%vf(i)%sf(k, j - 1, l))
2127
2128 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)
2129 end do
2130 end do
2131 end do
2132 end do
2133
2134# 737 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2135#if defined(MFC_OpenACC)
2136# 737 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2137!$acc end parallel loop
2138# 737 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2139#elif defined(MFC_OpenMP)
2140# 737 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2141
2142# 737 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2143!$omp end target teams loop
2144# 737 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2145#endif
2146
2147
2148# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2149
2150# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2151#if defined(MFC_OpenACC)
2152# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2153!$acc parallel loop collapse(3) gang vector default(present)
2154# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2155#elif defined(MFC_OpenMP)
2156# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2157
2158# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2159
2160# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2161
2162# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2163!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2164# 739 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2165#endif
2166 do l = is3_viscous%beg + 1, is3_viscous%end - 1
2167 do j = is2_viscous%beg, is2_viscous%end - 1
2168 do k = is1_viscous%beg, is1_viscous%end
2169
2170# 743 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2171#if defined(MFC_OpenACC)
2172# 743 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2173!$acc loop seq
2174# 743 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2175#elif defined(MFC_OpenMP)
2176# 743 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2177
2178# 743 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2179#endif
2180 do i = iv%beg, iv%end
2181 dqr_prim_dz_n(2)%vf(i)%sf(k, j, l) = (dql_prim_dz_n(3)%vf(i)%sf(k, j + 1, &
2182 & l) + dqr_prim_dz_n(3)%vf(i)%sf(k, j + 1, &
2183 & l) + dql_prim_dz_n(3)%vf(i)%sf(k, j, l) + dqr_prim_dz_n(3)%vf(i)%sf(k, j, &
2184 & l))
2185
2186 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)
2187 end do
2188 end do
2189 end do
2190 end do
2191
2192# 755 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2193#if defined(MFC_OpenACC)
2194# 755 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2195!$acc end parallel loop
2196# 755 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2197#elif defined(MFC_OpenMP)
2198# 755 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2199
2200# 755 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2201!$omp end target teams loop
2202# 755 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2203#endif
2204
2205
2206# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2207
2208# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2209#if defined(MFC_OpenACC)
2210# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2211!$acc parallel loop collapse(3) gang vector default(present)
2212# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2213#elif defined(MFC_OpenMP)
2214# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2215
2216# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2217
2218# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2219
2220# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2221!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2222# 757 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2223#endif
2224 do j = is3_viscous%beg + 1, is3_viscous%end
2225 do l = is2_viscous%beg + 1, is2_viscous%end - 1
2226 do k = is1_viscous%beg, is1_viscous%end
2227
2228# 761 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2229#if defined(MFC_OpenACC)
2230# 761 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2231!$acc loop seq
2232# 761 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2233#elif defined(MFC_OpenMP)
2234# 761 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2235
2236# 761 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2237#endif
2238 do i = iv%beg, iv%end
2239 dql_prim_dy_n(3)%vf(i)%sf(k, l, j) = (dql_prim_dy_n(2)%vf(i)%sf(k, l, &
2240 & j) + dqr_prim_dy_n(2)%vf(i)%sf(k, l, j) + dql_prim_dy_n(2)%vf(i)%sf(k, l, &
2241 & j - 1) + dqr_prim_dy_n(2)%vf(i)%sf(k, l, j - 1))
2242
2243 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)
2244 end do
2245 end do
2246 end do
2247 end do
2248
2249# 772 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2250#if defined(MFC_OpenACC)
2251# 772 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2252!$acc end parallel loop
2253# 772 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2254#elif defined(MFC_OpenMP)
2255# 772 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2256
2257# 772 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2258!$omp end target teams loop
2259# 772 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2260#endif
2261
2262
2263# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2264
2265# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2266#if defined(MFC_OpenACC)
2267# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2268!$acc parallel loop collapse(3) gang vector default(present)
2269# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2270#elif defined(MFC_OpenMP)
2271# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2272
2273# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2274
2275# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2276
2277# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2278!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2279# 774 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2280#endif
2281 do j = is3_viscous%beg, is3_viscous%end - 1
2282 do l = is2_viscous%beg + 1, is2_viscous%end - 1
2283 do k = is1_viscous%beg, is1_viscous%end
2284
2285# 778 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2286#if defined(MFC_OpenACC)
2287# 778 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2288!$acc loop seq
2289# 778 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2290#elif defined(MFC_OpenMP)
2291# 778 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2292
2293# 778 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2294#endif
2295 do i = iv%beg, iv%end
2296 dqr_prim_dy_n(3)%vf(i)%sf(k, l, j) = (dql_prim_dy_n(2)%vf(i)%sf(k, l, &
2297 & j + 1) + dqr_prim_dy_n(2)%vf(i)%sf(k, l, &
2298 & j + 1) + dql_prim_dy_n(2)%vf(i)%sf(k, l, &
2299 & j) + dqr_prim_dy_n(2)%vf(i)%sf(k, l, j))
2300
2301 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)
2302 end do
2303 end do
2304 end do
2305 end do
2306
2307# 790 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2308#if defined(MFC_OpenACC)
2309# 790 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2310!$acc end parallel loop
2311# 790 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2312#elif defined(MFC_OpenMP)
2313# 790 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2314
2315# 790 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2316!$omp end target teams loop
2317# 790 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2318#endif
2319
2320# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2321
2322# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2323#if defined(MFC_OpenACC)
2324# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2325!$acc parallel loop collapse(3) gang vector default(present)
2326# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2327#elif defined(MFC_OpenMP)
2328# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2329
2330# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2331
2332# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2333
2334# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2335!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2336# 791 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2337#endif
2338 do j = is3_viscous%beg + 1, is3_viscous%end
2339 do l = is2_viscous%beg, is2_viscous%end
2340 do k = is1_viscous%beg + 1, is1_viscous%end - 1
2341
2342# 795 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2343#if defined(MFC_OpenACC)
2344# 795 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2345!$acc loop seq
2346# 795 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2347#elif defined(MFC_OpenMP)
2348# 795 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2349
2350# 795 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2351#endif
2352 do i = iv%beg, iv%end
2353 dql_prim_dx_n(3)%vf(i)%sf(k, l, j) = (dql_prim_dx_n(1)%vf(i)%sf(k, l, &
2354 & j) + dqr_prim_dx_n(1)%vf(i)%sf(k, l, j) + dql_prim_dx_n(1)%vf(i)%sf(k, l, &
2355 & j - 1) + dqr_prim_dx_n(1)%vf(i)%sf(k, l, j - 1))
2356
2357 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)
2358 end do
2359 end do
2360 end do
2361 end do
2362
2363# 806 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2364#if defined(MFC_OpenACC)
2365# 806 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2366!$acc end parallel loop
2367# 806 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2368#elif defined(MFC_OpenMP)
2369# 806 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2370
2371# 806 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2372!$omp end target teams loop
2373# 806 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2374#endif
2375
2376# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2377
2378# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2379#if defined(MFC_OpenACC)
2380# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2381!$acc parallel loop collapse(3) gang vector default(present)
2382# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2383#elif defined(MFC_OpenMP)
2384# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2385
2386# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2387
2388# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2389
2390# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2391!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2392# 807 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2393#endif
2394 do j = is3_viscous%beg, is3_viscous%end - 1
2395 do l = is2_viscous%beg, is2_viscous%end
2396 do k = is1_viscous%beg + 1, is1_viscous%end - 1
2397
2398# 811 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2399#if defined(MFC_OpenACC)
2400# 811 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2401!$acc loop seq
2402# 811 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2403#elif defined(MFC_OpenMP)
2404# 811 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2405
2406# 811 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2407#endif
2408 do i = iv%beg, iv%end
2409 dqr_prim_dx_n(3)%vf(i)%sf(k, l, j) = (dql_prim_dx_n(1)%vf(i)%sf(k, l, &
2410 & j + 1) + dqr_prim_dx_n(1)%vf(i)%sf(k, l, &
2411 & j + 1) + dql_prim_dx_n(1)%vf(i)%sf(k, l, &
2412 & j) + dqr_prim_dx_n(1)%vf(i)%sf(k, l, j))
2413
2414 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)
2415 end do
2416 end do
2417 end do
2418 end do
2419
2420# 823 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2421#if defined(MFC_OpenACC)
2422# 823 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2423!$acc end parallel loop
2424# 823 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2425#elif defined(MFC_OpenMP)
2426# 823 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2427
2428# 823 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2429!$omp end target teams loop
2430# 823 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2431#endif
2432
2433 do i = iv%beg, iv%end
2434 call s_compute_fd_gradient(q_prim_qp%vf(i), dq_prim_dx_qp(1)%vf(i), dq_prim_dy_qp(1)%vf(i), &
2435 & dq_prim_dz_qp(1)%vf(i))
2436 end do
2437# 830 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2438 else
2439 do i = iv%beg, iv%end
2440 call s_compute_fd_gradient(q_prim_qp%vf(i), dq_prim_dx_qp(1)%vf(i), dq_prim_dy_qp(1)%vf(i), &
2441 & dq_prim_dy_qp(1)%vf(i))
2442 end do
2443 end if
2444 else
2445 do i = iv%beg, iv%end
2446 call s_compute_fd_gradient(q_prim_qp%vf(i), dq_prim_dx_qp(1)%vf(i), dq_prim_dx_qp(1)%vf(i), &
2447 & dq_prim_dx_qp(1)%vf(i))
2448 end do
2449 end if
2450 end if
2451
2452 end subroutine s_get_viscous
2453
2454 !> Reconstruct left and right cell-boundary values of viscous primitive variables
2455 subroutine s_reconstruct_cell_boundary_values_visc(v_vf, vL_x, vR_x, norm_dir, vL_prim_vf, &
2456
2457 & vR_prim_vf, ix, iy, iz)
2458
2459 type(scalar_field), dimension(iv%beg:iv%end), intent(in) :: v_vf
2460 type(scalar_field), dimension(iv%beg:iv%end), intent(inout) :: vL_prim_vf, vR_prim_vf
2461 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: vL_x, vR_x
2462 integer, intent(in) :: norm_dir
2463 type(int_bounds_info), intent(in) :: ix, iy, iz
2464 integer :: recon_dir !< Coordinate direction of the WENO reconstruction
2465 integer :: i, j, k, l
2466
2467# 860 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2468 if (recon_type == weno_type) then
2469 ! Reconstruction in s1-direction
2470
2471 if (norm_dir == 1) then
2472 is1_viscous = ix; is2_viscous = iy; is3_viscous = iz
2473 recon_dir = 1; is1_viscous%beg = is1_viscous%beg + weno_polyn
2474 is1_viscous%end = is1_viscous%end - weno_polyn
2475 else if (norm_dir == 2) then
2476 is1_viscous = iy; is2_viscous = ix; is3_viscous = iz
2477 recon_dir = 2; is1_viscous%beg = is1_viscous%beg + weno_polyn
2478 is1_viscous%end = is1_viscous%end - weno_polyn
2479 else
2480 is1_viscous = iz; is2_viscous = iy; is3_viscous = ix
2481 recon_dir = 3; is1_viscous%beg = is1_viscous%beg + weno_polyn
2482 is1_viscous%end = is1_viscous%end - weno_polyn
2483 end if
2484
2485
2486# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2487#if defined(MFC_OpenACC)
2488# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2489!$acc update device(is1_viscous, is2_viscous, is3_viscous, iv)
2490# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2491#elif defined(MFC_OpenMP)
2492# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2493!$omp target update to(is1_viscous, is2_viscous, is3_viscous, iv)
2494# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2495#endif
2496
2497 call s_weno (v_vf(iv%beg:iv%end), vl_x(:,:,:,iv%beg:iv%end), vr_x(:,:,:,iv%beg:iv%end), recon_dir, &
2499 end if
2500# 860 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2501 if (recon_type == muscl_type) then
2502 ! Reconstruction in s1-direction
2503
2504 if (norm_dir == 1) then
2505 is1_viscous = ix; is2_viscous = iy; is3_viscous = iz
2506 recon_dir = 1; is1_viscous%beg = is1_viscous%beg + muscl_polyn
2507 is1_viscous%end = is1_viscous%end - muscl_polyn
2508 else if (norm_dir == 2) then
2509 is1_viscous = iy; is2_viscous = ix; is3_viscous = iz
2510 recon_dir = 2; is1_viscous%beg = is1_viscous%beg + muscl_polyn
2511 is1_viscous%end = is1_viscous%end - muscl_polyn
2512 else
2513 is1_viscous = iz; is2_viscous = iy; is3_viscous = ix
2514 recon_dir = 3; is1_viscous%beg = is1_viscous%beg + muscl_polyn
2515 is1_viscous%end = is1_viscous%end - muscl_polyn
2516 end if
2517
2518
2519# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2520#if defined(MFC_OpenACC)
2521# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2522!$acc update device(is1_viscous, is2_viscous, is3_viscous, iv)
2523# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2524#elif defined(MFC_OpenMP)
2525# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2526!$omp target update to(is1_viscous, is2_viscous, is3_viscous, iv)
2527# 877 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2528#endif
2529
2530 call s_muscl (v_vf(iv%beg:iv%end), vl_x(:,:,:,iv%beg:iv%end), vr_x(:,:,:,iv%beg:iv%end), recon_dir, &
2532 end if
2533# 883 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2534
2535 if (viscous) then
2536 if (weno_re_flux) then
2537 if (norm_dir == 2) then
2538
2539# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2540
2541# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2542#if defined(MFC_OpenACC)
2543# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2544!$acc parallel loop collapse(4) gang vector default(present)
2545# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2546#elif defined(MFC_OpenMP)
2547# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2548
2549# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2550
2551# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2552
2553# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2554!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2555# 887 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2556#endif
2557 do i = iv%beg, iv%end
2558 do l = is3_viscous%beg, is3_viscous%end
2559 do j = is1_viscous%beg, is1_viscous%end
2560 do k = is2_viscous%beg, is2_viscous%end
2561 vl_prim_vf(i)%sf(k, j, l) = vl_x(k, j, l, i)
2562 vr_prim_vf(i)%sf(k, j, l) = vr_x(k, j, l, i)
2563 end do
2564 end do
2565 end do
2566 end do
2567
2568# 898 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2569#if defined(MFC_OpenACC)
2570# 898 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2571!$acc end parallel loop
2572# 898 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2573#elif defined(MFC_OpenMP)
2574# 898 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2575
2576# 898 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2577!$omp end target teams loop
2578# 898 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2579#endif
2580 else if (norm_dir == 3) then
2581
2582# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2583
2584# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2585#if defined(MFC_OpenACC)
2586# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2587!$acc parallel loop collapse(4) gang vector default(present)
2588# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2589#elif defined(MFC_OpenMP)
2590# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2591
2592# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2593
2594# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2595
2596# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2597!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2598# 900 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2599#endif
2600 do i = iv%beg, iv%end
2601 do j = is1_viscous%beg, is1_viscous%end
2602 do k = is2_viscous%beg, is2_viscous%end
2603 do l = is3_viscous%beg, is3_viscous%end
2604 vl_prim_vf(i)%sf(l, k, j) = vl_x(l, k, j, i)
2605 vr_prim_vf(i)%sf(l, k, j) = vr_x(l, k, j, i)
2606 end do
2607 end do
2608 end do
2609 end do
2610
2611# 911 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2612#if defined(MFC_OpenACC)
2613# 911 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2614!$acc end parallel loop
2615# 911 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2616#elif defined(MFC_OpenMP)
2617# 911 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2618
2619# 911 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2620!$omp end target teams loop
2621# 911 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2622#endif
2623 else if (norm_dir == 1) then
2624
2625# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2626
2627# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2628#if defined(MFC_OpenACC)
2629# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2630!$acc parallel loop collapse(4) gang vector default(present)
2631# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2632#elif defined(MFC_OpenMP)
2633# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2634
2635# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2636
2637# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2638
2639# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2640!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2641# 913 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2642#endif
2643 do i = iv%beg, iv%end
2644 do l = is3_viscous%beg, is3_viscous%end
2645 do k = is2_viscous%beg, is2_viscous%end
2646 do j = is1_viscous%beg, is1_viscous%end
2647 vl_prim_vf(i)%sf(j, k, l) = vl_x(j, k, l, i)
2648 vr_prim_vf(i)%sf(j, k, l) = vr_x(j, k, l, i)
2649 end do
2650 end do
2651 end do
2652 end do
2653
2654# 924 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2655#if defined(MFC_OpenACC)
2656# 924 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2657!$acc end parallel loop
2658# 924 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2659#elif defined(MFC_OpenMP)
2660# 924 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2661
2662# 924 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2663!$omp end target teams loop
2664# 924 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2665#endif
2666 end if
2667 end if
2668 end if
2669
2671
2672 !> Reconstruct left and right cell-boundary values of viscous primitive variable derivatives
2673 subroutine s_reconstruct_cell_boundary_values_visc_deriv(v_vf, vL_x, vR_x, norm_dir, vL_prim_vf, &
2674
2675 & vR_prim_vf, ix, iy, iz)
2676 type(scalar_field), dimension(iv%beg:iv%end), intent(in) :: v_vf
2677 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,iv%beg:), intent(inout) :: vl_x, vr_x
2678 type(scalar_field), dimension(iv%beg:iv%end), intent(inout) :: vl_prim_vf, vr_prim_vf
2679 type(int_bounds_info), intent(in) :: ix, iy, iz
2680 integer, intent(in) :: norm_dir
2681 integer :: recon_dir !< Coordinate direction of the WENO reconstruction
2682 integer :: i, j, k, l
2683
2684# 944 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2685 if (recon_type == weno_type) then
2686 ! Reconstruction in s1-direction
2687
2688 if (norm_dir == 1) then
2689 is1_viscous = ix; is2_viscous = iy; is3_viscous = iz
2690 recon_dir = 1; is1_viscous%beg = is1_viscous%beg + weno_polyn
2691 is1_viscous%end = is1_viscous%end - weno_polyn
2692 else if (norm_dir == 2) then
2693 is1_viscous = iy; is2_viscous = ix; is3_viscous = iz
2694 recon_dir = 2; is1_viscous%beg = is1_viscous%beg + weno_polyn
2695 is1_viscous%end = is1_viscous%end - weno_polyn
2696 else
2697 is1_viscous = iz; is2_viscous = iy; is3_viscous = ix
2698 recon_dir = 3; is1_viscous%beg = is1_viscous%beg + weno_polyn
2699 is1_viscous%end = is1_viscous%end - weno_polyn
2700 end if
2701
2702# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2703#if defined(MFC_OpenACC)
2704# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2705!$acc update device(is1_viscous, is2_viscous, is3_viscous, iv)
2706# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2707#elif defined(MFC_OpenMP)
2708# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2709!$omp target update to(is1_viscous, is2_viscous, is3_viscous, iv)
2710# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2711#endif
2712
2713 call s_weno (v_vf(iv%beg:iv%end), vl_x(:,:,:,iv%beg:iv%end), vr_x(:,:,:,iv%beg:iv%end), recon_dir, &
2715 end if
2716# 944 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2717 if (recon_type == muscl_type) then
2718 ! Reconstruction in s1-direction
2719
2720 if (norm_dir == 1) then
2721 is1_viscous = ix; is2_viscous = iy; is3_viscous = iz
2722 recon_dir = 1; is1_viscous%beg = is1_viscous%beg + muscl_polyn
2723 is1_viscous%end = is1_viscous%end - muscl_polyn
2724 else if (norm_dir == 2) then
2725 is1_viscous = iy; is2_viscous = ix; is3_viscous = iz
2726 recon_dir = 2; is1_viscous%beg = is1_viscous%beg + muscl_polyn
2727 is1_viscous%end = is1_viscous%end - muscl_polyn
2728 else
2729 is1_viscous = iz; is2_viscous = iy; is3_viscous = ix
2730 recon_dir = 3; is1_viscous%beg = is1_viscous%beg + muscl_polyn
2731 is1_viscous%end = is1_viscous%end - muscl_polyn
2732 end if
2733
2734# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2735#if defined(MFC_OpenACC)
2736# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2737!$acc update device(is1_viscous, is2_viscous, is3_viscous, iv)
2738# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2739#elif defined(MFC_OpenMP)
2740# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2741!$omp target update to(is1_viscous, is2_viscous, is3_viscous, iv)
2742# 960 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2743#endif
2744
2745 call s_muscl (v_vf(iv%beg:iv%end), vl_x(:,:,:,iv%beg:iv%end), vr_x(:,:,:,iv%beg:iv%end), recon_dir, &
2747 end if
2748# 966 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2749
2750 if (viscous) then
2751 if (weno_re_flux) then
2752 if (norm_dir == 2) then
2753
2754# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2755
2756# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2757#if defined(MFC_OpenACC)
2758# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2759!$acc parallel loop collapse(4) gang vector default(present)
2760# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2761#elif defined(MFC_OpenMP)
2762# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2763
2764# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2765
2766# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2767
2768# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2769!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2770# 970 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2771#endif
2772 do i = iv%beg, iv%end
2773 do l = is3_viscous%beg, is3_viscous%end
2774 do j = is1_viscous%beg, is1_viscous%end
2775 do k = is2_viscous%beg, is2_viscous%end
2776 vl_prim_vf(i)%sf(k, j, l) = vl_x(k, j, l, i)
2777 vr_prim_vf(i)%sf(k, j, l) = vr_x(k, j, l, i)
2778 end do
2779 end do
2780 end do
2781 end do
2782
2783# 981 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2784#if defined(MFC_OpenACC)
2785# 981 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2786!$acc end parallel loop
2787# 981 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2788#elif defined(MFC_OpenMP)
2789# 981 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2790
2791# 981 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2792!$omp end target teams loop
2793# 981 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2794#endif
2795 else if (norm_dir == 3) then
2796
2797# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2798
2799# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2800#if defined(MFC_OpenACC)
2801# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2802!$acc parallel loop collapse(4) gang vector default(present)
2803# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2804#elif defined(MFC_OpenMP)
2805# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2806
2807# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2808
2809# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2810
2811# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2812!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2813# 983 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2814#endif
2815 do i = iv%beg, iv%end
2816 do j = is1_viscous%beg, is1_viscous%end
2817 do k = is2_viscous%beg, is2_viscous%end
2818 do l = is3_viscous%beg, is3_viscous%end
2819 vl_prim_vf(i)%sf(l, k, j) = vl_x(l, k, j, i)
2820 vr_prim_vf(i)%sf(l, k, j) = vr_x(l, k, j, i)
2821 end do
2822 end do
2823 end do
2824 end do
2825
2826# 994 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2827#if defined(MFC_OpenACC)
2828# 994 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2829!$acc end parallel loop
2830# 994 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2831#elif defined(MFC_OpenMP)
2832# 994 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2833
2834# 994 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2835!$omp end target teams loop
2836# 994 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2837#endif
2838 else if (norm_dir == 1) then
2839
2840# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2841
2842# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2843#if defined(MFC_OpenACC)
2844# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2845!$acc parallel loop collapse(4) gang vector default(present)
2846# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2847#elif defined(MFC_OpenMP)
2848# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2849
2850# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2851
2852# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2853
2854# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2855!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2856# 996 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2857#endif
2858 do i = iv%beg, iv%end
2859 do l = is3_viscous%beg, is3_viscous%end
2860 do k = is2_viscous%beg, is2_viscous%end
2861 do j = is1_viscous%beg, is1_viscous%end
2862 vl_prim_vf(i)%sf(j, k, l) = vl_x(j, k, l, i)
2863 vr_prim_vf(i)%sf(j, k, l) = vr_x(j, k, l, i)
2864 end do
2865 end do
2866 end do
2867 end do
2868
2869# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2870#if defined(MFC_OpenACC)
2871# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2872!$acc end parallel loop
2873# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2874#elif defined(MFC_OpenMP)
2875# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2876
2877# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2878!$omp end target teams loop
2879# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2880#endif
2881 end if
2882 end if
2883 end if
2884
2886
2887 !> Compute cell-average spatial derivatives via the scalar divergence theorem
2888 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)
2889
2890 ! arrays of cell widths
2891 type(scalar_field), dimension(iv%beg:iv%end), intent(in) :: vL_vf, vR_vf
2892 type(scalar_field), dimension(iv%beg:iv%end), intent(inout) :: dv_ds_vf
2893 integer, intent(in) :: norm_dir
2894 type(int_bounds_info), intent(in) :: ix, iy, iz, iv_in
2895 integer, intent(in) :: dim, buff_size_in
2896 real(wp), dimension(-buff_size_in:dim + buff_size_in), intent(in) :: dL
2897 integer :: i, j, k, l !< Generic loop iterators
2898
2899 is1_viscous = ix
2900 is2_viscous = iy
2901 is3_viscous = iz
2902 iv = iv_in
2903
2904
2905# 1031 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2906#if defined(MFC_OpenACC)
2907# 1031 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2908!$acc update device(is1_viscous, is2_viscous, is3_viscous, iv)
2909# 1031 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2910#elif defined(MFC_OpenMP)
2911# 1031 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2912!$omp target update to(is1_viscous, is2_viscous, is3_viscous, iv)
2913# 1031 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2914#endif
2915
2916 ! First-Order Spatial Derivatives in x-direction
2917 if (norm_dir == 1) then
2918 ! A general application of the scalar divergence theorem that utilizes the left and right cell-boundary
2919 ! integral-averages, inside each cell, or an arithmetic mean of these two at the cell-boundaries, to calculate the
2920 ! cell-averaged first-order spatial derivatives inside the cell.
2921
2922
2923# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2924
2925# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2926#if defined(MFC_OpenACC)
2927# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2928!$acc parallel loop collapse(3) gang vector default(present)
2929# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2930#elif defined(MFC_OpenMP)
2931# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2932
2933# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2934
2935# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2936
2937# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2938!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
2939# 1039 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2940#endif
2941 do l = is3_viscous%beg, is3_viscous%end
2942 do k = is2_viscous%beg, is2_viscous%end
2943 do j = is1_viscous%beg + 1, is1_viscous%end - 1
2944
2945# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2946#if defined(MFC_OpenACC)
2947# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2948!$acc loop seq
2949# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2950#elif defined(MFC_OpenMP)
2951# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2952
2953# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2954#endif
2955 do i = iv%beg, iv%end
2956 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, &
2957 & 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))
2958 end do
2959 end do
2960 end do
2961 end do
2962
2963# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2964#if defined(MFC_OpenACC)
2965# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2966!$acc end parallel loop
2967# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2968#elif defined(MFC_OpenMP)
2969# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2970
2971# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2972!$omp end target teams loop
2973# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2974#endif
2975
2976 ! END: First-Order Spatial Derivatives in x-direction
2977
2978 ! First-Order Spatial Derivatives in y-direction
2979 else if (norm_dir == 2) then
2980 ! A general application of the scalar divergence theorem that utilizes the left and right cell-boundary
2981 ! integral-averages, inside each cell, or an arithmetic mean of these two at the cell-boundaries, to calculate the
2982 ! cell-averaged first-order spatial derivatives inside the cell.
2983
2984
2985# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2986
2987# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2988#if defined(MFC_OpenACC)
2989# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2990!$acc parallel loop collapse(3) gang vector default(present)
2991# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2992#elif defined(MFC_OpenMP)
2993# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2994
2995# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2996
2997# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
2998
2999# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3000!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3001# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3002#endif
3003 do l = is3_viscous%beg, is3_viscous%end
3004 do k = is2_viscous%beg + 1, is2_viscous%end - 1
3005 do j = is1_viscous%beg, is1_viscous%end
3006
3007# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3008#if defined(MFC_OpenACC)
3009# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3010!$acc loop seq
3011# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3012#elif defined(MFC_OpenMP)
3013# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3014
3015# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3016#endif
3017 do i = iv%beg, iv%end
3018 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, &
3019 & 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))
3020 end do
3021 end do
3022 end do
3023 end do
3024
3025# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3026#if defined(MFC_OpenACC)
3027# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3028!$acc end parallel loop
3029# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3030#elif defined(MFC_OpenMP)
3031# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3032
3033# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3034!$omp end target teams loop
3035# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3036#endif
3037
3038 ! END: First-Order Spatial Derivatives in y-direction
3039
3040 ! First-Order Spatial Derivatives in z-direction
3041 else
3042 ! A general application of the scalar divergence theorem that utilizes the left and right cell-boundary
3043 ! integral-averages, inside each cell, or an arithmetic mean of these two at the cell-boundaries, to calculate the
3044 ! cell-averaged first-order spatial derivatives inside the cell.
3045
3046
3047# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3048
3049# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3050#if defined(MFC_OpenACC)
3051# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3052!$acc parallel loop collapse(3) gang vector default(present)
3053# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3054#elif defined(MFC_OpenMP)
3055# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3056
3057# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3058
3059# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3060
3061# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3062!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3063# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3064#endif
3065 do l = is3_viscous%beg + 1, is3_viscous%end - 1
3066 do k = is2_viscous%beg, is2_viscous%end
3067 do j = is1_viscous%beg, is1_viscous%end
3068
3069# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3070#if defined(MFC_OpenACC)
3071# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3072!$acc loop seq
3073# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3074#elif defined(MFC_OpenMP)
3075# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3076
3077# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3078#endif
3079 do i = iv%beg, iv%end
3080 dv_ds_vf(i)%sf(j, k, l) = 1._wp/((1._wp + wa_flg)*dl(l))*(wa_flg*vl_vf(i)%sf(j, k, &
3081 & 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))
3082 end do
3083 end do
3084 end do
3085 end do
3086
3087# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3088#if defined(MFC_OpenACC)
3089# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3090!$acc end parallel loop
3091# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3092#elif defined(MFC_OpenMP)
3093# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3094
3095# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3096!$omp end target teams loop
3097# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3098#endif
3099 end if
3100 ! END: First-Order Spatial Derivatives in z-direction
3101
3103
3104 !> Computes the scalar gradient fields via finite differences
3105 subroutine s_compute_fd_gradient(var, grad_x, grad_y, grad_z)
3106
3107 type(scalar_field), intent(in) :: var
3108 type(scalar_field), intent(inout) :: grad_x
3109 type(scalar_field), intent(inout) :: grad_y
3110 type(scalar_field), intent(inout) :: grad_z
3111 type(int_bounds_info) :: ix, iy, iz
3112 integer :: j, k, l !< Generic loop iterators
3113
3114 ix%beg = 1 - buff_size; ix%end = m + buff_size - 1
3115 if (n > 0) then
3116 iy%beg = 1 - buff_size; iy%end = n + buff_size - 1
3117 else
3118 iy%beg = 0; iy%end = 0
3119 end if
3120
3121 if (p > 0) then
3122 iz%beg = 1 - buff_size; iz%end = p + buff_size - 1
3123 else
3124 iz%beg = 0; iz%end = 0
3125 end if
3126
3127 is1_viscous = ix; is2_viscous = iy; is3_viscous = iz
3128
3129
3130# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3131#if defined(MFC_OpenACC)
3132# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3133!$acc update device(is1_viscous, is2_viscous, is3_viscous)
3134# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3135#elif defined(MFC_OpenMP)
3136# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3137!$omp target update to(is1_viscous, is2_viscous, is3_viscous)
3138# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3139#endif
3140
3141
3142# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3143
3144# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3145#if defined(MFC_OpenACC)
3146# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3147!$acc parallel loop collapse(3) gang vector default(present)
3148# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3149#elif defined(MFC_OpenMP)
3150# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3151
3152# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3153
3154# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3155
3156# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3157!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3158# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3159#endif
3160 do l = is3_viscous%beg, is3_viscous%end
3161 do k = is2_viscous%beg, is2_viscous%end
3162 do j = is1_viscous%beg, is1_viscous%end
3163 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))
3164 end do
3165 end do
3166 end do
3167
3168# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3169#if defined(MFC_OpenACC)
3170# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3171!$acc end parallel loop
3172# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3173#elif defined(MFC_OpenMP)
3174# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3175
3176# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3177!$omp end target teams loop
3178# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3179#endif
3180
3181 if (n > 0) then
3182
3183# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3184
3185# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3186#if defined(MFC_OpenACC)
3187# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3188!$acc parallel loop collapse(3) gang vector default(present)
3189# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3190#elif defined(MFC_OpenMP)
3191# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3192
3193# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3194
3195# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3196
3197# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3198!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3199# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3200#endif
3201 do l = is3_viscous%beg, is3_viscous%end
3202 do k = is2_viscous%beg, is2_viscous%end
3203 do j = is1_viscous%beg, is1_viscous%end
3204 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))
3205 end do
3206 end do
3207 end do
3208
3209# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3210#if defined(MFC_OpenACC)
3211# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3212!$acc end parallel loop
3213# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3214#elif defined(MFC_OpenMP)
3215# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3216
3217# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3218!$omp end target teams loop
3219# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3220#endif
3221 end if
3222
3223 if (p > 0) then
3224
3225# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3226
3227# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3228#if defined(MFC_OpenACC)
3229# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3230!$acc parallel loop collapse(3) gang vector default(present)
3231# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3232#elif defined(MFC_OpenMP)
3233# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3234
3235# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3236
3237# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3238
3239# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3240!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3241# 1151 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3242#endif
3243 do l = is3_viscous%beg, is3_viscous%end
3244 do k = is2_viscous%beg, is2_viscous%end
3245 do j = is1_viscous%beg, is1_viscous%end
3246 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))
3247 end do
3248 end do
3249 end do
3250
3251# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3252#if defined(MFC_OpenACC)
3253# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3254!$acc end parallel loop
3255# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3256#elif defined(MFC_OpenMP)
3257# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3258
3259# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3260!$omp end target teams loop
3261# 1159 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3262#endif
3263 end if
3264
3265
3266# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3267
3268# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3269#if defined(MFC_OpenACC)
3270# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3271!$acc parallel loop collapse(2) gang vector default(present)
3272# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3273#elif defined(MFC_OpenMP)
3274# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3275
3276# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3277
3278# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3279
3280# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3281!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3282# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3283#endif
3284 do l = idwbuff(3)%beg, idwbuff(3)%end
3285 do k = idwbuff(2)%beg, idwbuff(2)%end
3286 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, &
3287 & l) - var%sf(idwbuff(1)%beg + 2, k, l))/(x_cc(idwbuff(1)%beg + 2) - x_cc(idwbuff(1)%beg))
3288 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, &
3289 & l) + var%sf(idwbuff(1)%end - 2, k, l))/(x_cc(idwbuff(1)%end) - x_cc(idwbuff(1)%end - 2))
3290 end do
3291 end do
3292
3293# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3294#if defined(MFC_OpenACC)
3295# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3296!$acc end parallel loop
3297# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3298#elif defined(MFC_OpenMP)
3299# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3300
3301# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3302!$omp end target teams loop
3303# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3304#endif
3305 if (n > 0) then
3306
3307# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3308
3309# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3310#if defined(MFC_OpenACC)
3311# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3312!$acc parallel loop collapse(2) gang vector default(present)
3313# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3314#elif defined(MFC_OpenMP)
3315# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3316
3317# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3318
3319# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3320
3321# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3322!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3323# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3324#endif
3325 do l = idwbuff(3)%beg, idwbuff(3)%end
3326 do j = idwbuff(1)%beg, idwbuff(1)%end
3327 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, &
3328 & l) - var%sf(j, idwbuff(2)%beg + 2, l))/(y_cc(idwbuff(2)%beg + 2) - y_cc(idwbuff(2)%beg))
3329 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, &
3330 & l) + var%sf(j, idwbuff(2)%end - 2, l))/(y_cc(idwbuff(2)%end) - y_cc(idwbuff(2)%end - 2))
3331 end do
3332 end do
3333
3334# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3335#if defined(MFC_OpenACC)
3336# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3337!$acc end parallel loop
3338# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3339#elif defined(MFC_OpenMP)
3340# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3341
3342# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3343!$omp end target teams loop
3344# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3345#endif
3346 if (p > 0) then
3347
3348# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3349
3350# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3351#if defined(MFC_OpenACC)
3352# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3353!$acc parallel loop collapse(2) gang vector default(present)
3354# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3355#elif defined(MFC_OpenMP)
3356# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3357
3358# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3359
3360# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3361
3362# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3363!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3364# 1184 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3365#endif
3366 do k = idwbuff(2)%beg, idwbuff(2)%end
3367 do j = idwbuff(1)%beg, idwbuff(1)%end
3368 grad_z%sf(j, k, idwbuff(3)%beg) = (-3._wp*var%sf(j, k, idwbuff(3)%beg) + 4._wp*var%sf(j, k, &
3369 & idwbuff(3)%beg + 1) - var%sf(j, k, &
3370 & idwbuff(3)%beg + 2))/(z_cc(idwbuff(3)%beg + 2) - z_cc(is3_viscous%beg))
3371 grad_z%sf(j, k, idwbuff(3)%end) = (+3._wp*var%sf(j, k, idwbuff(3)%end) - 4._wp*var%sf(j, k, &
3372 & idwbuff(3)%end - 1) + var%sf(j, k, &
3373 & idwbuff(3)%end - 2))/(z_cc(idwbuff(3)%end) - z_cc(idwbuff(3)%end - 2))
3374 end do
3375 end do
3376
3377# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3378#if defined(MFC_OpenACC)
3379# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3380!$acc end parallel loop
3381# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3382#elif defined(MFC_OpenMP)
3383# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3384
3385# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3386!$omp end target teams loop
3387# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3388#endif
3389 end if
3390 end if
3391
3392 if (bc_x%beg <= bc_ghost_extrap) then
3393
3394# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3395
3396# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3397#if defined(MFC_OpenACC)
3398# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3399!$acc parallel loop collapse(2) gang vector default(present)
3400# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3401#elif defined(MFC_OpenMP)
3402# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3403
3404# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3405
3406# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3407
3408# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3409!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3410# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3411#endif
3412 do l = idwbuff(3)%beg, idwbuff(3)%end
3413 do k = idwbuff(2)%beg, idwbuff(2)%end
3414 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))
3415 end do
3416 end do
3417
3418# 1206 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3419#if defined(MFC_OpenACC)
3420# 1206 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3421!$acc end parallel loop
3422# 1206 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3423#elif defined(MFC_OpenMP)
3424# 1206 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3425
3426# 1206 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3427!$omp end target teams loop
3428# 1206 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3429#endif
3430 end if
3431 if (bc_x%end <= bc_ghost_extrap) then
3432
3433# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3434
3435# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3436#if defined(MFC_OpenACC)
3437# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3438!$acc parallel loop collapse(2) gang vector default(present)
3439# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3440#elif defined(MFC_OpenMP)
3441# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3442
3443# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3444
3445# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3446
3447# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3448!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3449# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3450#endif
3451 do l = idwbuff(3)%beg, idwbuff(3)%end
3452 do k = idwbuff(2)%beg, idwbuff(2)%end
3453 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, &
3454 & l))/(x_cc(m) - x_cc(m - 2))
3455 end do
3456 end do
3457
3458# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3459#if defined(MFC_OpenACC)
3460# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3461!$acc end parallel loop
3462# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3463#elif defined(MFC_OpenMP)
3464# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3465
3466# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3467!$omp end target teams loop
3468# 1216 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3469#endif
3470 end if
3471 if (n > 0) then
3472 if (bc_y%beg <= bc_ghost_extrap .and. bc_y%beg /= bc_null) then
3473
3474# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3475
3476# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3477#if defined(MFC_OpenACC)
3478# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3479!$acc parallel loop collapse(2) gang vector default(present)
3480# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3481#elif defined(MFC_OpenMP)
3482# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3483
3484# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3485
3486# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3487
3488# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3489!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3490# 1220 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3491#endif
3492 do l = idwbuff(3)%beg, idwbuff(3)%end
3493 do j = idwbuff(1)%beg, idwbuff(1)%end
3494 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))
3495 end do
3496 end do
3497
3498# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3499#if defined(MFC_OpenACC)
3500# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3501!$acc end parallel loop
3502# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3503#elif defined(MFC_OpenMP)
3504# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3505
3506# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3507!$omp end target teams loop
3508# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3509#endif
3510 end if
3511 if (bc_y%end <= bc_ghost_extrap) then
3512
3513# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3514
3515# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3516#if defined(MFC_OpenACC)
3517# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3518!$acc parallel loop collapse(2) gang vector default(present)
3519# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3520#elif defined(MFC_OpenMP)
3521# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3522
3523# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3524
3525# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3526
3527# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3528!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3529# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3530#endif
3531 do l = idwbuff(3)%beg, idwbuff(3)%end
3532 do j = idwbuff(1)%beg, idwbuff(1)%end
3533 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, &
3534 & l))/(y_cc(n) - y_cc(n - 2))
3535 end do
3536 end do
3537
3538# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3539#if defined(MFC_OpenACC)
3540# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3541!$acc end parallel loop
3542# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3543#elif defined(MFC_OpenMP)
3544# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3545
3546# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3547!$omp end target teams loop
3548# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3549#endif
3550 end if
3551 if (p > 0) then
3552 if (bc_z%beg <= bc_ghost_extrap) then
3553
3554# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3555
3556# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3557#if defined(MFC_OpenACC)
3558# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3559!$acc parallel loop collapse(2) gang vector default(present)
3560# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3561#elif defined(MFC_OpenMP)
3562# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3563
3564# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3565
3566# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3567
3568# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3569!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3570# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3571#endif
3572 do k = idwbuff(2)%beg, idwbuff(2)%end
3573 do j = idwbuff(1)%beg, idwbuff(1)%end
3574 grad_z%sf(j, k, 0) = (-3._wp*var%sf(j, k, 0) + 4._wp*var%sf(j, k, 1) - var%sf(j, k, &
3575 & 2))/(z_cc(2) - z_cc(0))
3576 end do
3577 end do
3578
3579# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3580#if defined(MFC_OpenACC)
3581# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3582!$acc end parallel loop
3583# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3584#elif defined(MFC_OpenMP)
3585# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3586
3587# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3588!$omp end target teams loop
3589# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3590#endif
3591 end if
3592 if (bc_z%end <= bc_ghost_extrap) then
3593
3594# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3595
3596# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3597#if defined(MFC_OpenACC)
3598# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3599!$acc parallel loop collapse(2) gang vector default(present)
3600# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3601#elif defined(MFC_OpenMP)
3602# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3603
3604# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3605
3606# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3607
3608# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3609!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3610# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3611#endif
3612 do k = idwbuff(2)%beg, idwbuff(2)%end
3613 do j = idwbuff(1)%beg, idwbuff(1)%end
3614 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, &
3615 & p - 2))/(z_cc(p) - z_cc(p - 2))
3616 end do
3617 end do
3618
3619# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3620#if defined(MFC_OpenACC)
3621# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3622!$acc end parallel loop
3623# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3624#elif defined(MFC_OpenMP)
3625# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3626
3627# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3628!$omp end target teams loop
3629# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3630#endif
3631 end if
3632 end if
3633 end if
3634
3635 end subroutine s_compute_fd_gradient
3636
3637 !> Compute the viscous stress tensor at a single grid cell using finite-difference velocity gradients
3638 subroutine s_compute_viscous_stress_tensor(viscous_stress_tensor, q_prim_vf, dynamic_viscosity, i, j, k)
3639
3640
3641# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3642#if MFC_OpenACC
3643# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3644!$acc routine seq
3645# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3646#elif MFC_OpenMP
3647# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3648
3649# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3650
3651# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3652!$omp declare target device_type(any)
3653# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3654#endif
3655
3656 real(wp), dimension(1:3,1:3), intent(inout) :: viscous_stress_tensor
3657 type(scalar_field), dimension(1:sys_size), intent(in) :: q_prim_vf
3658 real(wp), intent(in) :: dynamic_viscosity
3659 integer, intent(in) :: i, j, k
3660 real(wp), dimension(1:3,1:3) :: velocity_gradient_tensor
3661 real(wp), dimension(1:3) :: dx
3662 real(wp) :: divergence
3663 integer :: l, q !< iterators
3664
3665 ! zero the viscous stress, collection of velocity derivatives, and spatial finite differences
3666 viscous_stress_tensor = 0._wp
3667 velocity_gradient_tensor = 0._wp
3668 dx = 0._wp
3669
3670 ! get the change in x used in the finite difference equation
3671 dx(1) = 0.5_wp*(x_cc(i + 1) - x_cc(i - 1))
3672 dx(2) = 0.5_wp*(y_cc(j + 1) - y_cc(j - 1))
3673 if (num_dims == 3) then
3674 dx(3) = 0.5_wp*(z_cc(k + 1) - z_cc(k - 1))
3675 end if
3676
3677 ! compute the velocity gradient tensor
3678 do l = 1, num_dims
3679 velocity_gradient_tensor(l, 1) = (q_prim_vf(eqn_idx%mom%beg + l - 1)%sf(i + 1, j, &
3680 & k) - q_prim_vf(eqn_idx%mom%beg + l - 1)%sf(i - 1, j, k))/(2._wp*dx(1))
3681 velocity_gradient_tensor(l, 2) = (q_prim_vf(eqn_idx%mom%beg + l - 1)%sf(i, j + 1, &
3682 & k) - q_prim_vf(eqn_idx%mom%beg + l - 1)%sf(i, j - 1, k))/(2._wp*dx(2))
3683 if (num_dims == 3) then
3684 velocity_gradient_tensor(l, 3) = (q_prim_vf(eqn_idx%mom%beg + l - 1)%sf(i, j, &
3685 & k + 1) - q_prim_vf(eqn_idx%mom%beg + l - 1)%sf(i, j, k - 1))/(2._wp*dx(3))
3686 end if
3687 end do
3688
3689 ! compute divergence
3690 divergence = 0._wp
3691 do l = 1, num_dims
3692 divergence = divergence + velocity_gradient_tensor(l, l)
3693 end do
3694
3695 ! Viscous stress tensor: tau_ij = mu * (du_i/dx_j + du_j/dx_i) - 2/3 * mu * div(u) * delta_ij
3696 do l = 1, num_dims
3697 do q = 1, num_dims
3698 viscous_stress_tensor(l, q) = dynamic_viscosity*(velocity_gradient_tensor(l, q) + velocity_gradient_tensor(q, l))
3699 end do
3700 end do
3701
3702 ! Subtract isotropic bulk viscosity term (Stokes hypothesis)
3703 do l = 1, num_dims
3704 viscous_stress_tensor(l, l) = viscous_stress_tensor(l, l) - 2._wp*divergence*dynamic_viscosity/3._wp
3705 end do
3706
3707 if (num_dims == 2) then
3708 do l = 1, 3
3709 viscous_stress_tensor(3, l) = 0._wp
3710 viscous_stress_tensor(l, 3) = 0._wp
3711 end do
3712 end if
3713
3714 end subroutine s_compute_viscous_stress_tensor
3715
3716 !> Finalize the viscous module
3717 impure subroutine s_finalize_viscous_module()
3718
3719#ifdef MFC_DEBUG
3720# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3721 block
3722# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3723 use iso_fortran_env, only: output_unit
3724# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3725
3726# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3727 print *, 'm_viscous.fpp:1332: ', '@:DEALLOCATE(Res_viscous)'
3728# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3729
3730# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3731 call flush (output_unit)
3732# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3733 end block
3734# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3735#endif
3736# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3737
3738# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3739#if defined(MFC_OpenACC)
3740# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3741!$acc exit data delete(Res_viscous)
3742# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3743#elif defined(MFC_OpenMP)
3744# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3745!$omp target exit data map(release:Res_viscous)
3746# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3747#endif
3748# 1332 "/home/runner/work/MFC/MFC/src/simulation/m_viscous.fpp"
3749 deallocate (res_viscous)
3750
3751 end subroutine s_finalize_viscous_module
3752
3753end 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.
type(int_bounds_info) is2_viscous
subroutine, public s_get_viscous(ql_prim_rsx_vf, dql_prim_dx_n, dql_prim_dy_n, dql_prim_dz_n, ql_prim, qr_prim_rsx_vf, dqr_prim_dx_n, dqr_prim_dy_n, dqr_prim_dz_n, qr_prim, q_prim_qp, dq_prim_dx_qp, dq_prim_dy_qp, dq_prim_dz_qp, ix, iy, iz)
Computes viscous terms.
type(int_bounds_info) is1_viscous
subroutine, public s_compute_viscous_stress_tensor(viscous_stress_tensor, q_prim_vf, dynamic_viscosity, i, j, k)
Compute the viscous stress tensor at a single grid cell using finite-difference velocity gradients.
type(int_bounds_info) iv
subroutine, public s_reconstruct_cell_boundary_values_visc_deriv(v_vf, vl_x, vr_x, norm_dir, vl_prim_vf, vr_prim_vf, ix, iy, iz)
Reconstruct left and right cell-boundary values of viscous primitive variable derivatives.
real(wp), dimension(:,:), allocatable res_viscous
subroutine s_reconstruct_cell_boundary_values_visc(v_vf, vl_x, vr_x, norm_dir, vl_prim_vf, vr_prim_vf, ix, iy, iz)
Reconstruct left and right cell-boundary values of viscous primitive variables.
impure subroutine, public s_initialize_viscous_module
Initialize the viscous module.
impure subroutine, public s_finalize_viscous_module()
Finalize the viscous module.
type(int_bounds_info) is3_viscous
subroutine, public s_compute_viscous_stress_cylindrical_boundary(q_prim_vf, grad_x_vf, grad_y_vf, grad_z_vf, tau_re_vf, ix, iy, iz)
Compute viscous stress tensor near cylindrical axis, avoiding 1/r singularity at y_cb(-1)=0.
subroutine s_apply_scalar_divergence_theorem(vl_vf, vr_vf, dv_ds_vf, norm_dir, ix, iy, iz, iv_in, dl, dim, buff_size_in)
Compute cell-average spatial derivatives via the scalar divergence theorem.
subroutine s_compute_fd_gradient(var, grad_x, grad_y, grad_z)
Computes the scalar gradient fields via finite differences.
WENO/WENO-Z/TENO reconstruction with optional monotonicity-preserving bounds and mapped weights.
Integer bounds for variables.