Skip to content

Commit

Permalink
MD's xmas present: EB Godunov (#731)
Browse files Browse the repository at this point in the history
Co-authored-by: Jon Rood <[email protected]>
Co-authored-by: Bruce Perry <[email protected]>
Co-authored-by: Bruce Perry <[email protected]>
  • Loading branch information
4 people authored Jan 5, 2024
1 parent 48f1b3d commit a0d0d32
Show file tree
Hide file tree
Showing 18 changed files with 3,365 additions and 359 deletions.
5 changes: 5 additions & 0 deletions Docs/sphinx/Algorithms.rst
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,11 @@ than PPM simulations.
Three dimensional energy spectrum at :math:`t = 5\tau`. Solid red: PPM at :math:`N=128^3`; dashed green: MOL at :math:`N=128^3`; dot-dashed blue: PPM at :math:`N=512^3`; dotted orange: MOL at :math:`N=512^3`; dashed black: spectral code.


Advection schemes and EB
~~~~~~~~~~~~~~~~~~~~~~~~

The two main advection schemes (PLM and MOL) described above support the use of complex geometry in the domain (as implemented using the :ref:`Embedded Boundary (EB) formulation <EB>`). While the PLM advection scheme is preferred numerically (less dissipative scheme), the PLM implementation with EB is a recent addition and has not had the same extensive testing as the MOL scheme with EB. Both PLM and MOL may also have issues when the EB intersects the boundary at an angle (this remains to be solved).


Diffusion
---------
Expand Down
File renamed without changes.
71 changes: 71 additions & 0 deletions Exec/RegTests/EB-C1/eb-symmetry-plm.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# ------------------ INPUTS TO MAIN PROGRAM -------------------
max_step = 100
stop_time = 0.000005

# PROBLEM SIZE & GEOMETRY
geometry.is_periodic = 0 0 0
geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2=>spherical
geometry.prob_lo = -1.0 -1.0 -1.0
geometry.prob_hi = 1.0 1.0 1.0
# use with single level
amr.n_cell = 16 16 16

# >>>>>>>>>>>>> BC FLAGS <<<<<<<<<<<<<<<<
# 0 = Interior 3 = Symmetry
# 1 = Inflow 4 = SlipWall
# 2 = Outflow 5 = NoSlipWall
# >>>>>>>>>>>>> BC FLAGS <<<<<<<<<<<<<<<<
pelec.lo_bc = "Hard" "Hard" "Hard"
pelec.hi_bc = "Hard" "Hard" "Hard"

# WHICH PHYSICS
pelec.do_hydro = 1
pelec.diffuse_vel = 1
pelec.diffuse_temp = 1
pelec.do_mol = 0
pelec.do_react = 0
pelec.do_mms = 1
pelec.masa_solution_name = ad_cns_3d_les_sph

# TIME STEP CONTROL
pelec.cfl = 0.1 # cfl number for hyperbolic system
pelec.init_shrink = 0.3 # scale back initial timestep
pelec.change_max = 1.1 # max time step growth
pelec.dt_cutoff = 5.e-20 # level 0 timestep below which we halt

# DIAGNOSTICS & VERBOSITY
pelec.sum_interval = 1 # timesteps between computing mass
pelec.v = 1 # verbosity in PeleC.cpp
amr.v = 1 # verbosity in Amr.cpp
amr.data_log = datlog mmslog
#amr.grid_log = grdlog # name of grid logging file

# REFINEMENT / REGRIDDING
amr.max_level = 0 # maximum level number allowed
#amr.max_level = 1 # maximum level number allowed
#amr.ref_ratio = 2 2 2 2 # refinement ratio
#amr.regrid_int = 2 2 2 2 # how often to regrid
amr.blocking_factor = 8 # block factor in grid generation
amr.max_grid_size = 32
amr.n_error_buf = 2 2 2 2 # number of buffer cells in error est

# CHECKPOINT FILES
amr.check_file = chk # root name of checkpoint file
amr.check_int = 1000 # number of timesteps between checkpoints

# PLOTFILES
amr.plot_file = plt # root name of plotfile
amr.plot_int = 1000 # number of timesteps between plotfiles
amr.plot_vars = density Temp
amr.derive_plot_vars = x_velocity y_velocity z_velocity magvel magvort pressure rhommserror ummserror vmmserror wmmserror pmmserror

# PROBLEM PARAMETERS
prob.rho_x_fact = 0.0

# EB
eb2.geom_type = sphere
eb2.sphere_radius = 0.25
eb2.sphere_center = 0.0 0.0 0.0
eb2.sphere_has_fluid_inside = 0
pelec.eb_isothermal = 0
ebd.boundary_grad_stencil_type=0
71 changes: 71 additions & 0 deletions Exec/RegTests/EB-C1/ebmms-2.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# ------------------ INPUTS TO MAIN PROGRAM -------------------
max_step = 100
stop_time = 0.000005

# PROBLEM SIZE & GEOMETRY
geometry.is_periodic = 0 0 0
geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2=>spherical
geometry.prob_lo = -1.0 -1.0 -1.0
geometry.prob_hi = 1.0 1.0 1.0
# use with single level
amr.n_cell = 16 16 16

