FlowRiemannShockTube
This is a 1D test to determine Riemann solver performance by comparing against the known solution for the shock tube problem. This implements Example 5.2 from Computational Gasdynamics by Culbert B. Laney (page 91):
Example 5.2
Find the solution to Roe’s approximate Riemann problem at \(t=0.01s\) if \(p_L=100,000 N/m^2\), \(\rho_L=1kg/m^3\), \(u_L=100m/s\) and \(p_R=10,000N/m^2\), \(\rho_R=0.125kg/m^3\), \(u_R=-50m/s\)
roe
Two-dimensional |
|
Serial |
|
Validated using check script |
|
./bin/hydro-2d-g++ tests/FlowRiemannShockTube/input
|
roe-fix1
Two-dimensional |
|
Serial |
|
Validated using check script |
|
./bin/hydro-2d-g++ tests/FlowRiemannShockTube/input solver.roe.entropy_fix="1"
|
roe-fix2
Two-dimensional |
|
Serial |
|
Validated using check script |
|
./bin/hydro-2d-g++ tests/FlowRiemannShockTube/input solver.roe.entropy_fix="2"
|
Input file (../../tests/FlowRiemannShockTube/input)
#@ [roe]
#@ exe=hydro
#@ dim=2
#@ [roe-fix1]
#@ exe=hydro
#@ dim=2
#@ args= solver.roe.entropy_fix=1
#@ [roe-fix2]
#@ exe=hydro
#@ dim=2
#@ args= solver.roe.entropy_fix=2
# alamo.program = hydro
### OUTPUT ###
plot_file = ./tests/FlowRiemannShockTube/output
### MESHING ###
#amr.plot_dt = 0.1
amr.plot_int = 1000
amr.max_level = 0
amr.max_grid_size = 500000
amr.blocking_factor = 2
amr.grid_eff = 0.8
amr.n_cell = 512 4 #160 20 0
# Uncomment to test AMR
#amr.max_level = 2
#amr.n_cell = 128 32 0
### DIMENSIONS ###
geometry.prob_lo = -5.0 -0.05859375 0.0 # [ m ]
geometry.prob_hi = 10.0 0.1171875 0.0 # [ m ]
geometry.is_periodic = 0 0 0
### TIME STEP ###
timestep = 1.0e-5
stop_time = 0.01
### ETA IC ###
#Ldot_0 = 0.0
m0.ic.constant.value = 0.0
u0.ic.constant.value = 0.0
q.ic.type = constant
q.ic.constant.value = 0.0
#deltapInterface.ic.type = expression
#deltapInterface.ic.expression.region0 = "0.0"
eta.ic.type = constant
eta.ic.constant.value = 1.0
### HYDRO PARAM ###
gamma = 1.4
cfl = 0.4
mu = 0.0
pref = 0.0
density.ic.type = expression
density.ic.expression.constant.rho_L = 1.0
density.ic.expression.constant.rho_R = 0.125
density.ic.expression.region0 = "rho_L*(x<0) + rho_R*(x>0)"
velocity.ic.type = expression
velocity.ic.expression.constant.v_L = 100
velocity.ic.expression.constant.v_R = -50
velocity.ic.expression.region0 = "v_L*(x<0) + v_R*(x>0)"
velocity.ic.expression.region1 = "0.0"
pressure.ic.type = expression
pressure.ic.expression.constant.p_L = 100000
pressure.ic.expression.constant.p_R = 10000
pressure.ic.expression.region0 = "p_L*(x<0) + p_R*(x>0)"
solid.density.ic.type = constant
solid.density.ic.constant.value = 0.0
solid.momentum.ic.type = constant
solid.momentum.ic.constant.value = 0.0
solid.energy.ic.type = constant
solid.energy.ic.constant.value = 0.0
### ETA BC ###
pf.eta.bc.constant.type.xlo = neumann
pf.eta.bc.constant.type.xhi = neumann
pf.eta.bc.constant.type.ylo = neumann
pf.eta.bc.constant.type.yhi = neumann
### HYDRO BC ###
density.bc.constant.type.xhi = neumann
density.bc.constant.type.xlo = neumann
density.bc.constant.type.ylo = neumann
density.bc.constant.type.yhi = neumann
energy.bc.constant.type.xhi = neumann
energy.bc.constant.type.xlo = neumann
energy.bc.constant.type.ylo = neumann
energy.bc.constant.type.yhi = neumann
momentum.bc.constant.type.xhi = neumann neumann
momentum.bc.constant.type.xlo = neumann neumann
momentum.bc.constant.type.ylo = neumann neumann
momentum.bc.constant.type.yhi = neumann neumann
### HYDRO REFINEMENT CRITERIA ###
eta_refinement_criterion = 100000.1
#TODO
momentum.bc.constant.type.xlo = neumann
momentum.bc.constant.type.xhi = neumann
momentum.bc.constant.type.ylo = neumann
momentum.bc.constant.type.yhi = neumann
energy.bc.constant.type.xlo = neumann
energy.bc.constant.type.xhi = neumann
energy.bc.constant.type.ylo = neumann
energy.bc.constant.type.yhi = neumann