Hi everyone,
I am running a 3D simulation of flow around an axisymmetric slender body using PyFR.
The geometry has a sharp pointed nose and overall length-to-diameter ratio of (L/D = 4.0).
The baseline case is:
- P3
- Mach 0.1
- Re_D=200,000
- Angle of attack = 50 degrees
This case runs without any issues. However, when I increase the Mach number to 0.4, while keeping the Reynolds number, angle of attack, polynomial order, and all other conditions the same, the simulation diverges.
I also tried the following cases:
- P2, Mach 0.4, AoA = 50 degrees: stable
- P3, Mach 0.4, AoA = 40 degrees: stable
I also attempted to gradually increase the polynomial order from P1 to P2 and then to P3, but the P3 case at 50 degrees still diverges.
I know that the divergence might be caused by the mesh resolution or quality.
But since the Reynolds number is fixed, I expected the mesh requirements would not change significantly when just increasing the Mach number 0.1 to 0.4.
Of course, the Mach number reaches the transonic or supersonic regime, additional stabilization would be consider, However, in this case, Mach 0.4 is still subsonic.
Does anyone have any suggestions on what I should check?
I have attached the input .ini files for reference.
Best regards, uk
[backend]
precision = double
rank-allocator = linear
[backend-cuda]
device-id = local-rank
[constants]
gamma = 1.4
Pr = 0.72
rhoc = 1.0
M = 0.4
ac = 1.0
uc = %(M)s
Re = 200000.0
mu = %(rhoc)s*%(uc)s/%(Re)s
pi = 3.141592653589793
pinf = %(rhoc)s*%(ac)s*%(ac)s/(%(gamma)s*%(M)s*%(M)s)
qinf = 0.5*%(rhoc)s*%(uc)s*%(uc)s
aoa = 50.0
phi = 0.0
tconv = 20.0
tout_conv = 1.0
[solver]
system = navier-stokes
order = 3
anti-alias = flux, surf-flux
[solver-time-integrator]
scheme = rk45
controller = pi
t0 = 0.0
dt = 1e-6
atol = 1e-5
rtol = 1e-5
tend = 33.33
[solver-interfaces]
riemann-solver = roem
ldg-beta = 0.5
ldg-tau = 0.1
[solver-interfaces-tri]
flux-pts = williams-shunn
quad-deg = 7
quad-pts = williams-shunn
[solver-elements-tet]
soln-pts = shunn-ham
quad-deg = 6
quad-pts = shunn-ham
[soln-bcs-nose]
type = no-slp-adia-wall
[soln-bcs-body]
type = no-slp-adia-wall
[soln-bcs-base]
type = no-slp-adia-wall
[soln-bcs-far]
type = char-riem-inv
rho = rhoc
u = uc*cos(aoa/180*pi)
v = -uc*sin(aoa/180*pi)*sin(phi/180*pi)
w = uc*sin(aoa/180*pi)*cos(phi/180*pi)
p = pinf
[soln-ics]
rho = rhoc
u = uc*cos(aoa/180*pi)
v = -uc*sin(aoa/180*pi)*sin(phi/180*pi)
w = uc*sin(aoa/180*pi)*cos(phi/180*pi)
p = pinf
[soln-plugin-residual]
nsteps = 10
file = residual.csv
header = true
[soln-plugin-dtstats]
flushsteps = 100
file = dtstats.csv
header = true
[soln-plugin-fluidforce-nose]
nsteps = 10
file = nose-forces.csv
header = true
[soln-plugin-fluidforce-body]
nsteps = 10
file = body-forces.csv
header = true
[soln-plugin-fluidforce-base]
nsteps = 10
file = base-forces.csv
header = true
[soln-plugin-writer]
dt-out = 0.1
basedir = .
basename = out-{t:.2f}
[soln-plugin-tavg]
nsteps = 2000
dt-out = 0.1
basedir = .
basename = tavg-{t:.2f}
avg-p = p
avg-u = u
avg-v = v
avg-w = w
avg-uu = u*u
avg-vv = v*v
avg-ww = w*w
avg-uv = u*v
avg-vw = v*w
avg-wu = w*u
fun-avg-Cp = (p - pinf)/qinf