# >>>>>>>>>>>>> BC FLAGS <<<<<<<<<<<<<<<<
# 0 = Interior 3 = Symmetry
# 1 = Inflow 4 = SlipWall
# 2 = Outflow 5 = NoSlipWall
# >>>>>>>>>>>>> BC FLAGS <<<<<<<<<<<<<<<<
pelec.lo_bc = "Hard" "Hard" "Hard"
pelec.hi_bc = "Hard" "Hard" "Hard"

# WHICH PHYSICS
pelec.do_hydro = 1
pelec.diffuse_vel = 1
pelec.diffuse_temp = 1
pelec.do_mol = 0
pelec.do_react = 0
pelec.do_mms = 1
pelec.masa_solution_name = ad_cns_3d_les_sph

# TIME STEP CONTROL
pelec.cfl = 0.1 # cfl number for hyperbolic system
pelec.init_shrink = 0.3 # scale back initial timestep
pelec.change_max = 1.1 # max time step growth
pelec.dt_cutoff = 5.e-20 # level 0 timestep below which we halt

# DIAGNOSTICS & VERBOSITY
pelec.sum_interval = 1 # timesteps between computing mass
pelec.v = 1 # verbosity in PeleC.cpp
amr.v = 1 # verbosity in Amr.cpp
amr.data_log = datlog mmslog
#amr.grid_log = grdlog # name of grid logging file

# REFINEMENT / REGRIDDING
amr.max_level = 0 # maximum level number allowed
#amr.max_level = 1 # maximum level number allowed
#amr.ref_ratio = 2 2 2 2 # refinement ratio
#amr.regrid_int = 2 2 2 2 # how often to regrid
amr.blocking_factor = 8 # block factor in grid generation
amr.max_grid_size = 64
amr.n_error_buf = 2 2 2 2 # number of buffer cells in error est

# CHECKPOINT FILES
amr.check_file = chk # root name of checkpoint file
amr.check_int = 1000 # number of timesteps between checkpoints

# PLOTFILES
amr.plot_file = plt # root name of plotfile
amr.plot_int = 1000 # number of timesteps between plotfiles
amr.plot_vars = density Temp
amr.derive_plot_vars = x_velocity y_velocity z_velocity magvel magvort pressure rhommserror ummserror vmmserror wmmserror pmmserror

# PROBLEM PARAMETERS

# EB
eb2.geom_type = sphere
eb2.sphere_radius = 0.25
eb2.sphere_center = 0.0 0.0 0.0
eb2.sphere_has_fluid_inside = 0
pelec.eb_boundary_T = 300.
pelec.eb_isothermal = 1
ebd.boundary_grad_stencil_type=0
File renamed without changes.
90 changes: 90 additions & 0 deletions Exec/RegTests/EB-C8/eb-c8-rere-plm.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# ------------------ INPUTS TO MAIN PROGRAM -------------------
max_step = 10000
stop_time = 1.959e-6 #final time is 0.2*L*sqrt(rhoL/pL)

# PROBLEM SIZE & GEOMETRY
geometry.is_periodic = 0 0 1
geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2=>spherical
geometry.prob_lo = 0.0 -0.13 0.0
geometry.prob_hi = 0.87 0.653 0.0435
amr.n_cell = 160 144 8

# >>>>>>>>>>>>> BC KEYWORDS <<<<<<<<<<<<<<<<<<<<<<
# Interior, UserBC, Symmetry, SlipWall, NoSlipWall
# >>>>>>>>>>>>> BC KEYWORDS <<<<<<<<<<<<<<<<<<<<<<
pelec.lo_bc = "FOExtrap" "NoSlipWall" "Interior"
pelec.hi_bc = "FOExtrap" "NoSlipWall" "Interior"

# WHICH PHYSICS
pelec.do_hydro = 1
pelec.do_mol = 0
pelec.diffuse_vel = 0
pelec.diffuse_temp = 0
pelec.diffuse_spec = 0
pelec.do_react = 0
pelec.diffuse_enth = 0

# TIME STEP CONTROL
pelec.dt_cutoff = 5.e-20 # level 0 timestep below which we halt
pelec.cfl = 0.8 # cfl number for hyperbolic system
pelec.init_shrink = 0.8 # scale back initial timestep
pelec.change_max = 1.05 # scale back initial timestep

# DIAGNOSTICS & VERBOSITY
pelec.sum_interval = 1 # timesteps between computing mass
pelec.v = 1 # verbosity in PeleC.cpp
amr.v = 1 # verbosity in Amr.cpp
amr.data_log = datlog

# REFINEMENT / REGRIDDING
amr.max_level = 1 # maximum level number allowed
amr.ref_ratio = 2 2 2 2 # refinement ratio
amr.regrid_int = 2 2 2 2 # how often to regrid
amr.n_error_buf = 0 0 0 0 # number of buffer cells in error est
amr.blocking_factor = 8 # block factor in grid generation
amr.max_grid_size = 64
amr.grid_eff = 0.99

