MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_global_parameters.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2!>
3!! @file
4!! @brief Contains module m_global_parameters
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
20# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25
26# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45! New line at end of file is required for FYPP
46# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
47# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
48# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
49# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54
55# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72
73# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74! New line at end of file is required for FYPP
75# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
76
77# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153! New line at end of file is required for FYPP
154# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
155# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
156# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
157# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176
177# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178
179# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180
181# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182! New line at end of file is required for FYPP
183# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
184
185# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240! New line at end of file is required for FYPP
241# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
242
243! GPU parallel region (scalar reductions, maxval/minval)
244# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246! GPU parallel loop over threads (most common GPU macro)
247# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249! Required closing for GPU_PARALLEL_LOOP
250# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252! Mark routine for device compilation
253# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255! Declare device-resident data
256# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! Inner loop within a GPU parallel region
259# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Scoped GPU data region
262# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Host code with device pointers (for MPI with GPU buffers)
265# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Allocate device memory (unscoped)
268# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! Free device memory
271# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Atomic operation on device
274# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! End atomic capture block
277# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Copy data between host and device
280# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Synchronization barrier
283# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Import GPU library module (openacc or omp_lib)
286# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! Emit code only for AMD compiler
289# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Emit code for non-Cray compilers
292# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294! Emit code only for Cray compiler
295# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296
297! Emit code for non-NVIDIA compilers
298# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299
300# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302! New line at end of file is required for FYPP
303# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
304
305# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
306
307! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
308! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
309! example see misc/nvidia_uvm/bind.sh.
310# 55 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312! Allocate and create GPU device memory
313# 75 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Free GPU device memory and deallocate
316# 83 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Cray-specific GPU pointer setup for vector fields
319# 107 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321! Cray-specific GPU pointer setup for scalar fields
322# 123 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323
324! Cray-specific GPU pointer setup for acoustic source spatials
325# 148 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326
327# 154 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329# 161 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
330! New line at end of file is required for FYPP
331# 7 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp" 2
332
333!> @brief Global parameters for the computational domain, fluid properties, and simulation algorithm configuration
335
336#ifdef MFC_MPI
337 use mpi !< message passing interface (mpi) module
338#endif
339
342 ! Shared state: generated_decls, generated_case_opt_decls, sys_size, eqn_idx, chemistry, shear_*
344 ! $:USE_GPU_MODULE()
345
346 implicit none
347
348 real(wp) :: wall_time = 0
349 real(wp) :: wall_time_avg = 0
350
351 ! Logistics
352 integer :: num_procs !< Number of processors
353 ! Computational Domain Parameters
354 integer :: proc_rank !< Rank of the local processor
355
356# 30 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
357#if defined(MFC_OpenACC)
358# 30 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
359!$acc declare create(num_procs, proc_rank)
360# 30 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
361#elif defined(MFC_OpenMP)
362# 30 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
363!$omp declare target (num_procs, proc_rank)
364# 30 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
365#endif
366
367 !> @name Max and min number of cells in a direction of each combination of x-,y-, and z-
369
370 !> @name Global number of cells in each direction
371 !> @{
372 integer :: m_glb, n_glb, p_glb
373 !> @}
374
375 !> @name Cylindrical coordinates (either axisymmetric or full 3D)
376 !> @{
377 integer :: grid_geometry
378 !> @}
379
380# 44 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
381#if defined(MFC_OpenACC)
382# 44 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
383!$acc declare create(grid_geometry)
384# 44 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
385#elif defined(MFC_OpenMP)
386# 44 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
387!$omp declare target (grid_geometry)
388# 44 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
389#endif
390
391 !> @name Cell-boundary (CB) locations in the x-, y- and z-directions, respectively
392 !> @{
393 real(wp), target, allocatable, dimension(:) :: x_cb, y_cb, z_cb
394 type(bounds_info), dimension(3) :: glb_bounds
395 !> @}
396
397 !> @name Cell-center (CC) locations in the x-, y- and z-directions, respectively
398 !> @{
399 real(wp), target, allocatable, dimension(:) :: x_cc, y_cc, z_cc
400 !> @}
401 !> @name Cell-width distributions in the x-, y- and z-directions, respectively
402 !> @{
403 real(wp), target, allocatable, dimension(:) :: dx, dy, dz
404 !> @}
405
406
407# 61 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
408#if defined(MFC_OpenACC)
409# 61 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
410!$acc declare create(x_cb, y_cb, z_cb, x_cc, y_cc, z_cc, dx, dy, dz)
411# 61 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
412#elif defined(MFC_OpenMP)
413# 61 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
414!$omp declare target (x_cb, y_cb, z_cb, x_cc, y_cc, z_cc, dx, dy, dz)
415# 61 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
416#endif
417
418 ! dt, m, n, p, cfl_target: GPU-declared via generated_decls.fpp (registered params)
419
420# 64 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
421#if defined(MFC_OpenACC)
422# 64 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
423!$acc declare create(glb_bounds)
424# 64 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
425#elif defined(MFC_OpenMP)
426# 64 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
427!$omp declare target (glb_bounds)
428# 64 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
429#endif
430
431 logical :: cfl_dt
432 ! Simulation Algorithm Parameters generated_case_opt_decls.fpp: now in m_global_parameters_common
433
434 !> Hypoelastic NC velocity-coupling mode; exactly one value, derived from riemann_solver + hypo_hll_interface_rhs.
435 integer, parameter :: hypo_nc_mode_none = 0 !< no hypoelastic NC velocity coupling
436 integer, parameter :: hypo_nc_mode_finite_diff = 1 !< velocity gradients by finite difference (HLL without interface RHS)
437 !> interface-velocity export for the velocity-gradient tensor (HLL Method 2, HLLC)
438 integer, parameter :: hypo_nc_mode_interface = 2
439 integer, parameter :: hypo_nc_mode_dual_pass = 3 !< anchored dual-pass HLLD; all NC terms stay in the Riemann flux
440 integer :: hypo_nc_mode
441 !> NC volume-fraction advection export mode; exactly one value, derived from riemann_solver + hll_u_interface.
442 integer, parameter :: adv_src_mode_unset = 0 !< not yet derived
443 integer, parameter :: adv_src_mode_alpha_iface = 1 !< flux_src exports per-fluid interface alpha
444 integer, parameter :: adv_src_mode_vel_iface = 2 !< flux_src exports shared face-normal interface velocity
445 integer, parameter :: adv_src_mode_none = 3 !< flux_src exports no NC advection quantity
446 integer :: adv_src_mode
447 logical :: use_nc_iface_vel !< nc_iface_vel exports interface velocities needed outside flux_src
448 ! chemistry: in m_global_parameters_common
449 logical :: shear_stress !< Shear stresses
450 logical :: bulk_stress !< Bulk stresses
451 logical :: bodyforces
452 real(wp), dimension(3) :: accel_bf
453
454# 88 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
455#if defined(MFC_OpenACC)
456# 88 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
457!$acc declare create(accel_bf)
458# 88 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
459#elif defined(MFC_OpenMP)
460# 88 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
461!$omp declare target (accel_bf)
462# 88 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
463#endif
464 ! $:GPU_DECLARE(create='[k_x,w_x,p_x,g_x,k_y,w_y,p_y,g_y,k_z,w_z,p_z,g_z]')
465
466 !> Source fields for the spatially supported body force. `spatial_bf` and
467 !> `bf_spatial_support` are auto-generated in generated_decls.fpp.
468 real(wp), allocatable, dimension(:,:,:) :: spbf_source_x
469 real(wp), allocatable, dimension(:,:,:) :: spbf_source_y
470
471# 95 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
472#if defined(MFC_OpenACC)
473# 95 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
474!$acc declare create(spbf_source_x, spbf_source_y)
475# 95 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
476#elif defined(MFC_OpenMP)
477# 95 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
478!$omp declare target (spbf_source_x, spbf_source_y)
479# 95 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
480#endif
481
482 ! Synthetic turbulence (scalars auto-generated in generated_decls.fpp; their
483 ! GPU_DECLARE lines live in m_global_parameters_common)
484 integer, dimension(num_synth_shells_max) :: synth_n_waves_per_shell
485 real(wp), dimension(num_synth_shells_max) :: synth_k_shell, synth_amp_shell
486 real(wp), dimension(num_turb_sources_max, 3) :: turb_pos, synth_l
487
488# 102 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
489#if defined(MFC_OpenACC)
490# 102 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
491!$acc declare create(synth_n_waves_per_shell, synth_k_shell, synth_amp_shell)
492# 102 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
493#elif defined(MFC_OpenMP)
494# 102 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
495!$omp declare target (synth_n_waves_per_shell, synth_k_shell, synth_amp_shell)
496# 102 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
497#endif
498
499# 103 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
500#if defined(MFC_OpenACC)
501# 103 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
502!$acc declare create(turb_pos, synth_L)
503# 103 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
504#elif defined(MFC_OpenMP)
505# 103 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
506!$omp declare target (turb_pos, synth_L)
507# 103 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
508#endif
509
511
512
513# 107 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
514#if defined(MFC_OpenACC)
515# 107 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
516!$acc declare create(shear_stress, bulk_stress)
517# 107 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
518#elif defined(MFC_OpenMP)
519# 107 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
520!$omp declare target (shear_stress, bulk_stress)
521# 107 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
522#endif
523
524# 108 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
525#if defined(MFC_OpenACC)
526# 108 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
527!$acc declare create(hypo_nc_mode)
528# 108 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
529#elif defined(MFC_OpenMP)
530# 108 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
531!$omp declare target (hypo_nc_mode)
532# 108 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
533#endif
534
535 logical :: bc_io
536 logical, dimension(3) :: periodic_bc
537 !> @name Boundary conditions (BC) in the x-, y- and z-directions, respectively
538 !> @{
541 !> @}
542 !> @name Original boundary conditions preserved for immersed boundary code
543 !> (bc_x/y/z get overwritten with MPI neighbor ranks during decomposition)
544 !> @{
546 !> @}
547#if defined(MFC_OpenACC)
548
549# 123 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
550#if defined(MFC_OpenACC)
551# 123 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
552!$acc declare create(bc_x%vb1, bc_x%vb2, bc_x%vb3, bc_x%ve1, bc_x%ve2, bc_x%ve3)
553# 123 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
554#elif defined(MFC_OpenMP)
555# 123 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
556!$omp declare target (bc_x%vb1, bc_x%vb2, bc_x%vb3, bc_x%ve1, bc_x%ve2, bc_x%ve3)
557# 123 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
558#endif
559
560# 124 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
561#if defined(MFC_OpenACC)
562# 124 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
563!$acc declare create(bc_y%vb1, bc_y%vb2, bc_y%vb3, bc_y%ve1, bc_y%ve2, bc_y%ve3)
564# 124 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
565#elif defined(MFC_OpenMP)
566# 124 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
567!$omp declare target (bc_y%vb1, bc_y%vb2, bc_y%vb3, bc_y%ve1, bc_y%ve2, bc_y%ve3)
568# 124 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
569#endif
570
571# 125 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
572#if defined(MFC_OpenACC)
573# 125 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
574!$acc declare create(bc_z%vb1, bc_z%vb2, bc_z%vb3, bc_z%ve1, bc_z%ve2, bc_z%ve3)
575# 125 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
576#elif defined(MFC_OpenMP)
577# 125 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
578!$omp declare target (bc_z%vb1, bc_z%vb2, bc_z%vb3, bc_z%ve1, bc_z%ve2, bc_z%ve3)
579# 125 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
580#endif
581
582# 126 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
583#if defined(MFC_OpenACC)
584# 126 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
585!$acc declare create(ib_bc_x%beg, ib_bc_y%beg, ib_bc_z%beg)
586# 126 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
587#elif defined(MFC_OpenMP)
588# 126 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
589!$omp declare target (ib_bc_x%beg, ib_bc_y%beg, ib_bc_z%beg)
590# 126 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
591#endif
592#elif defined(MFC_OpenMP)
593
594# 128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
595#if defined(MFC_OpenACC)
596# 128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
597!$acc declare create(bc_x, bc_y, bc_z)
598# 128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
599#elif defined(MFC_OpenMP)
600# 128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
601!$omp declare target (bc_x, bc_y, bc_z)
602# 128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
603#endif
604
605# 129 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
606#if defined(MFC_OpenACC)
607# 129 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
608!$acc declare create(ib_bc_x, ib_bc_y, ib_bc_z)
609# 129 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
610#elif defined(MFC_OpenMP)
611# 129 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
612!$omp declare target (ib_bc_x, ib_bc_y, ib_bc_z)
613# 129 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
614#endif
615#endif
616
617# 131 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
618#if defined(MFC_OpenACC)
619# 131 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
620!$acc declare create(bc)
621# 131 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
622#elif defined(MFC_OpenMP)
623# 131 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
624!$omp declare target (bc)
625# 131 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
626#endif
629
630# 134 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
631#if defined(MFC_OpenACC)
632# 134 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
633!$acc declare create(neighbor_domain_x, neighbor_domain_y, neighbor_domain_z, num_gbl_ibs)
634# 134 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
635#elif defined(MFC_OpenMP)
636# 134 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
637!$omp declare target (neighbor_domain_x, neighbor_domain_y, neighbor_domain_z, num_gbl_ibs)
638# 134 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
639#endif
640
641 ! proc_coords, start_idx, mpiiofs, mpi_info_int: in m_global_parameters_common
642 ! down_sample: GPU-declared via generated_decls.fpp (registered param)
643
644 !> @name MPI domain-decomposition state for Lagrangian-bubble exchange (#1290)
645 !> @{
646 type(bounds_info), allocatable, dimension(:) :: pcomm_coords !< Local rank physical domain bounds
647 type(int_bounds_info), dimension(3) :: nidx !< Neighbor index offsets per direction
648 integer, allocatable, dimension(:,:,:) :: neighbor_ranks !< MPI ranks of neighbors
649
650# 144 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
651#if defined(MFC_OpenACC)
652# 144 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
653!$acc declare create(pcomm_coords)
654# 144 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
655#elif defined(MFC_OpenMP)
656# 144 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
657!$omp declare target (pcomm_coords)
658# 144 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
659#endif
660 !> @}
661 type(mpi_io_var), public :: mpi_io_data
666 real(wp), allocatable, dimension(:,:), public :: mpi_io_data_lag_bubbles
667
668 ! sys_size and eqn_idx: in m_global_parameters_common (GPU_DECLARE there too)
669 type(qbmm_idx_info) :: qbmm_idx !< QBMM moment index mappings (allocatable; GPU-managed separately).
670
671 ! Cell Indices for the (local) interior points (O-m, O-n, 0-p). Stands for "InDices With INTerior".
673
674# 158 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
675#if defined(MFC_OpenACC)
676# 158 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
677!$acc declare create(idwint)
678# 158 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
679#elif defined(MFC_OpenMP)
680# 158 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
681!$omp declare target (idwint)
682# 158 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
683#endif
684
685 ! Cell Indices for the entire (local) domain. In simulation and post_process, this includes the buffer region. idwbuff and
686 ! idwint are the same otherwise. Stands for "InDices With BUFFer".
688
689# 163 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
690#if defined(MFC_OpenACC)
691# 163 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
692!$acc declare create(idwbuff)
693# 163 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
694#elif defined(MFC_OpenMP)
695# 163 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
696!$omp declare target (idwbuff)
697# 163 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
698#endif
699
700 !> @name Herschel-Bulkley non-Newtonian viscosity: per-fluid flags and parameter arrays.
701 !> @{
702 logical :: any_non_newtonian !< .true. if any fluid is non-Newtonian
703 logical, allocatable, dimension(:) :: is_non_newtonian !< per-fluid NN flag
704 real(wp), allocatable, dimension(:) :: hb_tau0, hb_k, hb_nn, hb_m_arr
705 real(wp), allocatable, dimension(:) :: hb_mu_min, hb_mu_max
706 real(wp), allocatable, dimension(:) :: fluid_inv_re !< per-fluid Newtonian inverse-Re
707 !> @}
708
709
710# 174 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
711#if defined(MFC_OpenACC)
712# 174 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
713!$acc declare create(any_non_newtonian, is_non_newtonian, hb_tau0, hb_K, hb_nn, hb_m_arr, hb_mu_min, hb_mu_max, fluid_inv_re)
714# 174 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
715#elif defined(MFC_OpenMP)
716# 174 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
717!$omp declare target (any_non_newtonian, is_non_newtonian, hb_tau0, hb_K, hb_nn, hb_m_arr, hb_mu_min, hb_mu_max, fluid_inv_re)
718# 174 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
719#endif
720
721 ! WENO averaging flag: use arithmetic mean or unaltered WENO-reconstructed cell-boundary values
722 !> @{
723 real(wp) :: wa_flg
724 !> @}
725
726
727# 181 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
728#if defined(MFC_OpenACC)
729# 181 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
730!$acc declare create(wa_flg)
731# 181 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
732#elif defined(MFC_OpenMP)
733# 181 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
734!$omp declare target (wa_flg)
735# 181 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
736#endif
737
738 !> @name The coordinate direction indexes and flags (flg), respectively, for which the configurations will be determined with
739 !! respect to a working direction and that will be used to isolate the contributions, in that direction, in the dimensionally
740 !! split system of equations. Declared here rather than in m_global_parameters_common so the hot dimensionally-split kernels
741 !! (Riemann solvers) read them from their own module: use-associating them from common costs ~18 kB/work-item of register spill
742 !! on AMD OpenMP offload. Common code takes the mapping as explicit arguments instead.
743 !> @{
744 integer, dimension(3) :: dir_idx
745 real(wp), dimension(3) :: dir_flg
746 integer, dimension(3) :: dir_idx_tau !< (nn, nt, nt2) stress indices for wave speeds and momentum flux
747 integer, dimension(6) :: stress_perm !< Full tensor permutation: local basis -> physical storage index
748 !> @}
749
750
751# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
752#if defined(MFC_OpenACC)
753# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
754!$acc declare create(dir_idx, dir_flg, dir_idx_tau, stress_perm)
755# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
756#elif defined(MFC_OpenMP)
757# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
758!$omp declare target (dir_idx, dir_flg, dir_idx_tau, stress_perm)
759# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
760#endif
761
762 integer :: buff_size !< Number of ghost cells for boundary condition storage
763
764# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
765#if defined(MFC_OpenACC)
766# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
767!$acc declare create(buff_size)
768# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
769#elif defined(MFC_OpenMP)
770# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
771!$omp declare target (buff_size)
772# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
773#endif
774
775 ! shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices: in m_global_parameters_common
776
777 ! END: Simulation Algorithm Parameters
778
779 ! Fluids Physical Parameters fluid_pp, bub_pp: auto-generated in generated_decls.fpp
780
781 integer :: fd_number !< Finite-difference half-stencil size: MAX(1, fd_order/2)
782
783# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
784#if defined(MFC_OpenACC)
785# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
786!$acc declare create(fd_number)
787# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
788#elif defined(MFC_OpenMP)
789# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
790!$omp declare target (fd_number)
791# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
792#endif
793
794 !> @name Centered finite-difference coefficients in x-, y- and z-coordinate directions
795 !> @{
796 real(wp), allocatable, dimension(:,:) :: fd_coeff_x
797 real(wp), allocatable, dimension(:,:) :: fd_coeff_y
798 real(wp), allocatable, dimension(:,:) :: fd_coeff_z
799 !> @}
800
801# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
802#if defined(MFC_OpenACC)
803# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
804!$acc declare create(fd_coeff_x, fd_coeff_y, fd_coeff_z)
805# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
806#elif defined(MFC_OpenMP)
807# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
808!$omp declare target (fd_coeff_x, fd_coeff_y, fd_coeff_z)
809# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
810#endif
811
812 ! probe: auto-generated in generated_decls.fpp
813
814 !> @name Reference density and pressure for Tait EOS
815 !> @{
816 !> @name Immersed Boundaries
817 !> patch_ib, ib_airfoil, stl_models, particle_cloud: auto-generated in generated_decls.fpp
818 !> @{
819 integer, dimension(num_local_ibs_max) :: local_ib_patch_ids !< lookup table of IBs in the local compute domain
820 integer, allocatable, dimension(:,:,:) :: ib_neighbor_ranks !< MPI ranks of neighborhood domains, indexed (-N:N,-N:N,-N:N)
821 type(ib_airfoil_grid), dimension(num_ib_airfoils_max) :: ib_airfoil_grids !< Per-airfoil computed surface grids
822
823
824# 228 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
825#if defined(MFC_OpenACC)
826# 228 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
827!$acc declare create(ib_airfoil_grids)
828# 228 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
829#elif defined(MFC_OpenMP)
830# 228 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
831!$omp declare target (ib_airfoil_grids)
832# 228 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
833#endif
834 !> @}
835
836 !> @name Bubble modeling
837 !> @{
838# 236 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
839 integer :: nb
840# 238 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
841
842 real(wp) :: eu !< Euler number
843
844# 240 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
845#if defined(MFC_OpenACC)
846# 240 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
847!$acc declare create(Eu)
848# 240 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
849#elif defined(MFC_OpenMP)
850# 240 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
851!$omp declare target (Eu)
852# 240 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
853#endif
854
855 real(wp), dimension(:), allocatable :: weight !< Simpson quadrature weights
856 real(wp), dimension(:), allocatable :: r0 !< Bubble sizes
857
858# 244 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
859#if defined(MFC_OpenACC)
860# 244 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
861!$acc declare create(weight, R0)
862# 244 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
863#elif defined(MFC_OpenMP)
864# 244 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
865!$omp declare target (weight, R0)
866# 244 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
867#endif
868
869 real(wp), allocatable, dimension(:,:,:) :: ptil !< Pressure modification
870
871# 247 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
872#if defined(MFC_OpenACC)
873# 247 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
874!$acc declare create(ptil)
875# 247 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
876#elif defined(MFC_OpenMP)
877# 247 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
878!$omp declare target (ptil)
879# 247 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
880#endif
881
882 integer, parameter :: nmom = 6 !< Number of carried moments per R0 location
883 integer :: nmomsp !< Number of moments required by ensemble-averaging
884 integer :: nmomtot !< Total number of carried moments moments/transport equations
885
886# 252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
887#if defined(MFC_OpenACC)
888# 252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
889!$acc declare create(nmomsp, nmomtot)
890# 252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
891#elif defined(MFC_OpenMP)
892# 252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
893!$omp declare target (nmomsp, nmomtot)
894# 252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
895#endif
896
897# 255 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
898
899# 255 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
900#if defined(MFC_OpenACC)
901# 255 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
902!$acc declare create(nb)
903# 255 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
904#elif defined(MFC_OpenMP)
905# 255 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
906!$omp declare target (nb)
907# 255 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
908#endif
909# 257 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
910
911 type(scalar_field), allocatable, dimension(:) :: mom_sp
912 type(scalar_field), allocatable, dimension(:,:,:) :: mom_3d
913
914# 260 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
915#if defined(MFC_OpenACC)
916# 260 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
917!$acc declare create(mom_sp, mom_3d)
918# 260 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
919#elif defined(MFC_OpenMP)
920# 260 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
921!$omp declare target (mom_sp, mom_3d)
922# 260 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
923#endif
924 !> @}
925
926 ! chem_params: auto-generated in generated_decls.fpp
927
928 !> @name Physical bubble parameters (see Ando 2010, Preston 2007)
929 !> @{
930 real(wp) :: phi_vg, phi_gv, pe_c, tw, k_vl, k_gl
931
932# 268 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
933#if defined(MFC_OpenACC)
934# 268 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
935!$acc declare create(phi_vg, phi_gv, Pe_c, Tw, k_vl, k_gl)
936# 268 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
937#elif defined(MFC_OpenMP)
938# 268 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
939!$omp declare target (phi_vg, phi_gv, Pe_c, Tw, k_vl, k_gl)
940# 268 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
941#endif
942
943 real(wp), dimension(:), allocatable :: pb0, mass_g0, mass_v0, pe_t, k_v, k_g
944 real(wp), dimension(:), allocatable :: re_trans_t, re_trans_c, im_trans_t, im_trans_c, omegan
945
946# 272 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
947#if defined(MFC_OpenACC)
948# 272 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
949!$acc declare create(pb0, mass_g0, mass_v0, Pe_T, k_v, k_g)
950# 272 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
951#elif defined(MFC_OpenMP)
952# 272 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
953!$omp declare target (pb0, mass_g0, mass_v0, Pe_T, k_v, k_g)
954# 272 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
955#endif
956
957# 273 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
958#if defined(MFC_OpenACC)
959# 273 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
960!$acc declare create(Re_trans_T, Re_trans_c, Im_trans_T, Im_trans_c, omegaN)
961# 273 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
962#elif defined(MFC_OpenMP)
963# 273 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
964!$omp declare target (Re_trans_T, Re_trans_c, Im_trans_T, Im_trans_c, omegaN)
965# 273 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
966#endif
967
968 real(wp) :: gam, gam_m
969
970# 276 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
971#if defined(MFC_OpenACC)
972# 276 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
973!$acc declare create(gam, gam_m)
974# 276 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
975#elif defined(MFC_OpenMP)
976# 276 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
977!$omp declare target (gam, gam_m)
978# 276 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
979#endif
980
982
983# 279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
984#if defined(MFC_OpenACC)
985# 279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
986!$acc declare create(p0ref, rho0ref, T0ref, ss, pv, vd, mu_l, mu_v, mu_g, gam_v, gam_g, M_v, M_g, cp_v, cp_g, R_v, R_g)
987# 279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
988#elif defined(MFC_OpenMP)
989# 279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
990!$omp declare target (p0ref, rho0ref, T0ref, ss, pv, vd, mu_l, mu_v, mu_g, gam_v, gam_g, M_v, M_g, cp_v, cp_g, R_v, R_g)
991# 279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
992#endif
993 !> @}
994
995 ! acoustic: auto-generated in generated_decls.fpp
996
997 !> @name Surface tension parameters
998 !> @{
999 !> @}
1000
1001 real(wp) :: mytime !< Current simulation time
1002 real(wp) :: finaltime !< Final simulation time
1003 type(pres_field), allocatable, dimension(:) :: pb_ts
1004 type(pres_field), allocatable, dimension(:) :: mv_ts
1005
1006
1007# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1008#if defined(MFC_OpenACC)
1009# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1010!$acc declare create(mytime, pb_ts, mv_ts)
1011# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1012#elif defined(MFC_OpenMP)
1013# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1014!$omp declare target (mytime, pb_ts, mv_ts)
1015# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1016#endif
1017
1018 !> @name lagrangian subgrid bubble parameters
1019 !> lag_params: auto-generated in generated_decls.fpp
1020 !> @{!
1021 ! lag_params (decl + GPU_DECLARE) auto-generated in generated_decls.fpp; bubbles_lagrange GPU-declared in
1022 ! m_global_parameters_common
1023 integer :: n_el_bubs_loc, n_el_bubs_glb !< Number of Lagrangian bubbles (local and global)
1028
1029# 305 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1030#if defined(MFC_OpenACC)
1031# 305 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1032!$acc declare create(n_el_bubs_loc, n_el_bubs_glb)
1033# 305 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1034#elif defined(MFC_OpenMP)
1035# 305 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1036!$omp declare target (n_el_bubs_loc, n_el_bubs_glb)
1037# 305 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1038#endif
1039
1040# 306 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1041#if defined(MFC_OpenACC)
1042# 306 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1043!$acc declare create(moving_lag_bubbles, lag_vel_model, lag_drag_model)
1044# 306 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1045#elif defined(MFC_OpenMP)
1046# 306 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1047!$omp declare target (moving_lag_bubbles, lag_vel_model, lag_drag_model)
1048# 306 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1049#endif
1050
1051# 307 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1052#if defined(MFC_OpenACC)
1053# 307 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1054!$acc declare create(lag_pressure_force, lag_gravity_force)
1055# 307 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1056#elif defined(MFC_OpenMP)
1057# 307 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1058!$omp declare target (lag_pressure_force, lag_gravity_force)
1059# 307 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1060#endif
1061 !> @}
1062
1063 !> @name Continuum damage model parameters
1064 !> @{!
1065 !> @}
1066
1067 !> @name MHD Hyperbolic cleaning parameters
1068 !> @{!
1069 !> @}
1070
1071contains
1072
1073 !> Assigns default values to the user inputs before reading them in. This enables for an easier consistency check of these
1074 !! parameters once they are read from the input file.
1076
1077 integer :: i, j !< Generic loop iterator
1078
1079 ! Shared defaults (case_dir, m/n/p, cyl_coord, cfl flags, model_eqns, BC blocks,
1080 ! recon/weno/muscl/num_fluids/igr/mhd/relativity under case-opt guard, Tait EOS, bubble flags,
1081 ! IB flags, parallel I/O flags, fft_wrt)
1082
1084
1085 ! Boundary conditions (bc_x/y/z are per-target declarations, not visible in common)
1086 bc_x%beg = dflt_int; bc_x%end = dflt_int
1087 bc_y%beg = dflt_int; bc_y%end = dflt_int
1088 bc_z%beg = dflt_int; bc_z%end = dflt_int
1089
1090# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1091# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1092 bc_x%vb1 = 0._wp
1093 bc_x%ve1 = 0._wp
1094# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1095 bc_x%vb2 = 0._wp
1096 bc_x%ve2 = 0._wp
1097# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1098 bc_x%vb3 = 0._wp
1099 bc_x%ve3 = 0._wp
1100# 342 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1101# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1102# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1103 bc_y%vb1 = 0._wp
1104 bc_y%ve1 = 0._wp
1105# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1106 bc_y%vb2 = 0._wp
1107 bc_y%ve2 = 0._wp
1108# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1109 bc_y%vb3 = 0._wp
1110 bc_y%ve3 = 0._wp
1111# 342 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1112# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1113# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1114 bc_z%vb1 = 0._wp
1115 bc_z%ve1 = 0._wp
1116# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1117 bc_z%vb2 = 0._wp
1118 bc_z%ve2 = 0._wp
1119# 339 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1120 bc_z%vb3 = 0._wp
1121 bc_z%ve3 = 0._wp
1122# 342 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1123# 343 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1124
1125# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1126 bc_x%isothermal_in = .false.
1127 bc_x%isothermal_out = .false.
1128 bc_x%Twall_in = dflt_real
1129 bc_x%Twall_out = dflt_real
1130# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1131 bc_y%isothermal_in = .false.
1132 bc_y%isothermal_out = .false.
1133 bc_y%Twall_in = dflt_real
1134 bc_y%Twall_out = dflt_real
1135# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1136 bc_z%isothermal_in = .false.
1137 bc_z%isothermal_out = .false.
1138 bc_z%Twall_in = dflt_real
1139 bc_z%Twall_out = dflt_real
1140# 350 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1141
1143
1144 ! Logistics (sim-specific)
1145 run_time_info = .false.
1146 t_step_old = dflt_int
1147
1148 ! Computational domain parameters (sim-specific)
1149 dt = dflt_real
1150 cfl_dt = .false.
1151 cfl_target = dflt_real
1152
1153 t_step_stop = dflt_int
1154 t_step_save = dflt_int
1155 t_step_print = 1
1156
1157 t_stop = dflt_real
1158 t_save = dflt_real
1159
1160 ! NVIDIA UVM options
1161 nv_uvm_out_of_core = .false.
1162 nv_uvm_igr_temps_on_gpu = 3 ! => jac, jac_rhs, and jac_old on GPU (default)
1163 nv_uvm_pref_gpu = .false.
1164
1165 ! Simulation algorithm parameters (sim-specific)
1166 mpp_lim = .false.
1167 time_stepper = dflt_int
1168 muscl_eps = dflt_real
1169 weno_eps = dflt_real
1170 teno_ct = dflt_real
1171 mp_weno = .false.
1172 weno_avg = .false.
1173 weno_re_flux = .false.
1174 riemann_hypo_adc = .false.
1175 adc_kappa = 1.0_wp
1176 hll_u_interface = .false.
1177 hypo_hll_interface_rhs = .false.
1180 use_nc_iface_vel = .false.
1181 low_mach = 0
1182 wave_speeds = dflt_int
1183 null_weights = .false.
1184 precision = 2
1185 palpha_eps = dflt_real
1186 ptgalpha_eps = dflt_real
1187 int_comp = 0
1188 ic_eps = dflt_ic_eps
1189 ic_beta = dflt_ic_beta
1190 rdma_mpi = .false.
1191 shear_stress = .false.
1192 bulk_stress = .false.
1193 any_non_newtonian = .false.
1194 num_igr_iters = dflt_num_igr_iters
1195 num_igr_warm_start_iters = dflt_num_igr_warm_start_iters
1196 alf_factor = dflt_alf_factor
1197
1198# 408 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1199 mapped_weno = .false.
1200 wenoz = .false.
1201 teno = .false.
1202 wenoz_q = dflt_real
1203 igr_order = dflt_int
1204 igr_pres_lim = .false.
1205 igr_iter_solver = 1
1206# 416 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1207
1208 chem_params%diffusion = .false.
1209 chem_params%reactions = .false.
1210 chem_params%gamma_method = 1
1211 chem_params%transport_model = 1
1212
1213 chem_params%reaction_substeps = 0
1214 chem_params%adap_substeps = .false.
1215 chem_params%reaction_substeps_max = 0
1216
1217 num_bc_patches = 0
1218 bc_io = .false.
1219 periodic_bc = .false.
1220
1221 ! bc_x/y/z (incl. vb/ve loop) already defaulted above; glb_bounds is #1290's grid-derived global extent
1222 glb_bounds(1)%beg = dflt_real; glb_bounds(1)%end = dflt_real
1223 glb_bounds(2)%beg = dflt_real; glb_bounds(2)%end = dflt_real
1224 glb_bounds(3)%beg = dflt_real; glb_bounds(3)%end = dflt_real
1225
1226 bf_spatial_support = .false.
1227 spatial_bf%amp = 0._wp
1228 spatial_bf%x_centroid = 0._wp
1229 spatial_bf%y_centroid = 0._wp
1230 spatial_bf%conv_vel = 0._wp
1231 spatial_bf%sigma = 0._wp
1232 do i = 1, 8
1233 spatial_bf%freq(i) = 0._wp
1234 spatial_bf%phase(i) = 0._wp
1235 end do
1236
1237 ! Fluids physical parameters (sim-specific; Re(:) and G=0._wp differ from post)
1238 do i = 1, num_fluids_max
1239 fluid_pp(i)%gamma = dflt_real
1240 fluid_pp(i)%pi_inf = dflt_real
1241 fluid_pp(i)%cv = 0._wp
1242 fluid_pp(i)%qv = 0._wp
1243 fluid_pp(i)%qvp = 0._wp
1244 fluid_pp(i)%Re(:) = dflt_real
1245 fluid_pp(i)%G = 0._wp
1246 fluid_pp(i)%non_newtonian = .false.
1247 fluid_pp(i)%K = dflt_real
1248 fluid_pp(i)%nn = dflt_real
1249 fluid_pp(i)%tau0 = 0._wp
1250 fluid_pp(i)%hb_m = dflt_real
1251 fluid_pp(i)%mu_min = dflt_real
1252 fluid_pp(i)%mu_max = dflt_real
1253 fluid_pp(i)%mu_bulk = dflt_real
1254 end do
1255
1256 ! Subgrid bubble parameters (bub_pp struct + scalar companions; scalar companions are
1257 ! per-target manual declarations not in m_global_parameters_common scope)
1258 bub_pp%R0ref = dflt_real; r0ref = dflt_real
1259 bub_pp%p0ref = dflt_real; p0ref = dflt_real
1260 bub_pp%rho0ref = dflt_real; rho0ref = dflt_real
1261 bub_pp%T0ref = dflt_real; t0ref = dflt_real
1262 bub_pp%ss = dflt_real; ss = dflt_real
1263 bub_pp%pv = dflt_real; pv = dflt_real
1264 bub_pp%vd = dflt_real; vd = dflt_real
1265 bub_pp%mu_l = dflt_real; mu_l = dflt_real
1266 bub_pp%mu_v = dflt_real; mu_v = dflt_real
1267 bub_pp%mu_g = dflt_real; mu_g = dflt_real
1268 bub_pp%gam_v = dflt_real; gam_v = dflt_real
1269 bub_pp%gam_g = dflt_real; gam_g = dflt_real
1270 bub_pp%M_v = dflt_real; m_v = dflt_real
1271 bub_pp%M_g = dflt_real; m_g = dflt_real
1272 bub_pp%k_v = dflt_real
1273 bub_pp%k_g = dflt_real
1274 bub_pp%cp_v = dflt_real; cp_v = dflt_real
1275 bub_pp%cp_g = dflt_real; cp_g = dflt_real
1276 bub_pp%R_v = dflt_real; r_v = dflt_real
1277 bub_pp%R_g = dflt_real; r_g = dflt_real
1278
1279 ! Immersed Boundaries (sim-specific extras)
1281 collision_model = 0
1282 coefficient_of_restitution = dflt_real
1283 collision_time = dflt_real
1284 ib_coefficient_of_friction = dflt_real
1285 ib_state_wrt = .false.
1287
1288 ! Bubble modeling (sim-specific)
1289 bubble_model = 1
1290 polytropic = .true.
1291 thermal = dflt_int
1292
1293# 503 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1294 nb = 1
1295 muscl_lim = dflt_int
1296# 506 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1297
1298 adv_n = .false.
1299 adap_dt = .false.
1300 adap_dt_tol = dflt_adap_dt_tol
1301 adap_dt_max_iters = dflt_adap_dt_max_iters
1302
1303 pi_fac = 1._wp
1304
1305 eu = dflt_real
1306 ca = dflt_real
1307 re_inv = dflt_real
1308 web = dflt_real
1309
1310 ! Acoustic source
1311 acoustic_source = .false.
1312 num_source = dflt_int
1313
1314 bodyforces = .false.
1315 bf_x = .false.; bf_y = .false.; bf_z = .false.
1316 !> amplitude, frequency, and phase shift sinusoid in each direction
1317# 527 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1318# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1319 k_x = dflt_real
1320# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1321 w_x = dflt_real
1322# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1323 p_x = dflt_real
1324# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1325 g_x = dflt_real
1326# 530 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1327# 527 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1328# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1329 k_y = dflt_real
1330# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1331 w_y = dflt_real
1332# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1333 p_y = dflt_real
1334# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1335 g_y = dflt_real
1336# 530 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1337# 527 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1338# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1339 k_z = dflt_real
1340# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1341 w_z = dflt_real
1342# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1343 p_z = dflt_real
1344# 528 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1345 g_z = dflt_real
1346# 530 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1347# 531 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1348
1349 synthetic_turbulence = .false.
1350 synth_seed = 1234
1351 synth_n_shells = dflt_int
1353 synth_u_inf = dflt_real
1355 synth_k_shell = dflt_real
1356 synth_amp_shell = dflt_real
1357 turb_pos = dflt_real
1358 synth_l = dflt_real
1359
1360 do j = 1, num_probes_max
1361 acoustic(j)%pulse = dflt_int
1362 acoustic(j)%support = dflt_int
1363 acoustic(j)%dipole = .false.
1364 do i = 1, 3
1365 acoustic(j)%loc(i) = dflt_real
1366 end do
1367 acoustic(j)%mag = dflt_real
1368 acoustic(j)%length = dflt_real
1369 acoustic(j)%height = dflt_real
1370 acoustic(j)%wavelength = dflt_real
1371 acoustic(j)%frequency = dflt_real
1372 acoustic(j)%gauss_sigma_dist = dflt_real
1373 acoustic(j)%gauss_sigma_time = dflt_real
1374 acoustic(j)%npulse = dflt_real
1375 acoustic(j)%dir = dflt_real
1376 acoustic(j)%delay = dflt_real
1377 acoustic(j)%foc_length = dflt_real
1378 acoustic(j)%aperture = dflt_real
1379 acoustic(j)%element_spacing_angle = dflt_real
1380 acoustic(j)%element_polygon_ratio = dflt_real
1381 acoustic(j)%rotate_angle = dflt_real
1382 acoustic(j)%num_elements = dflt_int
1383 acoustic(j)%element_on = dflt_int
1384 acoustic(j)%bb_num_freq = dflt_int
1385 acoustic(j)%bb_lowest_freq = dflt_real
1386 acoustic(j)%bb_bandwidth = dflt_real
1387 end do
1388
1389 fd_order = dflt_int
1390 probe_wrt = .false.
1391 num_probes = dflt_int
1392
1393 do i = 1, num_probes_max
1394 probe(i)%x = dflt_real
1395 probe(i)%y = dflt_real
1396 probe(i)%z = dflt_real
1397 end do
1398
1399 ! GRCBC flags
1400# 584 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1401 bc_x%grcbc_in = .false.
1402 bc_x%grcbc_out = .false.
1403 bc_x%grcbc_vel_out = .false.
1404# 584 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1405 bc_y%grcbc_in = .false.
1406 bc_y%grcbc_out = .false.
1407 bc_y%grcbc_vel_out = .false.
1408# 584 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1409 bc_z%grcbc_in = .false.
1410 bc_z%grcbc_out = .false.
1411 bc_z%grcbc_vel_out = .false.
1412# 588 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1413
1414 ! Lagrangian subgrid bubble model
1415 lag_params%solver_approach = dflt_int
1416 lag_params%cluster_type = dflt_int
1417 lag_params%pressure_corrector = .false.
1418 lag_params%smooth_type = dflt_int
1419 lag_params%heatTransfer_model = .false.
1420 lag_params%massTransfer_model = .false.
1421 lag_params%write_bubbles = .false.
1422 lag_params%write_bubbles_stats = .false.
1423 lag_params%write_void_evol = .false.
1424 lag_params%nBubs_glb = dflt_int
1425 lag_params%vel_model = dflt_int
1426 lag_params%drag_model = dflt_int
1427 lag_params%pressure_force = .true.
1428 lag_params%gravity_force = .false.
1429 lag_params%kahan_summation = .true.
1430 lag_params%epsilonb = 1._wp
1431 lag_params%charwidth = dflt_real
1432 lag_params%charNz = dflt_int
1433 lag_params%valmaxvoid = dflt_real
1434 lag_params%input_path = 'input/lag_bubbles.dat'
1435 moving_lag_bubbles = .false.
1436 lag_vel_model = dflt_int
1437
1438 ! Continuum damage model
1439 tau_star = dflt_real
1440 cont_damage_s = dflt_real
1441 alpha_bar = dflt_real
1442
1443 ! MHD (sim-specific extras beyond common Bx0)
1444 hyper_cleaning_speed = dflt_real
1445 hyper_cleaning_tau = dflt_real
1446
1447 do i = 1, num_ib_airfoils_max
1448 ib_airfoil(i)%c = dflt_real
1449 ib_airfoil(i)%p = dflt_real
1450 ib_airfoil(i)%t = dflt_real
1451 ib_airfoil(i)%m = dflt_real
1452 ib_airfoil_grids(i)%Np = 0
1453 end do
1454
1456 do i = 1, num_particle_clouds_max
1457 particle_cloud(i)%x_centroid = 0._wp
1458 particle_cloud(i)%y_centroid = 0._wp
1459 particle_cloud(i)%z_centroid = 0._wp
1460 particle_cloud(i)%length_x = dflt_real
1461 particle_cloud(i)%length_y = dflt_real
1462 particle_cloud(i)%length_z = dflt_real
1463 particle_cloud(i)%num_particles = 0
1464 particle_cloud(i)%radius = dflt_real
1465 particle_cloud(i)%mass = dflt_real
1466 particle_cloud(i)%min_spacing = 0._wp
1467 particle_cloud(i)%shell_inner_radius = dflt_real
1468 particle_cloud(i)%shell_outer_radius = dflt_real
1469 particle_cloud(i)%moving_ibm = 0
1470 particle_cloud(i)%seed = 0
1471 particle_cloud(i)%cloud_geometry = 1
1472 particle_cloud(i)%packing_method = dflt_int
1473 particle_cloud(i)%periodic = 0
1474 end do
1475
1476 do i = 1, num_ib_patches_max_namelist
1477 patch_ib(i)%gbl_patch_id = i
1478 patch_ib(i)%geometry = dflt_int
1479 patch_ib(i)%x_centroid = 0._wp
1480 patch_ib(i)%y_centroid = 0._wp
1481 patch_ib(i)%z_centroid = 0._wp
1482 patch_ib(i)%length_x = dflt_real
1483 patch_ib(i)%length_y = dflt_real
1484 patch_ib(i)%length_z = dflt_real
1485 patch_ib(i)%radius = dflt_real
1486 patch_ib(i)%airfoil_id = 0
1487 patch_ib(i)%model_id = 0
1488 patch_ib(i)%slip = .false.
1489 patch_ib(i)%v_blow = 0._wp
1490 patch_ib(i)%inj_species = 0
1491 patch_ib(i)%burn_rate_exp = 0._wp
1492 patch_ib(i)%burn_rate_pref = 0._wp
1493
1494 ! Variables to handle moving immersed boundaries, defaulting to no movement
1495 patch_ib(i)%moving_ibm = 0
1496 patch_ib(i)%vel(:) = 0._wp
1497 patch_ib(i)%angles(:) = 0._wp
1498 patch_ib(i)%angular_vel(:) = 0._wp
1499 patch_ib(i)%mass = dflt_real
1500 patch_ib(i)%moment = dflt_real
1501 patch_ib(i)%centroid_offset(:) = 0._wp
1502
1503 ! sets values of a rotation matrix which can be used when calculating rotations
1504 patch_ib(i)%rotation_matrix = 0._wp
1505 patch_ib(i)%rotation_matrix(1, 1) = 1._wp
1506 patch_ib(i)%rotation_matrix(2, 2) = 1._wp
1507 patch_ib(i)%rotation_matrix(3, 3) = 1._wp
1508 patch_ib(i)%rotation_matrix_inverse = patch_ib(i)%rotation_matrix
1509 end do
1510
1511 num_stl_models = 0
1512
1513 do i = 1, num_stl_models_max
1514 stl_models(i)%model_filepath(:) = dflt_char
1515 stl_models(i)%model_translate(:) = 0._wp
1516 stl_models(i)%model_scale(:) = 1._wp
1517 stl_models(i)%model_threshold = ray_tracing_threshold
1518 end do
1519
1521
1522 !> Initialize the global parameters module
1524
1525 integer :: i, j, k
1526 integer :: fac
1527
1528# 704 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1529 ! Determining the degree of the WENO polynomials
1530 if (recon_type == recon_type_weno) then
1531 weno_polyn = (weno_order - 1)/2
1532 if (teno) then
1534 else
1536 end if
1537 else if (recon_type == recon_type_muscl) then
1539 end if
1540
1541# 715 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1542#if defined(MFC_OpenACC)
1543# 715 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1544!$acc update device(weno_polyn, muscl_polyn)
1545# 715 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1546#elif defined(MFC_OpenMP)
1547# 715 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1548!$omp target update to(weno_polyn, muscl_polyn)
1549# 715 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1550#endif
1551
1552# 716 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1553#if defined(MFC_OpenACC)
1554# 716 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1555!$acc update device(weno_num_stencils)
1556# 716 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1557#elif defined(MFC_OpenMP)
1558# 716 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1559!$omp target update to(weno_num_stencils)
1560# 716 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1561#endif
1562
1563# 717 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1564#if defined(MFC_OpenACC)
1565# 717 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1566!$acc update device(nb)
1567# 717 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1568#elif defined(MFC_OpenMP)
1569# 717 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1570!$omp target update to(nb)
1571# 717 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1572#endif
1573
1574# 718 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1575#if defined(MFC_OpenACC)
1576# 718 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1577!$acc update device(num_dims, num_vels, num_fluids)
1578# 718 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1579#elif defined(MFC_OpenMP)
1580# 718 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1581!$omp target update to(num_dims, num_vels, num_fluids)
1582# 718 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1583#endif
1584
1585# 719 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1586#if defined(MFC_OpenACC)
1587# 719 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1588!$acc update device(igr, igr_order, igr_iter_solver)
1589# 719 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1590#elif defined(MFC_OpenMP)
1591# 719 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1592!$omp target update to(igr, igr_order, igr_iter_solver)
1593# 719 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1594#endif
1595# 721 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1596
1597 ! muscl_eps: use per-limiter defaults when user did not set it
1598 if (f_is_default(muscl_eps)) then
1599 if (muscl_lim <= 2) then
1600 muscl_eps = 1e-9_wp ! minmod, MC
1601 else
1602 muscl_eps = 1e-6_wp ! Van Albada, Van Leer, SUPERBEE
1603 end if
1604 end if
1605
1606 ! Initialize counts: viscous fluids, surface-tension interfaces, curvature interfaces
1607 re_size = 0
1608 re_size_max = 0
1609
1610 ! Populate eqn_idx, sys_size, shear_* (shared logic)
1611 call s_initialize_eqn_idx(nmom, nb, six_eqn_alf_is_advected=.true.)
1612
1613 ! sim-only: GPU update for shear state after s_initialize_eqn_idx populated it
1614 if (model_eqns == model_eqns_5eq .or. model_eqns == model_eqns_6eq) then
1615 if (hypoelasticity) then
1616
1617# 741 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1618#if defined(MFC_OpenACC)
1619# 741 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1620!$acc update device(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
1621# 741 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1622#elif defined(MFC_OpenMP)
1623# 741 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1624!$omp target update to(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
1625# 741 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1626#endif
1627 end if
1628 end if
1629
1630 ! Per-target (sim): nmomsp/nmomtot for qbmm, qbmm_idx alloc/fill, gam, Re_idx
1631 if (model_eqns == model_eqns_5eq .and. bubbles_euler) then
1632 if (qbmm) then
1633 nmomsp = 4 ! number of special moments
1634 if (nnode == 4) nmomtot = nmom*nb
1635 end if
1636
1637#ifdef MFC_DEBUG
1638# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1639 block
1640# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1641 use iso_fortran_env, only: output_unit
1642# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1643
1644# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1645 print *, 'm_global_parameters.fpp:752: ', '@:ALLOCATE(qbmm_idx%rs(nb), qbmm_idx%vs(nb))'
1646# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1647
1648# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1649 call flush (output_unit)
1650# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1651 end block
1652# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1653#endif
1654# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1655 allocate (qbmm_idx%rs(nb), qbmm_idx%vs(nb))
1656# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1657
1658# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1659
1660# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1661
1662# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1663#if defined(MFC_OpenACC)
1664# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1665!$acc enter data create(qbmm_idx%rs, qbmm_idx%vs)
1666# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1667#elif defined(MFC_OpenMP)
1668# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1669!$omp target enter data map(always,alloc:qbmm_idx%rs, qbmm_idx%vs)
1670# 752 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1671#endif
1672#ifdef MFC_DEBUG
1673# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1674 block
1675# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1676 use iso_fortran_env, only: output_unit
1677# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1678
1679# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1680 print *, 'm_global_parameters.fpp:753: ', '@:ALLOCATE(qbmm_idx%ps(nb), qbmm_idx%ms(nb))'
1681# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1682
1683# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1684 call flush (output_unit)
1685# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1686 end block
1687# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1688#endif
1689# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1690 allocate (qbmm_idx%ps(nb), qbmm_idx%ms(nb))
1691# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1692
1693# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1694
1695# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1696
1697# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1698#if defined(MFC_OpenACC)
1699# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1700!$acc enter data create(qbmm_idx%ps, qbmm_idx%ms)
1701# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1702#elif defined(MFC_OpenMP)
1703# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1704!$omp target enter data map(always,alloc:qbmm_idx%ps, qbmm_idx%ms)
1705# 753 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1706#endif
1707
1708 gam = bub_pp%gam_g
1709
1710 if (qbmm) then
1711#ifdef MFC_DEBUG
1712# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1713 block
1714# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1715 use iso_fortran_env, only: output_unit
1716# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1717
1718# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1719 print *, 'm_global_parameters.fpp:758: ', '@:ALLOCATE(qbmm_idx%moms(nb, nmom))'
1720# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1721
1722# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1723 call flush (output_unit)
1724# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1725 end block
1726# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1727#endif
1728# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1729 allocate (qbmm_idx%moms(nb, nmom))
1730# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1731
1732# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1733
1734# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1735#if defined(MFC_OpenACC)
1736# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1737!$acc enter data create(qbmm_idx%moms)
1738# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1739#elif defined(MFC_OpenMP)
1740# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1741!$omp target enter data map(always,alloc:qbmm_idx%moms)
1742# 758 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1743#endif
1744 do i = 1, nb
1745 do j = 1, nmom
1746 qbmm_idx%moms(i, j) = eqn_idx%bub%beg + (j - 1) + (i - 1)*nmom
1747 end do
1748 qbmm_idx%rs(i) = qbmm_idx%moms(i, 2)
1749 qbmm_idx%vs(i) = qbmm_idx%moms(i, 3)
1750 end do
1751 else
1752 do i = 1, nb
1753 if (.not. polytropic) then
1754 fac = 4
1755 else
1756 fac = 2
1757 end if
1758
1759 qbmm_idx%rs(i) = eqn_idx%bub%beg + (i - 1)*fac
1760 qbmm_idx%vs(i) = qbmm_idx%rs(i) + 1
1761
1762 if (.not. polytropic) then
1763 qbmm_idx%ps(i) = qbmm_idx%vs(i) + 1
1764 qbmm_idx%ms(i) = qbmm_idx%ps(i) + 1
1765 end if
1766 end do
1767 end if
1768 end if
1769
1770 ! sim-only: Re_idx (non-gamma-law models only)
1771 if (model_eqns /= model_eqns_gamma_law) then
1772 ! Count fluids with non-negligible viscous effects (Re > 0)
1773 do i = 1, num_fluids
1774 if (fluid_pp(i)%Re(1) > 0) re_size(1) = re_size(1) + 1
1775 if (fluid_pp(i)%Re(2) > 0) re_size(2) = re_size(2) + 1
1776 end do
1777
1778 if (re_size(1) > 0._wp) shear_stress = .true.
1779 if (re_size(2) > 0._wp) bulk_stress = .true.
1780
1781 re_size_max = maxval(re_size)
1782
1783
1784# 798 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1785#if defined(MFC_OpenACC)
1786# 798 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1787!$acc update device(Re_size, Re_size_max, shear_stress, bulk_stress)
1788# 798 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1789#elif defined(MFC_OpenMP)
1790# 798 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1791!$omp target update to(Re_size, Re_size_max, shear_stress, bulk_stress)
1792# 798 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1793#endif
1794
1795 ! Bookkeeping the indexes of any viscous fluids
1796 if (viscous) then
1797#ifdef MFC_DEBUG
1798# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1799 block
1800# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1801 use iso_fortran_env, only: output_unit
1802# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1803
1804# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1805 print *, 'm_global_parameters.fpp:802: ', '@:ALLOCATE(Re_idx(1:2, 1:Re_size_max))'
1806# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1807
1808# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1809 call flush (output_unit)
1810# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1811 end block
1812# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1813#endif
1814# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1815 allocate (re_idx(1:2, 1:re_size_max))
1816# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1817
1818# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1819
1820# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1821#if defined(MFC_OpenACC)
1822# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1823!$acc enter data create(Re_idx)
1824# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1825#elif defined(MFC_OpenMP)
1826# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1827!$omp target enter data map(always,alloc:Re_idx)
1828# 802 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1829#endif
1830
1831 k = 0
1832 do i = 1, num_fluids
1833 if (fluid_pp(i)%Re(1) > 0) then
1834 k = k + 1; re_idx(1, k) = i
1835 end if
1836 end do
1837
1838 k = 0
1839 do i = 1, num_fluids
1840 if (fluid_pp(i)%Re(2) > 0) then
1841 k = k + 1; re_idx(2, k) = i
1842 end if
1843 end do
1844 end if
1845 end if
1846
1847 ! Herschel-Bulkley non-Newtonian viscosity: gather per-fluid parameters into device arrays
1848#ifdef MFC_DEBUG
1849# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1850 block
1851# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1852 use iso_fortran_env, only: output_unit
1853# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1854
1855# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1856 print *, 'm_global_parameters.fpp:821: ', '@:ALLOCATE(is_non_newtonian(1:num_fluids))'
1857# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1858
1859# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1860 call flush (output_unit)
1861# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1862 end block
1863# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1864#endif
1865# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1866 allocate (is_non_newtonian(1:num_fluids))
1867# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1868
1869# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1870
1871# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1872#if defined(MFC_OpenACC)
1873# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1874!$acc enter data create(is_non_newtonian)
1875# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1876#elif defined(MFC_OpenMP)
1877# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1878!$omp target enter data map(always,alloc:is_non_newtonian)
1879# 821 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1880#endif
1881#ifdef MFC_DEBUG
1882# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1883 block
1884# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1885 use iso_fortran_env, only: output_unit
1886# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1887
1888# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1889 print *, 'm_global_parameters.fpp:822: ', '@:ALLOCATE(hb_tau0(1:num_fluids), hb_K(1:num_fluids), hb_nn(1:num_fluids), hb_m_arr(1:num_fluids))'
1890# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1891
1892# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1893 call flush (output_unit)
1894# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1895 end block
1896# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1897#endif
1898# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1899 allocate (hb_tau0(1:num_fluids), hb_k(1:num_fluids), hb_nn(1:num_fluids), hb_m_arr(1:num_fluids))
1900# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1901
1902# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1903
1904# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1905
1906# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1907
1908# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1909
1910# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1911#if defined(MFC_OpenACC)
1912# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1913!$acc enter data create(hb_tau0, hb_K, hb_nn, hb_m_arr)
1914# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1915#elif defined(MFC_OpenMP)
1916# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1917!$omp target enter data map(always,alloc:hb_tau0, hb_K, hb_nn, hb_m_arr)
1918# 822 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1919#endif
1920#ifdef MFC_DEBUG
1921# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1922 block
1923# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1924 use iso_fortran_env, only: output_unit
1925# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1926
1927# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1928 print *, 'm_global_parameters.fpp:823: ', '@:ALLOCATE(hb_mu_min(1:num_fluids), hb_mu_max(1:num_fluids))'
1929# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1930
1931# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1932 call flush (output_unit)
1933# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1934 end block
1935# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1936#endif
1937# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1938 allocate (hb_mu_min(1:num_fluids), hb_mu_max(1:num_fluids))
1939# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1940
1941# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1942
1943# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1944
1945# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1946#if defined(MFC_OpenACC)
1947# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1948!$acc enter data create(hb_mu_min, hb_mu_max)
1949# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1950#elif defined(MFC_OpenMP)
1951# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1952!$omp target enter data map(always,alloc:hb_mu_min, hb_mu_max)
1953# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1954#endif
1955#ifdef MFC_DEBUG
1956# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1957 block
1958# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1959 use iso_fortran_env, only: output_unit
1960# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1961
1962# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1963 print *, 'm_global_parameters.fpp:824: ', '@:ALLOCATE(fluid_inv_re(1:num_fluids))'
1964# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1965
1966# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1967 call flush (output_unit)
1968# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1969 end block
1970# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1971#endif
1972# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1973 allocate (fluid_inv_re(1:num_fluids))
1974# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1975
1976# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1977
1978# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1979#if defined(MFC_OpenACC)
1980# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1981!$acc enter data create(fluid_inv_re)
1982# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1983#elif defined(MFC_OpenMP)
1984# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1985!$omp target enter data map(always,alloc:fluid_inv_re)
1986# 824 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1987#endif
1988
1989 any_non_newtonian = .false.
1990 do i = 1, num_fluids
1991 is_non_newtonian(i) = fluid_pp(i)%non_newtonian
1992 if (is_non_newtonian(i)) any_non_newtonian = .true.
1993 hb_tau0(i) = fluid_pp(i)%tau0
1994 hb_k(i) = fluid_pp(i)%K
1995 hb_nn(i) = fluid_pp(i)%nn
1996 hb_m_arr(i) = fluid_pp(i)%hb_m
1997 hb_mu_min(i) = fluid_pp(i)%mu_min
1998 hb_mu_max(i) = fluid_pp(i)%mu_max
1999 if (fluid_pp(i)%Re(1) > 0._wp) then
2000 fluid_inv_re(i) = 1._wp/fluid_pp(i)%Re(1)
2001 else
2002 fluid_inv_re(i) = 0._wp
2003 end if
2004 end do
2005
2006# 842 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2007#if defined(MFC_OpenACC)
2008# 842 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2009!$acc update device(any_non_newtonian, is_non_newtonian, hb_tau0, hb_K, hb_nn, hb_m_arr, hb_mu_min, hb_mu_max, fluid_inv_re)
2010# 842 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2011#elif defined(MFC_OpenMP)
2012# 842 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2013!$omp target update to(any_non_newtonian, is_non_newtonian, hb_tau0, hb_K, hb_nn, hb_m_arr, hb_mu_min, hb_mu_max, fluid_inv_re)
2014# 842 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2015#endif
2016
2017 if (bubbles_euler .and. qbmm .and. .not. polytropic) then
2018 allocate (mpi_io_data%view(1:sys_size + 2*nb*nnode))
2019 allocate (mpi_io_data%var(1:sys_size + 2*nb*nnode))
2020 else if (bubbles_lagrange) then
2021 allocate (mpi_io_data%view(1:sys_size + 1))
2022 allocate (mpi_io_data%var(1:sys_size + 1))
2023 else
2024 allocate (mpi_io_data%view(1:sys_size))
2025 allocate (mpi_io_data%var(1:sys_size))
2026 end if
2027
2028 if (.not. down_sample) then
2029 do i = 1, sys_size
2030 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
2031 mpi_io_data%var(i)%sf => null()
2032 end do
2033 end if
2034 if (bubbles_euler .and. qbmm .and. .not. polytropic) then
2035 do i = sys_size + 1, sys_size + 2*nb*nnode
2036 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
2037 mpi_io_data%var(i)%sf => null()
2038 end do
2039 else if (bubbles_lagrange) then
2040 do i = 1, sys_size + 1
2041 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
2042 mpi_io_data%var(i)%sf => null()
2043 end do
2044 end if
2045
2046 ! Configure WENO averaging flag (arithmetic mean vs. unaltered values)
2047 wa_flg = 0._wp; if (weno_avg) wa_flg = 1._wp
2048
2049# 875 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2050#if defined(MFC_OpenACC)
2051# 875 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2052!$acc update device(wa_flg)
2053# 875 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2054#elif defined(MFC_OpenMP)
2055# 875 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2056!$omp target update to(wa_flg)
2057# 875 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2058#endif
2059
2060 ! Resort to default WENO-JS if no other WENO scheme is selected
2061# 879 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2062 wenojs = .not. (mapped_weno .or. wenoz .or. teno)
2063# 881 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2064
2065 if (ib) allocate (mpi_io_ib_data%var%sf(0:m,0:n,0:p))
2066
2067 if (hypoelasticity .or. mhd .or. probe_wrt .or. ib .or. bubbles_lagrange) then
2068 fd_number = max(1, fd_order/2)
2069 end if
2070
2072 if (hypoelasticity) then
2073 if (riemann_solver == 1) then
2074 if (hypo_hll_interface_rhs) then
2076 else
2078 end if
2079 else if (riemann_solver == 2) then
2081 else if (riemann_solver == 4) then
2083 end if
2084 end if
2085
2086 ! flux_src: choose exactly one export mode (adv_src_mode) for the NC volume fraction advection term.
2087 if (riemann_solver == 1 .and. .not. hll_u_interface) then
2088 ! HLL Method 1 (alpha-interface): flux_src(adv_idx%beg:adv_idx%end) carries interface alpha_k per fluid.
2090 else if ((riemann_solver == 1 .and. hll_u_interface) .or. riemann_solver == 2 .or. riemann_solver == 3 &
2091 & .or. riemann_solver == 5) then
2092 ! HLLC, HLL Method 2 (u-interface), exact, LF: flux_src(adv_idx%beg) carries one shared face-normal velocity.
2094 else if (riemann_solver == 4) then
2095 ! MHD HLLD: single species, no volume fraction to advect. Hypo HLLD: the dual-pass keeps all NC terms in the flux.
2097 end if
2098
2099 call s_configure_coordinate_bounds(recon_type, weno_polyn, muscl_polyn, igr_order, buff_size, idwint, idwbuff, viscous, &
2100 & bubbles_lagrange, m, n, p, num_dims, igr, ib, fd_number)
2101
2102# 918 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2103#if defined(MFC_OpenACC)
2104# 918 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2105!$acc update device(idwint, idwbuff)
2106# 918 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2107#elif defined(MFC_OpenMP)
2108# 918 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2109!$omp target update to(idwint, idwbuff)
2110# 918 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2111#endif
2112
2113 ! Configuring Coordinate Direction Indexes
2114 if (bubbles_euler) then
2115#ifdef MFC_DEBUG
2116# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2117 block
2118# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2119 use iso_fortran_env, only: output_unit
2120# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2121
2122# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2123 print *, 'm_global_parameters.fpp:922: ', '@:ALLOCATE(ptil( idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
2124# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2125
2126# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2127 call flush (output_unit)
2128# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2129 end block
2130# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2131#endif
2132# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2133 allocate (ptil( idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
2134# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2135
2136# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2137
2138# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2139#if defined(MFC_OpenACC)
2140# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2141!$acc enter data create(ptil)
2142# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2143#elif defined(MFC_OpenMP)
2144# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2145!$omp target enter data map(always,alloc:ptil)
2146# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2147#endif
2148 end if
2149
2150
2151# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2152#if defined(MFC_OpenACC)
2153# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2154!$acc update device(fd_order, fd_number)
2155# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2156#elif defined(MFC_OpenMP)
2157# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2158!$omp target update to(fd_order, fd_number)
2159# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2160#endif
2161
2162 if (cyl_coord .neqv. .true.) then ! Cartesian grid
2163 grid_geometry = 1
2164 else if (cyl_coord .and. p == 0) then ! Axisymmetric cylindrical grid
2165 grid_geometry = 2
2166 else
2167 grid_geometry = 3
2168 end if
2169
2170 ! nc_iface_vel: use_nc_iface_vel enables a second export channel. Use it when the Riemann solver must expose interface
2171 ! velocities beyond what flux_src already provides:
2172 !
2173 ! 1. adv_src_mode_alpha_iface + alt_soundspeed: face-normal velocity only, for the KdivU correction (flux_src already
2174 ! carries alpha in this mode) 2. hypo_nc_mode_interface: all components for the hypoelastic velocity-gradient tensor
2175 ! 3. hypo_nc_mode_dual_pass + axisym: anchored radial face traces for the cylindrical completion (both velocity
2176 ! components are exported per face; the completion consumes the radial one from each pass)
2178 & .and. grid_geometry == 2) .or. (adv_src_mode == adv_src_mode_alpha_iface .and. alt_soundspeed)
2179
2180
2181# 945 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2182#if defined(MFC_OpenACC)
2183# 945 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2184!$acc update device(sys_size, buff_size, eqn_idx, adv_n, adap_dt, pi_fac, adap_dt_tol, adap_dt_max_iters)
2185# 945 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2186#elif defined(MFC_OpenMP)
2187# 945 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2188!$omp target update to(sys_size, buff_size, eqn_idx, adv_n, adap_dt, pi_fac, adap_dt_tol, adap_dt_max_iters)
2189# 945 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2190#endif
2191
2192# 946 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2193#if defined(MFC_OpenACC)
2194# 946 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2195!$acc update device(cfl_target, m, n, p)
2196# 946 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2197#elif defined(MFC_OpenMP)
2198# 946 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2199!$omp target update to(cfl_target, m, n, p)
2200# 946 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2201#endif
2202
2203
2204# 948 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2205#if defined(MFC_OpenACC)
2206# 948 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2207!$acc update device(alt_soundspeed, acoustic_source, num_source)
2208# 948 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2209#elif defined(MFC_OpenMP)
2210# 948 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2211!$omp target update to(alt_soundspeed, acoustic_source, num_source)
2212# 948 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2213#endif
2214
2215# 949 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2216#if defined(MFC_OpenACC)
2217# 949 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2218!$acc update device(dt, sys_size, buff_size, eqn_idx, mpp_lim, bubbles_euler, hypoelasticity, alt_soundspeed, avg_state, model_eqns, mixture_err, grid_geometry, cyl_coord, mp_weno, weno_eps, teno_CT, low_Mach)
2219# 949 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2220#elif defined(MFC_OpenMP)
2221# 949 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2222!$omp target update to(dt, sys_size, buff_size, eqn_idx, mpp_lim, bubbles_euler, hypoelasticity, alt_soundspeed, avg_state, model_eqns, mixture_err, grid_geometry, cyl_coord, mp_weno, weno_eps, teno_CT, low_Mach)
2223# 949 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2224#endif
2225# 951 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2226
2227# 951 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2228#if defined(MFC_OpenACC)
2229# 951 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2230!$acc update device(riemann_hypo_ADC, ADC_kappa, hll_u_interface, hypo_hll_interface_rhs, hypo_nc_mode)
2231# 951 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2232#elif defined(MFC_OpenMP)
2233# 951 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2234!$omp target update to(riemann_hypo_ADC, ADC_kappa, hll_u_interface, hypo_hll_interface_rhs, hypo_nc_mode)
2235# 951 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2236#endif
2237
2238
2239# 953 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2240#if defined(MFC_OpenACC)
2241# 953 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2242!$acc update device(Bx0)
2243# 953 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2244#elif defined(MFC_OpenMP)
2245# 953 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2246!$omp target update to(Bx0)
2247# 953 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2248#endif
2249
2250
2251# 955 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2252#if defined(MFC_OpenACC)
2253# 955 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2254!$acc update device(chem_params)
2255# 955 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2256#elif defined(MFC_OpenMP)
2257# 955 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2258!$omp target update to(chem_params)
2259# 955 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2260#endif
2261
2262
2263# 957 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2264#if defined(MFC_OpenACC)
2265# 957 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2266!$acc update device(rburn)
2267# 957 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2268#elif defined(MFC_OpenMP)
2269# 957 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2270!$omp target update to(rburn)
2271# 957 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2272#endif
2273
2274
2275# 959 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2276#if defined(MFC_OpenACC)
2277# 959 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2278!$acc update device(cont_damage, tau_star, cont_damage_s, alpha_bar)
2279# 959 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2280#elif defined(MFC_OpenMP)
2281# 959 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2282!$omp target update to(cont_damage, tau_star, cont_damage_s, alpha_bar)
2283# 959 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2284#endif
2285
2286
2287# 961 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2288#if defined(MFC_OpenACC)
2289# 961 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2290!$acc update device(hyper_cleaning, hyper_cleaning_speed, hyper_cleaning_tau)
2291# 961 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2292#elif defined(MFC_OpenMP)
2293# 961 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2294!$omp target update to(hyper_cleaning, hyper_cleaning_speed, hyper_cleaning_tau)
2295# 961 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2296#endif
2297
2298# 964 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2299
2300# 964 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2301#if defined(MFC_OpenACC)
2302# 964 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2303!$acc update device(wenojs, mapped_weno, wenoz, teno)
2304# 964 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2305#elif defined(MFC_OpenMP)
2306# 964 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2307!$omp target update to(wenojs, mapped_weno, wenoz, teno)
2308# 964 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2309#endif
2310
2311# 965 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2312#if defined(MFC_OpenACC)
2313# 965 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2314!$acc update device(wenoz_q)
2315# 965 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2316#elif defined(MFC_OpenMP)
2317# 965 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2318!$omp target update to(wenoz_q)
2319# 965 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2320#endif
2321
2322# 966 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2323#if defined(MFC_OpenACC)
2324# 966 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2325!$acc update device(mhd, relativity)
2326# 966 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2327#elif defined(MFC_OpenMP)
2328# 966 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2329!$omp target update to(mhd, relativity)
2330# 966 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2331#endif
2332
2333# 967 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2334#if defined(MFC_OpenACC)
2335# 967 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2336!$acc update device(muscl_order, muscl_lim)
2337# 967 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2338#elif defined(MFC_OpenMP)
2339# 967 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2340!$omp target update to(muscl_order, muscl_lim)
2341# 967 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2342#endif
2343
2344# 968 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2345#if defined(MFC_OpenACC)
2346# 968 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2347!$acc update device(igr, igr_order)
2348# 968 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2349#elif defined(MFC_OpenMP)
2350# 968 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2351!$omp target update to(igr, igr_order)
2352# 968 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2353#endif
2354
2355# 969 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2356#if defined(MFC_OpenACC)
2357# 969 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2358!$acc update device(num_fluids, num_dims, viscous, num_vels, nb, muscl_lim)
2359# 969 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2360#elif defined(MFC_OpenMP)
2361# 969 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2362!$omp target update to(num_fluids, num_dims, viscous, num_vels, nb, muscl_lim)
2363# 969 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2364#endif
2365# 971 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2366
2367
2368# 972 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2369#if defined(MFC_OpenACC)
2370# 972 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2371!$acc update device(int_comp, ic_eps, ic_beta)
2372# 972 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2373#elif defined(MFC_OpenMP)
2374# 972 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2375!$omp target update to(int_comp, ic_eps, ic_beta)
2376# 972 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2377#endif
2378
2379# 973 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2380#if defined(MFC_OpenACC)
2381# 973 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2382!$acc update device(muscl_eps)
2383# 973 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2384#elif defined(MFC_OpenMP)
2385# 973 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2386!$omp target update to(muscl_eps)
2387# 973 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2388#endif
2389
2390# 974 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2391#if defined(MFC_OpenACC)
2392# 974 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2393!$acc update device(dir_idx, dir_flg, dir_idx_tau, stress_perm)
2394# 974 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2395#elif defined(MFC_OpenMP)
2396# 974 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2397!$omp target update to(dir_idx, dir_flg, dir_idx_tau, stress_perm)
2398# 974 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2399#endif
2400
2401
2402# 976 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2403#if defined(MFC_OpenACC)
2404# 976 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2405!$acc update device(relax, relax_model, palpha_eps, ptgalpha_eps)
2406# 976 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2407#elif defined(MFC_OpenMP)
2408# 976 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2409!$omp target update to(relax, relax_model, palpha_eps, ptgalpha_eps)
2410# 976 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2411#endif
2412
2413 if (synthetic_turbulence) then
2414
2415# 979 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2416#if defined(MFC_OpenACC)
2417# 979 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2418!$acc update device(synthetic_turbulence, num_turbulent_sources)
2419# 979 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2420#elif defined(MFC_OpenMP)
2421# 979 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2422!$omp target update to(synthetic_turbulence, num_turbulent_sources)
2423# 979 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2424#endif
2425
2426# 980 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2427#if defined(MFC_OpenACC)
2428# 980 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2429!$acc update device(synth_U_inf, synth_n_waves_per_shell, synth_k_shell, synth_amp_shell)
2430# 980 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2431#elif defined(MFC_OpenMP)
2432# 980 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2433!$omp target update to(synth_U_inf, synth_n_waves_per_shell, synth_k_shell, synth_amp_shell)
2434# 980 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2435#endif
2436
2437# 981 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2438#if defined(MFC_OpenACC)
2439# 981 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2440!$acc update device(turb_pos, synth_L)
2441# 981 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2442#elif defined(MFC_OpenMP)
2443# 981 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2444!$omp target update to(turb_pos, synth_L)
2445# 981 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2446#endif
2447 end if
2448
2449 ! Allocating grid variables for the x-, y- and z-directions
2450#ifdef MFC_DEBUG
2451# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2452 block
2453# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2454 use iso_fortran_env, only: output_unit
2455# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2456
2457# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2458 print *, 'm_global_parameters.fpp:985: ', '@:ALLOCATE(x_cb(-1 - buff_size:m + buff_size))'
2459# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2460
2461# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2462 call flush (output_unit)
2463# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2464 end block
2465# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2466#endif
2467# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2468 allocate (x_cb(-1 - buff_size:m + buff_size))
2469# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2470
2471# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2472
2473# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2474#if defined(MFC_OpenACC)
2475# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2476!$acc enter data create(x_cb)
2477# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2478#elif defined(MFC_OpenMP)
2479# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2480!$omp target enter data map(always,alloc:x_cb)
2481# 985 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2482#endif
2483#ifdef MFC_DEBUG
2484# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2485 block
2486# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2487 use iso_fortran_env, only: output_unit
2488# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2489
2490# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2491 print *, 'm_global_parameters.fpp:986: ', '@:ALLOCATE(x_cc(-buff_size:m + buff_size))'
2492# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2493
2494# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2495 call flush (output_unit)
2496# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2497 end block
2498# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2499#endif
2500# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2501 allocate (x_cc(-buff_size:m + buff_size))
2502# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2503
2504# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2505
2506# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2507#if defined(MFC_OpenACC)
2508# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2509!$acc enter data create(x_cc)
2510# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2511#elif defined(MFC_OpenMP)
2512# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2513!$omp target enter data map(always,alloc:x_cc)
2514# 986 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2515#endif
2516#ifdef MFC_DEBUG
2517# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2518 block
2519# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2520 use iso_fortran_env, only: output_unit
2521# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2522
2523# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2524 print *, 'm_global_parameters.fpp:987: ', '@:ALLOCATE(dx(-buff_size:m + buff_size))'
2525# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2526
2527# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2528 call flush (output_unit)
2529# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2530 end block
2531# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2532#endif
2533# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2534 allocate (dx(-buff_size:m + buff_size))
2535# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2536
2537# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2538
2539# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2540#if defined(MFC_OpenACC)
2541# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2542!$acc enter data create(dx)
2543# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2544#elif defined(MFC_OpenMP)
2545# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2546!$omp target enter data map(always,alloc:dx)
2547# 987 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2548#endif
2549#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2550# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2551 block
2552# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2553 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
2554# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2555 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
2556# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2557#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
2558# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2559 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
2560# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2561#else
2562# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2563 use cuda_runtime_api
2564# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2565#endif
2566# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2567 integer :: istat
2568# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2569
2570# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2571 if (nv_uvm_pref_gpu) then
2572# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2573 ! print*, "Moving x_cb to GPU => ", SHAPE(x_cb) set preferred location GPU
2574# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2575 istat = cudamemadvise(c_devloc(x_cb), sizeof(x_cb), cudamemadvisesetpreferredlocation, 0)
2576# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2577 if (istat /= cudasuccess) then
2578# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2579 write (*, "('Error code: ',I0, ': ')") istat
2580# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2581 ! write(*,*) cudaGetErrorString(istat)
2582# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2583 end if
2584# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2585 ! set accessed by CPU
2586# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2587 istat = cudamemadvise(c_devloc(x_cb), sizeof(x_cb), cudamemadvisesetaccessedby, cudacpudeviceid)
2588# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2589 if (istat /= cudasuccess) then
2590# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2591 write (*, "('Error code: ',I0, ': ')") istat
2592# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2593 ! write(*,*) cudaGetErrorString(istat)
2594# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2595 end if
2596# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2597 ! prefetch to GPU - physically populate memory pages
2598# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2599 istat = cudamemprefetchasync(c_devloc(x_cb), sizeof(x_cb), 0, 0)
2600# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2601 if (istat /= cudasuccess) then
2602# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2603 write (*, "('Error code: ',I0, ': ')") istat
2604# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2605 ! write(*,*) cudaGetErrorString(istat)
2606# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2607 end if
2608# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2609 end if
2610# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2611 end block
2612# 988 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2613#endif
2614#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2615# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2616 block
2617# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2618 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
2619# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2620 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
2621# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2622#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
2623# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2624 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
2625# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2626#else
2627# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2628 use cuda_runtime_api
2629# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2630#endif
2631# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2632 integer :: istat
2633# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2634
2635# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2636 if (nv_uvm_pref_gpu) then
2637# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2638 ! print*, "Moving x_cc to GPU => ", SHAPE(x_cc) set preferred location GPU
2639# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2640 istat = cudamemadvise(c_devloc(x_cc), sizeof(x_cc), cudamemadvisesetpreferredlocation, 0)
2641# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2642 if (istat /= cudasuccess) then
2643# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2644 write (*, "('Error code: ',I0, ': ')") istat
2645# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2646 ! write(*,*) cudaGetErrorString(istat)
2647# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2648 end if
2649# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2650 ! set accessed by CPU
2651# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2652 istat = cudamemadvise(c_devloc(x_cc), sizeof(x_cc), cudamemadvisesetaccessedby, cudacpudeviceid)
2653# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2654 if (istat /= cudasuccess) then
2655# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2656 write (*, "('Error code: ',I0, ': ')") istat
2657# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2658 ! write(*,*) cudaGetErrorString(istat)
2659# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2660 end if
2661# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2662 ! prefetch to GPU - physically populate memory pages
2663# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2664 istat = cudamemprefetchasync(c_devloc(x_cc), sizeof(x_cc), 0, 0)
2665# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2666 if (istat /= cudasuccess) then
2667# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2668 write (*, "('Error code: ',I0, ': ')") istat
2669# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2670 ! write(*,*) cudaGetErrorString(istat)
2671# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2672 end if
2673# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2674 end if
2675# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2676 end block
2677# 989 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2678#endif
2679#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2680# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2681 block
2682# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2683 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
2684# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2685 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
2686# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2687#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
2688# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2689 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
2690# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2691#else
2692# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2693 use cuda_runtime_api
2694# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2695#endif
2696# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2697 integer :: istat
2698# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2699
2700# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2701 if (nv_uvm_pref_gpu) then
2702# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2703 ! print*, "Moving dx to GPU => ", SHAPE(dx) set preferred location GPU
2704# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2705 istat = cudamemadvise(c_devloc(dx), sizeof(dx), cudamemadvisesetpreferredlocation, 0)
2706# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2707 if (istat /= cudasuccess) then
2708# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2709 write (*, "('Error code: ',I0, ': ')") istat
2710# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2711 ! write(*,*) cudaGetErrorString(istat)
2712# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2713 end if
2714# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2715 ! set accessed by CPU
2716# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2717 istat = cudamemadvise(c_devloc(dx), sizeof(dx), cudamemadvisesetaccessedby, cudacpudeviceid)
2718# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2719 if (istat /= cudasuccess) then
2720# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2721 write (*, "('Error code: ',I0, ': ')") istat
2722# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2723 ! write(*,*) cudaGetErrorString(istat)
2724# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2725 end if
2726# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2727 ! prefetch to GPU - physically populate memory pages
2728# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2729 istat = cudamemprefetchasync(c_devloc(dx), sizeof(dx), 0, 0)
2730# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2731 if (istat /= cudasuccess) then
2732# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2733 write (*, "('Error code: ',I0, ': ')") istat
2734# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2735 ! write(*,*) cudaGetErrorString(istat)
2736# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2737 end if
2738# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2739 end if
2740# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2741 end block
2742# 990 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2743#endif
2744
2745 if (n == 0) return
2746#ifdef MFC_DEBUG
2747# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2748 block
2749# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2750 use iso_fortran_env, only: output_unit
2751# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2752
2753# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2754 print *, 'm_global_parameters.fpp:993: ', '@:ALLOCATE(y_cb(-1 - buff_size:n + buff_size))'
2755# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2756
2757# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2758 call flush (output_unit)
2759# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2760 end block
2761# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2762#endif
2763# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2764 allocate (y_cb(-1 - buff_size:n + buff_size))
2765# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2766
2767# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2768
2769# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2770#if defined(MFC_OpenACC)
2771# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2772!$acc enter data create(y_cb)
2773# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2774#elif defined(MFC_OpenMP)
2775# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2776!$omp target enter data map(always,alloc:y_cb)
2777# 993 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2778#endif
2779#ifdef MFC_DEBUG
2780# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2781 block
2782# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2783 use iso_fortran_env, only: output_unit
2784# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2785
2786# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2787 print *, 'm_global_parameters.fpp:994: ', '@:ALLOCATE(y_cc(-buff_size:n + buff_size))'
2788# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2789
2790# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2791 call flush (output_unit)
2792# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2793 end block
2794# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2795#endif
2796# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2797 allocate (y_cc(-buff_size:n + buff_size))
2798# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2799
2800# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2801
2802# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2803#if defined(MFC_OpenACC)
2804# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2805!$acc enter data create(y_cc)
2806# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2807#elif defined(MFC_OpenMP)
2808# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2809!$omp target enter data map(always,alloc:y_cc)
2810# 994 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2811#endif
2812#ifdef MFC_DEBUG
2813# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2814 block
2815# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2816 use iso_fortran_env, only: output_unit
2817# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2818
2819# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2820 print *, 'm_global_parameters.fpp:995: ', '@:ALLOCATE(dy(-buff_size:n + buff_size))'
2821# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2822
2823# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2824 call flush (output_unit)
2825# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2826 end block
2827# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2828#endif
2829# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2830 allocate (dy(-buff_size:n + buff_size))
2831# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2832
2833# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2834
2835# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2836#if defined(MFC_OpenACC)
2837# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2838!$acc enter data create(dy)
2839# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2840#elif defined(MFC_OpenMP)
2841# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2842!$omp target enter data map(always,alloc:dy)
2843# 995 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2844#endif
2845#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2846# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2847 block
2848# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2849 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
2850# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2851 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
2852# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2853#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
2854# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2855 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
2856# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2857#else
2858# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2859 use cuda_runtime_api
2860# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2861#endif
2862# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2863 integer :: istat
2864# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2865
2866# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2867 if (nv_uvm_pref_gpu) then
2868# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2869 ! print*, "Moving y_cb to GPU => ", SHAPE(y_cb) set preferred location GPU
2870# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2871 istat = cudamemadvise(c_devloc(y_cb), sizeof(y_cb), cudamemadvisesetpreferredlocation, 0)
2872# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2873 if (istat /= cudasuccess) then
2874# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2875 write (*, "('Error code: ',I0, ': ')") istat
2876# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2877 ! write(*,*) cudaGetErrorString(istat)
2878# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2879 end if
2880# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2881 ! set accessed by CPU
2882# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2883 istat = cudamemadvise(c_devloc(y_cb), sizeof(y_cb), cudamemadvisesetaccessedby, cudacpudeviceid)
2884# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2885 if (istat /= cudasuccess) then
2886# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2887 write (*, "('Error code: ',I0, ': ')") istat
2888# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2889 ! write(*,*) cudaGetErrorString(istat)
2890# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2891 end if
2892# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2893 ! prefetch to GPU - physically populate memory pages
2894# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2895 istat = cudamemprefetchasync(c_devloc(y_cb), sizeof(y_cb), 0, 0)
2896# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2897 if (istat /= cudasuccess) then
2898# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2899 write (*, "('Error code: ',I0, ': ')") istat
2900# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2901 ! write(*,*) cudaGetErrorString(istat)
2902# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2903 end if
2904# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2905 end if
2906# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2907 end block
2908# 996 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2909#endif
2910#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2911# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2912 block
2913# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2914 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
2915# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2916 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
2917# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2918#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
2919# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2920 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
2921# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2922#else
2923# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2924 use cuda_runtime_api
2925# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2926#endif
2927# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2928 integer :: istat
2929# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2930
2931# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2932 if (nv_uvm_pref_gpu) then
2933# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2934 ! print*, "Moving y_cc to GPU => ", SHAPE(y_cc) set preferred location GPU
2935# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2936 istat = cudamemadvise(c_devloc(y_cc), sizeof(y_cc), cudamemadvisesetpreferredlocation, 0)
2937# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2938 if (istat /= cudasuccess) then
2939# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2940 write (*, "('Error code: ',I0, ': ')") istat
2941# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2942 ! write(*,*) cudaGetErrorString(istat)
2943# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2944 end if
2945# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2946 ! set accessed by CPU
2947# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2948 istat = cudamemadvise(c_devloc(y_cc), sizeof(y_cc), cudamemadvisesetaccessedby, cudacpudeviceid)
2949# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2950 if (istat /= cudasuccess) then
2951# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2952 write (*, "('Error code: ',I0, ': ')") istat
2953# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2954 ! write(*,*) cudaGetErrorString(istat)
2955# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2956 end if
2957# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2958 ! prefetch to GPU - physically populate memory pages
2959# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2960 istat = cudamemprefetchasync(c_devloc(y_cc), sizeof(y_cc), 0, 0)
2961# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2962 if (istat /= cudasuccess) then
2963# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2964 write (*, "('Error code: ',I0, ': ')") istat
2965# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2966 ! write(*,*) cudaGetErrorString(istat)
2967# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2968 end if
2969# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2970 end if
2971# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2972 end block
2973# 997 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2974#endif
2975#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2976# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2977 block
2978# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2979 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
2980# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2981 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
2982# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2983#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
2984# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2985 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
2986# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2987#else
2988# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2989 use cuda_runtime_api
2990# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2991#endif
2992# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2993 integer :: istat
2994# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2995
2996# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2997 if (nv_uvm_pref_gpu) then
2998# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2999 ! print*, "Moving dy to GPU => ", SHAPE(dy) set preferred location GPU
3000# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3001 istat = cudamemadvise(c_devloc(dy), sizeof(dy), cudamemadvisesetpreferredlocation, 0)
3002# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3003 if (istat /= cudasuccess) then
3004# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3005 write (*, "('Error code: ',I0, ': ')") istat
3006# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3007 ! write(*,*) cudaGetErrorString(istat)
3008# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3009 end if
3010# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3011 ! set accessed by CPU
3012# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3013 istat = cudamemadvise(c_devloc(dy), sizeof(dy), cudamemadvisesetaccessedby, cudacpudeviceid)
3014# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3015 if (istat /= cudasuccess) then
3016# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3017 write (*, "('Error code: ',I0, ': ')") istat
3018# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3019 ! write(*,*) cudaGetErrorString(istat)
3020# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3021 end if
3022# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3023 ! prefetch to GPU - physically populate memory pages
3024# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3025 istat = cudamemprefetchasync(c_devloc(dy), sizeof(dy), 0, 0)
3026# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3027 if (istat /= cudasuccess) then
3028# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3029 write (*, "('Error code: ',I0, ': ')") istat
3030# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3031 ! write(*,*) cudaGetErrorString(istat)
3032# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3033 end if
3034# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3035 end if
3036# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3037 end block
3038# 998 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3039#endif
3040
3041 if (p == 0) return
3042#ifdef MFC_DEBUG
3043# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3044 block
3045# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3046 use iso_fortran_env, only: output_unit
3047# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3048
3049# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3050 print *, 'm_global_parameters.fpp:1001: ', '@:ALLOCATE(z_cb(-1 - buff_size:p + buff_size))'
3051# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3052
3053# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3054 call flush (output_unit)
3055# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3056 end block
3057# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3058#endif
3059# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3060 allocate (z_cb(-1 - buff_size:p + buff_size))
3061# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3062
3063# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3064
3065# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3066#if defined(MFC_OpenACC)
3067# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3068!$acc enter data create(z_cb)
3069# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3070#elif defined(MFC_OpenMP)
3071# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3072!$omp target enter data map(always,alloc:z_cb)
3073# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3074#endif
3075#ifdef MFC_DEBUG
3076# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3077 block
3078# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3079 use iso_fortran_env, only: output_unit
3080# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3081
3082# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3083 print *, 'm_global_parameters.fpp:1002: ', '@:ALLOCATE(z_cc(-buff_size:p + buff_size))'
3084# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3085
3086# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3087 call flush (output_unit)
3088# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3089 end block
3090# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3091#endif
3092# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3093 allocate (z_cc(-buff_size:p + buff_size))
3094# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3095
3096# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3097
3098# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3099#if defined(MFC_OpenACC)
3100# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3101!$acc enter data create(z_cc)
3102# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3103#elif defined(MFC_OpenMP)
3104# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3105!$omp target enter data map(always,alloc:z_cc)
3106# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3107#endif
3108#ifdef MFC_DEBUG
3109# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3110 block
3111# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3112 use iso_fortran_env, only: output_unit
3113# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3114
3115# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3116 print *, 'm_global_parameters.fpp:1003: ', '@:ALLOCATE(dz(-buff_size:p + buff_size))'
3117# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3118
3119# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3120 call flush (output_unit)
3121# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3122 end block
3123# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3124#endif
3125# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3126 allocate (dz(-buff_size:p + buff_size))
3127# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3128
3129# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3130
3131# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3132#if defined(MFC_OpenACC)
3133# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3134!$acc enter data create(dz)
3135# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3136#elif defined(MFC_OpenMP)
3137# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3138!$omp target enter data map(always,alloc:dz)
3139# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3140#endif
3141#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3142# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3143 block
3144# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3145 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
3146# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3147 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3148# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3149#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3150# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3151 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3152# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3153#else
3154# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3155 use cuda_runtime_api
3156# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3157#endif
3158# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3159 integer :: istat
3160# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3161
3162# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3163 if (nv_uvm_pref_gpu) then
3164# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3165 ! print*, "Moving z_cb to GPU => ", SHAPE(z_cb) set preferred location GPU
3166# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3167 istat = cudamemadvise(c_devloc(z_cb), sizeof(z_cb), cudamemadvisesetpreferredlocation, 0)
3168# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3169 if (istat /= cudasuccess) then
3170# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3171 write (*, "('Error code: ',I0, ': ')") istat
3172# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3173 ! write(*,*) cudaGetErrorString(istat)
3174# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3175 end if
3176# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3177 ! set accessed by CPU
3178# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3179 istat = cudamemadvise(c_devloc(z_cb), sizeof(z_cb), cudamemadvisesetaccessedby, cudacpudeviceid)
3180# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3181 if (istat /= cudasuccess) then
3182# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3183 write (*, "('Error code: ',I0, ': ')") istat
3184# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3185 ! write(*,*) cudaGetErrorString(istat)
3186# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3187 end if
3188# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3189 ! prefetch to GPU - physically populate memory pages
3190# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3191 istat = cudamemprefetchasync(c_devloc(z_cb), sizeof(z_cb), 0, 0)
3192# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3193 if (istat /= cudasuccess) then
3194# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3195 write (*, "('Error code: ',I0, ': ')") istat
3196# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3197 ! write(*,*) cudaGetErrorString(istat)
3198# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3199 end if
3200# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3201 end if
3202# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3203 end block
3204# 1004 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3205#endif
3206#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3207# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3208 block
3209# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3210 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
3211# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3212 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3213# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3214#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3215# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3216 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3217# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3218#else
3219# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3220 use cuda_runtime_api
3221# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3222#endif
3223# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3224 integer :: istat
3225# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3226
3227# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3228 if (nv_uvm_pref_gpu) then
3229# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3230 ! print*, "Moving z_cc to GPU => ", SHAPE(z_cc) set preferred location GPU
3231# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3232 istat = cudamemadvise(c_devloc(z_cc), sizeof(z_cc), cudamemadvisesetpreferredlocation, 0)
3233# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3234 if (istat /= cudasuccess) then
3235# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3236 write (*, "('Error code: ',I0, ': ')") istat
3237# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3238 ! write(*,*) cudaGetErrorString(istat)
3239# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3240 end if
3241# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3242 ! set accessed by CPU
3243# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3244 istat = cudamemadvise(c_devloc(z_cc), sizeof(z_cc), cudamemadvisesetaccessedby, cudacpudeviceid)
3245# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3246 if (istat /= cudasuccess) then
3247# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3248 write (*, "('Error code: ',I0, ': ')") istat
3249# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3250 ! write(*,*) cudaGetErrorString(istat)
3251# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3252 end if
3253# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3254 ! prefetch to GPU - physically populate memory pages
3255# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3256 istat = cudamemprefetchasync(c_devloc(z_cc), sizeof(z_cc), 0, 0)
3257# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3258 if (istat /= cudasuccess) then
3259# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3260 write (*, "('Error code: ',I0, ': ')") istat
3261# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3262 ! write(*,*) cudaGetErrorString(istat)
3263# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3264 end if
3265# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3266 end if
3267# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3268 end block
3269# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3270#endif
3271#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3272# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3273 block
3274# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3275 ! NVIDIA CUDA Fortran 25.3+: uses submodules (cuda_runtime_api, gpu_reductions, sort) See
3276# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3277 ! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3278# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3279#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3280# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3281 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3282# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3283#else
3284# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3285 use cuda_runtime_api
3286# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3287#endif
3288# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3289 integer :: istat
3290# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3291
3292# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3293 if (nv_uvm_pref_gpu) then
3294# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3295 ! print*, "Moving dz to GPU => ", SHAPE(dz) set preferred location GPU
3296# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3297 istat = cudamemadvise(c_devloc(dz), sizeof(dz), cudamemadvisesetpreferredlocation, 0)
3298# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3299 if (istat /= cudasuccess) then
3300# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3301 write (*, "('Error code: ',I0, ': ')") istat
3302# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3303 ! write(*,*) cudaGetErrorString(istat)
3304# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3305 end if
3306# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3307 ! set accessed by CPU
3308# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3309 istat = cudamemadvise(c_devloc(dz), sizeof(dz), cudamemadvisesetaccessedby, cudacpudeviceid)
3310# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3311 if (istat /= cudasuccess) then
3312# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3313 write (*, "('Error code: ',I0, ': ')") istat
3314# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3315 ! write(*,*) cudaGetErrorString(istat)
3316# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3317 end if
3318# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3319 ! prefetch to GPU - physically populate memory pages
3320# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3321 istat = cudamemprefetchasync(c_devloc(dz), sizeof(dz), 0, 0)
3322# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3323 if (istat /= cudasuccess) then
3324# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3325 write (*, "('Error code: ',I0, ': ')") istat
3326# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3327 ! write(*,*) cudaGetErrorString(istat)
3328# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3329 end if
3330# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3331 end if
3332# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3333 end block
3334# 1006 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3335#endif
3336
3338
3339 !> Initializes parallel infrastructure
3341
3342 ! proc_coords/start_idx/mpiiofs/mpi_info_int setup moved into the shared routine
3343 call s_initialize_parallel_io_common
3344
3345 ! #1290: per-rank physical comm-domain bounds for Lagrangian-bubble exchange
3346#ifdef MFC_DEBUG
3347# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3348 block
3349# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3350 use iso_fortran_env, only: output_unit
3351# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3352
3353# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3354 print *, 'm_global_parameters.fpp:1017: ', '@:ALLOCATE(pcomm_coords(1:num_dims))'
3355# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3356
3357# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3358 call flush (output_unit)
3359# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3360 end block
3361# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3362#endif
3363# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3364 allocate (pcomm_coords(1:num_dims))
3365# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3366
3367# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3368
3369# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3370#if defined(MFC_OpenACC)
3371# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3372!$acc enter data create(pcomm_coords)
3373# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3374#elif defined(MFC_OpenMP)
3375# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3376!$omp target enter data map(always,alloc:pcomm_coords)
3377# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3378#endif
3379
3380 end subroutine s_initialize_parallel_io
3381
3382 !> Module deallocation and/or disassociation procedures
3384
3385 integer :: i
3386
3387 ! Deallocating the variables bookkeeping the indexes of any viscous fluids and any pairs of fluids whose interfaces
3388 ! supported effects of surface tension
3389
3390 if (viscous) then
3391#ifdef MFC_DEBUG
3392# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3393 block
3394# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3395 use iso_fortran_env, only: output_unit
3396# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3397
3398# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3399 print *, 'm_global_parameters.fpp:1030: ', '@:DEALLOCATE(Re_idx)'
3400# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3401
3402# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3403 call flush (output_unit)
3404# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3405 end block
3406# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3407#endif
3408# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3409
3410# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3411#if defined(MFC_OpenACC)
3412# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3413!$acc exit data delete(Re_idx)
3414# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3415#elif defined(MFC_OpenMP)
3416# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3417!$omp target exit data map(release:Re_idx)
3418# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3419#endif
3420# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3421 deallocate (re_idx)
3422 end if
3423
3424 ! Herschel-Bulkley non-Newtonian viscosity arrays (always allocated)
3425#ifdef MFC_DEBUG
3426# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3427 block
3428# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3429 use iso_fortran_env, only: output_unit
3430# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3431
3432# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3433 print *, 'm_global_parameters.fpp:1034: ', '@:DEALLOCATE(is_non_newtonian)'
3434# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3435
3436# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3437 call flush (output_unit)
3438# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3439 end block
3440# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3441#endif
3442# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3443
3444# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3445#if defined(MFC_OpenACC)
3446# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3447!$acc exit data delete(is_non_newtonian)
3448# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3449#elif defined(MFC_OpenMP)
3450# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3451!$omp target exit data map(release:is_non_newtonian)
3452# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3453#endif
3454# 1034 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3455 deallocate (is_non_newtonian)
3456#ifdef MFC_DEBUG
3457# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3458 block
3459# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3460 use iso_fortran_env, only: output_unit
3461# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3462
3463# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3464 print *, 'm_global_parameters.fpp:1035: ', '@:DEALLOCATE(hb_tau0, hb_K, hb_nn, hb_m_arr)'
3465# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3466
3467# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3468 call flush (output_unit)
3469# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3470 end block
3471# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3472#endif
3473# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3474
3475# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3476#if defined(MFC_OpenACC)
3477# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3478!$acc exit data delete(hb_tau0, hb_K, hb_nn, hb_m_arr)
3479# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3480#elif defined(MFC_OpenMP)
3481# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3482!$omp target exit data map(release:hb_tau0, hb_K, hb_nn, hb_m_arr)
3483# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3484#endif
3485# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3486 deallocate (hb_tau0, hb_k, hb_nn, hb_m_arr)
3487#ifdef MFC_DEBUG
3488# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3489 block
3490# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3491 use iso_fortran_env, only: output_unit
3492# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3493
3494# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3495 print *, 'm_global_parameters.fpp:1036: ', '@:DEALLOCATE(hb_mu_min, hb_mu_max)'
3496# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3497
3498# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3499 call flush (output_unit)
3500# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3501 end block
3502# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3503#endif
3504# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3505
3506# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3507#if defined(MFC_OpenACC)
3508# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3509!$acc exit data delete(hb_mu_min, hb_mu_max)
3510# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3511#elif defined(MFC_OpenMP)
3512# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3513!$omp target exit data map(release:hb_mu_min, hb_mu_max)
3514# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3515#endif
3516# 1036 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3517 deallocate (hb_mu_min, hb_mu_max)
3518#ifdef MFC_DEBUG
3519# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3520 block
3521# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3522 use iso_fortran_env, only: output_unit
3523# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3524
3525# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3526 print *, 'm_global_parameters.fpp:1037: ', '@:DEALLOCATE(fluid_inv_re)'
3527# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3528
3529# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3530 call flush (output_unit)
3531# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3532 end block
3533# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3534#endif
3535# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3536
3537# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3538#if defined(MFC_OpenACC)
3539# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3540!$acc exit data delete(fluid_inv_re)
3541# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3542#elif defined(MFC_OpenMP)
3543# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3544!$omp target exit data map(release:fluid_inv_re)
3545# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3546#endif
3547# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3548 deallocate (fluid_inv_re)
3549
3550 if (bubbles_euler) then
3551#ifdef MFC_DEBUG
3552# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3553 block
3554# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3555 use iso_fortran_env, only: output_unit
3556# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3557
3558# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3559 print *, 'm_global_parameters.fpp:1040: ', '@:DEALLOCATE(ptil)'
3560# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3561
3562# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3563 call flush (output_unit)
3564# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3565 end block
3566# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3567#endif
3568# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3569
3570# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3571#if defined(MFC_OpenACC)
3572# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3573!$acc exit data delete(ptil)
3574# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3575#elif defined(MFC_OpenMP)
3576# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3577!$omp target exit data map(release:ptil)
3578# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3579#endif
3580# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3581 deallocate (ptil)
3582#ifdef MFC_DEBUG
3583# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3584 block
3585# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3586 use iso_fortran_env, only: output_unit
3587# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3588
3589# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3590 print *, 'm_global_parameters.fpp:1041: ', '@:DEALLOCATE(qbmm_idx%rs, qbmm_idx%vs, qbmm_idx%ps, qbmm_idx%ms)'
3591# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3592
3593# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3594 call flush (output_unit)
3595# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3596 end block
3597# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3598#endif
3599# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3600
3601# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3602#if defined(MFC_OpenACC)
3603# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3604!$acc exit data delete(qbmm_idx%rs, qbmm_idx%vs, qbmm_idx%ps, qbmm_idx%ms)
3605# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3606#elif defined(MFC_OpenMP)
3607# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3608!$omp target exit data map(release:qbmm_idx%rs, qbmm_idx%vs, qbmm_idx%ps, qbmm_idx%ms)
3609# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3610#endif
3611# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3612 deallocate (qbmm_idx%rs, qbmm_idx%vs, qbmm_idx%ps, qbmm_idx%ms)
3613 if (qbmm) then
3614#ifdef MFC_DEBUG
3615# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3616 block
3617# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3618 use iso_fortran_env, only: output_unit
3619# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3620
3621# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3622 print *, 'm_global_parameters.fpp:1043: ', '@:DEALLOCATE(qbmm_idx%moms)'
3623# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3624
3625# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3626 call flush (output_unit)
3627# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3628 end block
3629# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3630#endif
3631# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3632
3633# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3634#if defined(MFC_OpenACC)
3635# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3636!$acc exit data delete(qbmm_idx%moms)
3637# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3638#elif defined(MFC_OpenMP)
3639# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3640!$omp target exit data map(release:qbmm_idx%moms)
3641# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3642#endif
3643# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3644 deallocate (qbmm_idx%moms)
3645 end if
3646 end if
3647
3648#ifdef MFC_DEBUG
3649# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3650 block
3651# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3652 use iso_fortran_env, only: output_unit
3653# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3654
3655# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3656 print *, 'm_global_parameters.fpp:1047: ', '@:DEALLOCATE(pcomm_coords)'
3657# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3658
3659# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3660 call flush (output_unit)
3661# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3662 end block
3663# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3664#endif
3665# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3666
3667# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3668#if defined(MFC_OpenACC)
3669# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3670!$acc exit data delete(pcomm_coords)
3671# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3672#elif defined(MFC_OpenMP)
3673# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3674!$omp target exit data map(release:pcomm_coords)
3675# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3676#endif
3677# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3678 deallocate (pcomm_coords)
3679
3680 ! Shared: deallocate proc_coords and start_idx
3681 call s_finalize_global_parameters_common
3682
3683 if (parallel_io) then
3684 if (bubbles_lagrange) then
3685 do i = 1, sys_size + 1
3686 mpi_io_data%var(i)%sf => null()
3687 end do
3688 else
3689 do i = 1, sys_size
3690 mpi_io_data%var(i)%sf => null()
3691 end do
3692 end if
3693
3694 deallocate (mpi_io_data%var)
3695 deallocate (mpi_io_data%view)
3696 end if
3697
3698 if (ib) mpi_io_ib_data%var%sf => null()
3699
3700 ! Deallocating grid variables for the x-, y- and z-directions
3701#ifdef MFC_DEBUG
3702# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3703 block
3704# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3705 use iso_fortran_env, only: output_unit
3706# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3707
3708# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3709 print *, 'm_global_parameters.fpp:1070: ', '@:DEALLOCATE(x_cb, x_cc, dx)'
3710# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3711
3712# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3713 call flush (output_unit)
3714# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3715 end block
3716# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3717#endif
3718# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3719
3720# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3721#if defined(MFC_OpenACC)
3722# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3723!$acc exit data delete(x_cb, x_cc, dx)
3724# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3725#elif defined(MFC_OpenMP)
3726# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3727!$omp target exit data map(release:x_cb, x_cc, dx)
3728# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3729#endif
3730# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3731 deallocate (x_cb, x_cc, dx)
3732
3733 if (n == 0) return
3734#ifdef MFC_DEBUG
3735# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3736 block
3737# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3738 use iso_fortran_env, only: output_unit
3739# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3740
3741# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3742 print *, 'm_global_parameters.fpp:1073: ', '@:DEALLOCATE(y_cb, y_cc, dy)'
3743# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3744
3745# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3746 call flush (output_unit)
3747# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3748 end block
3749# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3750#endif
3751# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3752
3753# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3754#if defined(MFC_OpenACC)
3755# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3756!$acc exit data delete(y_cb, y_cc, dy)
3757# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3758#elif defined(MFC_OpenMP)
3759# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3760!$omp target exit data map(release:y_cb, y_cc, dy)
3761# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3762#endif
3763# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3764 deallocate (y_cb, y_cc, dy)
3765
3766 if (p == 0) return
3767#ifdef MFC_DEBUG
3768# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3769 block
3770# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3771 use iso_fortran_env, only: output_unit
3772# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3773
3774# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3775 print *, 'm_global_parameters.fpp:1076: ', '@:DEALLOCATE(z_cb, z_cc, dz)'
3776# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3777
3778# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3779 call flush (output_unit)
3780# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3781 end block
3782# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3783#endif
3784# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3785
3786# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3787#if defined(MFC_OpenACC)
3788# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3789!$acc exit data delete(z_cb, z_cc, dz)
3790# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3791#elif defined(MFC_OpenMP)
3792# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3793!$omp target exit data map(release:z_cb, z_cc, dz)
3794# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3795#endif
3796# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3797 deallocate (z_cb, z_cc, dz)
3798
3799 if (allocated(neighbor_ranks)) then
3800#ifdef MFC_DEBUG
3801# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3802 block
3803# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3804 use iso_fortran_env, only: output_unit
3805# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3806
3807# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3808 print *, 'm_global_parameters.fpp:1079: ', '@:DEALLOCATE(neighbor_ranks)'
3809# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3810
3811# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3812 call flush (output_unit)
3813# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3814 end block
3815# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3816#endif
3817# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3818
3819# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3820#if defined(MFC_OpenACC)
3821# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3822!$acc exit data delete(neighbor_ranks)
3823# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3824#elif defined(MFC_OpenMP)
3825# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3826!$omp target exit data map(release:neighbor_ranks)
3827# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3828#endif
3829# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3830 deallocate (neighbor_ranks)
3831 end if
3832
3834
3835end module m_global_parameters
integer, intent(in) k
integer, intent(in) j
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Shared global parameters and equation-index setup for all three executables. Each per-target m_global...
type(ib_stl_parameters), dimension(num_stl_models_max) stl_models
Per-STL model parameters.
type(subgrid_bubble_physical_parameters) bub_pp
Subgrid bubble physical parameters.
type(vec3_dt), dimension(num_probes_max) probe
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Per-fluid stiffened-gas EOS parameters, Reynolds numbers, and shear modulus.
type(acoustic_parameters), dimension(num_probes_max) acoustic
Acoustic source parameters.
type(spbf_parameters) spatial_bf
Parameters for spatially supported body force (Wei & Freund, JFM 2005).
type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) patch_ib
Immersed boundary patch parameters.
type(particle_cloud_parameters), dimension(num_particle_clouds_max) particle_cloud
Particle bed specifications.
type(ib_airfoil_parameters), dimension(num_ib_airfoils_max) ib_airfoil
Per-airfoil NACA user inputs.
impure subroutine s_assign_common_defaults
Assign default values to the user-input parameters that are shared across all three executables (pre_...
type(bubbles_lagrange_parameters) lag_params
Lagrange bubbles' parameters.
impure subroutine s_initialize_eqn_idx(nmom_in, nb_in, six_eqn_alf_is_advected)
Initialize equation-index state (eqn_idx and sys_size) from the namelist parameters....
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
type(int_bounds_info) ib_bc_z
type(scalar_field), dimension(:,:,:), allocatable mom_3d
real(wp) mytime
Current simulation time.
integer nmomsp
Number of moments required by ensemble-averaging.
type(mpi_io_levelset_norm_var), public mpi_io_levelsetnorm_data
real(wp), dimension(:), allocatable fluid_inv_re
per-fluid Newtonian inverse-Re
logical bulk_stress
Bulk stresses.
real(wp), dimension(num_synth_shells_max) synth_k_shell
integer, parameter hypo_nc_mode_interface
interface-velocity export for the velocity-gradient tensor (HLL Method 2, HLLC)
impure subroutine s_assign_default_values_to_user_inputs
Assigns default values to the user inputs before reading them in. This enables for an easier consiste...
impure subroutine s_finalize_global_parameters_module
Module deallocation and/or disassociation procedures.
integer, parameter nmom
Number of carried moments per R0 location.
real(wp), dimension(num_synth_shells_max) synth_amp_shell
real(wp), dimension(:), allocatable im_trans_c
type(int_bounds_info), dimension(1:3) idwint
real(wp), dimension(:), allocatable, target z_cb
logical any_non_newtonian
.true. if any fluid is non-Newtonian
type(int_bounds_info) ib_bc_y
type(bounds_info) neighbor_domain_y
type(int_bounds_info), dimension(3) nidx
Neighbor index offsets per direction.
real(wp), dimension(:), allocatable hb_tau0
type(int_bounds_info) ib_bc_x
integer, parameter hypo_nc_mode_none
Hypoelastic NC velocity-coupling mode; exactly one value, derived from riemann_solver + hypo_hll_inte...
real(wp), dimension(:), allocatable pb0
real(wp), dimension(:), allocatable hb_k
real(wp), dimension(:), allocatable im_trans_t
type(qbmm_idx_info) qbmm_idx
QBMM moment index mappings (allocatable; GPU-managed separately).
logical, dimension(3) periodic_bc
integer proc_rank
Rank of the local processor.
real(wp), dimension(:), allocatable re_trans_t
real(wp), dimension(:,:), allocatable fd_coeff_z
type(mpi_io_ib_var), public mpi_io_ib_data
real(wp), dimension(:,:,:), allocatable spbf_source_y
real(wp), dimension(3) accel_bf
real(wp), dimension(:), allocatable weight
Simpson quadrature weights.
integer, parameter adv_src_mode_alpha_iface
flux_src exports per-fluid interface alpha
real(wp), dimension(:), allocatable k_v
integer, dimension(num_local_ibs_max) local_ib_patch_ids
lookup table of IBs in the local compute domain
real(wp), dimension(:), allocatable hb_nn
integer nmomtot
Total number of carried moments moments/transport equations.
integer, dimension(3) dir_idx
integer fd_number
Finite-difference half-stencil size: MAX(1, fd_order/2).
type(mpi_io_levelset_var), public mpi_io_levelset_data
type(bounds_info), dimension(3) glb_bounds
type(int_bounds_info), dimension(1:3) idwbuff
integer, parameter adv_src_mode_vel_iface
flux_src exports shared face-normal interface velocity
integer buff_size
Number of ghost cells for boundary condition storage.
integer, dimension(3) dir_idx_tau
(nn, nt, nt2) stress indices for wave speeds and momentum flux
integer, dimension(:,:,:), allocatable neighbor_ranks
MPI ranks of neighbors.
real(wp), dimension(:), allocatable r0
Bubble sizes.
real(wp), dimension(:,:,:), allocatable spbf_source_x
Source fields for the spatially supported body force. spatial_bf and bf_spatial_support are auto-gene...
impure subroutine s_initialize_global_parameters_module
Initialize the global parameters module.
real(wp), dimension(:), allocatable, target y_cc
real(wp), dimension(:), allocatable k_g
type(pres_field), dimension(:), allocatable pb_ts
integer n_el_bubs_glb
Number of Lagrangian bubbles (local and global).
type(pres_field), dimension(:), allocatable mv_ts
real(wp), dimension(:,:), allocatable fd_coeff_y
real(wp), dimension(:), allocatable, target z_cc
integer, parameter hypo_nc_mode_dual_pass
anchored dual-pass HLLD; all NC terms stay in the Riemann flux
logical use_nc_iface_vel
nc_iface_vel exports interface velocities needed outside flux_src
type(bounds_info), dimension(:), allocatable pcomm_coords
Local rank physical domain bounds.
real(wp), dimension(:), allocatable hb_m_arr
integer, parameter hypo_nc_mode_finite_diff
velocity gradients by finite difference (HLL without interface RHS)
integer num_procs
Number of processors.
type(bounds_info) neighbor_domain_z
real(wp), dimension(3) dir_flg
real(wp), dimension(:), allocatable, target x_cc
integer, dimension(num_synth_shells_max) synth_n_waves_per_shell
real(wp), dimension(num_turb_sources_max, 3) turb_pos
real(wp), dimension(:), allocatable, target y_cb
real(wp), dimension(:), allocatable hb_mu_min
real(wp), dimension(:,:,:), allocatable ptil
Pressure modification.
real(wp), dimension(:,:), allocatable, public mpi_io_data_lag_bubbles
type(scalar_field), dimension(:), allocatable mom_sp
type(cell_num_bounds) cells_bounds
integer, parameter adv_src_mode_unset
NC volume-fraction advection export mode; exactly one value, derived from riemann_solver + hll_u_inte...
type(mpi_io_airfoil_ib_var), public mpi_io_airfoil_ib_data
real(wp), dimension(:), allocatable mass_g0
integer, dimension(6) stress_perm
Full tensor permutation: local basis -> physical storage index.
real(wp), dimension(:,:), allocatable fd_coeff_x
type(mpi_io_var), public mpi_io_data
impure subroutine s_initialize_parallel_io
Initializes parallel infrastructure.
real(wp), dimension(:), allocatable omegan
real(wp), dimension(:), allocatable re_trans_c
real(wp), dimension(:), allocatable, target dy
real(wp), dimension(num_turb_sources_max, 3) synth_l
type(ib_airfoil_grid), dimension(num_ib_airfoils_max) ib_airfoil_grids
Per-airfoil computed surface grids.
integer, parameter adv_src_mode_none
flux_src exports no NC advection quantity
logical shear_stress
Shear stresses.
integer, dimension(:,:,:), allocatable ib_neighbor_ranks
MPI ranks of neighborhood domains, indexed (-N:N,-N:N,-N:N).
real(wp) finaltime
Final simulation time.
real(wp), dimension(:), allocatable, target dz
real(wp), dimension(:), allocatable, target dx
type(bounds_info) neighbor_domain_x
real(wp), dimension(:), allocatable pe_t
real(wp), dimension(:), allocatable mass_v0
real(wp), dimension(:), allocatable hb_mu_max
logical, dimension(:), allocatable is_non_newtonian
per-fluid NN flag
real(wp), dimension(:), allocatable, target x_cb
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
elemental subroutine, public s_update_cell_bounds(bounds, m, n, p)
Update the min and max number of cells in each set of axes.
logical elemental function, public f_is_default(var)
Check if a real(wp) variable is of default value.
Groups the x, y, z boundary condition begin/end codes for passing as a single argument.
Derived type adding beginning (beg) and end bounds info as attributes.
Max and min number of cells in a direction of each combination of x-,y-, and z-.
Computed surface grid for a NACA airfoil (simulation-only, not in namelist).
Integer bounds for variables.
Derived type for bubble variables pb and mv at quadrature nodes (qbmm).
QBMM moment index mappings - separate from bub beg/end so eqn_idx contains no allocatables.
Derived type annexing a scalar field (SF).