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