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