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