MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_global_parameters_common.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
2!>
3!! @file
4!! @brief Contains module m_global_parameters_common
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/common/m_global_parameters_common.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! New line at end of file is required for FYPP
44# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
45# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
46# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
47# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52
53# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56
57# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70! New line at end of file is required for FYPP
71# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
72
73# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78
79# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80
81# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 313 "/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# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149! New line at end of file is required for FYPP
150# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
151# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
152# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
153# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158
159# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164
165# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176! New line at end of file is required for FYPP
177# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
178
179# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180
181# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182
183# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184
185# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234! New line at end of file is required for FYPP
235# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
236
237! GPU parallel region (scalar reductions, maxval/minval)
238# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239
240! GPU parallel loop over threads (most common GPU macro)
241# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242
243! Required closing for GPU_PARALLEL_LOOP
244# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246! Mark routine for device compilation
247# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249! Declare device-resident data
250# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252! Inner loop within a GPU parallel region
253# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255! Scoped GPU data region
256# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! Host code with device pointers (for MPI with GPU buffers)
259# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Allocate device memory (unscoped)
262# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Free device memory
265# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Atomic operation on device
268# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! End atomic capture block
271# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Copy data between host and device
274# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! Synchronization barrier
277# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Import GPU library module (openacc or omp_lib)
280# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Emit code only for AMD compiler
283# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Emit code for non-Cray compilers
286# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! Emit code only for Cray compiler
289# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Emit code for non-NVIDIA compilers
292# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296! New line at end of file is required for FYPP
297# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
298
299# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
300
301! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
302! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
303! example see misc/nvidia_uvm/bind.sh. NVIDIA unified memory page placement hint
304# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305
306! Allocate and create GPU device memory
307# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308
309! Free GPU device memory and deallocate
310# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312! Cray-specific GPU pointer setup for vector fields
313# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Cray-specific GPU pointer setup for scalar fields
316# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Cray-specific GPU pointer setup for acoustic source spatials
319# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322
323# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
324! New line at end of file is required for FYPP
325# 7 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
326
327!> @brief Shared global parameters and equation-index setup for all three executables. Each per-target m_global_parameters uses this
328!! module (default-public, so all symbols re-export to downstream consumers via two-hop use-association).
330
331#ifdef MFC_MPI
332 use mpi
333#endif
334
336 use m_thermochem, only: num_species
339
340 implicit none
341
342 ! All namelist-bound scalar and array declarations (per-target, regenerated at build time by the ninja custom command)
343# 1 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp" 1
344! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
345!
346real(wp) :: bx0
347real(wp) :: ca
348real(wp) :: r0ref
349real(wp) :: re_inv
350real(wp) :: web
352logical :: adap_dt
354real(wp) :: adap_dt_tol
355logical :: adv_n
356real(wp) :: alf_factor
357real(wp) :: alpha_bar
359integer :: avg_state
360logical :: bf_x
361logical :: bf_y
362logical :: bf_z
363integer :: bubble_model
366character(LEN=path_len) :: case_dir
367logical :: cfl_adap_dt
368logical :: cfl_const_dt
369real(wp) :: cfl_target
372real(wp) :: collision_time
373logical :: cont_damage
374real(wp) :: cont_damage_s
375logical :: cyl_coord
376logical :: down_sample
377real(wp) :: dt
378integer :: fd_order
379logical :: fft_wrt
381real(wp) :: g_x
382real(wp) :: g_y
383real(wp) :: g_z
389logical :: ib
392logical :: ib_state_wrt
393real(wp) :: ic_beta
394real(wp) :: ic_eps
395integer :: int_comp
396logical :: integral_wrt
397real(wp) :: k_x
398real(wp) :: k_y
399real(wp) :: k_z
400integer :: low_mach
401integer :: m
402logical :: mixture_err
403integer :: model_eqns
404logical :: mp_weno
405logical :: mpp_lim
406real(wp) :: muscl_eps
407integer :: n
408integer :: n_start
409logical :: null_weights
411integer :: num_ibs
416integer :: num_probes
417integer :: num_source
422integer :: p
423real(wp) :: p_x
424real(wp) :: p_y
425real(wp) :: p_z
426real(wp) :: palpha_eps
427logical :: parallel_io
428real(wp) :: pi_fac
429real(wp) :: poly_sigma
430logical :: polydisperse
431logical :: polytropic
432integer :: precision
433real(wp) :: pref
435logical :: probe_wrt
436real(wp) :: ptgalpha_eps
437logical :: qbmm
438logical :: rdma_mpi
439logical :: relax
440integer :: relax_model
441real(wp) :: rhoref
444real(wp) :: sigma
446real(wp) :: t_save
447integer :: t_step_old
448integer :: t_step_print
449integer :: t_step_save
450integer :: t_step_start
451integer :: t_step_stop
452real(wp) :: t_stop
453real(wp) :: tau_star
454real(wp) :: teno_ct
455integer :: thermal
456integer :: time_stepper
457real(wp) :: w_x
458real(wp) :: w_y
459real(wp) :: w_z
460integer :: wave_speeds
461logical :: weno_re_flux
462logical :: weno_avg
463real(wp) :: weno_eps
464real(wp) :: x_a
465real(wp) :: x_b
466real(wp) :: y_a
467real(wp) :: y_b
468real(wp) :: z_a
469real(wp) :: z_b
470type(physical_parameters), dimension(num_fluids_max) :: fluid_pp !< Per-fluid stiffened-gas EOS parameters, Reynolds numbers, and shear modulus
471type(subgrid_bubble_physical_parameters) :: bub_pp !< Subgrid bubble physical parameters
472type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) :: patch_ib !< Immersed boundary patch parameters
473
474# 130 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
475#if defined(MFC_OpenACC)
476# 130 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
477!$acc declare create(patch_ib)
478# 130 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
479#elif defined(MFC_OpenMP)
480# 130 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
481!$omp declare target (patch_ib)
482# 130 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
483#endif
484type(ib_airfoil_parameters), dimension(num_ib_airfoils_max) :: ib_airfoil !< Per-airfoil NACA user inputs
485
486# 132 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
487#if defined(MFC_OpenACC)
488# 132 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
489!$acc declare create(ib_airfoil)
490# 132 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
491#elif defined(MFC_OpenMP)
492# 132 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
493!$omp declare target (ib_airfoil)
494# 132 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
495#endif
496type(ib_stl_parameters), dimension(num_stl_models_max) :: stl_models !< Per-STL model parameters
497type(vec3_dt), dimension(num_probes_max) :: probe
498type(integral_parameters), dimension(num_probes_max) :: integral
499type(acoustic_parameters), dimension(num_probes_max) :: acoustic !< Acoustic source parameters
500
501# 137 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
502#if defined(MFC_OpenACC)
503# 137 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
504!$acc declare create(acoustic)
505# 137 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
506#elif defined(MFC_OpenMP)
507# 137 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
508!$omp declare target (acoustic)
509# 137 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
510#endif
512
513# 139 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
514#if defined(MFC_OpenACC)
515# 139 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
516!$acc declare create(chem_params)
517# 139 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
518#elif defined(MFC_OpenMP)
519# 139 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
520!$omp declare target (chem_params)
521# 139 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
522#endif
523type(bubbles_lagrange_parameters) :: lag_params !< Lagrange bubbles' parameters
524
525# 141 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
526#if defined(MFC_OpenACC)
527# 141 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
528!$acc declare create(lag_params)
529# 141 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
530#elif defined(MFC_OpenMP)
531# 141 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
532!$omp declare target (lag_params)
533# 141 "/home/runner/work/MFC/MFC/build/include/simulation/generated_decls.fpp"
534#endif
535type(particle_cloud_parameters), dimension(num_particle_clouds_max) :: particle_cloud !< Particle bed specifications
536# 25 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
537
538 ! Case-optimization declarations: parameters (under MFC_CASE_OPTIMIZATION) or plain variables for
539 ! num_dims, num_vels, weno_polyn, muscl_polyn, weno_num_stencils, wenojs, igr, etc.
540# 1 "/home/runner/work/MFC/MFC/build/include/simulation/generated_case_opt_decls.fpp" 1
541! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
542!
543# 27 "/home/runner/work/MFC/MFC/build/include/simulation/generated_case_opt_decls.fpp"
544 integer :: num_dims
545 integer :: num_vels
546 integer :: weno_polyn
547 integer :: muscl_polyn
549 logical :: wenojs
550 logical :: igr
552 integer :: igr_order
553 logical :: igr_pres_lim
554 logical :: mapped_weno
555 logical :: mhd
556 integer :: muscl_lim
557 integer :: muscl_order
558 integer :: num_fluids
559 integer :: recon_type
560 logical :: relativity
561 logical :: teno
562 logical :: viscous
563 integer :: weno_order
564 logical :: wenoz
565 real(wp) :: wenoz_q
566# 50 "/home/runner/work/MFC/MFC/build/include/simulation/generated_case_opt_decls.fpp"
567# 29 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
568
569 ! For pre_process and post_process: num_dims and num_vels are declared manually here
570 ! (sim gets them from generated_case_opt_decls.fpp above)
571#ifndef MFC_SIMULATION
572 integer :: num_dims !< Number of spatial dimensions
573 integer :: num_vels !< Number of velocity components (different from num_dims for mhd)
574#endif
575
576 ! For pre_process: weno_polyn and muscl_polyn are declared manually here
577 ! (sim gets them from generated_case_opt_decls.fpp; post does not use them)
578#ifdef MFC_PRE_PROCESS
579 integer :: weno_polyn !< Degree of the WENO polynomials
580 integer :: muscl_polyn !< Degree of the MUSCL polynomials
581#endif
582
583 !> @name Annotations of the structure of the state and flux vectors in terms of the size and configuration of the system of
584 !! equations
585 !> @{
586 integer :: sys_size !< Number of unknowns in system of equations
587 type(eqn_idx_info) :: eqn_idx !< All conserved-variable equation index ranges and scalars
588 integer :: b_size !< Number of elements in the symmetric b tensor, plus one
589 integer :: tensor_size !< Number of elements in the full tensor plus one
590 !> @}
591
592 !> @name Chemistry modeling (Fypp compile-time constant; same value in all targets)
593 !> @{
594 logical, parameter :: chemistry = .false.
595 !> @}
596
597 !> @name Elasticity and shear stress state (identical across all three executables)
598 !> @{
599 logical :: elasticity !< elasticity modeling, true for hyper or hypo
600 integer :: shear_num !< Number of shear stress components
601 integer, dimension(3) :: shear_indices !< Indices of the stress components that represent shear stress
602 integer :: shear_bc_flip_num !< Number of shear stress components to reflect for boundary conditions
603 integer, dimension(3, 2) :: shear_bc_flip_indices !< Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num)
604 !> @}
605
606#ifdef MFC_SIMULATION
607
608# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
609#if defined(MFC_OpenACC)
610# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
611!$acc declare create(sys_size, eqn_idx, b_size, tensor_size)
612# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
613#elif defined(MFC_OpenMP)
614# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
615!$omp declare target (sys_size, eqn_idx, b_size, tensor_size)
616# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
617#endif
618
619# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
620#if defined(MFC_OpenACC)
621# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
622!$acc declare create(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
623# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
624#elif defined(MFC_OpenMP)
625# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
626!$omp declare target (shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
627# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
628#endif
629 ! Device residency for namelist/case-opt state declared above via the generated
630 ! includes: declare directives must live in the declaring module (Cray ftn rejects
631 ! declare-target on use-associated names), so these moved here from simulation.
632
633# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
634#if defined(MFC_OpenACC)
635# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
636!$acc declare create(cyl_coord)
637# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
638#elif defined(MFC_OpenMP)
639# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
640!$omp declare target (cyl_coord)
641# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
642#endif
643
644# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
645#if defined(MFC_OpenACC)
646# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
647!$acc declare create(dt, m, n, p)
648# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
649#elif defined(MFC_OpenMP)
650# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
651!$omp declare target (dt, m, n, p)
652# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
653#endif
654
655# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
656#if defined(MFC_OpenACC)
657# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
658!$acc declare create(cfl_target)
659# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
660#elif defined(MFC_OpenMP)
661# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
662!$omp declare target (cfl_target)
663# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
664#endif
665
666# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
667#if defined(MFC_OpenACC)
668# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
669!$acc declare create(int_comp, ic_eps, ic_beta)
670# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
671#elif defined(MFC_OpenMP)
672# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
673!$omp declare target (int_comp, ic_eps, ic_beta)
674# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
675#endif
676
677# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
678#if defined(MFC_OpenACC)
679# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
680!$acc declare create(muscl_eps)
681# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
682#elif defined(MFC_OpenMP)
683# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
684!$omp declare target (muscl_eps)
685# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
686#endif
687
688# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
689#if defined(MFC_OpenACC)
690# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
691!$acc declare create(mpp_lim, model_eqns, mixture_err, alt_soundspeed)
692# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
693#elif defined(MFC_OpenMP)
694# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
695!$omp declare target (mpp_lim, model_eqns, mixture_err, alt_soundspeed)
696# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
697#endif
698
699# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
700#if defined(MFC_OpenACC)
701# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
702!$acc declare create(avg_state, mp_weno, weno_eps, teno_CT, hypoelasticity)
703# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
704#elif defined(MFC_OpenMP)
705# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
706!$omp declare target (avg_state, mp_weno, weno_eps, teno_CT, hypoelasticity)
707# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
708#endif
709
710# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
711#if defined(MFC_OpenACC)
712# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
713!$acc declare create(hyperelasticity, elasticity, low_Mach)
714# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
715#elif defined(MFC_OpenMP)
716# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
717!$omp declare target (hyperelasticity, elasticity, low_Mach)
718# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
719#endif
720
721# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
722#if defined(MFC_OpenACC)
723# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
724!$acc declare create(cont_damage, hyper_cleaning)
725# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
726#elif defined(MFC_OpenMP)
727# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
728!$omp declare target (cont_damage, hyper_cleaning)
729# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
730#endif
731
732# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
733#if defined(MFC_OpenACC)
734# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
735!$acc declare create(relax, relax_model, palpha_eps, ptgalpha_eps)
736# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
737#elif defined(MFC_OpenMP)
738# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
739!$omp declare target (relax, relax_model, palpha_eps, ptgalpha_eps)
740# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
741#endif
742
743# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
744#if defined(MFC_OpenACC)
745# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
746!$acc declare create(down_sample)
747# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
748#elif defined(MFC_OpenMP)
749# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
750!$omp declare target (down_sample)
751# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
752#endif
753
754# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
755#if defined(MFC_OpenACC)
756# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
757!$acc declare create(fd_order)
758# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
759#elif defined(MFC_OpenMP)
760# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
761!$omp declare target (fd_order)
762# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
763#endif
764
765# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
766#if defined(MFC_OpenACC)
767# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
768!$acc declare create(rhoref, pref)
769# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
770#elif defined(MFC_OpenMP)
771# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
772!$omp declare target (rhoref, pref)
773# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
774#endif
775
776# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
777#if defined(MFC_OpenACC)
778# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
779!$acc declare create(ib, num_ibs)
780# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
781#elif defined(MFC_OpenMP)
782# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
783!$omp declare target (ib, num_ibs)
784# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
785#endif
786
787# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
788#if defined(MFC_OpenACC)
789# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
790!$acc declare create(ib_coefficient_of_friction)
791# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
792#elif defined(MFC_OpenMP)
793# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
794!$omp declare target (ib_coefficient_of_friction)
795# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
796#endif
797
798# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
799#if defined(MFC_OpenACC)
800# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
801!$acc declare create(Ca, Web, Re_inv)
802# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
803#elif defined(MFC_OpenMP)
804# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
805!$omp declare target (Ca, Web, Re_inv)
806# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
807#endif
808
809# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
810#if defined(MFC_OpenACC)
811# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
812!$acc declare create(bubbles_euler, polytropic, polydisperse)
813# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
814#elif defined(MFC_OpenMP)
815# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
816!$omp declare target (bubbles_euler, polytropic, polydisperse)
817# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
818#endif
819
820# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
821#if defined(MFC_OpenACC)
822# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
823!$acc declare create(adv_n, adap_dt, adap_dt_tol, adap_dt_max_iters)
824# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
825#elif defined(MFC_OpenMP)
826# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
827!$omp declare target (adv_n, adap_dt, adap_dt_tol, adap_dt_max_iters)
828# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
829#endif
830
831# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
832#if defined(MFC_OpenACC)
833# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
834!$acc declare create(bubble_model, thermal)
835# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
836#elif defined(MFC_OpenMP)
837# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
838!$omp declare target (bubble_model, thermal)
839# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
840#endif
841
842# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
843#if defined(MFC_OpenACC)
844# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
845!$acc declare create(poly_sigma)
846# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
847#elif defined(MFC_OpenMP)
848# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
849!$omp declare target (poly_sigma)
850# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
851#endif
852
853# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
854#if defined(MFC_OpenACC)
855# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
856!$acc declare create(qbmm, pi_fac)
857# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
858#elif defined(MFC_OpenMP)
859# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
860!$omp declare target (qbmm, pi_fac)
861# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
862#endif
863
864# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
865#if defined(MFC_OpenACC)
866# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
867!$acc declare create(R0ref)
868# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
869#elif defined(MFC_OpenMP)
870# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
871!$omp declare target (R0ref)
872# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
873#endif
874
875# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
876#if defined(MFC_OpenACC)
877# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
878!$acc declare create(acoustic_source, num_source)
879# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
880#elif defined(MFC_OpenMP)
881# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
882!$omp declare target (acoustic_source, num_source)
883# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
884#endif
885
886# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
887#if defined(MFC_OpenACC)
888# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
889!$acc declare create(sigma, surface_tension)
890# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
891#elif defined(MFC_OpenMP)
892# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
893!$omp declare target (sigma, surface_tension)
894# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
895#endif
896
897# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
898#if defined(MFC_OpenACC)
899# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
900!$acc declare create(bubbles_lagrange)
901# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
902#elif defined(MFC_OpenMP)
903# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
904!$omp declare target (bubbles_lagrange)
905# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
906#endif
907
908# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
909#if defined(MFC_OpenACC)
910# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
911!$acc declare create(Bx0)
912# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
913#elif defined(MFC_OpenMP)
914# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
915!$omp declare target (Bx0)
916# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
917#endif
918
919# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
920#if defined(MFC_OpenACC)
921# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
922!$acc declare create(tau_star, cont_damage_s, alpha_bar)
923# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
924#elif defined(MFC_OpenMP)
925# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
926!$omp declare target (tau_star, cont_damage_s, alpha_bar)
927# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
928#endif
929
930# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
931#if defined(MFC_OpenACC)
932# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
933!$acc declare create(hyper_cleaning_speed, hyper_cleaning_tau)
934# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
935#elif defined(MFC_OpenMP)
936# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
937!$omp declare target (hyper_cleaning_speed, hyper_cleaning_tau)
938# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
939#endif
940# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
941
942# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
943#if defined(MFC_OpenACC)
944# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
945!$acc declare create(num_dims, num_vels, weno_polyn, weno_order)
946# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
947#elif defined(MFC_OpenMP)
948# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
949!$omp declare target (num_dims, num_vels, weno_polyn, weno_order)
950# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
951#endif
952
953# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
954#if defined(MFC_OpenACC)
955# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
956!$acc declare create(weno_num_stencils, num_fluids, wenojs)
957# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
958#elif defined(MFC_OpenMP)
959# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
960!$omp declare target (weno_num_stencils, num_fluids, wenojs)
961# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
962#endif
963
964# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
965#if defined(MFC_OpenACC)
966# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
967!$acc declare create(mapped_weno, wenoz, teno, wenoz_q, mhd, relativity)
968# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
969#elif defined(MFC_OpenMP)
970# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
971!$omp declare target (mapped_weno, wenoz, teno, wenoz_q, mhd, relativity)
972# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
973#endif
974
975# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
976#if defined(MFC_OpenACC)
977# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
978!$acc declare create(igr_iter_solver, igr_order, viscous, igr_pres_lim, igr)
979# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
980#elif defined(MFC_OpenMP)
981# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
982!$omp declare target (igr_iter_solver, igr_order, viscous, igr_pres_lim, igr)
983# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
984#endif
985
986# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
987#if defined(MFC_OpenACC)
988# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
989!$acc declare create(recon_type, muscl_order, muscl_polyn, muscl_lim)
990# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
991#elif defined(MFC_OpenMP)
992# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
993!$omp declare target (recon_type, muscl_order, muscl_polyn, muscl_lim)
994# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
995#endif
996# 108 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
997#endif
998
999 !> @name Processor coordinates and parallel-IO addressing (identical declaration across all three targets)
1000 !> @{
1001 integer, allocatable, dimension(:) :: proc_coords !< Processor coordinates in MPI_CART_COMM
1002 integer, allocatable, dimension(:) :: start_idx !< Starting cell-center index of local processor in global grid
1003 !> @}
1004
1005 !> @name MPI info for parallel IO with Lustre file systems (identical across all three targets)
1006 !> @{
1007 character(len=name_len) :: mpiiofs
1008 integer :: mpi_info_int
1009 !> @}
1010
1011contains
1012
1013 !> Initialize equation-index state (eqn_idx, sys_size, b_size, tensor_size) from the namelist parameters. This is the shared
1014 !! skeleton: it covers the model_eqns dispatch, all eqn_idx field assignments, and the elasticity/surface-tension/chemistry
1015 !! extensions.
1016 !!
1017 !! @param nmom_in Number of carried moments per R0 location (per-target: pre/post pass an
1018 !! integer variable; sim passes its integer parameter nmom = 6). Used only in the 5eq
1019 !! qbmm bubble-index calculation (eqn_idx%bub%end = eqn_idx%adv%end + nb_in*nmom_in).
1020 !!
1021 !! Per-target callers are responsible for the following after this call:
1022 !! - qbmm_idx allocations and fills (diverge between pre vs sim/post)
1023 !! - sim-only: gam = bub_pp%gam_g, nmomsp/nmomtot, Re_idx allocation, GPU_UPDATE calls
1024 !! - post-only: beta_idx increment (bubbles_lagrange path), offset/grid allocations
1025 impure subroutine s_initialize_eqn_idx(nmom_in, nb_in)
1026
1027 integer, intent(in) :: nmom_in
1028 integer, intent(in) :: nb_in
1029
1030 ! Gamma/Pi_inf Model
1031
1032 if (model_eqns == model_eqns_gamma_law) then
1033 ! Annotating structure of the state and flux vectors belonging to the system of
1034 ! equations defined by the selected number of spatial dimensions and the gamma/pi_inf model
1035 eqn_idx%cont%beg = 1
1036 eqn_idx%cont%end = eqn_idx%cont%beg
1037 eqn_idx%mom%beg = eqn_idx%cont%end + 1
1038 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
1039 eqn_idx%E = eqn_idx%mom%end + 1
1040 eqn_idx%adv%beg = eqn_idx%E + 1
1041 eqn_idx%adv%end = eqn_idx%adv%beg + 1
1042 eqn_idx%gamma = eqn_idx%adv%beg
1043 eqn_idx%pi_inf = eqn_idx%adv%end
1044 sys_size = eqn_idx%adv%end
1045
1046 ! Volume Fraction Model (5-equation model)
1047 else if (model_eqns == model_eqns_5eq) then
1048 ! Annotating structure of the state and flux vectors belonging to the system of
1049 ! equations defined by the selected number of spatial dimensions and the volume fraction model
1050 eqn_idx%cont%beg = 1
1051 eqn_idx%cont%end = num_fluids
1052 eqn_idx%mom%beg = eqn_idx%cont%end + 1
1053 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
1054 eqn_idx%E = eqn_idx%mom%end + 1
1055
1056 if (igr) then
1057 ! IGR: volume fractions after energy (N-1 for N fluids; skipped when num_fluids=1)
1058 eqn_idx%adv%beg = eqn_idx%E + 1
1059 eqn_idx%adv%end = eqn_idx%E + num_fluids - 1
1060 else
1061 ! WENO/MUSCL + Riemann tracks a total of (N) volume fractions for N fluids
1062 eqn_idx%adv%beg = eqn_idx%E + 1
1063 eqn_idx%adv%end = eqn_idx%E + num_fluids
1064 end if
1065
1066 sys_size = eqn_idx%adv%end
1067
1068 if (bubbles_euler) then
1069 eqn_idx%alf = eqn_idx%adv%end
1070 else
1071 eqn_idx%alf = 1
1072 end if
1073
1074 if (bubbles_euler) then
1075 eqn_idx%bub%beg = sys_size + 1
1076 if (qbmm) then
1077 eqn_idx%bub%end = eqn_idx%adv%end + nb_in*nmom_in
1078 else
1079 if (.not. polytropic) then
1080 eqn_idx%bub%end = sys_size + 4*nb_in
1081 else
1082 eqn_idx%bub%end = sys_size + 2*nb_in
1083 end if
1084 end if
1085 sys_size = eqn_idx%bub%end
1086
1087 if (adv_n) then
1088 eqn_idx%n = eqn_idx%bub%end + 1
1089 sys_size = eqn_idx%n
1090 end if
1091 end if
1092
1093 if (mhd) then
1094 eqn_idx%B%beg = sys_size + 1
1095 if (n == 0) then
1096 eqn_idx%B%end = sys_size + 2 ! 1D: By, Bz
1097 else
1098 eqn_idx%B%end = sys_size + 3 ! 2D/3D: Bx, By, Bz
1099 end if
1100 sys_size = eqn_idx%B%end
1101 end if
1102
1103 ! Volume Fraction Model (6-equation model)
1104 else if (model_eqns == model_eqns_6eq) then
1105 ! Annotating structure of the state and flux vectors belonging to the system of
1106 ! equations defined by the selected number of spatial dimensions and the volume fraction model
1107 eqn_idx%cont%beg = 1
1108 eqn_idx%cont%end = num_fluids
1109 eqn_idx%mom%beg = eqn_idx%cont%end + 1
1110 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
1111 eqn_idx%E = eqn_idx%mom%end + 1
1112 eqn_idx%adv%beg = eqn_idx%E + 1
1113 eqn_idx%adv%end = eqn_idx%E + num_fluids
1114#ifdef MFC_SIMULATION
1115 eqn_idx%alf = eqn_idx%adv%end
1116#endif
1117 eqn_idx%int_en%beg = eqn_idx%adv%end + 1
1118 eqn_idx%int_en%end = eqn_idx%adv%end + num_fluids
1119 sys_size = eqn_idx%int_en%end
1120 else if (model_eqns == model_eqns_4eq) then
1121 ! 4-equation model with subgrid bubbles
1122 eqn_idx%cont%beg = 1
1123 eqn_idx%cont%end = 1
1124 eqn_idx%mom%beg = eqn_idx%cont%end + 1
1125 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
1126 eqn_idx%E = eqn_idx%mom%end + 1
1127 eqn_idx%adv%beg = eqn_idx%E + 1
1128 eqn_idx%adv%end = eqn_idx%adv%beg
1129 eqn_idx%alf = eqn_idx%adv%end
1130 sys_size = eqn_idx%adv%end
1131
1132 if (bubbles_euler) then
1133 eqn_idx%bub%beg = sys_size + 1
1134 eqn_idx%bub%end = sys_size + 2*nb_in
1135 if (.not. polytropic) then
1136 eqn_idx%bub%end = sys_size + 4*nb_in
1137 end if
1138 sys_size = eqn_idx%bub%end
1139 end if
1140 end if
1141
1143 if (hypoelasticity .or. hyperelasticity) then
1144 elasticity = .true.
1145 eqn_idx%stress%beg = sys_size + 1
1146 eqn_idx%stress%end = sys_size + (num_dims*(num_dims + 1))/2
1147 if (cyl_coord) eqn_idx%stress%end = eqn_idx%stress%end + 1
1148 ! number of stresses is 1 in 1D, 3 in 2D, 4 in 2D-Axisym, 6 in 3D
1149 sys_size = eqn_idx%stress%end
1150
1151 ! shear stress index is 2 for 2D and 2,4,5 for 3D
1152 if (num_dims == 1) then
1153 shear_num = 0
1154 else if (num_dims == 2) then
1155 shear_num = 1
1156 shear_indices(1) = eqn_idx%stress%beg - 1 + 2
1159 ! Both x-dir and y-dir: flip tau_xy only
1160 else if (num_dims == 3) then
1161 shear_num = 3
1162 shear_indices(1:3) = eqn_idx%stress%beg - 1 + (/2, 4, 5/)
1164 shear_bc_flip_indices(1,1:2) = shear_indices((/1, 2/))
1165 shear_bc_flip_indices(2,1:2) = shear_indices((/1, 3/))
1166 shear_bc_flip_indices(3,1:2) = shear_indices((/2, 3/))
1167 ! x-dir: flip tau_xy and tau_xz; y-dir: flip tau_xy and tau_yz; z-dir: flip tau_xz and tau_yz
1168 end if
1169 end if
1170
1171 if (hyperelasticity) then
1172 ! number of entries in the symmetric b tensor plus the jacobian
1173 b_size = (num_dims*(num_dims + 1))/2 + 1
1174 tensor_size = num_dims**2 + 1
1175 eqn_idx%xi%beg = sys_size + 1
1176 eqn_idx%xi%end = sys_size + num_dims
1177 ! adding equations for the xi field and the elastic energy
1178 sys_size = eqn_idx%xi%end + 1
1179 end if
1180
1181 if (surface_tension) then
1182 eqn_idx%c = sys_size + 1
1183 sys_size = eqn_idx%c
1184 end if
1185
1186 if (cont_damage) then
1187 eqn_idx%damage = sys_size + 1
1188 sys_size = eqn_idx%damage
1189 end if
1190
1191 if (hyper_cleaning) then
1192 eqn_idx%psi = sys_size + 1
1193 sys_size = eqn_idx%psi
1194 end if
1195 end if
1196
1197 if (chemistry) then
1198 eqn_idx%species%beg = sys_size + 1
1199 eqn_idx%species%end = sys_size + num_species
1200 sys_size = eqn_idx%species%end
1201 end if
1202
1203 end subroutine s_initialize_eqn_idx
1204
1205 !> Configure MPI parallel I/O settings and allocate processor coordinate arrays. Shared across all three executables;
1206 !! num_dims/num_vels are computed here for pre/post unconditionally and for sim only when not case-optimized (in which case they
1207 !! are compile-time parameters). Callers must have already populated n and p (grid dimensions).
1209
1210#ifdef MFC_MPI
1211 integer :: ierr !< Generic flag used to identify and report MPI errors
1212#endif
1213
1214#ifdef MFC_SIMULATION
1215 ! Under case-optimization, num_dims and num_vels are compile-time parameters; skip assignment.
1216# 328 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1217 num_dims = 1 + min(1, n) + min(1, p)
1218
1219 if (mhd) then
1220 num_vels = 3
1221 else
1223 end if
1224# 336 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1225#else
1226 num_dims = 1 + min(1, n) + min(1, p)
1227
1228 if (mhd) then
1229 num_vels = 3
1230 else
1232 end if
1233#endif
1234
1235 allocate (proc_coords(1:num_dims))
1236
1237 if (parallel_io .neqv. .true.) return
1238
1239#ifdef MFC_MPI
1240 ! Option for Lustre file system (Darter/Comet/Stampede)
1241 write (mpiiofs, '(A)') '/lustre_'
1242 mpiiofs = trim(mpiiofs)
1243 call mpi_info_create(mpi_info_int, ierr)
1244 call mpi_info_set(mpi_info_int, 'romio_ds_write', 'disable', ierr)
1245
1246 ! Option for UNIX file system (Hooke/Thomson) WRITE(mpiiofs, '(A)') '/ufs_' mpiiofs = TRIM(mpiiofs) mpi_info_int =
1247 ! MPI_INFO_NULL
1248
1249 allocate (start_idx(1:num_dims))
1250#endif
1251
1252 end subroutine s_initialize_parallel_io_common
1253
1254 !> Shared finalize core: deallocate proc_coords and start_idx. Per-target finalize routines call this first, then handle their
1255 !! own extras (qbmm_idx, grid arrays, MPI_IO_DATA null/dealloc - those reference per-target typed variables and stay
1256 !! per-target).
1258
1259 deallocate (proc_coords)
1260
1261#ifdef MFC_MPI
1262 if (parallel_io) then
1263 deallocate (start_idx)
1264 end if
1265#endif
1266
1268
1269 !> Assign default values to the user-input parameters that are shared across all three executables (pre_process, simulation,
1270 !! post_process). Per-target defaults (bc_io, cfl_dt, precision, nb, chem_params, bub_pp scalar companions, fluid_pp loop, patch
1271 !! arrays, output flags) remain in the per-target s_assign_default_values_to_user_inputs routines, which call this subroutine
1272 !! first, then call s_update_cell_bounds(cells_bounds, m, n, p) (cells_bounds is per-target), then apply their own assignments.
1274
1275 ! Logistics
1276 case_dir = '.'
1277
1278 ! Computational domain parameters (m/n/p set here; caller must call s_update_cell_bounds after)
1279 m = dflt_int; n = 0; p = 0
1280
1281 cyl_coord = .false.
1282
1283 ! CFL adaptive time-stepping flags
1284 cfl_adap_dt = .false.
1285 cfl_const_dt = .false.
1286
1287 ! Time-stepping bookkeeping
1290
1291 ! Simulation algorithm
1293 relax = .false.
1295 hypoelasticity = .false.
1296 hyperelasticity = .false.
1297 elasticity = .false.
1300 cont_damage = .false.
1301 hyper_cleaning = .false.
1302
1303 ! Case-optimization params: under case-opt these are compile-time constants in sim (skip assignment); in pre/post
1304 ! MFC_CASE_OPTIMIZATION is always False so the block always executes there.
1305# 417 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1310 igr = .false.
1311 mhd = .false.
1312 relativity = .false.
1313# 425 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1314
1315 ! Tait EOS
1317 pref = dflt_real
1318
1319 ! Bubble modeling flags and parameters
1321 bubbles_euler = .false.
1322 polydisperse = .false.
1324 qbmm = .false.
1325 surface_tension = .false.
1326 adv_n = .false.
1328 bubbles_lagrange = .false.
1329
1330 ! Immersed boundaries
1331 ib = .false.
1333
1334 ! MHD (background field)
1335 bx0 = dflt_real
1336
1337 ! Output and I/O options
1338 parallel_io = .false.
1339 file_per_process = .false.
1340 down_sample = .false.
1341 fft_wrt = .false.
1342
1343 end subroutine s_assign_common_defaults
1344
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter model_eqns_4eq
integer, parameter model_eqns_5eq
integer, parameter name_len
Maximum name length.
integer, parameter dflt_int
Default integer value.
real(wp), parameter dflt_real
Default real value.
integer, parameter recon_type_muscl
integer, parameter recon_type_weno
integer, parameter model_eqns_6eq
integer, parameter model_eqns_gamma_law
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...
integer muscl_polyn
Degree of the MUSCL polynomials.
type(ib_stl_parameters), dimension(num_stl_models_max) stl_models
Per-STL model parameters.
integer, dimension(:), allocatable start_idx
Starting cell-center index of local processor in global grid.
impure subroutine s_finalize_global_parameters_common
Shared finalize core: deallocate proc_coords and start_idx. Per-target finalize routines call this fi...
type(subgrid_bubble_physical_parameters) bub_pp
Subgrid bubble physical parameters.
integer shear_num
Number of shear stress components.
type(vec3_dt), dimension(num_probes_max) probe
integer sys_size
Number of unknowns in system of equations.
type(integral_parameters), dimension(num_probes_max) integral
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Per-fluid stiffened-gas EOS parameters, Reynolds numbers, and shear modulus.
integer shear_bc_flip_num
Number of shear stress components to reflect for boundary conditions.
integer tensor_size
Number of elements in the full tensor plus one.
logical elasticity
elasticity modeling, true for hyper or hypo
integer, dimension(:), allocatable proc_coords
Processor coordinates in MPI_CART_COMM.
integer num_dims
Number of spatial dimensions.
integer num_vels
Number of velocity components (different from num_dims for mhd).
type(eqn_idx_info) eqn_idx
All conserved-variable equation index ranges and scalars.
type(acoustic_parameters), dimension(num_probes_max) acoustic
Acoustic source parameters.
integer, dimension(3, 2) shear_bc_flip_indices
Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num).
impure subroutine s_initialize_eqn_idx(nmom_in, nb_in)
Initialize equation-index state (eqn_idx, sys_size, b_size, tensor_size) from the namelist parameters...
type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) patch_ib
Immersed boundary patch parameters.
impure subroutine s_initialize_parallel_io_common
Configure MPI parallel I/O settings and allocate processor coordinate arrays. Shared across all three...
type(particle_cloud_parameters), dimension(num_particle_clouds_max) particle_cloud
Particle bed specifications.
integer weno_polyn
Degree of the WENO polynomials.
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_...
integer b_size
Number of elements in the symmetric b tensor, plus one.
type(bubbles_lagrange_parameters) lag_params
Lagrange bubbles' parameters.
integer, dimension(3) shear_indices
Indices of the stress components that represent shear stress.
All conserved-variable equation indices, computed at startup from model_eqns and enabled features....
User-input parameters for a NACA 4-digit airfoil (namelist-safe: scalars only).
User-input parameters for an STL/OBJ immersed boundary model (namelist-safe: scalars + fixed arrays).
Derived type annexing integral regions.
Derived type annexing the physical parameters (PP) of the fluids. These include the specific heat rat...
Derived type annexing the physical parameters required for sub-grid bubble models.
Generic 3-component vector (e.g., spatial coordinates or field components) Named _dt (derived types: ...