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