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