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