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 logical :: dummy !< AMDFlang workaround for case-optimization + GPU-kernel bug
201
202contains
203
204 !> Assigns default values to user inputs prior to reading them in. This allows for an easier consistency check of these
205 !! parameters once they are read from the input file.
207
208 integer :: i !< Generic loop operator
209 ! Logistics
210
211 case_dir = '.'
212 old_grid = .false.
213 old_ic = .false.
214 t_step_old = dflt_int
215 t_step_start = dflt_int
216
217 cfl_adap_dt = .false.
218 cfl_const_dt = .false.
219 cfl_dt = .false.
220 n_start = dflt_int
221
222 ! Computational domain parameters
223 m = dflt_int; n = 0; p = 0
224
226
227 cyl_coord = .false.
228
229 x_domain%beg = dflt_real
230 x_domain%end = dflt_real
231 y_domain%beg = dflt_real
232 y_domain%end = dflt_real
233 z_domain%beg = dflt_real
234 z_domain%end = dflt_real
235
236 stretch_x = .false.
237 stretch_y = .false.
238 stretch_z = .false.
239
240 a_x = dflt_real
241 a_y = dflt_real
242 a_z = dflt_real
243 loops_x = 1
244 loops_y = 1
245 loops_z = 1
246 x_a = dflt_real
247 x_b = dflt_real
248 y_a = dflt_real
249 y_b = dflt_real
250 z_a = dflt_real
251 z_b = dflt_real
252
253 ! Simulation algorithm parameters
254 model_eqns = dflt_int
255 relax = .false.
256 relax_model = dflt_int
257 palpha_eps = dflt_real
258 ptgalpha_eps = dflt_real
259 num_fluids = dflt_int
260 recon_type = weno_type
261 weno_order = dflt_int
262 igr = .false.
263 igr_order = dflt_int
264 muscl_order = dflt_int
265
266 hypoelasticity = .false.
267 hyperelasticity = .false.
268 elasticity = .false.
269 pre_stress = .false.
270 b_size = dflt_int
271 tensor_size = dflt_int
272 cont_damage = .false.
273 hyper_cleaning = .false.
274
275 mhd = .false.
276 relativity = .false.
277
278 bc_x%beg = dflt_int; bc_x%end = dflt_int
279 bc_y%beg = dflt_int; bc_y%end = dflt_int
280 bc_z%beg = dflt_int; bc_z%end = dflt_int
281
282# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
283# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
284 bc_x%vb1 = 0._wp
285 bc_x%ve1 = 0._wp
286# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
287 bc_x%vb2 = 0._wp
288 bc_x%ve2 = 0._wp
289# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
290 bc_x%vb3 = 0._wp
291 bc_x%ve3 = 0._wp
292# 276 "/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# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
295 bc_y%vb1 = 0._wp
296 bc_y%ve1 = 0._wp
297# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
298 bc_y%vb2 = 0._wp
299 bc_y%ve2 = 0._wp
300# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
301 bc_y%vb3 = 0._wp
302 bc_y%ve3 = 0._wp
303# 276 "/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# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
306 bc_z%vb1 = 0._wp
307 bc_z%ve1 = 0._wp
308# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
309 bc_z%vb2 = 0._wp
310 bc_z%ve2 = 0._wp
311# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
312 bc_z%vb3 = 0._wp
313 bc_z%ve3 = 0._wp
314# 276 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
315# 277 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
316
317# 279 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
318 bc_x%isothermal_in = .false.
319 bc_x%isothermal_out = .false.
320 bc_x%Twall_in = dflt_real
321 bc_x%Twall_out = dflt_real
322# 279 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
323 bc_y%isothermal_in = .false.
324 bc_y%isothermal_out = .false.
325 bc_y%Twall_in = dflt_real
326 bc_y%Twall_out = dflt_real
327# 279 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
328 bc_z%isothermal_in = .false.
329 bc_z%isothermal_out = .false.
330 bc_z%Twall_in = dflt_real
331 bc_z%Twall_out = dflt_real
332# 284 "/home/runner/work/MFC/MFC/src/pre_process/m_global_parameters.fpp"
333
334 parallel_io = .false.
335 file_per_process = .false.
336 precision = 2
337 down_sample = .false.
338 viscous = .false.
339 bubbles_lagrange = .false.
340 mixlayer_vel_profile = .false.
341 mixlayer_vel_coef = 1._wp
342 mixlayer_perturb = .false.
344 mixlayer_perturb_k0 = 0.4446_wp
345 perturb_flow = .false.
346 perturb_flow_fluid = dflt_int
347 perturb_flow_mag = dflt_real
348 perturb_sph = .false.
349 perturb_sph_fluid = dflt_int
350 fluid_rho = dflt_real
351 elliptic_smoothing_iters = dflt_int
352 elliptic_smoothing = .false.
353
354 fft_wrt = .false.
355 dummy = .false.
356
357 simplex_perturb = .false.
358 simplex_params%perturb_vel(:) = .false.
359 simplex_params%perturb_vel_freq(:) = dflt_real
360 simplex_params%perturb_vel_scale(:) = dflt_real
361 simplex_params%perturb_vel_offset(:,:) = dflt_real
362 simplex_params%perturb_dens(:) = .false.
363 simplex_params%perturb_dens_freq(:) = dflt_real
364 simplex_params%perturb_dens_scale(:) = dflt_real
365 simplex_params%perturb_dens_offset(:,:) = dflt_real
366
367 ! Initial condition parameters
368 num_patches = dflt_int
369
370 do i = 1, num_patches_max
371 patch_icpp(i)%geometry = dflt_int
372 patch_icpp(i)%model_scale(:) = 1._wp
373 patch_icpp(i)%model_translate(:) = 0._wp
374 patch_icpp(i)%model_filepath(:) = dflt_char
375 patch_icpp(i)%model_spc = num_ray
376 patch_icpp(i)%model_threshold = ray_tracing_threshold
377 patch_icpp(i)%x_centroid = dflt_real
378 patch_icpp(i)%y_centroid = dflt_real
379 patch_icpp(i)%z_centroid = dflt_real
380 patch_icpp(i)%length_x = dflt_real
381 patch_icpp(i)%length_y = dflt_real
382 patch_icpp(i)%length_z = dflt_real
383 patch_icpp(i)%radius = dflt_real
384 patch_icpp(i)%epsilon = dflt_real
385 patch_icpp(i)%beta = dflt_real
386 patch_icpp(i)%normal = dflt_real
387 patch_icpp(i)%radii = dflt_real
388 patch_icpp(i)%alter_patch = .false.
389 patch_icpp(i)%alter_patch(0) = .true.
390 patch_icpp(i)%smoothen = .false.
391 patch_icpp(i)%smooth_patch_id = i
392 patch_icpp(i)%smooth_coeff = dflt_real
393 patch_icpp(i)%alpha_rho = dflt_real
394 patch_icpp(i)%rho = dflt_real
395 patch_icpp(i)%vel = dflt_real
396 patch_icpp(i)%pres = dflt_real
397 patch_icpp(i)%alpha = dflt_real
398 patch_icpp(i)%gamma = dflt_real
399 patch_icpp(i)%pi_inf = dflt_real
400 patch_icpp(i)%cv = 0._wp
401 patch_icpp(i)%qv = 0._wp
402 patch_icpp(i)%qvp = 0._wp
403 patch_icpp(i)%tau_e = 0._wp
404 patch_icpp(i)%Bx = dflt_real
405 patch_icpp(i)%By = dflt_real
406 patch_icpp(i)%Bz = dflt_real
407 patch_icpp(i)%a(2) = dflt_real
408 patch_icpp(i)%a(3) = dflt_real
409 patch_icpp(i)%a(4) = dflt_real
410 patch_icpp(i)%a(5) = dflt_real
411 patch_icpp(i)%a(6) = dflt_real
412 patch_icpp(i)%a(7) = dflt_real
413 patch_icpp(i)%a(8) = dflt_real
414 patch_icpp(i)%a(9) = dflt_real
415 patch_icpp(i)%non_axis_sym = .false.
416 patch_icpp(i)%fourier_cos(:) = 0._wp
417 patch_icpp(i)%fourier_sin(:) = 0._wp
418 patch_icpp(i)%modal_clip_r_to_min = .false.
419 patch_icpp(i)%modal_r_min = 1.e-12_wp
420 patch_icpp(i)%modal_use_exp_form = .false.
421 patch_icpp(i)%sph_har_coeff(:,:) = 0._wp
422
423 ! should get all of r0's and v0's
424 patch_icpp(i)%r0 = dflt_real
425 patch_icpp(i)%v0 = dflt_real
426
427 patch_icpp(i)%p0 = dflt_real
428 patch_icpp(i)%m0 = dflt_real
429
430 patch_icpp(i)%hcid = dflt_int
431
432 if (chemistry) then
433 patch_icpp(i)%Y(:) = 0._wp
434 end if
435 end do
436
438 bc_io = .false.
439
440 do i = 1, num_bc_patches_max
441 patch_bc(i)%geometry = dflt_int
442 patch_bc(i)%type = dflt_int
443 patch_bc(i)%dir = dflt_int
444 patch_bc(i)%loc = dflt_int
445 patch_bc(i)%centroid(:) = dflt_real
446 patch_bc(i)%length(:) = dflt_real
447 patch_bc(i)%radius = dflt_real
448 end do
449
450 ! Tait EOS
451 rhoref = dflt_real
452 pref = dflt_real
453
454 ! Bubble modeling
455 bubbles_euler = .false.
456 polytropic = .true.
457 polydisperse = .false.
458
459 thermal = dflt_int
460 r0ref = dflt_real
461 nb = dflt_int
462
463 eu = dflt_real
464 ca = dflt_real
465 re_inv = dflt_real
466 web = dflt_real
467 poly_sigma = dflt_real
468 surface_tension = .false.
469
470 adv_n = .false.
471
472 qbmm = .false.
473 nmom = 1
474 sigr = dflt_real
475 sigv = dflt_real
476 rhorv = 0._wp
477 dist_type = dflt_int
478
479 r_g = dflt_real
480 r_v = dflt_real
481 phi_vg = dflt_real
482 phi_gv = dflt_real
483 pe_c = dflt_real
484 tw = dflt_real
485
486 ! surface tension modeling
487 sigma = dflt_real
488 pi_fac = 1._wp
489
490 ! Immersed Boundaries
491 ib = .false.
492 num_ibs = dflt_int
493
494 do i = 1, num_ib_patches_max
495 patch_ib(i)%geometry = dflt_int
496 patch_ib(i)%x_centroid = dflt_real
497 patch_ib(i)%y_centroid = dflt_real
498 patch_ib(i)%z_centroid = dflt_real
499 patch_ib(i)%length_x = dflt_real
500 patch_ib(i)%length_y = dflt_real
501 patch_ib(i)%length_z = dflt_real
502 patch_ib(i)%radius = dflt_real
503 patch_ib(i)%theta = dflt_real
504 patch_ib(i)%c = dflt_real
505 patch_ib(i)%t = dflt_real
506 patch_ib(i)%m = dflt_real
507 patch_ib(i)%p = dflt_real
508 patch_ib(i)%slip = .false.
509
510 ! Proper default values for translating STL models
511 patch_ib(i)%model_scale(:) = 1._wp
512 patch_ib(i)%model_translate(:) = 0._wp
513 patch_ib(i)%model_rotate(:) = 0._wp
514 patch_ib(i)%model_filepath(:) = dflt_char
515 patch_ib(i)%model_spc = num_ray
516 patch_ib(i)%model_threshold = ray_tracing_threshold
517
518 ! Variables to handle moving immersed boundaries, defaulting to no movement
519 patch_ib(i)%moving_ibm = 0
520 patch_ib(i)%vel(:) = 0._wp
521 patch_ib(i)%angles(:) = 0._wp
522 patch_ib(i)%angular_vel(:) = 0._wp
523 patch_ib(i)%mass = dflt_real
524 patch_ib(i)%moment = dflt_real
525 patch_ib(i)%centroid_offset(:) = 0._wp
526
527 ! sets values of a rotation matrix which can be used when calculating rotations
528 patch_ib(i)%rotation_matrix = 0._wp
529 patch_ib(i)%rotation_matrix(1, 1) = 1._wp
530 patch_ib(i)%rotation_matrix(2, 2) = 1._wp
531 patch_ib(i)%rotation_matrix(3, 3) = 1._wp
532 patch_ib(i)%rotation_matrix_inverse = patch_ib(i)%rotation_matrix
533 end do
534
535 chem_params%gamma_method = 1
536 chem_params%transport_model = 1
537
538 ! Fluids physical parameters
539 do i = 1, num_fluids_max
540 fluid_pp(i)%gamma = dflt_real
541 fluid_pp(i)%pi_inf = dflt_real
542 fluid_pp(i)%cv = 0._wp
543 fluid_pp(i)%qv = 0._wp
544 fluid_pp(i)%qvp = 0._wp
545 fluid_pp(i)%G = 0._wp
546 end do
547
548 bx0 = dflt_real
549
550 ! Subgrid bubble parameters
551 bub_pp%R0ref = dflt_real; r0ref = dflt_real
552 bub_pp%p0ref = dflt_real; p0ref = dflt_real
553 bub_pp%rho0ref = dflt_real; rho0ref = dflt_real
554 bub_pp%T0ref = dflt_real; t0ref = dflt_real
555 bub_pp%ss = dflt_real; ss = dflt_real
556 bub_pp%pv = dflt_real; pv = dflt_real
557 bub_pp%vd = dflt_real; vd = dflt_real
558 bub_pp%mu_l = dflt_real; mu_l = dflt_real
559 bub_pp%mu_v = dflt_real; mu_v = dflt_real
560 bub_pp%mu_g = dflt_real; mu_g = dflt_real
561 bub_pp%gam_v = dflt_real; gam_v = dflt_real
562 bub_pp%gam_g = dflt_real; gam_g = dflt_real
563 bub_pp%M_v = dflt_real; m_v = dflt_real
564 bub_pp%M_g = dflt_real; m_g = dflt_real
565 bub_pp%k_v = dflt_real
566 bub_pp%k_g = dflt_real
567 bub_pp%cp_v = dflt_real; cp_v = dflt_real
568 bub_pp%cp_g = dflt_real; cp_g = dflt_real
569 bub_pp%R_v = dflt_real; r_v = dflt_real
570 bub_pp%R_g = dflt_real; r_g = dflt_real
571
573
574 !> Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the module
576
577 integer :: i, j, fac
578
579 if (recon_type == weno_type) then
580 weno_polyn = (weno_order - 1)/2
581 else if (recon_type == muscl_type) then
583 end if
584
585 ! Determining the layout of the state vectors and overall size of the system of equations, given the dimensionality and
586 ! choice of the equations of motion
587
588 ! Gamma/Pi_inf Model
589 if (model_eqns == 1) then
590 ! Setting number of fluids
591 num_fluids = 1
592
593 ! Annotating structure of the state and flux vectors belonging to the system of equations defined by the selected number
594 ! of spatial dimensions and the gamma/pi_inf model
595 eqn_idx%cont%beg = 1
596 eqn_idx%cont%end = eqn_idx%cont%beg
597 eqn_idx%mom%beg = eqn_idx%cont%end + 1
598 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
599 eqn_idx%E = eqn_idx%mom%end + 1
600 eqn_idx%adv%beg = eqn_idx%E + 1
601 eqn_idx%adv%end = eqn_idx%adv%beg + 1
602 eqn_idx%gamma = eqn_idx%adv%beg
603 eqn_idx%pi_inf = eqn_idx%adv%end
604 sys_size = eqn_idx%adv%end
605
606 ! Volume Fraction Model (5-equation model)
607 else if (model_eqns == 2) then
608 ! Annotating structure of the state and flux vectors belonging to the system of equations defined by the selected number
609 ! of spatial dimensions and the volume fraction model
610 eqn_idx%cont%beg = 1
611 eqn_idx%cont%end = num_fluids
612 eqn_idx%mom%beg = eqn_idx%cont%end + 1
613 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
614 eqn_idx%E = eqn_idx%mom%end + 1
615
616 if (igr) then
617 ! Volume fractions are stored in the indices immediately following the energy equation. IGR tracks a total of (N-1)
618 ! volume fractions for N fluids, hence the "-1" in eqn_idx%adv%end. If num_fluids = 1 then eqn_idx%adv%end <
619 ! eqn_idx%adv%beg, which skips all loops over the volume fractions since there is no volume fraction to track
620 eqn_idx%adv%beg = eqn_idx%E + 1
621 eqn_idx%adv%end = eqn_idx%E + num_fluids - 1
622 else
623 ! Volume fractions are stored in the indices immediately following the energy equation. WENO/MUSCL + Riemann tracks
624 ! a total of (N) volume fractions for N fluids, hence the lack of "-1" in eqn_idx%adv%end
625 eqn_idx%adv%beg = eqn_idx%E + 1
626 eqn_idx%adv%end = eqn_idx%E + num_fluids
627 end if
628
629 sys_size = eqn_idx%adv%end
630
631 if (bubbles_euler) then
632 eqn_idx%alf = eqn_idx%adv%end
633 else
634 eqn_idx%alf = 1
635 end if
636
637 if (bubbles_euler) then
638 eqn_idx%bub%beg = sys_size + 1
639 if (qbmm) then
640 if (nnode == 4) then
641 nmom = 6 !< Already set as a parameter
642 end if
643 eqn_idx%bub%end = eqn_idx%adv%end + nb*nmom
644 else
645 if (.not. polytropic) then
646 eqn_idx%bub%end = sys_size + 4*nb
647 else
648 eqn_idx%bub%end = sys_size + 2*nb
649 end if
650 end if
651 sys_size = eqn_idx%bub%end
652
653 if (adv_n) then
654 eqn_idx%n = eqn_idx%bub%end + 1
655 sys_size = eqn_idx%n
656 end if
657
658 allocate (qbmm_idx%rs(nb), qbmm_idx%vs(nb))
659 allocate (qbmm_idx%ps(nb), qbmm_idx%ms(nb))
660
661 if (qbmm) then
662 allocate (qbmm_idx%moms(nb, nmom))
663 allocate (qbmm_idx%fullmom(nb,0:nmom,0:nmom))
664
665 do i = 1, nb
666 do j = 1, nmom
667 qbmm_idx%moms(i, j) = eqn_idx%bub%beg + (j - 1) + (i - 1)*nmom
668 end do
669 qbmm_idx%fullmom(i, 0, 0) = qbmm_idx%moms(i, 1)
670 qbmm_idx%fullmom(i, 1, 0) = qbmm_idx%moms(i, 2)
671 qbmm_idx%fullmom(i, 0, 1) = qbmm_idx%moms(i, 3)
672 qbmm_idx%fullmom(i, 2, 0) = qbmm_idx%moms(i, 4)
673 qbmm_idx%fullmom(i, 1, 1) = qbmm_idx%moms(i, 5)
674 qbmm_idx%fullmom(i, 0, 2) = qbmm_idx%moms(i, 6)
675 qbmm_idx%rs(i) = qbmm_idx%fullmom(i, 1, 0)
676 end do
677 else
678 do i = 1, nb
679 if (.not. polytropic) then
680 fac = 4
681 else
682 fac = 2
683 end if
684
685 qbmm_idx%rs(i) = eqn_idx%bub%beg + (i - 1)*fac
686 qbmm_idx%vs(i) = qbmm_idx%rs(i) + 1
687
688 if (.not. polytropic) then
689 qbmm_idx%ps(i) = qbmm_idx%vs(i) + 1
690 qbmm_idx%ms(i) = qbmm_idx%ps(i) + 1
691 end if
692 end do
693 end if
694 end if
695
696 if (mhd) then
697 eqn_idx%B%beg = sys_size + 1
698 if (n == 0) then
699 eqn_idx%B%end = sys_size + 2 ! 1D: By, Bz
700 else
701 eqn_idx%B%end = sys_size + 3 ! 2D/3D: Bx, By, Bz
702 end if
703 sys_size = eqn_idx%B%end
704 end if
705
706 ! Volume Fraction Model (6-equation model)
707 else if (model_eqns == 3) then
708 ! Annotating structure of the state and flux vectors belonging to the system of equations defined by the selected number
709 ! of spatial dimensions and the volume fraction model
710 eqn_idx%cont%beg = 1
711 eqn_idx%cont%end = num_fluids
712 eqn_idx%mom%beg = eqn_idx%cont%end + 1
713 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
714 eqn_idx%E = eqn_idx%mom%end + 1
715 eqn_idx%adv%beg = eqn_idx%E + 1
716 eqn_idx%adv%end = eqn_idx%E + num_fluids
717 eqn_idx%int_en%beg = eqn_idx%adv%end + 1
718 eqn_idx%int_en%end = eqn_idx%adv%end + num_fluids
719 sys_size = eqn_idx%int_en%end
720 else if (model_eqns == 4) then
721 ! 4 equation model with subgrid bubbles_euler
722 eqn_idx%cont%beg = 1 ! one continuity equation
723 eqn_idx%cont%end = 1 ! num_fluids
724 eqn_idx%mom%beg = eqn_idx%cont%end + 1 ! one momentum equation in each direction
725 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
726 eqn_idx%E = eqn_idx%mom%end + 1 ! one energy equation
727 eqn_idx%adv%beg = eqn_idx%E + 1
728 eqn_idx%adv%end = eqn_idx%adv%beg ! one volume advection equation
729 eqn_idx%alf = eqn_idx%adv%end
730 sys_size = eqn_idx%alf ! eqn_idx%adv%end
731
732 if (bubbles_euler) then
733 eqn_idx%bub%beg = sys_size + 1
734 eqn_idx%bub%end = sys_size + 2*nb
735 if (.not. polytropic) then
736 eqn_idx%bub%end = sys_size + 4*nb
737 end if
738 sys_size = eqn_idx%bub%end
739
740 allocate (qbmm_idx%rs(nb), qbmm_idx%vs(nb))
741 allocate (qbmm_idx%ps(nb), qbmm_idx%ms(nb))
742 allocate (weight(nb), r0(nb))
743
744 do i = 1, nb
745 if (.not. polytropic) then
746 fac = 4
747 else
748 fac = 2
749 end if
750
751 qbmm_idx%rs(i) = eqn_idx%bub%beg + (i - 1)*fac
752 qbmm_idx%vs(i) = qbmm_idx%rs(i) + 1
753
754 if (.not. polytropic) then
755 qbmm_idx%ps(i) = qbmm_idx%vs(i) + 1
756 qbmm_idx%ms(i) = qbmm_idx%ps(i) + 1
757 end if
758 end do
759
760 if (nb == 1) then
761 weight(:) = 1._wp
762 r0(:) = 1._wp
763 else if (nb < 1) then
764 stop 'Invalid value of nb'
765 end if
766
767 if (polytropic) then
768 rhoref = 1._wp
769 pref = 1._wp
770 end if
771 end if
772 end if
773
774 if (model_eqns == 2 .or. model_eqns == 3) then
775 if (hypoelasticity .or. hyperelasticity) then
776 elasticity = .true.
777 eqn_idx%stress%beg = sys_size + 1
778 eqn_idx%stress%end = sys_size + (num_dims*(num_dims + 1))/2
779 if (cyl_coord) eqn_idx%stress%end = eqn_idx%stress%end + 1
780 ! number of stresses is 1 in 1D, 3 in 2D, 4 in 2D-Axisym, 6 in 3D
781 sys_size = eqn_idx%stress%end
782
783 ! shear stress index is 2 for 2D and 2,4,5 for 3D
784 if (num_dims == 1) then
785 shear_num = 0
786 else if (num_dims == 2) then
787 shear_num = 1
788 shear_indices(1) = eqn_idx%stress%beg - 1 + 2
791 ! Both x-dir and y-dir: flip tau_xy only
792 else if (num_dims == 3) then
793 shear_num = 3
794 shear_indices(1:3) = eqn_idx%stress%beg - 1 + (/2, 4, 5/)
796 shear_bc_flip_indices(1,1:2) = shear_indices((/1, 2/))
797 shear_bc_flip_indices(2,1:2) = shear_indices((/1, 3/))
798 shear_bc_flip_indices(3,1:2) = shear_indices((/2, 3/))
799 ! x-dir: flip tau_xy and tau_xz y-dir: flip tau_xy and tau_yz z-dir: flip tau_xz and tau_yz
800 end if
801 end if
802
803 if (hyperelasticity) then
804 ! number of entries in the symmetric btensor plus the jacobian
805 b_size = (num_dims*(num_dims + 1))/2 + 1
806 tensor_size = num_dims**2 + 1
807 eqn_idx%xi%beg = sys_size + 1
808 eqn_idx%xi%end = sys_size + num_dims
809 ! adding three more equations for the \xi field and the elastic energy
810 sys_size = eqn_idx%xi%end + 1
811 end if
812
813 if (surface_tension) then
814 eqn_idx%c = sys_size + 1
815 sys_size = eqn_idx%c
816 end if
817
818 if (cont_damage) then
819 eqn_idx%damage = sys_size + 1
820 sys_size = eqn_idx%damage
821 end if
822
823 if (hyper_cleaning) then
824 eqn_idx%psi = sys_size + 1
825 sys_size = eqn_idx%psi
826 end if
827 end if
828
829 if (chemistry) then
830 eqn_idx%species%beg = sys_size + 1
831 eqn_idx%species%end = sys_size + num_species
832 sys_size = eqn_idx%species%end
833 end if
834
837
838#ifdef MFC_MPI
839 if (qbmm .and. .not. polytropic) then
840 allocate (mpi_io_data%view(1:sys_size + 2*nb*nnode))
841 allocate (mpi_io_data%var(1:sys_size + 2*nb*nnode))
842 else
843 allocate (mpi_io_data%view(1:sys_size))
844 allocate (mpi_io_data%var(1:sys_size))
845 end if
846
847 if (.not. down_sample) then
848 do i = 1, sys_size
849 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
850 mpi_io_data%var(i)%sf => null()
851 end do
852 end if
853 if (qbmm .and. .not. polytropic) then
854 do i = sys_size + 1, sys_size + 2*nb*nnode
855 allocate (mpi_io_data%var(i)%sf(0:m,0:n,0:p))
856 mpi_io_data%var(i)%sf => null()
857 end do
858 end if
859#endif
860
861 ! Allocating grid variables for the x-direction
862 allocate (x_cc(0:m), x_cb(-1:m))
863 ! Allocating grid variables for the y- and z-directions
864 if (n > 0) then
865 allocate (y_cc(0:n), y_cb(-1:n))
866 if (p > 0) then
867 allocate (z_cc(0:p), z_cb(-1:p))
868 end if
869 end if
870
871 if (cyl_coord .neqv. .true.) then ! Cartesian grid
872 grid_geometry = 1
873 else if (cyl_coord .and. p == 0) then ! Axisymmetric cylindrical grid
874 grid_geometry = 2
875 else ! Fully 3D cylindrical grid
876 grid_geometry = 3
877 end if
878
879 if (.not. igr) then
880 allocate (logic_grid(0:m,0:n,0:p))
881 end if
882
884
885 !> Configure MPI parallel I/O settings and allocate processor coordinate arrays.
886 impure subroutine s_initialize_parallel_io
887
888#ifdef MFC_MPI
889 integer :: ierr !< Generic flag used to identify and report MPI errors
890#endif
891
892 num_dims = 1 + min(1, n) + min(1, p)
893
894 if (mhd) then
895 num_vels = 3
896 else
898 end if
899
900 allocate (proc_coords(1:num_dims))
901
902 if (parallel_io .neqv. .true.) return
903
904#ifdef MFC_MPI
905 ! Option for Lustre file system (Darter/Comet/Stampede)
906 write (mpiiofs, '(A)') '/lustre_'
907 mpiiofs = trim(mpiiofs)
908 call mpi_info_create(mpi_info_int, ierr)
909 call mpi_info_set(mpi_info_int, 'romio_ds_write', 'disable', ierr)
910
911 ! Option for UNIX file system (Hooke/Thomson) WRITE(mpiiofs, '(A)') '/ufs_' mpiiofs = TRIM(mpiiofs) mpi_info_int =
912 ! MPI_INFO_NULL
913
914 allocate (start_idx(1:num_dims))
915#endif
916
917 end subroutine s_initialize_parallel_io
918
919 !> Deallocate all global grid, index, and equation-of-state parameter arrays.
921
922 integer :: i
923
924 if (bubbles_euler) then
925 deallocate (qbmm_idx%rs, qbmm_idx%vs, qbmm_idx%ps, qbmm_idx%ms)
926 if (qbmm) deallocate (qbmm_idx%moms, qbmm_idx%fullmom)
927 end if
928
929 ! Deallocating grid variables for the x-direction
930
931 deallocate (x_cc, x_cb)
932 ! Deallocating grid variables for the y- and z-directions
933 if (n > 0) then
934 deallocate (y_cc, y_cb)
935 if (p > 0) then
936 deallocate (z_cc, z_cb)
937 end if
938 end if
939
940 deallocate (proc_coords)
941
942#ifdef MFC_MPI
943 if (parallel_io) then
944 deallocate (start_idx)
945 do i = 1, sys_size
946 mpi_io_data%var(i)%sf => null()
947 end do
948
949 deallocate (mpi_io_data%var)
950 deallocate (mpi_io_data%view)
951 end if
952#endif
953
955
956end 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
logical dummy
AMDFlang workaround for case-optimization + GPU-kernel bug.
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: ...