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