MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_global_parameters.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
2!>
3!! @file
4!! @brief Contains module m_global_parameters
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp" 2
17
18!> @brief Global parameters for the post-process: domain geometry, equation of state, and output database settings
20
21#ifdef MFC_MPI
22 use mpi !< message passing interface (mpi) module
23#endif
24
27 use m_thermochem, only: species_names
29 ! Shared state: generated_decls, num_dims, num_vels, sys_size, eqn_idx, b_size, tensor_size, chemistry, elasticity, shear_*
31
32 implicit none
33
34 !> @name Logistics
35 !> @{
36 integer :: num_procs !< Number of processors
37 !> @}
38
39 ! Computational Domain Parameters
40
41 integer :: proc_rank !< Rank of the local processor
42 !> @name Number of cells in the x-, y- and z-coordinate directions
43 !> @{
44 integer :: m_root
45 !> @}
46
47 !> @name Max and min number of cells in a direction of each combination of x-,y-, and z-
49 integer(kind=8) :: nglobal !< Total number of cells in global domain
50
51 !> @name Cylindrical coordinates (either axisymmetric or full 3D)
52 !> @{
53 integer :: grid_geometry
54 !> @}
55
56 !> @name Global number of cells in each direction
57 !> @{
58 integer :: m_glb, n_glb, p_glb
59 !> @}
60
61 ! num_dims, num_vels: in m_global_parameters_common
62 !> @name Cell-boundary locations in the x-, y- and z-coordinate directions
63 !> @{
64 real(wp), allocatable, dimension(:) :: x_cb, x_root_cb, y_cb, z_cb
65 !> @}
66
67 !> @name Cell-center locations in the x-, y- and z-coordinate directions
68 !> @{
69 real(wp), allocatable, dimension(:) :: x_cc, x_root_cc, y_cc, z_cc
70 real(sp), allocatable, dimension(:) :: x_root_cc_s, x_cc_s
71 !> @}
72
73 !> Cell-width distributions in the x-, y- and z-coordinate directions
74 !> @{
75 real(wp), allocatable, dimension(:) :: dx, dy, dz
76 !> @}
77
78 integer :: buff_size !< Number of ghost cells for boundary condition storage
79 !> @name IO options for adaptive time-stepping
80 !> @{
81 logical :: cfl_dt
82 integer :: n_save
83 !> @}
84
85 ! NOTE: m_root, x_root_cb, x_root_cc = defragmented grid (1D only; equals m, x_cb, x_cc in serial)
86
87 !> @name Simulation Algorithm Parameters
88 !> @{
89 ! sys_size, elasticity, b_size, tensor_size, chemistry, eqn_idx: in m_global_parameters_common
90 !> @}
91
92 !> @name Annotations of the structure, i.e. the organization, of the state vectors
93 !> @{
94 type(qbmm_idx_info) :: qbmm_idx !< QBMM moment index mappings.
95 integer :: beta_idx !< Index of lagrange bubbles beta
96 !> @}
97
98 ! Cell Indices for the (local) interior points (O-m, O-n, 0-p). Stands for "InDices With BUFFer".
99 type(int_bounds_info) :: idwint(1:3)
100
101 ! Cell indices (InDices With BUFFer): includes buffer in simulation only
103 logical :: bc_io
104 !> @name Boundary conditions in the x-, y- and z-coordinate directions
105 !> @{
107 !> @}
108
109 ! shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices: in m_global_parameters_common
110 ! proc_coords, start_idx, mpiiofs, mpi_info_int: in m_global_parameters_common
111#ifdef MFC_MPI
112 type(mpi_io_var), public :: mpi_io_data
116 real(wp), allocatable, dimension(:,:), public :: mpi_io_data_lg_bubbles
117#endif
118
119 ! fluid_pp, bub_pp: auto-generated in generated_decls.fpp
120 real(wp), allocatable, dimension(:) :: adv !< Advection variables
121 ! Formatted Database File(s) Structure Parameters
122
123 type(bounds_info) :: x_output, y_output, z_output !< Portion of domain to output for post-processing
124 type(int_bounds_info) :: x_output_idx, y_output_idx, z_output_idx !< Indices of domain to output for post-processing
125 !> @name Size of the ghost zone layer in the x-, y- and z-coordinate directions. The definition of the ghost zone layers is only
126 !! necessary when using the Silo database file format in multidimensions. These zones provide VisIt with the subdomain
127 !! connectivity information that it requires in order to produce smooth plots.
128 !> @{
130 !> @}
131
132 ! alpha_rho_wrt, mom_wrt, vel_wrt, flux_wrt, alpha_rho_e_wrt, alpha_wrt,
133 ! omega_wrt, chem_wrt_Y, schlieren_alpha: auto-generated in generated_decls.fpp
134 integer :: fd_number !< Finite-difference half-stencil size: MAX(1, fd_order/2)
136 !> @name Bubble modeling variables and parameters
137 !> @{
138 real(wp) :: eu
139 real(wp), dimension(:), allocatable :: weight, r0
140 real(wp) :: phi_vg, phi_gv, pe_c, tw, k_vl, k_gl
141 real(wp) :: gam_m
142 real(wp), dimension(:), allocatable :: pb0, mass_g0, mass_v0, pe_t, k_v, k_g
143 real(wp), dimension(:), allocatable :: re_trans_t, re_trans_c, im_trans_t, im_trans_c, omegan
145 real(wp) :: g
146 integer :: nmom
147 !> @}
148
149 real(wp) :: wall_time, wall_time_avg !< Wall time measurements
150
151contains
152
153 !> Assigns default values to user inputs prior to reading them in. This allows for an easier consistency check of these
154 !! parameters once they are read from the input file.
156
157 integer :: i !< Generic loop iterator
158
159 ! Shared defaults (case_dir, m/n/p, cyl_coord, cfl flags, model_eqns, elasticity, BC blocks,
160 ! recon/weno/muscl/num_fluids/igr/mhd/relativity under case-opt guard, Tait EOS, bubble flags,
161 ! IB flags, parallel I/O flags, fft_wrt)
162
164
165 ! Boundary conditions (bc_x/y/z are per-target declarations, not visible in common)
166 bc_x%beg = dflt_int; bc_x%end = dflt_int
167 bc_y%beg = dflt_int; bc_y%end = dflt_int
168 bc_z%beg = dflt_int; bc_z%end = dflt_int
169
170# 160 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
171# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
172 bc_x%vb1 = 0._wp
173 bc_x%ve1 = 0._wp
174# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
175 bc_x%vb2 = 0._wp
176 bc_x%ve2 = 0._wp
177# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
178 bc_x%vb3 = 0._wp
179 bc_x%ve3 = 0._wp
180# 164 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
181# 160 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
182# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
183 bc_y%vb1 = 0._wp
184 bc_y%ve1 = 0._wp
185# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
186 bc_y%vb2 = 0._wp
187 bc_y%ve2 = 0._wp
188# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
189 bc_y%vb3 = 0._wp
190 bc_y%ve3 = 0._wp
191# 164 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
192# 160 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
193# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
194 bc_z%vb1 = 0._wp
195 bc_z%ve1 = 0._wp
196# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
197 bc_z%vb2 = 0._wp
198 bc_z%ve2 = 0._wp
199# 161 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
200 bc_z%vb3 = 0._wp
201 bc_z%ve3 = 0._wp
202# 164 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
203# 165 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
204
205# 167 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
206 bc_x%isothermal_in = .false.
207 bc_x%isothermal_out = .false.
208 bc_x%Twall_in = dflt_real
209 bc_x%Twall_out = dflt_real
210# 167 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
211 bc_y%isothermal_in = .false.
212 bc_y%isothermal_out = .false.
213 bc_y%Twall_in = dflt_real
214 bc_y%Twall_out = dflt_real
215# 167 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
216 bc_z%isothermal_in = .false.
217 bc_z%isothermal_out = .false.
218 bc_z%Twall_in = dflt_real
219 bc_z%Twall_out = dflt_real
220# 172 "/home/runner/work/MFC/MFC/src/post_process/m_global_parameters.fpp"
221
223
224 ! Computational domain parameters (post-specific)
226
229
230 cfl_dt = .false.
234
235 ! Simulation algorithm parameters (post-specific)
236 mixture_err = .false.
237 alt_soundspeed = .false.
238
239 bc_io = .false.
241
242 chem_params%gamma_method = 1
243 chem_params%transport_model = 1
244
245 ! Fluids physical parameters (post-specific; G = dflt_real differs from pre/sim)
246 do i = 1, num_fluids_max
247 fluid_pp(i)%gamma = dflt_real
248 fluid_pp(i)%pi_inf = dflt_real
249 fluid_pp(i)%cv = 0._wp
250 fluid_pp(i)%qv = 0._wp
251 fluid_pp(i)%qvp = 0._wp
252 fluid_pp(i)%G = dflt_real
253 fluid_pp(i)%non_newtonian = .false.
254 fluid_pp(i)%K = dflt_real
255 fluid_pp(i)%nn = dflt_real
256 fluid_pp(i)%tau0 = 0._wp
257 fluid_pp(i)%hb_m = dflt_real
258 fluid_pp(i)%mu_min = dflt_real
259 fluid_pp(i)%mu_max = dflt_real
260 fluid_pp(i)%mu_bulk = dflt_real
261 end do
262
263 ! Subgrid bubble parameters (bub_pp struct + scalar companions; bub_pp%R0ref is set in common
264 ! via R0ref; the scalar companions are per-target manual declarations)
267 bub_pp%rho0ref = dflt_real; rho0ref = dflt_real
279 bub_pp%k_v = dflt_real
280 bub_pp%k_g = dflt_real
285
286 ! Formatted database file(s) structure parameters (post-specific)
287 format = dflt_int
288
290
291 alpha_rho_wrt = .false.
292 alpha_rho_e_wrt = .false.
293 rho_wrt = .false.
294 mom_wrt = .false.
295 vel_wrt = .false.
296 chem_wrt_y = .false.
297 chem_wrt_t = .false.
299 flux_wrt = .false.
300 e_wrt = .false.
301 pres_wrt = .false.
302 alpha_wrt = .false.
303 gamma_wrt = .false.
304 heat_ratio_wrt = .false.
305 pi_inf_wrt = .false.
306 pres_inf_wrt = .false.
307 prim_vars_wrt = .false.
308 cons_vars_wrt = .false.
309 c_wrt = .false.
310 omega_wrt = .false.
311 qm_wrt = .false.
312 liutex_wrt = .false.
313 schlieren_wrt = .false.
314 sim_data = .false.
315 cf_wrt = .false.
316 ib_state_wrt = .false.
317 lag_txt_wrt = .false.
318 lag_header = .true.
319 lag_db_wrt = .false.
320 lag_id_wrt = .true.
321 lag_pos_wrt = .true.
322 lag_pos_prev_wrt = .false.
323 lag_vel_wrt = .true.
324 lag_rad_wrt = .true.
325 lag_rvel_wrt = .false.
326 lag_r0_wrt = .false.
327 lag_rmax_wrt = .false.
328 lag_rmin_wrt = .false.
329 lag_dphidt_wrt = .false.
330 lag_pres_wrt = .false.
331 lag_mv_wrt = .false.
332 lag_mg_wrt = .false.
333 lag_betat_wrt = .false.
334 lag_betac_wrt = .false.
335
337
340
341 ! Bubble modeling (post-specific)
342 nb = dflt_int
344
345 ! Output partial domain (post-specific)
346 output_partial_domain = .false.
347 x_output%beg = dflt_real
348 x_output%end = dflt_real
349 y_output%beg = dflt_real
350 y_output%end = dflt_real
351 z_output%beg = dflt_real
352 z_output%end = dflt_real
353
355
356 !> Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the module
358
359 integer :: i, j, fac
360
361 ! Setting m_root equal to m in the case of a 1D serial simulation
362
363 if (n == 0) m_root = m_glb
364
365 ! Gamma/Pi_inf: force num_fluids=1 (post_process-specific side effect of the gamma-law model)
367
368 ! post_process sets nmom to 6 for qbmm before the shared eqn_idx setup
369 ! (guard matches the original site: inside the 5-equation branch)
370 if (model_eqns == model_eqns_5eq .and. qbmm) nmom = 6
371
372 ! Populate eqn_idx, sys_size, b_size, tensor_size, elasticity, shear_* (shared logic)
374
375 ! post-only: 6eq alf is a dummy (no void fraction in 6eq)
376 if (model_eqns == model_eqns_6eq) eqn_idx%alf = 1
377
378 ! post-only: set default indices for disabled fields (used by post-processing consumers)
380 if (.not. cont_damage) eqn_idx%damage = dflt_int
381 if (.not. hyper_cleaning) eqn_idx%psi = dflt_int
382 end if
383
384 ! post-only: species defaults when chemistry is off
385 if (.not. chemistry) then
386 eqn_idx%species%beg = 1
387 eqn_idx%species%end = 1
388 end if
389
390 ! Per-target (post_process): beta_idx for bubbles_lagrange (5eq only, after main eqn_idx setup)
392 beta_idx = sys_size + 1
394 end if
395
396 ! Per-target (post_process): qbmm_idx allocations and fills
397 if (model_eqns == model_eqns_5eq .and. bubbles_euler) then
398 allocate (qbmm_idx%rs(nb), qbmm_idx%vs(nb))
399 allocate (qbmm_idx%ps(nb), qbmm_idx%ms(nb))
400
401 if (qbmm) then
402 allocate (qbmm_idx%moms(nb, nmom))
403 do i = 1, nb
404 do j = 1, nmom
405 qbmm_idx%moms(i, j) = eqn_idx%bub%beg + (j - 1) + (i - 1)*nmom
406 end do
407 qbmm_idx%rs(i) = qbmm_idx%moms(i, 2)
408 qbmm_idx%vs(i) = qbmm_idx%moms(i, 3)
409 end do
410 else
411 do i = 1, nb
412 if (polytropic .neqv. .true.) then
413 fac = 4
414 else
415 fac = 2
416 end if
417
418 qbmm_idx%rs(i) = eqn_idx%bub%beg + (i - 1)*fac
419 qbmm_idx%vs(i) = qbmm_idx%rs(i) + 1
420
421 if (polytropic .neqv. .true.) then
422 qbmm_idx%ps(i) = qbmm_idx%vs(i) + 1
423 qbmm_idx%ms(i) = qbmm_idx%ps(i) + 1
424 end if
425 end do
426 end if
427 end if
428
429 if (model_eqns == model_eqns_4eq .and. bubbles_euler) then
430 allocate (qbmm_idx%rs(nb), qbmm_idx%vs(nb))
431 allocate (qbmm_idx%ps(nb), qbmm_idx%ms(nb))
432 allocate (weight(nb), r0(nb))
433
434 do i = 1, nb
435 if (polytropic .neqv. .true.) then
436 fac = 4
437 else
438 fac = 2
439 end if
440
441 qbmm_idx%rs(i) = eqn_idx%bub%beg + (i - 1)*fac
442 qbmm_idx%vs(i) = qbmm_idx%rs(i) + 1
443
444 if (polytropic .neqv. .true.) then
445 qbmm_idx%ps(i) = qbmm_idx%vs(i) + 1
446 qbmm_idx%ms(i) = qbmm_idx%ps(i) + 1
447 end if
448 end do
449
450 if (nb == 1) then
451 weight(:) = 1._wp
452 r0(:) = 1._wp
453 else if (nb < 1) then
454 stop 'Invalid value of nb'
455 end if
456
457 if (polytropic) then
458 rhoref = 1._wp
459 pref = 1._wp
460 end if
461 end if
462
463 if (output_partial_domain) then
464 x_output_idx%beg = 0
465 x_output_idx%end = 0
466 y_output_idx%beg = 0
467 y_output_idx%end = 0
468 z_output_idx%beg = 0
469 z_output_idx%end = 0
470 end if
471
472#ifdef MFC_MPI
473 if (qbmm .and. .not. polytropic) then
474 allocate (mpi_io_data%view(1:sys_size + 2*nb*nnode))
475 allocate (mpi_io_data%var(1:sys_size + 2*nb*nnode))
476 else
477 allocate (mpi_io_data%view(1:sys_size))
478 allocate (mpi_io_data%var(1:sys_size))
479 end if
480
481 do i = 1, sys_size
482 if (down_sample) then
483 allocate (mpi_io_data%var(i)%sf(-1:m + 1,-1:n + 1,-1:p + 1))
484 else
485 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
486 end if
487 mpi_io_data%var(i)%sf => null()
488 end do
489 if (qbmm .and. .not. polytropic) then
490 do i = sys_size + 1, sys_size + 2*nb*nnode
491 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
492 mpi_io_data%var(i)%sf => null()
493 end do
494 end if
495
496 if (ib) allocate (mpi_io_ib_data%var%sf(0:m,0:n,0:p))
497#endif
498
499 ! Size of the ghost zone layer is non-zero only when post-processing the raw simulation data of a parallel multidimensional
500 ! computation in the Silo-HDF5 format. If this is the case, one must also verify whether the raw simulation data is 2D or
501 ! 3D. In the 2D case, size of the z-coordinate direction ghost zone layer must be zeroed out.
502 if (num_procs == 1 .or. format /= format_silo) then
503 offset_x%beg = 0
504 offset_x%end = 0
505 offset_y%beg = 0
506 offset_y%end = 0
507 offset_z%beg = 0
508 offset_z%end = 0
509 else if (n == 0) then
510 offset_y%beg = 0
511 offset_y%end = 0
512 offset_z%beg = 0
513 offset_z%end = 0
514 else if (p == 0) then
515 offset_z%beg = 0
516 offset_z%end = 0
517 end if
518
519 ! Determining the finite-difference number and the buffer size. Note that the size of the buffer is unrelated to the order
520 ! of the WENO scheme. Rather, it is directly dependent on maximum size of ghost zone layers and possibly the order of the
521 ! finite difference scheme used for the computation of vorticity and/or numerical Schlieren function.
522 buff_size = max(offset_x%beg, offset_x%end, offset_y%beg, offset_y%end, offset_z%beg, offset_z%end)
523
524 if (any(omega_wrt) .or. schlieren_wrt .or. qm_wrt .or. liutex_wrt) then
525 fd_number = max(1, fd_order/2)
527 end if
528
529 ! Configuring Coordinate Direction Indexes
530 idwint(1)%beg = 0; idwint(2)%beg = 0; idwint(3)%beg = 0
531 idwint(1)%end = m; idwint(2)%end = n; idwint(3)%end = p
532
533 idwbuff(1)%beg = -buff_size
534 if (num_dims > 1) then; idwbuff(2)%beg = -buff_size; else; idwbuff(2)%beg = 0; end if
535 if (num_dims > 2) then; idwbuff(3)%beg = -buff_size; else; idwbuff(3)%beg = 0; end if
536
537 idwbuff(1)%end = idwint(1)%end - idwbuff(1)%beg
538 idwbuff(2)%end = idwint(2)%end - idwbuff(2)%beg
539 idwbuff(3)%end = idwint(3)%end - idwbuff(3)%beg
540
541 ! Allocating single precision grid variables if needed
542 allocate (x_cc_s(-buff_size:m + buff_size))
543
544 ! Allocating the grid variables in the x-coordinate direction
545 allocate (x_cb(-1 - offset_x%beg:m + offset_x%end))
546 allocate (x_cc(-buff_size:m + buff_size))
547 allocate (dx(-buff_size:m + buff_size))
548
549 ! Allocating grid variables in the y- and z-coordinate directions
550 if (n > 0) then
551 allocate (y_cb(-1 - offset_y%beg:n + offset_y%end))
552 allocate (y_cc(-buff_size:n + buff_size))
553 allocate (dy(-buff_size:n + buff_size))
554
555 if (p > 0) then
556 allocate (z_cb(-1 - offset_z%beg:p + offset_z%end))
557 allocate (z_cc(-buff_size:p + buff_size))
558 allocate (dz(-buff_size:p + buff_size))
559 end if
560
561 ! Allocating the grid variables, only used for the 1D simulations, and containing the defragmented computational domain
562 ! grid data
563 else
564 allocate (x_root_cb(-1:m_root))
565 allocate (x_root_cc(0:m_root))
566
567 if (precision == precision_single) then
568 allocate (x_root_cc_s(0:m_root))
569 end if
570 end if
571
572 allocate (adv(num_fluids))
573
574 if (cyl_coord .neqv. .true.) then ! Cartesian grid
575 grid_geometry = 1
576 else if (cyl_coord .and. p == 0) then ! Axisymmetric cylindrical grid
577 grid_geometry = 2
578 else ! Fully 3D cylindrical grid
579 grid_geometry = 3
580 end if
581
583
584 !> Subroutine to initialize parallel infrastructure
589 end subroutine s_initialize_parallel_io
590
591 !> Deallocation procedures for the module
593
594 integer :: i
595
596 if (bubbles_euler) then
597 deallocate (qbmm_idx%rs, qbmm_idx%vs, qbmm_idx%ps, qbmm_idx%ms)
598 if (qbmm) deallocate (qbmm_idx%moms)
599 end if
600
601 ! Deallocating the grid variables for the x-coordinate direction
602 deallocate (x_cc, x_cb, dx)
603
604 ! Deallocating grid variables for the y- and z-coordinate directions
605 if (n > 0) then
606 deallocate (y_cc, y_cb, dy)
607 if (p > 0) then
608 deallocate (z_cc, z_cb, dz)
609 end if
610 else
611 ! Deallocating the grid variables, only used for the 1D simulations, and containing the defragmented computational
612 ! domain grid data
613 deallocate (x_root_cb, x_root_cc)
614 end if
615
616 ! Shared: deallocate proc_coords and start_idx
618
619 deallocate (adv)
620
621#ifdef MFC_MPI
622 if (parallel_io) then
623 do i = 1, sys_size
624 mpi_io_data%var(i)%sf => null()
625 end do
626
627 deallocate (mpi_io_data%var)
628 deallocate (mpi_io_data%view)
629 end if
630
631 if (ib) mpi_io_ib_data%var%sf => null()
632#endif
633
635
636end module m_global_parameters
integer, intent(in) j
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter model_eqns_4eq
integer, parameter model_eqns_5eq
integer, parameter format_silo
integer, parameter dflt_int
Default integer value.
real(wp), parameter dflt_real
Default real value.
integer, parameter num_fluids_max
Maximum number of fluids in the simulation.
integer, parameter nnode
Number of QBMM nodes.
integer, parameter precision_single
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...
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 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(num_fluids_max) schlieren_alpha
logical, dimension(num_fluids_max) alpha_wrt
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Per-fluid stiffened-gas EOS parameters, Reynolds numbers, and shear modulus.
integer num_dims
Number of spatial dimensions.
logical, dimension(num_fluids_max) alpha_rho_wrt
type(eqn_idx_info) eqn_idx
All conserved-variable equation index ranges and scalars.
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...
impure subroutine s_initialize_parallel_io_common
Configure MPI parallel I/O settings and allocate processor coordinate arrays. Shared across all three...
impure subroutine s_assign_common_defaults
Assign default values to the user-input parameters that are shared across all three executables (pre_...
Global parameters for the post-process: domain geometry, equation of state, and output database setti...
real(sp), dimension(:), allocatable x_cc_s
type(mpi_io_levelset_norm_var), public mpi_io_levelsetnorm_data
impure subroutine s_assign_default_values_to_user_inputs
Assigns default values to user inputs prior to reading them in. This allows for an easier consistency...
impure subroutine s_finalize_global_parameters_module
Deallocation procedures for the module.
real(wp), dimension(:), allocatable im_trans_c
type(int_bounds_info), dimension(1:3) idwint
integer beta_idx
Index of lagrange bubbles beta.
type(int_bounds_info) offset_y
real(wp), dimension(:), allocatable pb0
real(wp), dimension(:), allocatable im_trans_t
type(qbmm_idx_info) qbmm_idx
QBMM moment index mappings.
real(wp), dimension(:,:), allocatable, public mpi_io_data_lg_bubbles
real(wp), dimension(:), allocatable y_cc
integer proc_rank
Rank of the local processor.
real(wp), dimension(:), allocatable re_trans_t
real(wp), dimension(:), allocatable adv
Advection variables.
real(wp), dimension(:), allocatable x_root_cc
type(int_bounds_info) z_output_idx
Indices of domain to output for post-processing.
type(mpi_io_ib_var), public mpi_io_ib_data
real(wp), dimension(:), allocatable y_cb
real(wp), dimension(:), allocatable dz
real(wp), dimension(:), allocatable weight
real(wp), dimension(:), allocatable k_v
real(wp), dimension(:), allocatable x_root_cb
integer fd_number
Finite-difference half-stencil size: MAX(1, fd_order/2).
type(mpi_io_levelset_var), public mpi_io_levelset_data
type(int_bounds_info), dimension(1:3) idwbuff
integer buff_size
Number of ghost cells for boundary condition storage.
real(wp), dimension(:), allocatable z_cb
type(bounds_info) z_output
Portion of domain to output for post-processing.
real(wp), dimension(:), allocatable r0
type(int_bounds_info) x_output_idx
impure subroutine s_initialize_global_parameters_module
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
real(wp), dimension(:), allocatable x_cc
real(wp), dimension(:), allocatable k_g
type(chemistry_parameters) chem_params
real(wp), dimension(:), allocatable x_cb
real(wp), dimension(:), allocatable dy
type(int_bounds_info) offset_x
real(wp), dimension(:), allocatable z_cc
integer num_procs
Number of processors.
type(int_bounds_info) y_output_idx
type(int_bounds_info) offset_z
type(cell_num_bounds) cells_bounds
real(wp), dimension(:), allocatable mass_g0
real(wp) wall_time_avg
Wall time measurements.
type(mpi_io_var), public mpi_io_data
impure subroutine s_initialize_parallel_io
Subroutine to initialize parallel infrastructure.
real(wp), dimension(:), allocatable omegan
real(wp), dimension(:), allocatable re_trans_c
real(sp), dimension(:), allocatable x_root_cc_s
real(wp), dimension(:), allocatable dx
Cell-width distributions in the x-, y- and z-coordinate directions.
real(wp), dimension(:), allocatable pe_t
real(wp), dimension(:), allocatable mass_v0
integer(kind=8) nglobal
Total number of cells in global domain.
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
elemental subroutine, public s_update_cell_bounds(bounds, m, n, p)
Updates the min and max number of cells in each set of axes.
Derived type adding beginning (beg) and end bounds info as attributes.
Max and min number of cells in a direction of each combination of x-,y-, and z-.
Integer bounds for variables.
QBMM moment index mappings - separate from bub beg/end so eqn_idx contains no allocatables.