NACA 0021 Airfoil in Deep Stall - Minimum sized time step rejected

Hello PyFR Community, I’m currently trying to recreate the simulations from the paper of Park, Vincent and Witherden (2017) on a NACA0021 Aerofoil in deep stall.

I am using the provided mesh and configuration file for the p4.ini file and p4_mesh and started with a warmup phase until t=100 with p=1 and Re=27000.

After the warmup phase I changed the parameters to p=4 and Re=270000. However, I am getting a ‘minimum sized time step rejected’ error at around t=226.

Could you help me and share any information and tips, how I can solve this error?
I attached the configuration file after the warmup phase.

Best regards, Vu

p4_naca.ini (2.18 KB)

Hi Vu

usually this happens when switching to high-order without enabling anti-aliasing. However, I see in your .ini file that anti-aliasing is indeed enabled in your case.
Did you enable it when you switched to p=4 or later on?

Best
Giorgio

Hey Giorgio,

thanks for the reply. I noticed that I didn’t disable anti-aliasing during the warmup period. So it was enabled from the beginning. I’m not sure if that is the reason for the time step error, but I’m currently trying to run it again with anti-aliasing enabled at t=100, when I switched to p=4 and see if it makes any difference.

Best
Vu

Hi, I also try to recreate the simulations on NACA0021 Aerofoil in deep stall using PyFR-1.12.0 release. Firstly, I download the config and mesh files from the [paper link](High-Order Implicit Large-Eddy Simulations of Flow over a NACA0021 Aerofoil | AIAA Journal).
And then I modified the config files for warm up:

  • set order = 1
  • disable anti-alias by comment it out / disable filtering by set freq=0 & cutoff = 0
  • use [soln-plugin-writer] instead of [soln-output] for output files

But I run into issue before finish of t = 1: RuntimeError: Minimum sized time step rejected.
Both P3 and P4 run into this issue. The command i used:
pyfr run -b cuda -p …/meshes/p3_mesh/naca0021_p3_1c.pyfrm …/configs/p3_aa_warmup.ini
Could you please help or any insights to solve this issue? (Sorry but I did not find the button to upload the *ini file, so I pasted it at the end :joy:)
Thanks
Best,
Sharon

p3_aa_warmup.ini

[backend]
precision = double
rank-allocator = linear

[backend-cuda]
device-id = local-rank

[backend-openmp]
;cblas-st = Enter path to local single-threaded BLAS library for OpenMP backend
;cblas-mt = Enter path to local multi-threaded BLAS library for OpenMP backend

[constants]
gamma = 1.4
mu = 0.0000037
Pr = 0.72

M = 0.1
uc = 1.0
rhoc = 1.0

[solver]
system = navier-stokes
order = 1
;anti-alias = flux, surf-flux

[solver-time-integrator]
scheme = rk45
controller = pi
tstart = 0.0
tend = 100.0
dt = 2.5e-8
atol = 1e-6
rtol = 1e-6

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

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

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

[solver-elements-tri]
soln-pts = williams-shunn
quad-deg = 9

[solver-elements-quad]
soln-pts = gauss-legendre
quad-deg = 9

[solver-elements-hex]
soln-pts = gauss-legendre
quad-deg = 9
quad-pts = gauss-legendre

[soln-plugin-writer]
dt-out = 5.0
basedir = .
basename = naca_p3_aa_1c_{t:.2f}

[soln-bcs-wall]
type = no-slp-adia-wall

[soln-bcs-inflow]
type = char-riem-inv
rho = rhoc
u = uc
v = 0
w = 0
p = rhocucuc/(MMgamma)

[soln-bcs-outflow]
type = char-riem-inv
p = rhocucuc/(MMgamma)
u = uc
v = 0
w = 0
rho = rhoc

[soln-ics]
rho = rhoc
u = uc
v = 0
w = 0
p = rhocucuc/(MMgamma)

[soln-filter]
freq = 0
cutoff = 0
order = 16
alpha = 36

[soln-plugin-fluidforce-wall]
nsteps = 200
file = wall-forces.csv
header = true

1 Like

This case is always a difficult one, but looking at you ini file I’m not sure that you have fully configured the PI controller for the adaptive time stepping. Please have a look at User Guide — Documentation.

Also dt=2.5e-8 strikes me as being far too small given that this is p=1.

Also, for the initialisation phase I think it is normal to run at Re=27k instead of Re=270k, which will allow you to up the time step size.

Hi Sharon,

  1. Just FYI setting cutoff = 0 does not disable the filtering (but setting ‘freq=0’ does, so no worries)

  2. Since the initial transient of the test case is a bit stiff, you may try different approaches to stabilize the simulations:

a) Use order = 0.
b) Increase the viscosity (reduce the Reynolds number)
c) Try to tune in the parameters atol, rtol, max-fact and min-fact to avoid sudden changes in the time step. You may try to use max-fact = 1.05 to avoid having unphysical time steps during the first iterations.

Let us know if any of those approaches works out for you!

Hi, sorry for my ignorance, but may you tell me how to set the Re to 27k or 270k in the config file?

Thank you so much for your guides to tune these parameters :+1:.
After set the mu from 0.0000037 to 0.000037, the warm up steps finished without error.

Appaloges in advance if I state the obvious. The formula for the Reynold number is Re = \rho U L/\mu, where \rho, U, and L are characteristic a density, velocity, and length scale respectively. With \mu being a dynamic viscosity.

So for this case, all other things being equal, if you want to decrease the Reynolds number by a factor of 10, then you have to increase \mu by a factor of 10.

Thank you very much for you patient. I am trying to learn some necessary concepts to better run this simulation.

I checked the Re formula but still a little confused about the relationship between the Re 27,000 and mu 0.000037. It looks like Re = gamma*Pt/mu in this config file(P is Prandtl number? ).It is right? Or may I know what gamma means? I failed to find it out on web pages.

The relation for Prandlt number is Pr=c_p\mu/\kappa, where c_p is the specific heat at constant pressure and \kappa is the thermal conductivity. Being defined as the ratio of viscous diffusion to thermal diffusion. The Prandlt number is generally dependent on the working fluid and for air a typical value is 0.71 for standard T and p.

I don’t think the relation you give for \gamma, Re and Pr is correct. Firstly, \gamma, Pr, and Re are dimensionless numbers, in the relation you wrote down the right had side has dimensions of 1/\mu.

For the more enthusiastic reader you can alternatively think about it philosophically. Reynolds number is the ratio of inertial forces to viscous diffusion forces, and Pr/\mu would be the inverse scaling of thermal diffusivity. As \gamma (the ratio of specific heat) doesn’t get us from thermal diffusivity to the ratio of inertia over viscous diffusion this relation can’t work.

It sounds like you might be relatively new to CFD, if so, can I recommend two books that might help you: “Advanced Computational Fluid and Aerodynamics” by Paul Tucker, and “Riemann Solvers and Numerical Methods for Fluid Dynamics” by Eleuterio Toro. The latter is bit of a deep dive into the Riemann problem, but personally I think the first 2 chapters give excellent background. But feel free to continue asking questions, although a new topic might be the right place.

2 Likes

You are absolutely right that I just start my CFD this week :slightly_smiling_face:. Many thanks for your books recommendation. I need it.