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