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