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/pre_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# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp" 2
17
18!> @brief Defines global parameters for the computational domain, simulation algorithm, and initial conditions
20
21#ifdef MFC_MPI
22 use mpi ! Message passing interface (MPI) module
23#endif
24
25 use m_derived_types ! Definitions of the derived types
26 use m_helper_basic ! Functions to compare floating point numbers
27 use m_thermochem, only: num_species
28
29 implicit none
30
31 ! Logistics
32 integer :: num_procs !< Number of processors
33 character(LEN=path_len) :: case_dir !< Case folder location
34 logical :: old_grid !< Use existing grid data
35 logical :: old_ic, non_axis_sym !< Use existing IC data
36 integer :: t_step_old, t_step_start !< Existing IC/grid folder
38 integer :: n_start, n_start_old
39
40 ! Computational Domain Parameters
41
42 integer :: proc_rank !< Rank of the local processor Number of cells in the x-, y- and z-coordinate directions
43 integer :: m
44 integer :: n
45 integer :: p
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 !< Global number of cells in the domain
50 integer :: m_glb, n_glb, p_glb !< Global number of cells in each direction
51 integer :: num_dims !< Number of spatial dimensions
52 integer :: num_vels !< Number of velocity components (different from num_dims for mhd)
53 logical :: cyl_coord
54 integer :: grid_geometry !< Cylindrical coordinates (either axisymmetric or full 3D)
55 !> Locations of cell-centers (cc) in x-, y- and z-directions, respectively
56 real(wp), allocatable, dimension(:) :: x_cc, y_cc, z_cc
57 !> Locations of cell-boundaries (cb) in x-, y- and z-directions, respectively
58 real(wp), allocatable, dimension(:) :: x_cb, y_cb, z_cb
59 real(wp) :: dx, dy, dz !< Minimum cell-widths in the x-, y- and z-coordinate directions
60 type(bounds_info) :: x_domain, y_domain, z_domain !< Locations of the domain bounds in the x-, y- and z-coordinate directions
61 logical :: stretch_x, stretch_y, stretch_z !< Grid stretching flags for the x-, y- and z-coordinate directions
62 ! Grid stretching: a_x/a_y/a_z = rate, x_a/y_a/z_a = location
63 real(wp) :: a_x, a_y, a_z
64 integer :: loops_x, loops_y, loops_z
65 real(wp) :: x_a, y_a, z_a
66 real(wp) :: x_b, y_b, z_b
67
68 ! Simulation Algorithm Parameters
69 integer :: model_eqns !< Multicomponent flow model
70 logical :: relax !< activate phase change
71 integer :: relax_model !< Relax Model
72 real(wp) :: palpha_eps !< trigger parameter for the p relaxation procedure, phase change model
73 real(wp) :: ptgalpha_eps !< trigger parameter for the pTg relaxation procedure, phase change model
74 integer :: num_fluids !< Number of different fluids present in the flow
75 logical :: mpp_lim !< Alpha limiter
76 integer :: sys_size !< Number of unknowns in the system of equations
77 integer :: recon_type !< Reconstruction Type
78 integer :: weno_polyn !< Degree of the WENO polynomials (polyn)
79 integer :: muscl_polyn !< Degree of the MUSCL polynomials (polyn)
80 integer :: weno_order !< Order of accuracy for the WENO reconstruction
81 integer :: muscl_order !< Order of accuracy for the MUSCL reconstruction
82 logical :: hypoelasticity !< activate hypoelasticity
83 logical :: hyperelasticity !< activate hyperelasticity
84 logical :: elasticity !< elasticity modeling, true for hyper or hypo
85 logical :: mhd !< Magnetohydrodynamics
86 logical :: relativity !< Relativity for RMHD
87 integer :: b_size !< Number of components in the b tensor
88 integer :: tensor_size !< Number of components in the nonsymmetric tensor
89 logical :: pre_stress !< activate pre_stressed domain
90 logical :: cont_damage !< continuum damage modeling
91 logical :: hyper_cleaning !< Hyperbolic cleaning for MHD
92 logical :: igr !< Use information geometric regularization
93 integer :: igr_order !< IGR reconstruction order
94 logical, parameter :: chemistry = .false. !< Chemistry modeling
95 ! Annotations of the structure, i.e. the organization, of the state vectors
96 type(eqn_idx_info) :: eqn_idx !< All conserved-variable equation index ranges and scalars.
97 type(qbmm_idx_info) :: qbmm_idx !< QBMM moment index mappings.
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 except in pre_process
103 type(int_bounds_info) :: bc_x, bc_y, bc_z !< Boundary conditions in the x-, y- and z-coordinate directions
104 integer :: shear_num !< Number of shear stress components
105 integer, dimension(3) :: shear_indices !< Indices of the stress components that represent shear stress
106 integer :: shear_bc_flip_num !< Number of shear stress components to reflect for boundary conditions
107 integer, dimension(3, 2) :: shear_bc_flip_indices !< Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num)
108 logical :: parallel_io !< Format of the data files
109 logical :: file_per_process !< type of data output
110 integer :: precision !< Precision of output files
111 logical :: down_sample !< Down-sample the output data
112 logical :: mixlayer_vel_profile !< Set hyperbolic tangent streamwise velocity profile
113 real(wp) :: mixlayer_vel_coef !< Coefficient for the hyperbolic tangent streamwise velocity profile
114 logical :: mixlayer_perturb !< Superimpose instability waves to surrounding fluid flow
115 integer :: mixlayer_perturb_nk !< Number of Fourier modes for perturbation with mixlayer_perturb flag
116 real(wp) :: mixlayer_perturb_k0 !< Peak wavenumber for mixlayer perturbation (default: most unstable mode)
119 real(wp) :: pi_fac !< Factor for artificial pi_inf
120 logical :: viscous
122
123 ! Perturb density of surrounding air so as to break symmetry of grid
124 logical :: perturb_flow
125 integer :: perturb_flow_fluid !< Fluid to be perturbed with perturb_flow flag
126 real(wp) :: perturb_flow_mag !< Magnitude of perturbation with perturb_flow flag
127 logical :: perturb_sph
128 integer :: perturb_sph_fluid !< Fluid to be perturbed with perturb_sph flag
129 real(wp), dimension(num_fluids_max) :: fluid_rho
132 integer, allocatable, dimension(:) :: proc_coords !< Processor coordinates in MPI_CART_COMM
133 integer, allocatable, dimension(:) :: start_idx !< Starting cell-center index of local processor in global grid
134#ifdef MFC_MPI
135 type(mpi_io_var), public :: mpi_io_data
136 character(LEN=name_len) :: mpiiofs
137 integer :: mpi_info_int !< MPI info for parallel IO with Lustre file systems
138#endif
139
140 ! Initial Condition Parameters
141 integer :: num_patches !< Number of patches composing initial condition
142 type(ic_patch_parameters), dimension(num_patches_max) :: patch_icpp !< IC patch parameters (max: num_patches_max)
143 integer :: num_bc_patches !< Number of boundary condition patches
144 logical :: bc_io !< whether or not to save BC data
145 type(bc_patch_parameters), dimension(num_bc_patches_max) :: patch_bc !< Boundary condition patch parameters
146
147 ! Fluids Physical Parameters
148 type(physical_parameters), dimension(num_fluids_max) :: fluid_pp !< Stiffened gas EOS parameters and Reynolds numbers per fluid
149 ! Subgrid Bubble Parameters
151 real(wp) :: rhoref, pref !< Reference parameters for Tait EOS
153 !> @name Bubble modeling
154 !> @{
155 integer :: nb
156 real(wp) :: ca, web, re_inv, eu
157 real(wp), dimension(:), allocatable :: weight, r0
158 logical :: bubbles_euler
159 logical :: qbmm !< Quadrature moment method
160 integer :: nmom !< Number of carried moments
161 real(wp) :: sigr, sigv, rhorv !< standard deviations in R/V
162 logical :: adv_n !< Solve the number density equation and compute alpha from number density
163 !> @}
164
165 !> @name Immersed Boundaries
166 !> @{
167 logical :: ib !< Turn immersed boundaries on
168 integer :: num_ibs !< Number of immersed boundaries
169 integer :: np
170 type(ib_patch_parameters), dimension(num_ib_patches_max) :: patch_ib !< Immersed boundary patch parameters
171 type(vec3_dt), allocatable, dimension(:) :: airfoil_grid_u, airfoil_grid_l
172 !> @}
173
174 !> @name Non-polytropic bubble gas compression
175 !> @{
176 logical :: polytropic
177 logical :: polydisperse
178 real(wp) :: poly_sigma
179 integer :: dist_type !< 1 = binormal, 2 = lognormal-normal
180 integer :: thermal !< 1 = adiabatic, 2 = isotherm, 3 = transfer
181 real(wp) :: phi_vg, phi_gv, pe_c, tw, k_vl, k_gl
182 real(wp) :: gam_m
183 real(wp), dimension(:), allocatable :: pb0, mass_g0, mass_v0, pe_t, k_v, k_g
184 real(wp), dimension(:), allocatable :: re_trans_t, re_trans_c, im_trans_t, im_trans_c, omegan
186 !> @}
187
188 !> @name Surface Tension Modeling
189 !> @{
190 real(wp) :: sigma
192 !> @}
193
194 integer, allocatable, dimension(:,:,:) :: logic_grid
195 type(pres_field) :: pb
196 type(pres_field) :: mv
197 real(wp) :: bx0 !< Constant magnetic field in the x-direction (1D)
198 integer :: buff_size !< Number of ghost cells for boundary condition storage
199 logical :: fft_wrt
200
201contains
202
203 !> Assigns default values to user inputs prior to reading them in. This allows for an easier consistency check of these
204 !! parameters once they are read from the input file.
206
207 integer :: i !< Generic loop operator
208 ! Logistics
209
210 case_dir = '.'
211 old_grid = .false.
212 old_ic = .false.
213 t_step_old = dflt_int
214 t_step_start = dflt_int
215
216 cfl_adap_dt = .false.
217 cfl_const_dt = .false.
218 cfl_dt = .false.
219 n_start = dflt_int
220
221 ! Computational domain parameters
222 m = dflt_int; n = 0; p = 0
223
225
226 cyl_coord = .false.
227
228 x_domain%beg = dflt_real
229 x_domain%end = dflt_real
230 y_domain%beg = dflt_real
231 y_domain%end = dflt_real
232 z_domain%beg = dflt_real
233 z_domain%end = dflt_real
234
235 stretch_x = .false.
236 stretch_y = .false.
237 stretch_z = .false.
238
239 a_x = dflt_real
240 a_y = dflt_real
241 a_z = dflt_real
242 loops_x = 1
243 loops_y = 1
244 loops_z = 1
245 x_a = dflt_real
246 x_b = dflt_real
247 y_a = dflt_real
248 y_b = dflt_real
249 z_a = dflt_real
250 z_b = dflt_real
251
252 ! Simulation algorithm parameters
253 model_eqns = dflt_int
254 relax = .false.
255 relax_model = dflt_int
256 palpha_eps = dflt_real
257 ptgalpha_eps = dflt_real
258 num_fluids = dflt_int
259 recon_type = weno_type
260 weno_order = dflt_int
261 igr = .false.
262 igr_order = dflt_int
263 muscl_order = dflt_int
264
265 hypoelasticity = .false.
266 hyperelasticity = .false.
267 elasticity = .false.
268 pre_stress = .false.
269 b_size = dflt_int
270 tensor_size = dflt_int
271 cont_damage = .false.
272 hyper_cleaning = .false.
273
274 mhd = .false.
275 relativity = .false.
276
277 bc_x%beg = dflt_int; bc_x%end = dflt_int
278 bc_y%beg = dflt_int; bc_y%end = dflt_int
279 bc_z%beg = dflt_int; bc_z%end = dflt_int
280
281# 271 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
282# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
283 bc_x%vb1 = 0._wp
284 bc_x%ve1 = 0._wp
285# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
286 bc_x%vb2 = 0._wp
287 bc_x%ve2 = 0._wp
288# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
289 bc_x%vb3 = 0._wp
290 bc_x%ve3 = 0._wp
291# 275 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
292# 271 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
293# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
294 bc_y%vb1 = 0._wp
295 bc_y%ve1 = 0._wp
296# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
297 bc_y%vb2 = 0._wp
298 bc_y%ve2 = 0._wp
299# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
300 bc_y%vb3 = 0._wp
301 bc_y%ve3 = 0._wp
302# 275 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
303# 271 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
304# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
305 bc_z%vb1 = 0._wp
306 bc_z%ve1 = 0._wp
307# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
308 bc_z%vb2 = 0._wp
309 bc_z%ve2 = 0._wp
310# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
311 bc_z%vb3 = 0._wp
312 bc_z%ve3 = 0._wp
313# 275 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
314# 276 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
315
316# 278 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
317 bc_z%isothermal_in = .false.
318 bc_z%isothermal_out = .false.
319 bc_z%Twall_in = dflt_real
320 bc_z%Twall_out = dflt_real
321# 278 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
322 bc_x%isothermal_in = .false.
323 bc_x%isothermal_out = .false.
324 bc_x%Twall_in = dflt_real
325 bc_x%Twall_out = dflt_real
326# 278 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
327 bc_y%isothermal_in = .false.
328 bc_y%isothermal_out = .false.
329 bc_y%Twall_in = dflt_real
330 bc_y%Twall_out = dflt_real
331# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
332
333 parallel_io = .false.
334 file_per_process = .false.
335 precision = 2
336 down_sample = .false.
337 viscous = .false.
338 bubbles_lagrange = .false.
339 mixlayer_vel_profile = .false.
340 mixlayer_vel_coef = 1._wp
341 mixlayer_perturb = .false.
343 mixlayer_perturb_k0 = 0.4446_wp
344 perturb_flow = .false.
345 perturb_flow_fluid = dflt_int
346 perturb_flow_mag = dflt_real
347 perturb_sph = .false.
348 perturb_sph_fluid = dflt_int
349 fluid_rho = dflt_real
350 elliptic_smoothing_iters = dflt_int
351 elliptic_smoothing = .false.
352
353 fft_wrt = .false.
354
355 simplex_perturb = .false.
356 simplex_params%perturb_vel(:) = .false.
357 simplex_params%perturb_vel_freq(:) = dflt_real
358 simplex_params%perturb_vel_scale(:) = dflt_real
359 simplex_params%perturb_vel_offset(:,:) = dflt_real
360 simplex_params%perturb_dens(:) = .false.
361 simplex_params%perturb_dens_freq(:) = dflt_real
362 simplex_params%perturb_dens_scale(:) = dflt_real
363 simplex_params%perturb_dens_offset(:,:) = dflt_real
364
365 ! Initial condition parameters
366 num_patches = dflt_int
367
368 do i = 1, num_patches_max
369 patch_icpp(i)%geometry = dflt_int
370 patch_icpp(i)%model_scale(:) = 1._wp
371 patch_icpp(i)%model_translate(:) = 0._wp
372 patch_icpp(i)%model_filepath(:) = dflt_char
373 patch_icpp(i)%model_spc = num_ray
374 patch_icpp(i)%model_threshold = ray_tracing_threshold
375 patch_icpp(i)%x_centroid = dflt_real
376 patch_icpp(i)%y_centroid = dflt_real
377 patch_icpp(i)%z_centroid = dflt_real
378 patch_icpp(i)%length_x = dflt_real
379 patch_icpp(i)%length_y = dflt_real
380 patch_icpp(i)%length_z = dflt_real
381 patch_icpp(i)%radius = dflt_real
382 patch_icpp(i)%epsilon = dflt_real
383 patch_icpp(i)%beta = dflt_real
384 patch_icpp(i)%normal = dflt_real
385 patch_icpp(i)%radii = dflt_real
386 patch_icpp(i)%alter_patch = .false.
387 patch_icpp(i)%alter_patch(0) = .true.
388 patch_icpp(i)%smoothen = .false.
389 patch_icpp(i)%smooth_patch_id = i
390 patch_icpp(i)%smooth_coeff = dflt_real
391 patch_icpp(i)%alpha_rho = dflt_real
392 patch_icpp(i)%rho = dflt_real
393 patch_icpp(i)%vel = dflt_real
394 patch_icpp(i)%pres = dflt_real
395 patch_icpp(i)%alpha = dflt_real
396 patch_icpp(i)%gamma = dflt_real
397 patch_icpp(i)%pi_inf = dflt_real
398 patch_icpp(i)%cv = 0._wp
399 patch_icpp(i)%qv = 0._wp
400 patch_icpp(i)%qvp = 0._wp
401 patch_icpp(i)%tau_e = 0._wp
402 patch_icpp(i)%Bx = dflt_real
403 patch_icpp(i)%By = dflt_real
404 patch_icpp(i)%Bz = dflt_real
405 patch_icpp(i)%a(2) = dflt_real
406 patch_icpp(i)%a(3) = dflt_real
407 patch_icpp(i)%a(4) = dflt_real
408 patch_icpp(i)%a(5) = dflt_real
409 patch_icpp(i)%a(6) = dflt_real
410 patch_icpp(i)%a(7) = dflt_real
411 patch_icpp(i)%a(8) = dflt_real
412 patch_icpp(i)%a(9) = dflt_real
413 patch_icpp(i)%non_axis_sym = .false.
414 patch_icpp(i)%fourier_cos(:) = 0._wp
415 patch_icpp(i)%fourier_sin(:) = 0._wp
416 patch_icpp(i)%modal_clip_r_to_min = .false.
417 patch_icpp(i)%modal_r_min = 1.e-12_wp
418 patch_icpp(i)%modal_use_exp_form = .false.
419 patch_icpp(i)%sph_har_coeff(:,:) = 0._wp
420
421 ! should get all of r0's and v0's
422 patch_icpp(i)%r0 = dflt_real
423 patch_icpp(i)%v0 = dflt_real
424
425 patch_icpp(i)%p0 = dflt_real
426 patch_icpp(i)%m0 = dflt_real
427
428 patch_icpp(i)%hcid = dflt_int
429
430 if (chemistry) then
431 patch_icpp(i)%Y(:) = 0._wp
432 end if
433 end do
434
436 bc_io = .false.
437
438 do i = 1, num_bc_patches_max
439 patch_bc(i)%geometry = dflt_int
440 patch_bc(i)%type = dflt_int
441 patch_bc(i)%dir = dflt_int
442 patch_bc(i)%loc = dflt_int
443 patch_bc(i)%centroid(:) = dflt_real
444 patch_bc(i)%length(:) = dflt_real
445 patch_bc(i)%radius = dflt_real
446 end do
447
448 ! Tait EOS
449 rhoref = dflt_real
450 pref = dflt_real
451
452 ! Bubble modeling
453 bubbles_euler = .false.
454 polytropic = .true.
455 polydisperse = .false.
456
457 thermal = dflt_int
458 r0ref = dflt_real
459 nb = dflt_int
460
461 eu = dflt_real
462 ca = dflt_real
463 re_inv = dflt_real
464 web = dflt_real
465 poly_sigma = dflt_real
466 surface_tension = .false.
467
468 adv_n = .false.
469
470 qbmm = .false.
471 nmom = 1
472 sigr = dflt_real
473 sigv = dflt_real
474 rhorv = 0._wp
475 dist_type = dflt_int
476
477 r_g = dflt_real
478 r_v = dflt_real
479 phi_vg = dflt_real
480 phi_gv = dflt_real
481 pe_c = dflt_real
482 tw = dflt_real
483
484 ! surface tension modeling
485 sigma = dflt_real
486 pi_fac = 1._wp
487
488 ! Immersed Boundaries
489 ib = .false.
490 num_ibs = dflt_int
491
492 do i = 1, num_ib_patches_max
493 patch_ib(i)%geometry = dflt_int
494 patch_ib(i)%x_centroid = dflt_real
495 patch_ib(i)%y_centroid = dflt_real
496 patch_ib(i)%z_centroid = dflt_real
497 patch_ib(i)%length_x = dflt_real
498 patch_ib(i)%length_y = dflt_real
499 patch_ib(i)%length_z = dflt_real
500 patch_ib(i)%radius = dflt_real
501 patch_ib(i)%theta = dflt_real
502 patch_ib(i)%c = dflt_real
503 patch_ib(i)%t = dflt_real
504 patch_ib(i)%m = dflt_real
505 patch_ib(i)%p = dflt_real
506 patch_ib(i)%slip = .false.
507
508 ! Proper default values for translating STL models
509 patch_ib(i)%model_scale(:) = 1._wp
510 patch_ib(i)%model_translate(:) = 0._wp
511 patch_ib(i)%model_rotate(:) = 0._wp
512 patch_ib(i)%model_filepath(:) = dflt_char
513 patch_ib(i)%model_spc = num_ray
514 patch_ib(i)%model_threshold = ray_tracing_threshold
515
516 ! Variables to handle moving immersed boundaries, defaulting to no movement
517 patch_ib(i)%moving_ibm = 0
518 patch_ib(i)%vel(:) = 0._wp
519 patch_ib(i)%angles(:) = 0._wp
520 patch_ib(i)%angular_vel(:) = 0._wp
521 patch_ib(i)%mass = dflt_real
522 patch_ib(i)%moment = dflt_real
523 patch_ib(i)%centroid_offset(:) = 0._wp
524
525 ! sets values of a rotation matrix which can be used when calculating rotations
526 patch_ib(i)%rotation_matrix = 0._wp
527 patch_ib(i)%rotation_matrix(1, 1) = 1._wp
528 patch_ib(i)%rotation_matrix(2, 2) = 1._wp
529 patch_ib(i)%rotation_matrix(3, 3) = 1._wp
530 patch_ib(i)%rotation_matrix_inverse = patch_ib(i)%rotation_matrix
531 end do
532
533 chem_params%gamma_method = 1
534 chem_params%transport_model = 1
535
536 ! Fluids physical parameters
537 do i = 1, num_fluids_max
538 fluid_pp(i)%gamma = dflt_real
539 fluid_pp(i)%pi_inf = dflt_real
540 fluid_pp(i)%cv = 0._wp
541 fluid_pp(i)%qv = 0._wp
542 fluid_pp(i)%qvp = 0._wp
543 fluid_pp(i)%G = 0._wp
544 end do
545
546 bx0 = dflt_real
547
548 ! Subgrid bubble parameters
549 bub_pp%R0ref = dflt_real; r0ref = dflt_real
550 bub_pp%p0ref = dflt_real; p0ref = dflt_real
551 bub_pp%rho0ref = dflt_real; rho0ref = dflt_real
552 bub_pp%T0ref = dflt_real; t0ref = dflt_real
553 bub_pp%ss = dflt_real; ss = dflt_real
554 bub_pp%pv = dflt_real; pv = dflt_real
555 bub_pp%vd = dflt_real; vd = dflt_real
556 bub_pp%mu_l = dflt_real; mu_l = dflt_real
557 bub_pp%mu_v = dflt_real; mu_v = dflt_real
558 bub_pp%mu_g = dflt_real; mu_g = dflt_real
559 bub_pp%gam_v = dflt_real; gam_v = dflt_real
560 bub_pp%gam_g = dflt_real; gam_g = dflt_real
561 bub_pp%M_v = dflt_real; m_v = dflt_real
562 bub_pp%M_g = dflt_real; m_g = dflt_real
563 bub_pp%k_v = dflt_real
564 bub_pp%k_g = dflt_real
565 bub_pp%cp_v = dflt_real; cp_v = dflt_real
566 bub_pp%cp_g = dflt_real; cp_g = dflt_real
567 bub_pp%R_v = dflt_real; r_v = dflt_real
568 bub_pp%R_g = dflt_real; r_g = dflt_real
569
571
572 !> Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the module
574
575 integer :: i, j, fac
576
577 if (recon_type == weno_type) then
578 weno_polyn = (weno_order - 1)/2
579 else if (recon_type == muscl_type) then
581 end if
582
583 ! Determining the layout of the state vectors and overall size of the system of equations, given the dimensionality and
584 ! choice of the equations of motion
585
586 ! Gamma/Pi_inf Model
587 if (model_eqns == 1) then
588 ! Setting number of fluids
589 num_fluids = 1
590
591 ! Annotating structure of the state and flux vectors belonging to the system of equations defined by the selected number
592 ! of spatial dimensions and the gamma/pi_inf model
593 eqn_idx%cont%beg = 1
594 eqn_idx%cont%end = eqn_idx%cont%beg
595 eqn_idx%mom%beg = eqn_idx%cont%end + 1
596 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
597 eqn_idx%E = eqn_idx%mom%end + 1
598 eqn_idx%adv%beg = eqn_idx%E + 1
599 eqn_idx%adv%end = eqn_idx%adv%beg + 1
600 eqn_idx%gamma = eqn_idx%adv%beg
601 eqn_idx%pi_inf = eqn_idx%adv%end
602 sys_size = eqn_idx%adv%end
603
604 ! Volume Fraction Model (5-equation model)
605 else if (model_eqns == 2) then
606 ! Annotating structure of the state and flux vectors belonging to the system of equations defined by the selected number
607 ! of spatial dimensions and the volume fraction model
608 eqn_idx%cont%beg = 1
609 eqn_idx%cont%end = num_fluids
610 eqn_idx%mom%beg = eqn_idx%cont%end + 1
611 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
612 eqn_idx%E = eqn_idx%mom%end + 1
613
614 if (igr) then
615 ! Volume fractions are stored in the indices immediately following the energy equation. IGR tracks a total of (N-1)
616 ! volume fractions for N fluids, hence the "-1" in eqn_idx%adv%end. If num_fluids = 1 then eqn_idx%adv%end <
617 ! eqn_idx%adv%beg, which skips all loops over the volume fractions since there is no volume fraction to track
618 eqn_idx%adv%beg = eqn_idx%E + 1
619 eqn_idx%adv%end = eqn_idx%E + num_fluids - 1
620 else
621 ! Volume fractions are stored in the indices immediately following the energy equation. WENO/MUSCL + Riemann tracks
622 ! a total of (N) volume fractions for N fluids, hence the lack of "-1" in eqn_idx%adv%end
623 eqn_idx%adv%beg = eqn_idx%E + 1
624 eqn_idx%adv%end = eqn_idx%E + num_fluids
625 end if
626
627 sys_size = eqn_idx%adv%end
628
629 if (bubbles_euler) then
630 eqn_idx%alf = eqn_idx%adv%end
631 else
632 eqn_idx%alf = 1
633 end if
634
635 if (bubbles_euler) then
636 eqn_idx%bub%beg = sys_size + 1
637 if (qbmm) then
638 if (nnode == 4) then
639 nmom = 6 !< Already set as a parameter
640 end if
641 eqn_idx%bub%end = eqn_idx%adv%end + nb*nmom
642 else
643 if (.not. polytropic) then
644 eqn_idx%bub%end = sys_size + 4*nb
645 else
646 eqn_idx%bub%end = sys_size + 2*nb
647 end if
648 end if
649 sys_size = eqn_idx%bub%end
650
651 if (adv_n) then
652 eqn_idx%n = eqn_idx%bub%end + 1
653 sys_size = eqn_idx%n
654 end if
655
656 allocate (qbmm_idx%rs(nb), qbmm_idx%vs(nb))
657 allocate (qbmm_idx%ps(nb), qbmm_idx%ms(nb))
658
659 if (qbmm) then
660 allocate (qbmm_idx%moms(nb, nmom))
661 allocate (qbmm_idx%fullmom(nb,0:nmom,0:nmom))
662
663 do i = 1, nb
664 do j = 1, nmom
665 qbmm_idx%moms(i, j) = eqn_idx%bub%beg + (j - 1) + (i - 1)*nmom
666 end do
667 qbmm_idx%fullmom(i, 0, 0) = qbmm_idx%moms(i, 1)
668 qbmm_idx%fullmom(i, 1, 0) = qbmm_idx%moms(i, 2)
669 qbmm_idx%fullmom(i, 0, 1) = qbmm_idx%moms(i, 3)
670 qbmm_idx%fullmom(i, 2, 0) = qbmm_idx%moms(i, 4)
671 qbmm_idx%fullmom(i, 1, 1) = qbmm_idx%moms(i, 5)
672 qbmm_idx%fullmom(i, 0, 2) = qbmm_idx%moms(i, 6)
673 qbmm_idx%rs(i) = qbmm_idx%fullmom(i, 1, 0)
674 end do
675 else
676 do i = 1, nb
677 if (.not. polytropic) then
678 fac = 4
679 else
680 fac = 2
681 end if
682
683 qbmm_idx%rs(i) = eqn_idx%bub%beg + (i - 1)*fac
684 qbmm_idx%vs(i) = qbmm_idx%rs(i) + 1
685
686 if (.not. polytropic) then
687 qbmm_idx%ps(i) = qbmm_idx%vs(i) + 1
688 qbmm_idx%ms(i) = qbmm_idx%ps(i) + 1
689 end if
690 end do
691 end if
692 end if
693
694 if (mhd) then
695 eqn_idx%B%beg = sys_size + 1
696 if (n == 0) then
697 eqn_idx%B%end = sys_size + 2 ! 1D: By, Bz
698 else
699 eqn_idx%B%end = sys_size + 3 ! 2D/3D: Bx, By, Bz
700 end if
701 sys_size = eqn_idx%B%end
702 end if
703
704 ! Volume Fraction Model (6-equation model)
705 else if (model_eqns == 3) then
706 ! Annotating structure of the state and flux vectors belonging to the system of equations defined by the selected number
707 ! of spatial dimensions and the volume fraction model
708 eqn_idx%cont%beg = 1
709 eqn_idx%cont%end = num_fluids
710 eqn_idx%mom%beg = eqn_idx%cont%end + 1
711 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
712 eqn_idx%E = eqn_idx%mom%end + 1
713 eqn_idx%adv%beg = eqn_idx%E + 1
714 eqn_idx%adv%end = eqn_idx%E + num_fluids
715 eqn_idx%int_en%beg = eqn_idx%adv%end + 1
716 eqn_idx%int_en%end = eqn_idx%adv%end + num_fluids
717 sys_size = eqn_idx%int_en%end
718 else if (model_eqns == 4) then
719 ! 4 equation model with subgrid bubbles_euler
720 eqn_idx%cont%beg = 1 ! one continuity equation
721 eqn_idx%cont%end = 1 ! num_fluids
722 eqn_idx%mom%beg = eqn_idx%cont%end + 1 ! one momentum equation in each direction
723 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
724 eqn_idx%E = eqn_idx%mom%end + 1 ! one energy equation
725 eqn_idx%adv%beg = eqn_idx%E + 1
726 eqn_idx%adv%end = eqn_idx%adv%beg ! one volume advection equation
727 eqn_idx%alf = eqn_idx%adv%end
728 sys_size = eqn_idx%alf ! eqn_idx%adv%end
729
730 if (bubbles_euler) then
731 eqn_idx%bub%beg = sys_size + 1
732 eqn_idx%bub%end = sys_size + 2*nb
733 if (.not. polytropic) then
734 eqn_idx%bub%end = sys_size + 4*nb
735 end if
736 sys_size = eqn_idx%bub%end
737
738 allocate (qbmm_idx%rs(nb), qbmm_idx%vs(nb))
739 allocate (qbmm_idx%ps(nb), qbmm_idx%ms(nb))
740 allocate (weight(nb), r0(nb))
741
742 do i = 1, nb
743 if (.not. polytropic) then
744 fac = 4
745 else
746 fac = 2
747 end if
748
749 qbmm_idx%rs(i) = eqn_idx%bub%beg + (i - 1)*fac
750 qbmm_idx%vs(i) = qbmm_idx%rs(i) + 1
751
752 if (.not. polytropic) then
753 qbmm_idx%ps(i) = qbmm_idx%vs(i) + 1
754 qbmm_idx%ms(i) = qbmm_idx%ps(i) + 1
755 end if
756 end do
757
758 if (nb == 1) then
759 weight(:) = 1._wp
760 r0(:) = 1._wp
761 else if (nb < 1) then
762 stop 'Invalid value of nb'
763 end if
764
765 if (polytropic) then
766 rhoref = 1._wp
767 pref = 1._wp
768 end if
769 end if
770 end if
771
772 if (model_eqns == 2 .or. model_eqns == 3) then
773 if (hypoelasticity .or. hyperelasticity) then
774 elasticity = .true.
775 eqn_idx%stress%beg = sys_size + 1
776 eqn_idx%stress%end = sys_size + (num_dims*(num_dims + 1))/2
777 if (cyl_coord) eqn_idx%stress%end = eqn_idx%stress%end + 1
778 ! number of stresses is 1 in 1D, 3 in 2D, 4 in 2D-Axisym, 6 in 3D
779 sys_size = eqn_idx%stress%end
780
781 ! shear stress index is 2 for 2D and 2,4,5 for 3D
782 if (num_dims == 1) then
783 shear_num = 0
784 else if (num_dims == 2) then
785 shear_num = 1
786 shear_indices(1) = eqn_idx%stress%beg - 1 + 2
789 ! Both x-dir and y-dir: flip tau_xy only
790 else if (num_dims == 3) then
791 shear_num = 3
792 shear_indices(1:3) = eqn_idx%stress%beg - 1 + (/2, 4, 5/)
794 shear_bc_flip_indices(1,1:2) = shear_indices((/1, 2/))
795 shear_bc_flip_indices(2,1:2) = shear_indices((/1, 3/))
796 shear_bc_flip_indices(3,1:2) = shear_indices((/2, 3/))
797 ! x-dir: flip tau_xy and tau_xz y-dir: flip tau_xy and tau_yz z-dir: flip tau_xz and tau_yz
798 end if
799 end if
800
801 if (hyperelasticity) then
802 ! number of entries in the symmetric btensor plus the jacobian
803 b_size = (num_dims*(num_dims + 1))/2 + 1
804 tensor_size = num_dims**2 + 1
805 eqn_idx%xi%beg = sys_size + 1
806 eqn_idx%xi%end = sys_size + num_dims
807 ! adding three more equations for the \xi field and the elastic energy
808 sys_size = eqn_idx%xi%end + 1
809 end if
810
811 if (surface_tension) then
812 eqn_idx%c = sys_size + 1
813 sys_size = eqn_idx%c
814 end if
815
816 if (cont_damage) then
817 eqn_idx%damage = sys_size + 1
818 sys_size = eqn_idx%damage
819 end if
820
821 if (hyper_cleaning) then
822 eqn_idx%psi = sys_size + 1
823 sys_size = eqn_idx%psi
824 end if
825 end if
826
827 if (chemistry) then
828 eqn_idx%species%beg = sys_size + 1
829 eqn_idx%species%end = sys_size + num_species
830 sys_size = eqn_idx%species%end
831 end if
832
835
836#ifdef MFC_MPI
837 if (qbmm .and. .not. polytropic) then
838 allocate (mpi_io_data%view(1:sys_size + 2*nb*nnode))
839 allocate (mpi_io_data%var(1:sys_size + 2*nb*nnode))
840 else
841 allocate (mpi_io_data%view(1:sys_size))
842 allocate (mpi_io_data%var(1:sys_size))
843 end if
844
845 if (.not. down_sample) then
846 do i = 1, sys_size
847 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
848 mpi_io_data%var(i)%sf => null()
849 end do
850 end if
851 if (qbmm .and. .not. polytropic) then
852 do i = sys_size + 1, sys_size + 2*nb*nnode
853 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
854 mpi_io_data%var(i)%sf => null()
855 end do
856 end if
857#endif
858
859 ! Allocating grid variables for the x-direction
860 allocate (x_cc(0:m), x_cb(-1:m))
861 ! Allocating grid variables for the y- and z-directions
862 if (n > 0) then
863 allocate (y_cc(0:n), y_cb(-1:n))
864 if (p > 0) then
865 allocate (z_cc(0:p), z_cb(-1:p))
866 end if
867 end if
868
869 if (cyl_coord .neqv. .true.) then ! Cartesian grid
870 grid_geometry = 1
871 else if (cyl_coord .and. p == 0) then ! Axisymmetric cylindrical grid
872 grid_geometry = 2
873 else ! Fully 3D cylindrical grid
874 grid_geometry = 3
875 end if
876
877 if (.not. igr) then
878 allocate (logic_grid(0:m,0:n,0:p))
879 end if
880
882
883 !> Configure MPI parallel I/O settings and allocate processor coordinate arrays.
884 impure subroutine s_initialize_parallel_io
885
886#ifdef MFC_MPI
887 integer :: ierr !< Generic flag used to identify and report MPI errors
888#endif
889
890 num_dims = 1 + min(1, n) + min(1, p)
891
892 if (mhd) then
893 num_vels = 3
894 else
896 end if
897
898 allocate (proc_coords(1:num_dims))
899
900 if (parallel_io .neqv. .true.) return
901
902#ifdef MFC_MPI
903 ! Option for Lustre file system (Darter/Comet/Stampede)
904 write (mpiiofs, '(A)') '/lustre_'
905 mpiiofs = trim(mpiiofs)
906 call mpi_info_create(mpi_info_int, ierr)
907 call mpi_info_set(mpi_info_int, 'romio_ds_write', 'disable', ierr)
908
909 ! Option for UNIX file system (Hooke/Thomson) WRITE(mpiiofs, '(A)') '/ufs_' mpiiofs = TRIM(mpiiofs) mpi_info_int =
910 ! MPI_INFO_NULL
911
912 allocate (start_idx(1:num_dims))
913#endif
914
915 end subroutine s_initialize_parallel_io
916
917 !> Deallocate all global grid, index, and equation-of-state parameter arrays.
919
920 integer :: i
921
922 if (bubbles_euler) then
923 deallocate (qbmm_idx%rs, qbmm_idx%vs, qbmm_idx%ps, qbmm_idx%ms)
924 if (qbmm) deallocate (qbmm_idx%moms, qbmm_idx%fullmom)
925 end if
926
927 ! Deallocating grid variables for the x-direction
928
929 deallocate (x_cc, x_cb)
930 ! Deallocating grid variables for the y- and z-directions
931 if (n > 0) then
932 deallocate (y_cc, y_cb)
933 if (p > 0) then
934 deallocate (z_cc, z_cb)
935 end if
936 end if
937
938 deallocate (proc_coords)
939
940#ifdef MFC_MPI
941 if (parallel_io) then
942 deallocate (start_idx)
943 do i = 1, sys_size
944 mpi_io_data%var(i)%sf => null()
945 end do
946
947 deallocate (mpi_io_data%var)
948 deallocate (mpi_io_data%view)
949 end if
950#endif
951
953
954end module m_global_parameters
integer, intent(in) j
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Defines global parameters for the computational domain, simulation algorithm, and initial conditions.
real(wp) perturb_flow_mag
Magnitude of perturbation with perturb_flow flag.
real(wp) mixlayer_perturb_k0
Peak wavenumber for mixlayer perturbation (default: most unstable mode).
integer grid_geometry
Cylindrical coordinates (either axisymmetric or full 3D).
logical cont_damage
continuum damage modeling
integer p_glb
Global number of cells in each direction.
logical igr
Use information geometric regularization.
integer, dimension(3, 2) shear_bc_flip_indices
Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num).
logical hypoelasticity
activate hypoelasticity
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
Deallocate all global grid, index, and equation-of-state parameter arrays.
integer thermal
1 = adiabatic, 2 = isotherm, 3 = transfer
real(wp), dimension(:), allocatable im_trans_c
integer perturb_flow_fluid
Fluid to be perturbed with perturb_flow flag.
type(int_bounds_info), dimension(1:3) idwint
integer recon_type
Reconstruction Type.
logical, parameter chemistry
Chemistry modeling.
integer mpi_info_int
MPI info for parallel IO with Lustre file systems.
real(wp) dz
Minimum cell-widths in the x-, y- and z-coordinate directions.
type(int_bounds_info) bc_z
Boundary conditions in the x-, y- and z-coordinate directions.
real(wp), dimension(:), allocatable pb0
integer num_fluids
Number of different fluids present in the flow.
logical pre_stress
activate pre_stressed domain
real(wp), dimension(:), allocatable im_trans_t
type(qbmm_idx_info) qbmm_idx
QBMM moment index mappings.
integer dist_type
1 = binormal, 2 = lognormal-normal
integer weno_polyn
Degree of the WENO polynomials (polyn).
real(wp), dimension(:), allocatable y_cc
logical non_axis_sym
Use existing IC data.
integer proc_rank
Rank of the local processor Number of cells in the x-, y- and z-coordinate directions.
real(wp), dimension(:), allocatable re_trans_t
integer, dimension(:), allocatable proc_coords
Processor coordinates in MPI_CART_COMM.
logical bc_io
whether or not to save BC data
real(wp), dimension(:), allocatable y_cb
type(bounds_info) z_domain
Locations of the domain bounds in the x-, y- and z-coordinate directions.
character(len=name_len) mpiiofs
integer, dimension(:), allocatable start_idx
Starting cell-center index of local processor in global grid.
integer sys_size
Number of unknowns in the system of equations.
real(wp), dimension(:), allocatable weight
real(wp), dimension(:), allocatable k_v
type(simplex_noise_params) simplex_params
integer muscl_order
Order of accuracy for the MUSCL reconstruction.
real(wp) ptgalpha_eps
trigger parameter for the pTg relaxation procedure, phase change model
integer relax_model
Relax Model.
integer num_patches
Number of patches composing initial condition.
logical ib
Turn immersed boundaries on.
integer num_bc_patches
Number of boundary condition patches.
integer tensor_size
Number of components in the nonsymmetric tensor.
type(bc_patch_parameters), dimension(num_bc_patches_max) patch_bc
Boundary condition patch parameters.
type(int_bounds_info), dimension(1:3) idwbuff
integer model_eqns
Multicomponent flow model.
integer buff_size
Number of ghost cells for boundary condition storage.
integer precision
Precision of output files.
logical hyperelasticity
activate hyperelasticity
real(wp), dimension(:), allocatable z_cb
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Stiffened gas EOS parameters and Reynolds numbers per fluid.
type(vec3_dt), dimension(:), allocatable airfoil_grid_u
integer num_dims
Number of spatial dimensions.
integer shear_bc_flip_num
Number of shear stress components to reflect for boundary conditions.
real(wp), dimension(:), allocatable r0
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
Locations of cell-centers (cc) in x-, y- and z-directions, respectively.
real(wp), dimension(:), allocatable k_g
integer mixlayer_perturb_nk
Number of Fourier modes for perturbation with mixlayer_perturb flag.
type(chemistry_parameters) chem_params
integer num_vels
Number of velocity components (different from num_dims for mhd).
integer perturb_sph_fluid
Fluid to be perturbed with perturb_sph flag.
real(wp), dimension(:), allocatable x_cb
Locations of cell-boundaries (cb) in x-, y- and z-directions, respectively.
logical relax
activate phase change
logical qbmm
Quadrature moment method.
logical old_grid
Use existing grid data.
real(wp) pi_fac
Factor for artificial pi_inf.
logical hyper_cleaning
Hyperbolic cleaning for MHD.
real(wp), dimension(num_fluids_max) fluid_rho
real(wp), dimension(:), allocatable z_cc
real(wp) pref
Reference parameters for Tait EOS.
real(wp) bx0
Constant magnetic field in the x-direction (1D).
integer b_size
Number of components in the b tensor.
logical stretch_z
Grid stretching flags for the x-, y- and z-coordinate directions.
logical adv_n
Solve the number density equation and compute alpha from number density.
integer num_procs
Number of processors.
character(len=path_len) case_dir
Case folder location.
type(vec3_dt), dimension(:), allocatable airfoil_grid_l
type(ic_patch_parameters), dimension(num_patches_max) patch_icpp
IC patch parameters (max: num_patches_max).
integer weno_order
Order of accuracy for the WENO reconstruction.
logical mhd
Magnetohydrodynamics.
integer shear_num
Number of shear stress components.
integer, dimension(3) shear_indices
Indices of the stress components that represent shear stress.
logical parallel_io
Format of the data files.
integer nmom
Number of carried moments.
type(cell_num_bounds) cells_bounds
logical down_sample
Down-sample the output data.
real(wp), dimension(:), allocatable mass_g0
logical file_per_process
type of data output
real(wp) palpha_eps
trigger parameter for the p relaxation procedure, phase change model
integer t_step_start
Existing IC/grid folder.
logical elasticity
elasticity modeling, true for hyper or hypo
type(mpi_io_var), public mpi_io_data
real(wp) mixlayer_vel_coef
Coefficient for the hyperbolic tangent streamwise velocity profile.
impure subroutine s_initialize_parallel_io
Configure MPI parallel I/O settings and allocate processor coordinate arrays.
logical mpp_lim
Alpha limiter.
real(wp), dimension(:), allocatable omegan
integer, dimension(:,:,:), allocatable logic_grid
integer igr_order
IGR reconstruction order.
integer muscl_polyn
Degree of the MUSCL polynomials (polyn).
real(wp), dimension(:), allocatable re_trans_c
type(subgrid_bubble_physical_parameters) bub_pp
real(wp) rhorv
standard deviations in R/V
logical relativity
Relativity for RMHD.
real(wp), dimension(:), allocatable pe_t
type(eqn_idx_info) eqn_idx
All conserved-variable equation index ranges and scalars.
real(wp), dimension(:), allocatable mass_v0
integer num_ibs
Number of immersed boundaries.
logical mixlayer_vel_profile
Set hyperbolic tangent streamwise velocity profile.
type(ib_patch_parameters), dimension(num_ib_patches_max) patch_ib
Immersed boundary patch parameters.
integer(kind=8) nglobal
Global number of cells in the domain.
logical mixlayer_perturb
Superimpose instability waves to surrounding fluid flow.
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.
subroutine, public s_configure_coordinate_bounds(recon_type, weno_polyn, muscl_polyn, igr_order, buff_size, idwint, idwbuff, viscous, bubbles_lagrange, m, n, p, num_dims, igr, ib)
Compute ghost-cell buffer size and set interior/buffered coordinate index bounds.
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-.
All conserved-variable equation indices, computed at startup from model_eqns and enabled features....
Derived type adding initial condition (ic) patch parameters as attributes NOTE: The requirements for ...
Integer bounds for variables.
Derived type annexing the physical parameters (PP) of the fluids. These include the specific heat rat...
Derived type for bubble variables pb and mv at quadrature nodes (qbmm).
QBMM moment index mappings - separate from bub beg/end so eqn_idx contains no allocatables.
Derived type annexing the physical parameters required for sub-grid bubble models.
Generic 3-component vector (e.g., spatial coordinates or field components) Named _dt (derived types: ...