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# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49! New line at end of file is required for FYPP
50# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
51# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
52# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
53# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72
73# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74
75# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76
77# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78
79# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80
81# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82! New line at end of file is required for FYPP
83# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
84
85# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153
154# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155
156# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157
158# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159
160# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161! New line at end of file is required for FYPP
162# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
163# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
164# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
165# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178
179# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180
181# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182
183# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184
185# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186
187# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188
189# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190
191# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
192
193# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
194! New line at end of file is required for FYPP
195# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
196
197# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240
241# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242
243# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244
245# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246
247# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248
249# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250
251# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252! New line at end of file is required for FYPP
253# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
254
255! GPU parallel region (scalar reductions, maxval/minval)
256# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! GPU parallel loop over threads (most common GPU macro)
259# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Required closing for GPU_PARALLEL_LOOP
262# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Mark routine for device compilation
265# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Declare device-resident data
268# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! Inner loop within a GPU parallel region
271# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Scoped GPU data region
274# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! Host code with device pointers (for MPI with GPU buffers)
277# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Allocate device memory (unscoped)
280# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Free device memory
283# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Atomic operation on device
286# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! End atomic capture block
289# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Copy data between host and device
292# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294! Synchronization barrier
295# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296
297! Import GPU library module (openacc or omp_lib)
298# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299
300! Emit code only for AMD compiler
301# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302
303! Emit code for non-Cray compilers
304# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305
306! Emit code only for Cray compiler
307# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308
309! Emit code for non-NVIDIA compilers
310# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311
312# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
313# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314! New line at end of file is required for FYPP
315# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
316
317# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
318
319! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
320! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
321! example see misc/nvidia_uvm/bind.sh.
322# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323
324! Allocate and create GPU device memory
325# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326
327! Free GPU device memory and deallocate
328# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
329
330! Cray-specific GPU pointer setup for vector fields
331# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
332
333! Cray-specific GPU pointer setup for scalar fields
334# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
335
336! Cray-specific GPU pointer setup for acoustic source spatials
337# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
338
339# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
340
341# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
342! New line at end of file is required for FYPP
343# 7 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
344
345!> @brief Shared global parameters and equation-index setup for all three executables. Each per-target m_global_parameters uses this
346!! module (default-public, so all symbols re-export to downstream consumers via two-hop use-association).
348
349#ifdef MFC_MPI
350 use mpi
351#endif
352
354 use m_thermochem, only: num_species
357
358 implicit none
359
360 ! All namelist-bound scalar and array declarations (per-target, regenerated at build time by the ninja custom command)
361# 1 "/home/runner/work/MFC/MFC/build/include/pre_process/generated_decls.fpp" 1
362! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
363!
364real(wp) :: bx0
365real(wp) :: ca
366real(wp) :: r0ref
367real(wp) :: re_inv
368real(wp) :: web
369real(wp) :: a_x
370real(wp) :: a_y
371real(wp) :: a_z
372logical :: adv_n
374integer :: avg_state
377character(LEN=path_len) :: case_dir
378logical :: cfl_adap_dt
379logical :: cfl_const_dt
380logical :: cont_damage
381logical :: cyl_coord
382integer :: dist_type
383logical :: down_sample
386logical :: fft_wrt
387character(LEN=path_len) :: file_extension
389character(LEN=path_len) :: files_dir
390real(wp), dimension(num_fluids_max) :: fluid_rho
393logical :: ib
394logical :: igr
395integer :: igr_order
396integer :: loops_x
397integer :: loops_y
398integer :: loops_z
399integer :: m
400logical :: mhd
406logical :: mixture_err
407integer :: model_eqns
408logical :: mpp_lim
409integer :: muscl_order
410integer :: n
411integer :: n_start
412integer :: n_start_old
413integer :: nb
415integer :: num_fluids
416integer :: num_ibs
418integer :: num_patches
420logical :: old_grid
421logical :: old_ic
422integer :: p
423real(wp) :: palpha_eps
424logical :: parallel_io
425logical :: perturb_flow
428logical :: perturb_sph
430real(wp) :: pi_fac
431real(wp) :: poly_sigma
432logical :: polydisperse
433logical :: polytropic
434integer :: precision
435real(wp) :: ptgalpha_eps
436logical :: qbmm
438integer :: recon_type
439logical :: relativity
440logical :: relax
441integer :: relax_model
442real(wp) :: rhorv
444real(wp) :: sigr
445real(wp) :: sigv
446real(wp) :: sigma
448logical :: stretch_x
449logical :: stretch_y
450logical :: stretch_z
452integer :: t_step_old
453integer :: t_step_start
454integer :: thermal
455logical :: viscous
456integer :: weno_order
457real(wp) :: x_a
458real(wp) :: x_b
459real(wp) :: y_a
460real(wp) :: y_b
461real(wp) :: z_a
462real(wp) :: z_b
463type(physical_parameters), dimension(num_fluids_max) :: fluid_pp !< Per-fluid stiffened-gas EOS parameters, Reynolds numbers, and shear modulus
464type(subgrid_bubble_physical_parameters) :: bub_pp !< Subgrid bubble physical parameters
465type(ic_patch_parameters), dimension(num_patches_max) :: patch_icpp !< IC patch parameters
466type(bc_patch_parameters), dimension(num_bc_patches_max) :: patch_bc !< Boundary condition patch parameters
467type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) :: patch_ib !< Immersed boundary patch parameters
468type(ib_airfoil_parameters), dimension(num_ib_airfoils_max) :: ib_airfoil !< Per-airfoil NACA user inputs
469type(ib_stl_parameters), dimension(num_stl_models_max) :: stl_models !< Per-STL model parameters
470type(reactive_burn_parameters) :: rburn !< Condensed-phase reactive-burn (programmed detonation) parameters
471type(particle_cloud_parameters), dimension(num_particle_clouds_max) :: particle_cloud !< Particle bed specifications
473# 25 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
474
475 ! Case-optimization declarations: parameters (under MFC_CASE_OPTIMIZATION) or plain variables for
476 ! num_dims, num_vels, weno_polyn, muscl_polyn, weno_num_stencils, wenojs, igr, etc.
477# 1 "/home/runner/work/MFC/MFC/build/include/pre_process/generated_case_opt_decls.fpp" 1
478! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
479!
480integer :: num_dims
481integer :: num_vels
482integer :: weno_polyn
483integer :: muscl_polyn
485# 29 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
486
487 !> @name Annotations of the structure of the state and flux vectors in terms of the size and configuration of the system of
488 !! equations
489 !> @{
490 integer :: sys_size !< Number of unknowns in system of equations
491 type(eqn_idx_info) :: eqn_idx !< All conserved-variable equation index ranges and scalars
492 !> @}
493
494 !> @name Chemistry modeling (Fypp compile-time constant; same value in all targets)
495 !> @{
496 logical, parameter :: chemistry = .false.
497 !> @}
498
499 !> @name Hypoelastic shear stress state (identical across all three executables)
500 !> @{
501 integer :: shear_num !< Number of shear stress components
502 integer, dimension(3) :: shear_indices !< Indices of the stress components that represent shear stress
503 integer :: shear_bc_flip_num !< Number of shear stress components to reflect for boundary conditions
504 integer, dimension(3, 2) :: shear_bc_flip_indices !< Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num)
505 !> @}
506
507 !> @name Material properties derived from fluid_pp
508 !> @{ One declaration is shared by all executables and initialized by m_variables_conversion after the case parameters have been
509 !! read.
510 !> gammas is the stored form 1/(gamma - 1), not the ratio of specific heats; isentrope_n and isentrope_B are the same EOS
511 !! written as p + B = const*rho**n.
512 real(wp), allocatable, dimension(:) :: gammas, isentrope_n, pi_infs, isentrope_b, cvs, qvs, qvps
513
514# 56 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
515#if defined(MFC_OpenACC)
516# 56 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
517!$acc declare create(gammas, isentrope_n, pi_infs, isentrope_B, cvs, qvs, qvps)
518# 56 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
519#elif defined(MFC_OpenMP)
520# 56 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
521!$omp declare target (gammas, isentrope_n, pi_infs, isentrope_B, cvs, qvs, qvps)
522# 56 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
523#endif
524 !> Per-fluid EOS selector and Mie-Gruneisen reference curve, resolved once at init like the arrays above
525 integer, allocatable, dimension(:) :: eoss
526 !> Per-fluid EOS coefficients, whatever the family; see type eos_coefficients.
527 type(eos_coefficients), dimension(num_fluids_max) :: eos_coeffs
528 !> any_state_dependent_eos is declared with the case-optimization block above: a parameter when the case is baked in, so the
529 !! compiler drops the whole state-dependent chain from kernels that never need it.
530
531# 63 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
532#if defined(MFC_OpenACC)
533# 63 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
534!$acc declare create(eoss, eos_coeffs)
535# 63 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
536#elif defined(MFC_OpenMP)
537# 63 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
538!$omp declare target (eoss, eos_coeffs)
539# 63 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
540#endif
541 !> Fourier heat conduction: true when any fluid sets k_therm > 0. Derived, never read from the namelist.
543 real(wp), allocatable, dimension(:) :: fluid_k_therm
544
545# 67 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
546#if defined(MFC_OpenACC)
547# 67 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
548!$acc declare create(heat_conduction, fluid_k_therm)
549# 67 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
550#elif defined(MFC_OpenMP)
551# 67 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
552!$omp declare target (heat_conduction, fluid_k_therm)
553# 67 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
554#endif
555# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
556
557# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
558#if defined(MFC_OpenACC)
559# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
560!$acc declare create(any_state_dependent_eos)
561# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
562#elif defined(MFC_OpenMP)
563# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
564!$omp declare target (any_state_dependent_eos)
565# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
566#endif
567# 71 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
568 !> @}
569
570 !> @name Fluids participating in shear and bulk viscosity
571 !> @{
572 integer, dimension(2) :: re_size = 0
573 integer :: re_size_max = 0
574 integer, allocatable, dimension(:,:) :: re_idx
575
576# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
577#if defined(MFC_OpenACC)
578# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
579!$acc declare create(Re_size, Re_size_max, Re_idx)
580# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
581#elif defined(MFC_OpenMP)
582# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
583!$omp declare target (Re_size, Re_size_max, Re_idx)
584# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
585#endif
586 !> @}
587
588 !> Minimum cell widths. These are distinct from the per-cell width arrays named dx, dy, and dz in simulation and post-process.
589 real(wp) :: dx_min, dy_min, dz_min
590
591
592# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
593#if defined(MFC_OpenACC)
594# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
595!$acc declare create(sys_size, eqn_idx)
596# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
597#elif defined(MFC_OpenMP)
598# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
599!$omp declare target (sys_size, eqn_idx)
600# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
601#endif
602
603# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
604#if defined(MFC_OpenACC)
605# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
606!$acc declare create(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
607# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
608#elif defined(MFC_OpenMP)
609# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
610!$omp declare target (shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
611# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
612#endif
613
614 !> @name Processor coordinates and parallel-IO addressing (identical declaration across all three targets)
615 !> @{
616 integer, allocatable, dimension(:) :: proc_coords !< Processor coordinates in MPI_CART_COMM
617 integer, allocatable, dimension(:) :: start_idx !< Starting cell-center index of local processor in global grid
618 integer :: num_procs_x = 1 !< Number of MPI ranks in x-direction
619 integer :: num_procs_y = 1 !< Number of MPI ranks in y-direction
620 integer :: num_procs_z = 1 !< Number of MPI ranks in z-direction
621 !> @}
622
623 !> @name MPI info for parallel IO with Lustre file systems (identical across all three targets)
624 !> @{
625 character(len=name_len) :: mpiiofs
626 integer :: mpi_info_int
627 !> @}
628
629contains
630
631 !> Initialize equation-index state (eqn_idx and sys_size) from the namelist parameters. This is the shared skeleton: it covers
632 !! the model_eqns dispatch, all eqn_idx field assignments, and the hypoelastic/surface-tension/chemistry extensions.
633 !!
634 !! @param nmom_in Number of carried moments per R0 location (per-target: pre/post pass an
635 !! integer variable; sim passes its integer parameter nmom = 6). Used only in the 5eq
636 !! qbmm bubble-index calculation (eqn_idx%bub%end = eqn_idx%adv%end + nb_in*nmom_in).
637 !!
638 !! Per-target callers are responsible for the following after this call:
639 !! - qbmm_idx allocations and fills (diverge between pre vs sim/post)
640 !! - sim-only: gam = bub_pp%gam_g, nmomsp/nmomtot, Re_idx allocation, GPU_UPDATE calls
641 !! - post-only: beta_idx increment (bubbles_lagrange path), offset/grid allocations
642 impure subroutine s_initialize_eqn_idx(nmom_in, nb_in, six_eqn_alf_is_advected)
643
644 integer, intent(in) :: nmom_in
645 integer, intent(in) :: nb_in
646 logical, intent(in) :: six_eqn_alf_is_advected
647
648 ! Gamma/Pi_inf Model
649
651 ! Annotating structure of the state and flux vectors belonging to the system of
652 ! equations defined by the selected number of spatial dimensions and the gamma/pi_inf model
653 eqn_idx%cont%beg = 1
654 eqn_idx%cont%end = eqn_idx%cont%beg
655 eqn_idx%mom%beg = eqn_idx%cont%end + 1
656 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
657 eqn_idx%E = eqn_idx%mom%end + 1
658 eqn_idx%adv%beg = eqn_idx%E + 1
659 eqn_idx%adv%end = eqn_idx%adv%beg + 1
660 eqn_idx%gamma = eqn_idx%adv%beg
661 eqn_idx%pi_inf = eqn_idx%adv%end
662 sys_size = eqn_idx%adv%end
663
664 ! Volume Fraction Model (5-equation model)
665 else if (model_eqns == model_eqns_5eq) then
666 ! Annotating structure of the state and flux vectors belonging to the system of
667 ! equations defined by the selected number of spatial dimensions and the volume fraction model
668 eqn_idx%cont%beg = 1
669 eqn_idx%cont%end = num_fluids
670 eqn_idx%mom%beg = eqn_idx%cont%end + 1
671 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
672 eqn_idx%E = eqn_idx%mom%end + 1
673
674 if (igr) then
675 ! IGR: volume fractions after energy (N-1 for N fluids; skipped when num_fluids=1)
676 eqn_idx%adv%beg = eqn_idx%E + 1
677 eqn_idx%adv%end = eqn_idx%E + num_fluids - 1
678 else
679 ! WENO/MUSCL + Riemann tracks a total of (N) volume fractions for N fluids
680 eqn_idx%adv%beg = eqn_idx%E + 1
681 eqn_idx%adv%end = eqn_idx%E + num_fluids
682 end if
683
684 sys_size = eqn_idx%adv%end
685
686 if (bubbles_euler) then
687 eqn_idx%alf = eqn_idx%adv%end
688 else
689 eqn_idx%alf = 1
690 end if
691
692 if (bubbles_euler) then
693 eqn_idx%bub%beg = sys_size + 1
694 if (qbmm) then
695 eqn_idx%bub%end = eqn_idx%adv%end + nb_in*nmom_in
696 else
697 if (.not. polytropic) then
698 eqn_idx%bub%end = sys_size + 4*nb_in
699 else
700 eqn_idx%bub%end = sys_size + 2*nb_in
701 end if
702 end if
703 sys_size = eqn_idx%bub%end
704
705 if (adv_n) then
706 eqn_idx%n = eqn_idx%bub%end + 1
707 sys_size = eqn_idx%n
708 end if
709 end if
710
711 if (mhd) then
712 eqn_idx%B%beg = sys_size + 1
713 if (n == 0) then
714 eqn_idx%B%end = sys_size + 2 ! 1D: By, Bz
715 else
716 eqn_idx%B%end = sys_size + 3 ! 2D/3D: Bx, By, Bz
717 end if
718 sys_size = eqn_idx%B%end
719 end if
720
721 ! Volume Fraction Model (6-equation model)
722 else if (model_eqns == model_eqns_6eq) then
723 ! Annotating structure of the state and flux vectors belonging to the system of
724 ! equations defined by the selected number of spatial dimensions and the volume fraction model
725 eqn_idx%cont%beg = 1
726 eqn_idx%cont%end = num_fluids
727 eqn_idx%mom%beg = eqn_idx%cont%end + 1
728 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
729 eqn_idx%E = eqn_idx%mom%end + 1
730 eqn_idx%adv%beg = eqn_idx%E + 1
731 eqn_idx%adv%end = eqn_idx%E + num_fluids
732 if (six_eqn_alf_is_advected) eqn_idx%alf = eqn_idx%adv%end
733 eqn_idx%int_en%beg = eqn_idx%adv%end + 1
734 eqn_idx%int_en%end = eqn_idx%adv%end + num_fluids
735 sys_size = eqn_idx%int_en%end
736 end if
737
739 if (hypoelasticity) then
740 eqn_idx%stress%beg = sys_size + 1
741 eqn_idx%stress%end = sys_size + (num_dims*(num_dims + 1))/2
742 if (cyl_coord) eqn_idx%stress%end = eqn_idx%stress%end + 1
743 ! number of stresses is 1 in 1D, 3 in 2D, 4 in 2D-Axisym, 6 in 3D
744 sys_size = eqn_idx%stress%end
745
746 ! shear stress index is 2 for 2D and 2,4,5 for 3D. Readers test the whole array
747 ! rather than the first shear_num entries, so unused slots must not be garbage.
748 shear_indices = 0
749 if (num_dims == 1) then
750 shear_num = 0
751 else if (num_dims == 2) then
752 shear_num = 1
753 shear_indices(1) = eqn_idx%stress%beg - 1 + 2
756 ! Both x-dir and y-dir: flip tau_xy only
757 else if (num_dims == 3) then
758 shear_num = 3
759 shear_indices(1:3) = eqn_idx%stress%beg - 1 + (/2, 4, 5/)
761 shear_bc_flip_indices(1,1:2) = shear_indices((/1, 2/))
762 shear_bc_flip_indices(2,1:2) = shear_indices((/1, 3/))
763 shear_bc_flip_indices(3,1:2) = shear_indices((/2, 3/))
764 ! x-dir: flip tau_xy and tau_xz; y-dir: flip tau_xy and tau_yz; z-dir: flip tau_xz and tau_yz
765 end if
766 end if
767
768 if (surface_tension) then
769 eqn_idx%c = sys_size + 1
770 sys_size = eqn_idx%c
771 end if
772
773 if (cont_damage) then
774 eqn_idx%damage = sys_size + 1
775 sys_size = eqn_idx%damage
776 end if
777
778 if (hyper_cleaning) then
779 eqn_idx%psi = sys_size + 1
780 sys_size = eqn_idx%psi
781 end if
782 end if
783
784 if (chemistry) then
785 eqn_idx%species%beg = sys_size + 1
786 eqn_idx%species%end = sys_size + num_species
787 sys_size = eqn_idx%species%end
788 end if
789
790 ! Resolved here, not with the other fluid properties, because the MPI halo buffers are sized before
791 ! m_variables_conversion runs and conduction adds temperature to the exchange.
792 heat_conduction = any(fluid_pp(:)%k_therm > 0._wp)
793
794 end subroutine s_initialize_eqn_idx
795
796 !> Configure MPI parallel I/O settings and allocate processor coordinate arrays. Shared across all three executables;
797 !! num_dims/num_vels are computed here for pre/post unconditionally and for sim only when not case-optimized (in which case they
798 !! are compile-time parameters). Callers must have already populated n and p (grid dimensions).
800
801#ifdef MFC_MPI
802 integer :: ierr !< Generic flag used to identify and report MPI errors
803#endif
804
805 ! Under case-optimization, num_dims and num_vels are compile-time parameters; skip assignment.
806# 280 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
807 num_dims = 1 + min(1, n) + min(1, p)
808
809 if (mhd) then
810 num_vels = 3
811 else
813 end if
814# 288 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
815
816 allocate (proc_coords(1:num_dims))
817
818 if (parallel_io .neqv. .true.) return
819
820#ifdef MFC_MPI
821 ! Option for Lustre file system (Darter/Comet/Stampede)
822 write (mpiiofs, '(A)') '/lustre_'
823 mpiiofs = trim(mpiiofs)
824 call mpi_info_create(mpi_info_int, ierr)
825 call mpi_info_set(mpi_info_int, 'romio_ds_write', 'disable', ierr)
826
827 ! Option for UNIX file system (Hooke/Thomson) WRITE(mpiiofs, '(A)') '/ufs_' mpiiofs = TRIM(mpiiofs) mpi_info_int =
828 ! MPI_INFO_NULL
829
830 allocate (start_idx(1:num_dims))
831#endif
832
834
835 !> Shared finalize core: deallocate proc_coords and start_idx. Per-target finalize routines call this first, then handle their
836 !! own extras (qbmm_idx, grid arrays, MPI_IO_DATA null/dealloc - those reference per-target typed variables and stay
837 !! per-target).
839
840 deallocate (proc_coords)
841
842#ifdef MFC_MPI
843 if (parallel_io) then
844 deallocate (start_idx)
845 end if
846#endif
847
849
850 !> Assign default values to the user-input parameters that are shared across all three executables (pre_process, simulation,
851 !! post_process). Per-target defaults (bc_io, cfl_dt, precision, nb, chem_params, bub_pp scalar companions, fluid_pp loop, patch
852 !! arrays, output flags) remain in the per-target s_assign_default_values_to_user_inputs routines, which call this subroutine
853 !! first, then call s_update_cell_bounds(cells_bounds, m, n, p) (cells_bounds is per-target), then apply their own assignments.
854 impure subroutine s_assign_common_defaults
855
856 ! Logistics
857 case_dir = '.'
858
859 ! Computational domain parameters (m/n/p set here; caller must call s_update_cell_bounds after)
860 m = dflt_int; n = 0; p = 0
861
862 cyl_coord = .false.
863
864 ! CFL adaptive time-stepping flags
865 cfl_adap_dt = .false.
866 cfl_const_dt = .false.
867
868 ! Time-stepping bookkeeping
871
872 ! Simulation algorithm
874 relax = .false.
876 hypoelasticity = .false.
877 cont_damage = .false.
878 hyper_cleaning = .false.
879
880 ! Condensed-phase reactive burn
881 reactive_burn = .false.
882 rburn%k = dflt_real
883 rburn%pign = dflt_real
884 rburn%pref = dflt_real
885 rburn%n = dflt_real
886 rburn%ta = 0._wp
887 rburn%substeps = 0
888
889 ! Case-optimization params: under case-opt these are compile-time constants in sim (skip assignment); in pre/post
890 ! MFC_CASE_OPTIMIZATION is always False so the block always executes there.
891# 365 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
896 igr = .false.
898 mhd = .false.
899 relativity = .false.
900 viscous = .false.
901# 375 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
902
903 ! Not a case-optimization parameter, so it stays a runtime variable in every build.
905
906 ! Tait EOS
907
908 ! Bubble modeling flags and parameters
910 bubbles_euler = .false.
911 polydisperse = .false.
913 qbmm = .false.
914 surface_tension = .false.
915 adv_n = .false.
917 bubbles_lagrange = .false.
918
919 ! Immersed boundaries
920 ib = .false.
922
923 ! MHD (background field)
924 bx0 = dflt_real
925
926 ! Output and I/O options
927 parallel_io = .false.
928 file_per_process = .false.
929 down_sample = .false.
930 fft_wrt = .false.
931
932 ! Mixture conversion and sound-speed behavior
934 alt_soundspeed = .false.
935 mixture_err = .false.
940
941 end subroutine s_assign_common_defaults
942
Compile-time constant parameters: default values, tolerances, and physical constants.
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 eos_ideal_gas
integer, parameter num_fluids_max
Maximum number of fluids in the simulation.
integer, parameter eos_stiffened_gas
Equation of state per fluid. Values must match _EOS_NAMES in toolchain/mfc/params/definitions....
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...
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(ic_patch_parameters), dimension(num_patches_max) patch_icpp
IC patch parameters.
type(subgrid_bubble_physical_parameters) bub_pp
Subgrid bubble physical parameters.
integer shear_num
Number of shear stress components.
real(wp), dimension(:), allocatable qvs
real(wp), dimension(:), allocatable gammas
integer sys_size
Number of unknowns in system of equations.
integer, dimension(:), allocatable eoss
Per-fluid EOS selector and Mie-Gruneisen reference curve, resolved once at init like the arrays above...
real(wp) dx_min
Minimum cell widths. These are distinct from the per-cell width arrays named dx, dy,...
integer num_procs_y
Number of MPI ranks in y-direction.
integer, dimension(:,:), allocatable re_idx
real(wp), dimension(:), allocatable isentrope_n
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.
type(bc_patch_parameters), dimension(num_bc_patches_max) patch_bc
Boundary condition patch parameters.
real(wp), dimension(:), allocatable cvs
integer, dimension(:), allocatable proc_coords
Processor coordinates in MPI_CART_COMM.
integer num_procs_x
Number of MPI ranks in x-direction.
logical heat_conduction
any_state_dependent_eos is declared with the case-optimization block above: a parameter when the case...
type(eqn_idx_info) eqn_idx
All conserved-variable equation index ranges and scalars.
integer num_procs_z
Number of MPI ranks in z-direction.
integer, dimension(3, 2) shear_bc_flip_indices
Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num).
real(wp), dimension(num_fluids_max) fluid_rho
real(wp), dimension(:), allocatable fluid_k_therm
type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) patch_ib
Immersed boundary patch parameters.
real(wp), dimension(:), allocatable isentrope_b
impure subroutine s_initialize_parallel_io_common
Configure MPI parallel I/O settings and allocate processor coordinate arrays. Shared across all three...
type(eos_coefficients), dimension(num_fluids_max) eos_coeffs
Per-fluid EOS coefficients, whatever the family; see type eos_coefficients.
real(wp), dimension(:), allocatable qvps
type(particle_cloud_parameters), dimension(num_particle_clouds_max) particle_cloud
Particle bed specifications.
real(wp), dimension(:), allocatable pi_infs
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, dimension(3) shear_indices
Indices of the stress components that represent shear stress.
type(reactive_burn_parameters) rburn
Condensed-phase reactive-burn (programmed detonation) 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....
Coefficients of one fluid's equation of state, resolved once at init. Held as a record per fluid rath...
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 adding initial condition (ic) patch parameters as attributes NOTE: The requirements for ...
Derived type annexing the physical parameters (PP) of the fluids. These include the specific heat rat...
Condensed-phase reactive-burn (programmed pressure detonation) parameters. The rate is dlambda/dt = k...
Derived type annexing the physical parameters required for sub-grid bubble models.