Compressible Navier-Stokes (Euler) Solver based on Deal.II Library
Lei Qiao
Northwestern Polytechnical University
Xi’an, China
Texas A&M University
College Station, Texas
1
Fifth deal.II Users and Developers Workshop Texas A&M University, College Station, TX, USA
August 5, 2015
Outline
Motivation and Goal
Current work
Conclusion and TODOs
2
Motivation
This is what I typically need to compute
3
The pain pointMesh generation:
Time consuming Boring Experience depending
Solution: Mesh adaptation — let solver tell what is good mesh
4
Deal.II the library
• Mesh adaptation with tree data structure • FEM discretization • Parallelization and excellent scalability
5
GoalA N-S solver based on deal.II that: • Starts from initial value on coarse mesh • Converges to solution on a reasonable fine
mesh adaptively • With High-order capability
6
Current workGoverning Equation
Solving technique
Solver implementation
Solver verification
7
Governing Equation
Compressible Navier-Stokes Equation
@Q(w)
@t+r · F(w) = S(w)
Use primitive variables as working var.
w = (uj , ⇢, p)T
8
Governing Equation
Fc(w) =
0
@⇢u⌦ u+ Ip
⇢u(E + p)u
1
A =
0
@⇢uiuj + �ijp
⇢ui
(E + p)ui
1
A
9
The Flux
F = Fc � Fv
Governing EquationThe Flux
F = Fc � Fv
WithT =
p
�R⇢
⌧ij = µ(@ui
@xj+
@uj
@xi) + ��ij
@uk
@xk
10
Fv
(w) =1
Re⇤1
0
@⌧ij
0⌧ij
ui
+ @T
@xj
1
A
Governing Equation
Weak form:
w = (uj , ⇢, p)T
Z
⌦vl@Ql(w)
@t
+
Z
⌦vl@Fl,i(w)
@xi=
Z
⌦vlSl(w)
8v = vl 2 T
, Find w 2 S that satisfy On domain ⌦
11
Governing Equation
Weak form:
Integrate by part to get boundary flux
Z
⌦vl@Ql(w)
@t
+
Z
@⌦vlFl,i(w)ni
�Z
⌦
@vl
@xiFl,i(w) =
Z
⌦vlSl(w)
12
Governing EquationTreat boundary conditions and discontinuities on hanging node with this boundary flux
Compute numerical flux with Roe scheme[1]
13
Governing Equation
Boundary conditions:
Far field: Riemann invariant
14
Slip wall: Non-penetration
u · n = 0⇢out
= ⇢in
pout
= pin
Solving technique
BDF-1 (Implicit Euler) time integration
Newton linearization
Direct linear solver from Trilinos** Iterative solver doesn’t stable enough, only used for scalability test
For steady run, time step size is determined according to norm of Newton update[2]
15
Solver implementation• Starts from step-33 of deal.II tutorial
• Change working vars. from conservative ones to primitive ones • viscous flux • Riemann boundary condition • Roe flux[2] to replace the too viscous Lax flux • Parallelize: learned from step-40
• Version control with Git • CMake project • Regression test suit
16
Solver verification• Scalability • Manufactured solution[3]
• Subsonic • Supersonic
• Adaptive simulation over circle • Flow over foil NACA2412
17
Scalability22,288 cells 91,312 DoFs
18
GMRES solver from Trilinos with DD+ILUT precond.
Solver verification• Manufactured solution[3]
@Q(w)
@t+r · F(w) = S(w)
w = J(x, y) =
8>><
>>:
u(x, y)= u0+u
x
sin(a
ux
⇡x)+u
y
cos(a
uy
⇡y)+u
xy
cos(a
uxy
⇡xy)
v(x, y)= v0+v
x
cos(a
vx
⇡x)+v
y
sin(a
vy
⇡y) +v
xy
cos(a
vxy
⇡xy)
⇢(x, y)= ⇢0+⇢
x
sin(a
⇢x
⇡x)+⇢
y
cos(a
⇢y
⇡y)+⇢
xy
cos(a
⇢xy
⇡xy)
p(x, y)= p0+p
x
cos(a
px
⇡x)+p
y
sin(a
py
⇡y) +p
xy
sin(a
pxy
⇡xy)
S(x, y) =@Q(J)
@t
+r · F(J)
19
SolverJh(x, y)
Solver verification• Manufactured solution[3]
w = J(x, y) =
8>><
>>:
u(x, y)= u0+u
x
sin(a
ux
⇡x)+u
y
cos(a
uy
⇡y)+u
xy
cos(a
uxy
⇡xy)
v(x, y)= v0+v
x
cos(a
vx
⇡x)+v
y
sin(a
vy
⇡y) +v
xy
cos(a
vxy
⇡xy)
⇢(x, y)= ⇢0+⇢
x
sin(a
⇢x
⇡x)+⇢
y
cos(a
⇢y
⇡y)+⇢
xy
cos(a
⇢xy
⇡xy)
p(x, y)= p0+p
x
cos(a
px
⇡x)+p
y
sin(a
py
⇡y) +p
xy
sin(a
pxy
⇡xy)
Choosing different Constants to get subsonic
or supersonic
case
20
Solver verification• Manufactured solution
• Subsonic • convergence
order
21
Solver verification• Manufactured solution
• Supersonic • convergence
order
22
Solver verification• Adaptive simulation over circle
• C1 mapping on wall boundary • Subsonic: Mach = 0.1 • Almost inviscid: Cv=1e-6 just for stabilization • Converged Cd=0.00029 which ideal value is zero
23
Solver verification• Adaptive simulation over cylinder
Converged density contour
24
Solver verification• Adaptive simulation over cylinder
Converge history of density contour and mesh adaptation
25
Solver verification• Flow over NACA2412 foil
• Subsonic: Mach=0.3
Converged pressure contour
26
Solver verification• Flow over NACA2412 foil
• Subsonic: Mach=0.3
Oscillation may be caused by geometry non-smoothness
27
Solver verification
• Almost inviscid: Cv=3e-6 just for stabilization • Converged Cd=0.00025 which ideal value is zero • Converged Cl=0.2576, Cm=0.05235
• As a reference, xFoil[4] gives • Cd=-0.00076 • Cl=0.2704 • Cm=0.0585
28
• Flow over NACA2412 foil • Subsonic: Mach=0.3
Conclusion• A prototype NS solver based on deal.II is constructed • The solver could run in parallel but the solver doesn’t
scale perfectly • High order convergence is confirmed by MMS • Solving process could start from very coarsen mesh
and go on with mesh adaptation • The solver can give out reasonable aerodynamics data
29
ToDos• Stable and efficient preconditioner for iterative solver
(Now my hope is on MDF ordering of ILU) • Describe wall boundary with NURBS geometry • Non-slip boundary condition • Anisotropic adaptation for boundary layer
30
Reference1. J. Blazek. Computational Fluid Dynamics: Principles and
Applications (Second Edition). Elsevier Science, Oxford, second edition edition, 2005. ISBN 978-0-08- 044506-9.
2. J. Gatsis. Preconditioning Techniques for a Newton–Krylov Algorithm for the Compressible Navier–Stokes Equations. PhD thesis, University of Toronto, 2013.
3. C. J. Roy, C. C. Nelson, T. M. Smith, and C. C. Ober. Verification of Euler/Navier- stokes codes using the method of manufactured solutions. International Journal for Numerical Methods in Fluids, 44(6):599--620, 2004.
4. M. Drela, H. Youngren. http://web.mit.edu/drela/Public/web/xfoil/
31
Thanks
32