# CHECKPOINT FILES
amr.checkpoint_files_output = 0
amr.check_file = chk # root name of checkpoint file
amr.check_int = -1 # number of timesteps between checkpoints

# PLOTFILES
amr.plot_files_output = 1
amr.plot_file = plt # root name of plotfile
amr.plot_int = 100 # number of timesteps between plotfiles
amr.derive_plot_vars = ALL

# PROBLEM PARAMETERS
prob.p_l = 1e7
prob.rho_l = 9.6e-4
prob.p_r = 1e6
prob.rho_r = 1.2e-4
prob.angle = 30.0
prob.left_gas = N2
prob.right_gas = HE

# Problem setup
pelec.eb_boundary_T = 300.
pelec.eb_isothermal = 0

# TAGGING
tagging.denerr = 1e20
tagging.dengrad = 4e-5
tagging.max_denerr_lev = 3
tagging.max_dengrad_lev = 3
tagging.tempgrad = 50.0
tagging.max_tempgrad_lev = 3
tagging.max_vfracerr_lev = 0
tagging.eb_refine_type = "adaptive"
tagging.max_eb_refine_lev = 0
tagging.min_eb_refine_lev = 0

eb2.geom_type = "rotated_box"
eb2.box_lo = -10.0 -0.172 -10.0
eb2.box_hi = 10.0 0.172 10.0
eb2.box_rotation = 30.0
eb2.box_rotation_axe = 2
eb2.box_has_fluid_inside = 1
ebd.boundary_grad_stencil_type = 0
84 changes: 84 additions & 0 deletions Exec/RegTests/MassCons/masscons-mol-eb.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# ------------------ INPUTS TO MAIN PROGRAM -------------------
max_step = 30
stop_time = 0.2

# PROBLEM SIZE & GEOMETRY
geometry.is_periodic = 0 0 0
geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2=>spherical
geometry.prob_lo = -0.5 -0.5 -0.5
geometry.prob_hi = 0.5 0.5 0.5
amr.n_cell = 8 8 8

# >>>>>>>>>>>>> BC KEYWORDS <<<<<<<<<<<<<<<<<<<<<<
# Interior, UserBC, Symmetry, SlipWall, NoSlipWall
# >>>>>>>>>>>>> BC KEYWORDS <<<<<<<<<<<<<<<<<<<<<<

pelec.lo_bc = "SlipWall" "NoSlipWall" "Symmetry"
pelec.hi_bc = "Hard" "Hard" "Hard"
prob.wall_type = 1 0 1

# WHICH PHYSICS
pelec.mol_iorder = 2
pelec.do_hydro = 1
pelec.do_mol = 1
pelec.diffuse_vel = 1
pelec.diffuse_temp = 1
pelec.diffuse_spec = 1
pelec.do_react = 0
pelec.diffuse_enth = 1
pelec.add_ext_src = 0
pelec.external_forcing = 0.0 0.0 0.0

transport.const_viscosity = 1
transport.const_conductivity = 2.7271624e+04

# TIME STEP CONTROL
pelec.cfl = 0.1 # cfl number for hyperbolic system
pelec.init_shrink = 1.0 # scale back initial timestep
pelec.change_max = 1.05 # scale back initial timestep
pelec.dt_cutoff = 5.e-20 # level 0 timestep below which we halt

# DIAGNOSTICS & VERBOSITY
pelec.sum_interval = 1 # timesteps between computing mass
pelec.v = 1 # verbosity in PeleC.cpp
amr.v = 1 # verbosity in Amr.cpp
amr.data_log = datlog

# REFINEMENT / REGRIDDING
amr.max_level = 0 # maximum level number allowed
#amr.ref_ratio = 2 2 2 2 # refinement ratio
#amr.regrid_int = 2 2 2 2 # how often to regrid
amr.blocking_factor = 8 # block factor in grid generation
amr.max_grid_size = 64
amr.n_error_buf = 12 8 2 2 # number of buffer cells in error est

# CHECKPOINT FILES
amr.checkpoint_files_output = 0
amr.check_file = chk # root name of checkpoint file
amr.check_int = 500 # number of timesteps between checkpoints

# PLOTFILES
amr.plot_files_output = 0
amr.plot_file = plt # root name of plotfile
amr.plot_int = -1 # number of timesteps between plotfiles
amr.plot_vars = density Temp
amr.derive_plot_vars = x_velocity y_velocity z_velocity magvel magvort pressure
pelec.plot_rhoy = 0
pelec.plot_massfrac = 1

# PROBLEM PARAMETERS
prob.T_mean = 750.0
prob.u0 = 10000.0
prob.v0 = 8000.0
prob.w0 = 5000.0

# Problem setup
eb2.geom_type = sphere
eb2.sphere_center = 0.0 0.0 0.0
eb2.sphere_radius = 0.2
eb2.sphere_has_fluid_inside = 0
pelec.eb_isothermal = 0

#amrex.fpe_trap_invalid = 1
#amrex.fpe_trap_zero = 1
#amrex.fpe_trap_overflow = 1
Loading

0 comments on commit a0d0d32

Please sign in to comment.