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