MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_derived_variables.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
2!>
3!! @file
4!! @brief Contains module m_derived_variables
5
6!> @brief Derives diagnostic flow quantities (vorticity, speed of sound, numerical Schlieren, etc.) from conservative and primitive
7!! variables
8# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
9# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
10# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
11# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
14# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
15# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16
17# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
18# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20
21# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24
25# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26
27# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28
29# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30
31# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32
33# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34
35# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36
37# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38
39# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40! New line at end of file is required for FYPP
41# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
42# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
43# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
44# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53
54# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57
58# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59
60# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61
62# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63
64# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65
66# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67
68# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69
70# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
71
72# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
73! New line at end of file is required for FYPP
74# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
75
76# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81
82# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83
84# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85
86# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87
88# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89
90# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91
92# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93
94# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95
96# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97
98# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99
100# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101
102# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113
114# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115
116# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117
118# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119
120# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121
122# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123
124# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138
139# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140
141# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142
143# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144
145# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146
147# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148
149# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150
151# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152! New line at end of file is required for FYPP
153# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
154# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
155# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
156# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161
162# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165
166# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169
170# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171
172# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173
174# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175
176# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177
178# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179
180# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
181
182# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
183
184# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
185! New line at end of file is required for FYPP
186# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
187
188# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189
190# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191
192# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193
194# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195
196# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197
198# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199
200# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201
202# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203
204# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205
206# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207
208# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209
210# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211
212# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213
214# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215
216# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217
218# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219
220# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221
222# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223
224# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225
226# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227
228# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229
230# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231
232# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233
234# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
235
236# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
237
238# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
239
240# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
241
242# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
243! New line at end of file is required for FYPP
244# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
245
246! GPU parallel region (scalar reductions, maxval/minval)
247# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249! GPU parallel loop over threads (most common GPU macro)
250# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252! Required closing for GPU_PARALLEL_LOOP
253# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255! Mark routine for device compilation
256# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! Declare device-resident data
259# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Inner loop within a GPU parallel region
262# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Scoped GPU data region
265# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Host code with device pointers (for MPI with GPU buffers)
268# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! Allocate device memory (unscoped)
271# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Free device memory
274# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! Atomic operation on device
277# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! End atomic capture block
280# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Copy data between host and device
283# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Synchronization barrier
286# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! Import GPU library module (openacc or omp_lib)
289# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Emit code only for AMD compiler
292# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294! Emit code for non-Cray compilers
295# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296
297! Emit code only for Cray compiler
298# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299
300! Emit code for non-NVIDIA compilers
301# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302
303# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305! New line at end of file is required for FYPP
306# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
307
308# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
309
310! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
311! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
312! example see misc/nvidia_uvm/bind.sh.
313# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Allocate and create GPU device memory
316# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Free GPU device memory and deallocate
319# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321! Cray-specific GPU pointer setup for vector fields
322# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323
324! Cray-specific GPU pointer setup for scalar fields
325# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326
327! Cray-specific GPU pointer setup for acoustic source spatials
328# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
329
330# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
331
332# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
333! New line at end of file is required for FYPP
334# 8 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp" 2
335
337
340 use m_data_output
342 use m_helper
344
345 implicit none
346
349
350 ! @name Variables for computing acceleration
351 !> @{
352 real(wp), public, allocatable, dimension(:,:,:) :: accel_mag
353 real(wp), public, allocatable, dimension(:,:,:) :: x_accel, y_accel, z_accel
354 !> @}
355
356# 28 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
357#if defined(MFC_OpenACC)
358# 28 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
359!$acc declare create(accel_mag, x_accel, y_accel, z_accel)
360# 28 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
361#elif defined(MFC_OpenMP)
362# 28 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
363!$omp declare target (accel_mag, x_accel, y_accel, z_accel)
364# 28 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
365#endif
366
367contains
368
369 !> Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the module
371
372 ! Allocating the variables which will store the coefficients of the centered family of finite-difference schemes. Note that
373 ! sufficient space is allocated so that the coefficients up to any chosen order of accuracy may be bookkept. However, if
374 ! higher than fourth-order accuracy coefficients are wanted, the formulae required to compute these coefficients will have
375 ! to be implemented in the subroutine s_compute_finite_difference_coefficients.
376
377 ! Allocating centered finite-difference coefficients
378 if (probe_wrt .or. ib) then
379#ifdef MFC_DEBUG
380# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
381 block
382# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
383 use iso_fortran_env, only: output_unit
384# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
385
386# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
387 print *, 'm_derived_variables.fpp:42: ', '@:ALLOCATE(fd_coeff_x(-fd_number:fd_number, 0:m))'
388# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
389
390# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
391 call flush (output_unit)
392# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
393 end block
394# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
395#endif
396# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
397 allocate (fd_coeff_x(-fd_number:fd_number, 0:m))
398# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
399
400# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
401
402# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
403#if defined(MFC_OpenACC)
404# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
405!$acc enter data create(fd_coeff_x)
406# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
407#elif defined(MFC_OpenMP)
408# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
409!$omp target enter data map(always,alloc:fd_coeff_x)
410# 42 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
411#endif
412 if (n > 0) then
413#ifdef MFC_DEBUG
414# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
415 block
416# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
417 use iso_fortran_env, only: output_unit
418# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
419
420# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
421 print *, 'm_derived_variables.fpp:44: ', '@:ALLOCATE(fd_coeff_y(-fd_number:fd_number, 0:n))'
422# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
423
424# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
425 call flush (output_unit)
426# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
427 end block
428# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
429#endif
430# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
431 allocate (fd_coeff_y(-fd_number:fd_number, 0:n))
432# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
433
434# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
435
436# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
437#if defined(MFC_OpenACC)
438# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
439!$acc enter data create(fd_coeff_y)
440# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
441#elif defined(MFC_OpenMP)
442# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
443!$omp target enter data map(always,alloc:fd_coeff_y)
444# 44 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
445#endif
446 end if
447 if (p > 0) then
448#ifdef MFC_DEBUG
449# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
450 block
451# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
452 use iso_fortran_env, only: output_unit
453# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
454
455# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
456 print *, 'm_derived_variables.fpp:47: ', '@:ALLOCATE(fd_coeff_z(-fd_number:fd_number, 0:p))'
457# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
458
459# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
460 call flush (output_unit)
461# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
462 end block
463# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
464#endif
465# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
466 allocate (fd_coeff_z(-fd_number:fd_number, 0:p))
467# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
468
469# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
470
471# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
472#if defined(MFC_OpenACC)
473# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
474!$acc enter data create(fd_coeff_z)
475# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
476#elif defined(MFC_OpenMP)
477# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
478!$omp target enter data map(always,alloc:fd_coeff_z)
479# 47 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
480#endif
481 end if
482
483#ifdef MFC_DEBUG
484# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
485 block
486# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
487 use iso_fortran_env, only: output_unit
488# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
489
490# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
491 print *, 'm_derived_variables.fpp:50: ', '@:ALLOCATE(accel_mag(0:m, 0:n, 0:p))'
492# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
493
494# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
495 call flush (output_unit)
496# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
497 end block
498# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
499#endif
500# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
501 allocate (accel_mag(0:m, 0:n, 0:p))
502# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
503
504# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
505
506# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
507#if defined(MFC_OpenACC)
508# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
509!$acc enter data create(accel_mag)
510# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
511#elif defined(MFC_OpenMP)
512# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
513!$omp target enter data map(always,alloc:accel_mag)
514# 50 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
515#endif
516#ifdef MFC_DEBUG
517# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
518 block
519# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
520 use iso_fortran_env, only: output_unit
521# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
522
523# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
524 print *, 'm_derived_variables.fpp:51: ', '@:ALLOCATE(x_accel(0:m, 0:n, 0:p))'
525# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
526
527# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
528 call flush (output_unit)
529# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
530 end block
531# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
532#endif
533# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
534 allocate (x_accel(0:m, 0:n, 0:p))
535# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
536
537# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
538
539# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
540#if defined(MFC_OpenACC)
541# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
542!$acc enter data create(x_accel)
543# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
544#elif defined(MFC_OpenMP)
545# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
546!$omp target enter data map(always,alloc:x_accel)
547# 51 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
548#endif
549 if (n > 0) then
550#ifdef MFC_DEBUG
551# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
552 block
553# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
554 use iso_fortran_env, only: output_unit
555# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
556
557# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
558 print *, 'm_derived_variables.fpp:53: ', '@:ALLOCATE(y_accel(0:m, 0:n, 0:p))'
559# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
560
561# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
562 call flush (output_unit)
563# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
564 end block
565# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
566#endif
567# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
568 allocate (y_accel(0:m, 0:n, 0:p))
569# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
570
571# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
572
573# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
574#if defined(MFC_OpenACC)
575# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
576!$acc enter data create(y_accel)
577# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
578#elif defined(MFC_OpenMP)
579# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
580!$omp target enter data map(always,alloc:y_accel)
581# 53 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
582#endif
583 if (p > 0) then
584#ifdef MFC_DEBUG
585# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
586 block
587# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
588 use iso_fortran_env, only: output_unit
589# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
590
591# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
592 print *, 'm_derived_variables.fpp:55: ', '@:ALLOCATE(z_accel(0:m, 0:n, 0:p))'
593# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
594
595# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
596 call flush (output_unit)
597# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
598 end block
599# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
600#endif
601# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
602 allocate (z_accel(0:m, 0:n, 0:p))
603# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
604
605# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
606
607# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
608#if defined(MFC_OpenACC)
609# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
610!$acc enter data create(z_accel)
611# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
612#elif defined(MFC_OpenMP)
613# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
614!$omp target enter data map(always,alloc:z_accel)
615# 55 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
616#endif
617 end if
618 end if
619 end if
620
622
623 !> Allocate and open derived variables. Computing FD coefficients.
625
626 if (probe_wrt .or. ib) then
627 ! Opening and writing header of flow probe files
628 if (proc_rank == 0 .and. probe_wrt) then
629 call s_open_probe_files()
630 end if
631 ! Computing centered finite difference coefficients
632 call s_compute_finite_difference_coefficients(m, x_cc, fd_coeff_x, buff_size, fd_number, fd_order)
633
634# 72 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
635#if defined(MFC_OpenACC)
636# 72 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
637!$acc update device(fd_coeff_x)
638# 72 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
639#elif defined(MFC_OpenMP)
640# 72 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
641!$omp target update to(fd_coeff_x)
642# 72 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
643#endif
644
645 if (n > 0) then
646 call s_compute_finite_difference_coefficients(n, y_cc, fd_coeff_y, buff_size, fd_number, fd_order)
647
648# 76 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
649#if defined(MFC_OpenACC)
650# 76 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
651!$acc update device(fd_coeff_y)
652# 76 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
653#elif defined(MFC_OpenMP)
654# 76 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
655!$omp target update to(fd_coeff_y)
656# 76 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
657#endif
658 end if
659 if (p > 0) then
660 call s_compute_finite_difference_coefficients(p, z_cc, fd_coeff_z, buff_size, fd_number, fd_order)
661
662# 80 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
663#if defined(MFC_OpenACC)
664# 80 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
665!$acc update device(fd_coeff_z)
666# 80 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
667#elif defined(MFC_OpenMP)
668# 80 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
669!$omp target update to(fd_coeff_z)
670# 80 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
671#endif
672 end if
673 end if
674
675 end subroutine s_initialize_derived_variables
676
677 !> Writes coherent body information, communication files, and probes.
678 subroutine s_compute_derived_variables(t_step, q_cons_vf, q_prim_ts1, q_prim_ts2)
679
680 integer, intent(in) :: t_step
681 type(scalar_field), dimension(:), intent(inout) :: q_cons_vf
682 type(vector_field), dimension(:), intent(inout) :: q_prim_ts1, q_prim_ts2
683 integer :: i, j, k !< Generic loop iterators
684
685 if (probe_wrt) then
686 call s_derive_acceleration_component(1, q_prim_ts1(1)%vf, q_prim_ts1(2)%vf, q_prim_ts2(1)%vf, q_prim_ts2(2)%vf, x_accel)
687 if (n > 0) then
688 call s_derive_acceleration_component(2, q_prim_ts1(1)%vf, q_prim_ts1(2)%vf, q_prim_ts2(1)%vf, q_prim_ts2(2)%vf, &
689 & y_accel)
690 end if
691 if (p > 0) then
692 call s_derive_acceleration_component(3, q_prim_ts1(1)%vf, q_prim_ts1(2)%vf, q_prim_ts2(1)%vf, q_prim_ts2(2)%vf, &
693 & z_accel)
694 end if
695
696
697# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
698
699# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
700#if defined(MFC_OpenACC)
701# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
702!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
703# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
704#elif defined(MFC_OpenMP)
705# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
706
707# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
708
709# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
710
711# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
712!$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)
713# 105 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
714#endif
715 do k = 0, p
716 do j = 0, n
717 do i = 0, m
718 if (p > 0) then
719 accel_mag(i, j, k) = sqrt(x_accel(i, j, k)**2._wp + y_accel(i, j, k)**2._wp + z_accel(i, j, k)**2._wp)
720 else if (n > 0) then
721 accel_mag(i, j, k) = sqrt(x_accel(i, j, k)**2._wp + y_accel(i, j, k)**2._wp)
722 else
723 accel_mag(i, j, k) = x_accel(i, j, k)
724 end if
725 end do
726 end do
727 end do
728
729# 119 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
730#if defined(MFC_OpenACC)
731# 119 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
732!$acc end parallel loop
733# 119 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
734#elif defined(MFC_OpenMP)
735# 119 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
736
737# 119 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
738!$omp end target teams loop
739# 119 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
740#endif
741
742
743# 121 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
744#if defined(MFC_OpenACC)
745# 121 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
746!$acc update host(accel_mag)
747# 121 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
748#elif defined(MFC_OpenMP)
749# 121 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
750!$omp target update from(accel_mag)
751# 121 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
752#endif
753
754 call s_write_probe_files(t_step, q_cons_vf, accel_mag)
755 end if
756
757 end subroutine s_compute_derived_variables
758
759 !> Compute a component of the acceleration field from the primitive variables
760 subroutine s_derive_acceleration_component(i, q_prim_vf0, q_prim_vf1, q_prim_vf2, q_prim_vf3, q_sf)
761
762 integer, intent(in) :: i
763 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf0
764 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf1
765 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf2
766 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf3
767 real(wp), dimension(0:m,0:n,0:p), intent(out) :: q_sf
768 integer :: j, k, l, r !< Generic loop iterators
769 ! Computing the acceleration component in the x-coordinate direction
770
771 if (i == 1) then
772
773# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
774
775# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
776#if defined(MFC_OpenACC)
777# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
778!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
779# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
780#elif defined(MFC_OpenMP)
781# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
782
783# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
784
785# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
786
787# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
788!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l)
789# 141 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
790#endif
791 do l = 0, p
792 do k = 0, n
793 do j = 0, m
794 q_sf(j, k, l) = (11._wp*q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, &
795 & l) - 18._wp*q_prim_vf1(eqn_idx%mom%beg)%sf(j, k, l) + 9._wp*q_prim_vf2(eqn_idx%mom%beg)%sf(j, k, &
796 & l) - 2._wp*q_prim_vf3(eqn_idx%mom%beg)%sf(j, k, l))/(6._wp*dt)
797 end do
798 end do
799 end do
800
801# 151 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
802#if defined(MFC_OpenACC)
803# 151 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
804!$acc end parallel loop
805# 151 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
806#elif defined(MFC_OpenMP)
807# 151 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
808
809# 151 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
810!$omp end target teams loop
811# 151 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
812#endif
813
814 if (n == 0) then
815
816# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
817
818# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
819#if defined(MFC_OpenACC)
820# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
821!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
822# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
823#elif defined(MFC_OpenMP)
824# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
825
826# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
827
828# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
829
830# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
831!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
832# 154 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
833#endif
834 do l = 0, p
835 do k = 0, n
836 do j = 0, m
837 do r = -fd_number, fd_number
838 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
839 & j)*q_prim_vf0(eqn_idx%mom%beg)%sf(r + j, k, l)
840 end do
841 end do
842 end do
843 end do
844
845# 165 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
846#if defined(MFC_OpenACC)
847# 165 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
848!$acc end parallel loop
849# 165 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
850#elif defined(MFC_OpenMP)
851# 165 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
852
853# 165 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
854!$omp end target teams loop
855# 165 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
856#endif
857 else if (p == 0) then
858
859# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
860
861# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
862#if defined(MFC_OpenACC)
863# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
864!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
865# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
866#elif defined(MFC_OpenMP)
867# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
868
869# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
870
871# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
872
873# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
874!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
875# 167 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
876#endif
877 do l = 0, p
878 do k = 0, n
879 do j = 0, m
880 do r = -fd_number, fd_number
881 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
882 & j)*q_prim_vf0(eqn_idx%mom%beg)%sf(r + j, k, l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, &
883 & l)*fd_coeff_y(r, k)*q_prim_vf0(eqn_idx%mom%beg)%sf(j, r + k, l)
884 end do
885 end do
886 end do
887 end do
888
889# 179 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
890#if defined(MFC_OpenACC)
891# 179 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
892!$acc end parallel loop
893# 179 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
894#elif defined(MFC_OpenMP)
895# 179 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
896
897# 179 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
898!$omp end target teams loop
899# 179 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
900#endif
901 else
902 if (grid_geometry == 3) then
903
904# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
905
906# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
907#if defined(MFC_OpenACC)
908# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
909!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
910# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
911#elif defined(MFC_OpenMP)
912# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
913
914# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
915
916# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
917
918# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
919!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
920# 182 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
921#endif
922 do l = 0, p
923 do k = 0, n
924 do j = 0, m
925 do r = -fd_number, fd_number
926 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
927 & j)*q_prim_vf0(eqn_idx%mom%beg)%sf(r + j, k, l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, &
928 & k, l)*fd_coeff_y(r, k)*q_prim_vf0(eqn_idx%mom%beg)%sf(j, r + k, &
929 & l) + q_prim_vf0(eqn_idx%mom%end)%sf(j, k, l)*fd_coeff_z(r, &
930 & l)*q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, r + l)/y_cc(k)
931 end do
932 end do
933 end do
934 end do
935
936# 196 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
937#if defined(MFC_OpenACC)
938# 196 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
939!$acc end parallel loop
940# 196 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
941#elif defined(MFC_OpenMP)
942# 196 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
943
944# 196 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
945!$omp end target teams loop
946# 196 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
947#endif
948 else
949
950# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
951
952# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
953#if defined(MFC_OpenACC)
954# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
955!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
956# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
957#elif defined(MFC_OpenMP)
958# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
959
960# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
961
962# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
963
964# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
965!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
966# 198 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
967#endif
968 do l = 0, p
969 do k = 0, n
970 do j = 0, m
971 do r = -fd_number, fd_number
972 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
973 & j)*q_prim_vf0(eqn_idx%mom%beg)%sf(r + j, k, l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, &
974 & k, l)*fd_coeff_y(r, k)*q_prim_vf0(eqn_idx%mom%beg)%sf(j, r + k, &
975 & l) + q_prim_vf0(eqn_idx%mom%end)%sf(j, k, l)*fd_coeff_z(r, &
976 & l)*q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, r + l)
977 end do
978 end do
979 end do
980 end do
981
982# 212 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
983#if defined(MFC_OpenACC)
984# 212 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
985!$acc end parallel loop
986# 212 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
987#elif defined(MFC_OpenMP)
988# 212 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
989
990# 212 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
991!$omp end target teams loop
992# 212 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
993#endif
994 end if
995 end if
996 ! Computing the acceleration component in the y-coordinate direction
997 else if (i == 2) then
998
999# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1000
1001# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1002#if defined(MFC_OpenACC)
1003# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1004!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1005# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1006#elif defined(MFC_OpenMP)
1007# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1008
1009# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1010
1011# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1012
1013# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1014!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l)
1015# 217 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1016#endif
1017 do l = 0, p
1018 do k = 0, n
1019 do j = 0, m
1020 q_sf(j, k, l) = (11._wp*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, &
1021 & l) - 18._wp*q_prim_vf1(eqn_idx%mom%beg + 1)%sf(j, k, &
1022 & l) + 9._wp*q_prim_vf2(eqn_idx%mom%beg + 1)%sf(j, k, &
1023 & l) - 2._wp*q_prim_vf3(eqn_idx%mom%beg + 1)%sf(j, k, l))/(6._wp*dt)
1024 end do
1025 end do
1026 end do
1027
1028# 228 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1029#if defined(MFC_OpenACC)
1030# 228 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1031!$acc end parallel loop
1032# 228 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1033#elif defined(MFC_OpenMP)
1034# 228 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1035
1036# 228 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1037!$omp end target teams loop
1038# 228 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1039#endif
1040
1041 if (p == 0) then
1042
1043# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1044
1045# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1046#if defined(MFC_OpenACC)
1047# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1048!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
1049# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1050#elif defined(MFC_OpenMP)
1051# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1052
1053# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1054
1055# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1056
1057# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1058!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
1059# 231 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1060#endif
1061 do l = 0, p
1062 do k = 0, n
1063 do j = 0, m
1064 do r = -fd_number, fd_number
1065 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
1066 & j)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(r + j, k, l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, &
1067 & k, l)*fd_coeff_y(r, k)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, r + k, l)
1068 end do
1069 end do
1070 end do
1071 end do
1072
1073# 243 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1074#if defined(MFC_OpenACC)
1075# 243 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1076!$acc end parallel loop
1077# 243 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1078#elif defined(MFC_OpenMP)
1079# 243 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1080
1081# 243 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1082!$omp end target teams loop
1083# 243 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1084#endif
1085 else
1086 if (grid_geometry == 3) then
1087
1088# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1089
1090# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1091#if defined(MFC_OpenACC)
1092# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1093!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
1094# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1095#elif defined(MFC_OpenMP)
1096# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1097
1098# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1099
1100# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1101
1102# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1103!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
1104# 246 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1105#endif
1106 do l = 0, p
1107 do k = 0, n
1108 do j = 0, m
1109 do r = -fd_number, fd_number
1110 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
1111 & j)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(r + j, k, &
1112 & l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, l)*fd_coeff_y(r, &
1113 & k)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, r + k, l) + q_prim_vf0(eqn_idx%mom%end)%sf(j, &
1114 & k, l)*fd_coeff_z(r, l)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, &
1115 & r + l)/y_cc(k) - (q_prim_vf0(eqn_idx%mom%end)%sf(j, k, l)**2._wp)/y_cc(k)
1116 end do
1117 end do
1118 end do
1119 end do
1120
1121# 261 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1122#if defined(MFC_OpenACC)
1123# 261 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1124!$acc end parallel loop
1125# 261 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1126#elif defined(MFC_OpenMP)
1127# 261 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1128
1129# 261 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1130!$omp end target teams loop
1131# 261 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1132#endif
1133 else
1134
1135# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1136
1137# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1138#if defined(MFC_OpenACC)
1139# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1140!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
1141# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1142#elif defined(MFC_OpenMP)
1143# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1144
1145# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1146
1147# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1148
1149# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1150!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
1151# 263 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1152#endif
1153 do l = 0, p
1154 do k = 0, n
1155 do j = 0, m
1156 do r = -fd_number, fd_number
1157 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
1158 & j)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(r + j, k, &
1159 & l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, l)*fd_coeff_y(r, &
1160 & k)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, r + k, l) + q_prim_vf0(eqn_idx%mom%end)%sf(j, &
1161 & k, l)*fd_coeff_z(r, l)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, r + l)
1162 end do
1163 end do
1164 end do
1165 end do
1166
1167# 277 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1168#if defined(MFC_OpenACC)
1169# 277 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1170!$acc end parallel loop
1171# 277 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1172#elif defined(MFC_OpenMP)
1173# 277 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1174
1175# 277 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1176!$omp end target teams loop
1177# 277 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1178#endif
1179 end if
1180 end if
1181 ! Computing the acceleration component in the z-coordinate direction
1182 else
1183
1184# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1185
1186# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1187#if defined(MFC_OpenACC)
1188# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1189!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
1190# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1191#elif defined(MFC_OpenMP)
1192# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1193
1194# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1195
1196# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1197
1198# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1199!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l)
1200# 282 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1201#endif
1202 do l = 0, p
1203 do k = 0, n
1204 do j = 0, m
1205 q_sf(j, k, l) = (11._wp*q_prim_vf0(eqn_idx%mom%end)%sf(j, k, &
1206 & l) - 18._wp*q_prim_vf1(eqn_idx%mom%end)%sf(j, k, l) + 9._wp*q_prim_vf2(eqn_idx%mom%end)%sf(j, k, &
1207 & l) - 2._wp*q_prim_vf3(eqn_idx%mom%end)%sf(j, k, l))/(6._wp*dt)
1208 end do
1209 end do
1210 end do
1211
1212# 292 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1213#if defined(MFC_OpenACC)
1214# 292 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1215!$acc end parallel loop
1216# 292 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1217#elif defined(MFC_OpenMP)
1218# 292 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1219
1220# 292 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1221!$omp end target teams loop
1222# 292 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1223#endif
1224
1225 if (grid_geometry == 3) then
1226
1227# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1228
1229# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1230#if defined(MFC_OpenACC)
1231# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1232!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
1233# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1234#elif defined(MFC_OpenMP)
1235# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1236
1237# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1238
1239# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1240
1241# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1242!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
1243# 295 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1244#endif
1245 do l = 0, p
1246 do k = 0, n
1247 do j = 0, m
1248 do r = -fd_number, fd_number
1249 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
1250 & j)*q_prim_vf0(eqn_idx%mom%end)%sf(r + j, k, l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, &
1251 & l)*fd_coeff_y(r, k)*q_prim_vf0(eqn_idx%mom%end)%sf(j, r + k, &
1252 & l) + q_prim_vf0(eqn_idx%mom%end)%sf(j, k, l)*fd_coeff_z(r, &
1253 & l)*q_prim_vf0(eqn_idx%mom%end)%sf(j, k, &
1254 & r + l)/y_cc(k) + (q_prim_vf0(eqn_idx%mom%end)%sf(j, k, &
1255 & l)*q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, l))/y_cc(k)
1256 end do
1257 end do
1258 end do
1259 end do
1260
1261# 311 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1262#if defined(MFC_OpenACC)
1263# 311 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1264!$acc end parallel loop
1265# 311 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1266#elif defined(MFC_OpenMP)
1267# 311 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1268
1269# 311 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1270!$omp end target teams loop
1271# 311 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1272#endif
1273 else
1274
1275# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1276
1277# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1278#if defined(MFC_OpenACC)
1279# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1280!$acc parallel loop collapse(4) gang vector default(present) private(j, k, l, r)
1281# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1282#elif defined(MFC_OpenMP)
1283# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1284
1285# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1286
1287# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1288
1289# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1290!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l, r)
1291# 313 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1292#endif
1293 do l = 0, p
1294 do k = 0, n
1295 do j = 0, m
1296 do r = -fd_number, fd_number
1297 q_sf(j, k, l) = q_sf(j, k, l) + q_prim_vf0(eqn_idx%mom%beg)%sf(j, k, l)*fd_coeff_x(r, &
1298 & j)*q_prim_vf0(eqn_idx%mom%end)%sf(r + j, k, l) + q_prim_vf0(eqn_idx%mom%beg + 1)%sf(j, k, &
1299 & l)*fd_coeff_y(r, k)*q_prim_vf0(eqn_idx%mom%end)%sf(j, r + k, &
1300 & l) + q_prim_vf0(eqn_idx%mom%end)%sf(j, k, l)*fd_coeff_z(r, &
1301 & l)*q_prim_vf0(eqn_idx%mom%end)%sf(j, k, r + l)
1302 end do
1303 end do
1304 end do
1305 end do
1306
1307# 327 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1308#if defined(MFC_OpenACC)
1309# 327 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1310!$acc end parallel loop
1311# 327 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1312#elif defined(MFC_OpenMP)
1313# 327 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1314
1315# 327 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1316!$omp end target teams loop
1317# 327 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1318#endif
1319 end if
1320 end if
1321
1322 end subroutine s_derive_acceleration_component
1323
1324 !> Deallocation procedures for the module
1326
1327 ! Closing flow probe files
1328 if (proc_rank == 0 .and. probe_wrt) then
1329 call s_close_probe_files()
1330 end if
1331
1332 if (probe_wrt .or. ib) then
1333#ifdef MFC_DEBUG
1334# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1335 block
1336# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1337 use iso_fortran_env, only: output_unit
1338# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1339
1340# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1341 print *, 'm_derived_variables.fpp:342: ', '@:DEALLOCATE(accel_mag)'
1342# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1343
1344# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1345 call flush (output_unit)
1346# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1347 end block
1348# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1349#endif
1350# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1351
1352# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1353#if defined(MFC_OpenACC)
1354# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1355!$acc exit data delete(accel_mag)
1356# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1357#elif defined(MFC_OpenMP)
1358# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1359!$omp target exit data map(release:accel_mag)
1360# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1361#endif
1362# 342 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1363 deallocate (accel_mag)
1364#ifdef MFC_DEBUG
1365# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1366 block
1367# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1368 use iso_fortran_env, only: output_unit
1369# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1370
1371# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1372 print *, 'm_derived_variables.fpp:343: ', '@:DEALLOCATE(x_accel)'
1373# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1374
1375# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1376 call flush (output_unit)
1377# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1378 end block
1379# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1380#endif
1381# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1382
1383# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1384#if defined(MFC_OpenACC)
1385# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1386!$acc exit data delete(x_accel)
1387# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1388#elif defined(MFC_OpenMP)
1389# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1390!$omp target exit data map(release:x_accel)
1391# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1392#endif
1393# 343 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1394 deallocate (x_accel)
1395 if (n > 0) then
1396#ifdef MFC_DEBUG
1397# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1398 block
1399# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1400 use iso_fortran_env, only: output_unit
1401# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1402
1403# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1404 print *, 'm_derived_variables.fpp:345: ', '@:DEALLOCATE(y_accel)'
1405# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1406
1407# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1408 call flush (output_unit)
1409# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1410 end block
1411# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1412#endif
1413# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1414
1415# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1416#if defined(MFC_OpenACC)
1417# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1418!$acc exit data delete(y_accel)
1419# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1420#elif defined(MFC_OpenMP)
1421# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1422!$omp target exit data map(release:y_accel)
1423# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1424#endif
1425# 345 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1426 deallocate (y_accel)
1427 if (p > 0) then
1428#ifdef MFC_DEBUG
1429# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1430 block
1431# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1432 use iso_fortran_env, only: output_unit
1433# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1434
1435# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1436 print *, 'm_derived_variables.fpp:347: ', '@:DEALLOCATE(z_accel)'
1437# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1438
1439# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1440 call flush (output_unit)
1441# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1442 end block
1443# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1444#endif
1445# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1446
1447# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1448#if defined(MFC_OpenACC)
1449# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1450!$acc exit data delete(z_accel)
1451# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1452#elif defined(MFC_OpenMP)
1453# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1454!$omp target exit data map(release:z_accel)
1455# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1456#endif
1457# 347 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1458 deallocate (z_accel)
1459 end if
1460 end if
1461#ifdef MFC_DEBUG
1462# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1463 block
1464# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1465 use iso_fortran_env, only: output_unit
1466# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1467
1468# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1469 print *, 'm_derived_variables.fpp:350: ', '@:DEALLOCATE(fd_coeff_x)'
1470# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1471
1472# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1473 call flush (output_unit)
1474# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1475 end block
1476# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1477#endif
1478# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1479
1480# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1481#if defined(MFC_OpenACC)
1482# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1483!$acc exit data delete(fd_coeff_x)
1484# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1485#elif defined(MFC_OpenMP)
1486# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1487!$omp target exit data map(release:fd_coeff_x)
1488# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1489#endif
1490# 350 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1491 deallocate (fd_coeff_x)
1492 if (n > 0) then
1493#ifdef MFC_DEBUG
1494# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1495 block
1496# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1497 use iso_fortran_env, only: output_unit
1498# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1499
1500# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1501 print *, 'm_derived_variables.fpp:352: ', '@:DEALLOCATE(fd_coeff_y)'
1502# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1503
1504# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1505 call flush (output_unit)
1506# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1507 end block
1508# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1509#endif
1510# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1511
1512# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1513#if defined(MFC_OpenACC)
1514# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1515!$acc exit data delete(fd_coeff_y)
1516# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1517#elif defined(MFC_OpenMP)
1518# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1519!$omp target exit data map(release:fd_coeff_y)
1520# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1521#endif
1522# 352 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1523 deallocate (fd_coeff_y)
1524 end if
1525 if (p > 0) then
1526#ifdef MFC_DEBUG
1527# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1528 block
1529# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1530 use iso_fortran_env, only: output_unit
1531# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1532
1533# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1534 print *, 'm_derived_variables.fpp:355: ', '@:DEALLOCATE(fd_coeff_z)'
1535# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1536
1537# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1538 call flush (output_unit)
1539# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1540 end block
1541# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1542#endif
1543# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1544
1545# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1546#if defined(MFC_OpenACC)
1547# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1548!$acc exit data delete(fd_coeff_z)
1549# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1550#elif defined(MFC_OpenMP)
1551# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1552!$omp target exit data map(release:fd_coeff_z)
1553# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1554#endif
1555# 355 "/home/runner/work/MFC/MFC/src/simulation/m_derived_variables.fpp"
1556 deallocate (fd_coeff_z)
1557 end if
1558 end if
1559
1561
1562end module m_derived_variables
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
integer, intent(in) k
integer, intent(in) j
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
Writes solution data, run-time stability diagnostics (ICFL, VCFL, CCFL, Rc), and probe/center-of-mass...
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Derives diagnostic flow quantities (vorticity, speed of sound, numerical Schlieren,...
impure subroutine, public s_initialize_derived_variables
Allocate and open derived variables. Computing FD coefficients.
real(wp), dimension(:,:,:), allocatable, public accel_mag
subroutine, public s_compute_derived_variables(t_step, q_cons_vf, q_prim_ts1, q_prim_ts2)
Writes coherent body information, communication files, and probes.
real(wp), dimension(:,:,:), allocatable, public z_accel
impure subroutine, public s_initialize_derived_variables_module
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
impure subroutine, public s_finalize_derived_variables_module
Deallocation procedures for the module.
real(wp), dimension(:,:,:), allocatable, public x_accel
real(wp), dimension(:,:,:), allocatable, public y_accel
subroutine s_derive_acceleration_component(i, q_prim_vf0, q_prim_vf1, q_prim_vf2, q_prim_vf3, q_sf)
Compute a component of the acceleration field from the primitive variables.
Finite difference operators for computing divergence of velocity fields.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer fd_number
Finite-difference half-stencil size: MAX(1, fd_order/2).
real(wp), dimension(:,:), allocatable fd_coeff_x
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...