Getting an Initial Flow Solution for Hypersonic IXV Case

I’m having issues getting a Mach = 6.0 flow around the IXV reentry vehicle case going. I’m using the tvd-rk3 explicit time integration scheme with the entropy-filter shock-capturing. I’ve backed off the solution to first-order to get the bow shock set up and stable before transitioning to a dual time-step integration scheme at p3, but I’m having difficulty even getting this initial solution started.

My mesh consists of extruded prisms for the near-wall mesh and tetrahedra for the off-body elements that have been elevated to q4 and exported as a Gmsh formatted file. (It will be nice once non-affine pyramid quadrature is finally implemented into the code). My *.ini configuration file is provided below. I can send along the mesh file if anyone has a link where I can upload/transfer the file. The flow solution runs until about t = 5.0e-7 before I encounter NaNs. I’ve tried lowering the time step further, switching to artificial-viscosity, non-dimensionalizing the fluid state, and so forth, but I can’t seem to get the solution started and was hoping for some additional suggestions that I might try.

[backend]
precision = double
;memory-model = large

[backend-cuda]
device-id = local-rank
mpi-type = standard

[constants]
; =====================================================================
; ORIGINAL DIMENSIONAL REFERENCE VALUES (SI units) — kept for traceability
; These are the exact freestream conditions. Use them for post-processing,
; re-dimensionalization of results, or to recreate a dimensional run.
rho_dim = 0.01666817757218692   ; [kg/m³]
alpha   = 20.99057              ; [°]
U_dim   = 840.08067332608       ; [m/s]
Ux_dim  = 784.3324121663127     ; [m/s]
Uz_dim  = 300.92890343297614    ; [m/s]
p_dim   = 233.3993107404711     ; [Pa]
mu_dim  = 3.1255834459735388e-6 ; [Pa-s]
L_dim   = 5.04                  ; [m]  (IXV reference length)
Tref    = 273.15                ; [K]
Ts      = 110.4                 ; [K]
Tw      = 300.0                 ; [K]
rgas    = 287.058               ; [J kg⁻¹ K⁻¹]
; =====================================================================

; Reference scales chosen for non-dimensionalization
rho_ref = rho_dim
U_ref   = U_dim
L_ref   = L_dim
p_ref   = rho_ref * U_ref**2        ; dynamic-pressure scaling

; =====================================================================
; NON-DIMENSIONAL QUANTITIES USED BY THE SOLVER
gamma   = 1.4
Pr      = 0.72
cp      = 1004.703                  ; gamma * rgas / (gamma - 1.0)
mu      = 4.428854875283447e-8      ; mu_dim / (rho_ref * U_ref * L_ref)
rho_inf = 1.0                       ; rho_dim / rho_ref
U_inf   = 1.0                       ; U_dim / U_ref
p_inf   = 0.01984126984126984       ; p_dim / p_ref
Ux      = 0.9336393956796474        ; Ux_dim / U_ref (cos α)
Uz      = 0.3582142917792963        ; Uz_dim / U_ref (sin α)
cpTref  = 0.38886326363263635       ; cp * Tref / (U_ref**2)
cpTs    = 0.1571682383490502        ; cp * Ts / (U_ref**2)
cpTw    = 0.4270876042093755        ; cp * Tw / (U_ref**2)
; =====================================================================

[solver] 
system = navier-stokes
order = 1
viscosity-correction = sutherland
shock-capturing = entropy-filter
anti-alias = none

[solver-artificial-viscosity]
max-artvisc = 2.0           ; up to 1.0 for very strong shocks
s0 =  0.01
kappa = 30.0

[solver-entropy-filter]     ; (cannot be simultaneously active)
d-min = 1e-8
p-min = 1e-8
e-tol = 1e-4
niters = 20
formulation = nonlinear

[soln-filter]
nsteps = 1                  ; 1 for aggressive startup control
cutoff = 0
order = 16                  ; safe for p = 1; higher values are harmless
alpha = 48.0

[solver-time-integrator]    ; phase 1 / robust startup explicit TVD-RK3
formulation = std
scheme = tvd-rk3
tstart = 0.0
tend = 2.0e-5
dt = 2.0e-9                 ; conservative acoustic CFL ≈ 0.1-0.2 in small cells
controller = none

[solver-interfaces]
riemann-solver = rusanov
ldg-beta = 0.5
ldg-tau = 0.1

[solver-elements-tet]
soln-pts = shunn-ham
quad-deg = 9
quad-pts = shunn-ham

[solver-elements-pri]
soln-pts = williams-shunn~gauss-legendre
quad-deg = 10
quad-pts = williams-shunn~gauss-legendre

[solver-interfaces-tri]
flux-pts = williams-shunn
quad-deg = 9
quad-pts = williams-shunn

[solver-interfaces-quad]
flux-pts = gauss-legendre
quad-deg = 9
quad-pts = gauss-legendre

[soln-ics]
rho = rho_inf
u = Ux
v = 0.0
w = Uz
p = p_inf

[soln-bcs-farfield]
type = char-riem-inv
rho = rho_inf
u = Ux
v = 0.0
w = Uz
p = p_inf

[soln-bcs-y-symmetry]
type = slp-adia-wall

[soln-bcs-forebody]
type = no-slp-isot-wall
u = 0.0
v = 0.0
w = 0.0
cpTw = cpTw

[soln-bcs-elevator]
type = no-slp-isot-wall
u = 0.0
v = 0.0
w = 0.0
cpTw = cpTw

[soln-plugin-fluidforce-forebody]
nsteps = 100
file = forces-forebody.csv
file-format = csv
file-header = true
morigin = (0.506349, 0, 0)
quad-deg = 8

[soln-plugin-fluidforce-elevator]
nsteps = 100
file = forces-elevator.csv
file-format = csv
file-header = true
morigin = (0.506349, 0, 0)
quad-deg = 8

[soln-plugin-residual]
nsteps = 1
file = residuals.csv
file-header = true
norm = 2

[soln-plugin-writer]
dt-out = 2.0e-6
basedir = .
basename = ixv-soln-{t:.6f}
write-gradients = true
async-timeout = 0

[soln-plugin-nancheck]
nsteps = 50

Thanks!

1 Like

Hi Zach,

RE:

“to a dual time-step integration scheme”

what dual time stepping scheme do you switch to? Have you tried just sticking with standard explicit time stepping?

Also, did you try modifying any of the [solver-entropy-filter] parameters?

Regards

Peter

Hi Peter,

Switching to dual time stepping was going to be my strategy (phase 2 so to speak) for converging the solution once an initial solution had been obtained that I could restart from and initial transients settled in order to take advantage of local time stepping and p-multigrid.

However, I never got that far. I’m stuck at trying to get an initial solution using explicit time stepping at p = 1. The solution diverges roughly at the same solution time as the bow shock begins to form regardless of shock capturing scheme or dt interval, which has been chosen to be pretty conservative already.

Best Regards,

Zach

Thanks Zach, understood. And just to check, did you try varying the parameters for the entropy filtering? e.g. e-tol, p-tol etc. And yes, it would be good to have a look at the mesh. Can you upload it somewhere for me to download?