t. poinsot codes de combustion - forefire api: javascript

108
T. POINSOT Lundi 31 Mai 2010, 11h00 – 12h30 Codes de Combustion

Upload: others

Post on 03-Feb-2022

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: T. POINSOT Codes de Combustion - ForeFire API: javascript

T. POINSOT

Lundi 31 Mai 2010, 11h00 – 12h30

Codes de Combustion

Page 2: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 1

Codes for combustion

T. Poinsot1,2,3, F. Nicoud2, B. Cuenot2, L. Selle1, G. Lartigue2, L. Gicquel2, S. Candel4 and others !

1IMFT, CNRS, Toulouse France 2/CERFACS, Toulouse France 3CTR, Stanford and NASA Ames 4EM2C, Paris

Page 3: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 2

OUTLINE The reacting Navier Stokes equations and the codes to solve them

The differences between RANS, DNS and LES

Computing vortices and acoustic waves in CFD: simple ?

High Performance Computing and combustion

Page 4: T. POINSOT Codes de Combustion - ForeFire API: javascript

Which equations ?

AVBP-course 3

Here we will talk only about the compressible reacting Navier Stokes equations.

Arrhenius reaction rates but usually reduced chemical schemes.

No simplifications using special models (infinitely fast chemistry, flamelet model etc).

Acoustics included

Full multispecies formulation, no simplification for the state equation, the variable heat capacities

Page 5: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 4

Thermodynamics: equation of state A mixture of k= 1 to N perfect gases. Composition characterized by mass fractions Yk=mk/m

Molar weight of the mixture

with

Page 6: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 5

EQUATIONS : compressible reacting Navier Stokes

MOMENTUM:

Same as usually. Except that viscosity is more difficult to estimate: •  it is a gas mixture with varying composition Yk, k=1 to N •  its temperature changes significantly Viscosity = f(Yk,T)

Page 7: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 6

MASS CONSERVATION: one equation for each species k= 1 to N

Reaction rate Diffusion

!k = ! *Yk is the partial density of species k

Page 8: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 7

ENERGY:

Heat flux Reaction rate Radiation

THESE EQUATIONS ARE UNFILTERED, INSTANTANEOUS THE MAIN ISSUE IS HOW TO HANDLE TURBULENCE !

Page 9: T. POINSOT Codes de Combustion - ForeFire API: javascript

8

Classification générale LAMINAIRE TURBULENT

Zéro dimensionnel: T=f(t) Yk=gk(t)

PREMELANGE

DIFFUSION

1D: Codes de recherche Premix COSILAB

CODES TURBULENTS

Codes de recherche Oppdiff CHEMKIN

CHEMKIN: Aurora CHEMKIN: Aurora

Avec méthode pdf

Page 10: T. POINSOT Codes de Combustion - ForeFire API: javascript

C est quoi, un calcul 0D ?

Waves 9

Exemple: le temps d’autoallumage

Page 11: T. POINSOT Codes de Combustion - ForeFire API: javascript

10

Allumage: un premier calcul 0D

Taux de réaction (cours flammes prémélangées):

Il faut avoir: du A du B de la température

Page 12: T. POINSOT Codes de Combustion - ForeFire API: javascript

11

Allumage En prémélange pauvre avec Lewis=1, on arrive à:

Ce taux de réaction ne dépend que de la température réduite

Page 13: T. POINSOT Codes de Combustion - ForeFire API: javascript

12

Allumage dans un réacteur homogène

Volume V, surface S, température homogène T(t)

T

Text On part d’un état initial où on a des gaz frais prémélangés à richesse imposée et à température T(t=0)=Tinit

Coefficient d’échange h

Page 14: T. POINSOT Codes de Combustion - ForeFire API: javascript

13

Cool: le système est stable Auto allumage

dT/dt<0

Tc

600

500

400

300

200

100

0

Taux

de pr

oduc

tion

200015001000500Température (K)

Dégagement de chaleur !

Pertes de chaleur S/V h(T-Text)

dT/dt>0

Page 15: T. POINSOT Codes de Combustion - ForeFire API: javascript

Avec un code de calcul 0D:

!  On fait la même chose mais avec un schéma cinétique complet. On peut en déduire des temps d’autoallumage et les tabuler en fonction de la fraction de mélange par exemple

14

Page 16: T. POINSOT Codes de Combustion - ForeFire API: javascript
Page 17: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 16

Time Tem

péra

ture

Experiment or!DNS

RANS: averages

LES

Back to methods for turbulent flows:

Page 18: T. POINSOT Codes de Combustion - ForeFire API: javascript

17

Revenons sur les cas turbulents 3D: il y a en fait plusieurs méthodes

Codes DNS: dans les labos

Codes RANS: codes commerciaux Avec modèles de combustion turbulente (EBU, pdf, surface de flamme, etc): FLUENT, CFX, STAR CD

Codes LES: au milieu ! En train de remplacer le RANS

NB: quand on moyenne le résultat d’une DNS ou d’une LES, on doit retomber sur le RANS

Page 19: T. POINSOT Codes de Combustion - ForeFire API: javascript

18

RANS: the standard CFD tool •  In laboratories since 1970 •  In all companies since 1990 •  Provides mean values of all quantities (averaged over time) •  Requires model adjustments •  Does not give access to unsteady phenomena •  Fluent, CFX, Phoenics, etc

Champ de température calculé en RANS pour une flamme de Diffusion turbulente (Labo EM2C)

Page 20: T. POINSOT Codes de Combustion - ForeFire API: javascript

19

On the other side: Direct Numerical Simulation (DNS)

•  Developed in laboratories since 1980 (France / USA) •  No model for turbulence: compute instantaneous fields •  Unsteady by nature •  Limited to small cubic boxes •  Review papers: Prog. En. Comb. Sci. 1996 (21) or Ann. Rev. Fluid Mech. 1998 (30)

0.1 à 3 mm

Page 21: T. POINSOT Codes de Combustion - ForeFire API: javascript

20

RANS

1990: a gap between DNS and RANS

0.1 mm

10 m

DNS

ZOOM !

LES WAS NEEDED

Page 22: T. POINSOT Codes de Combustion - ForeFire API: javascript

2008 21

A comparison of RANS and LES

The ICLEAC burner (Ecole Centrale Paris): diffusion, 250 kW.

AIR

Propane

Page 23: T. POINSOT Codes de Combustion - ForeFire API: javascript

2008 22

Quartz window

Page 24: T. POINSOT Codes de Combustion - ForeFire API: javascript

2008 23

Typical RANS result: one field of ‘averaged’ values (here temperature)

Régime FUEL(g/s) AIR(g/s)B 4,5 62,5

Page 25: T. POINSOT Codes de Combustion - ForeFire API: javascript

24

Exemple de LES (aero gas turbine). Gaseous fuel /air (DLR) PRECCINSTA!

3 millions cells

Roux, Lartigue, Poinsot, Meier and Bérat Comb and Flame 141, 2005!

Page 26: T. POINSOT Codes de Combustion - ForeFire API: javascript

25

COLD FLOW - PRECCINSTA

Page 27: T. POINSOT Codes de Combustion - ForeFire API: javascript

26

Page 28: T. POINSOT Codes de Combustion - ForeFire API: javascript

27

Unsteady hydrodynamic (PVC) modes

Preccinsta is dominated by a large PVC structure (see AVBP result below) but other modes also exist (acoustics).!

Page 29: T. POINSOT Codes de Combustion - ForeFire API: javascript

28

Page 30: T. POINSOT Codes de Combustion - ForeFire API: javascript

29

RESULTATS DE FLUENT ou RESULTATS D UNE LES MOYENNEE EN TEMPS

Page 31: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 30

A more cynical view at the true difference between codes doing LES, RANS and DNS ?

All applications of interest have large Reynolds numbers:

!

Re(real) =UL/"A large Reynolds number implies a large difference between large and small spatial scales and therefore a huge number of grid points Which we simply dont have

Page 32: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 31

So, we cant resolve scales associated to large Reynolds numbers.

We use two tricks (call them ‘models’): -  turbulence models: add turbulent viscosity !t -  dissipative schemes: add numerical viscosity !a

Back up for a while: let us define turbulent viscosity:

With:

Page 33: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 32

This is the : -  non linear term -  source of turbulence -  ennemy of all CFD codes

This is the: -  viscous term -  linear term -  damper of turbulence -  friend of all PhD students

Page 34: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 33

Average these equations in space or in time (Favre averages):

Replace in momentum:

Introduce turbulent viscosity:

Page 35: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 34

Very dangerous model: it transforms a non-linear term (source of turbulence) into a viscous term (which damps turbulence). Now this term plays a role similar to laminar viscosity Other interpretation: move from left to right Other interpretation: this was a good way to get our codes to work !

Page 36: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 35

Note also that the averaging procedure never appears anywhere: RANS, LES, URANS, whatever… The only difference in all codes is only in the RHS terms…

Page 37: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 36

What about artificial viscosity ?: here, the viscous term is introduced through the numerical scheme

Centered schemes have … problems: they generate wiggles as soon as the resolution is not sufficient

Page 38: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 37

Introduce artificial viscosity:

Makes the scheme more stable and able to handle gradients In practice we are not solving:

But:

Page 39: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 38

Upwind schemes are not a solution:

Using:

An upwind scheme is like a centered scheme with a numerical viscosity equal to 1/2 u "x

Page 40: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 39

Combining turbulent viscosity !t and numerical viscosity !a allows the codes to run. But at which price ?

!

Re(num) =UL/(" +" t +" a )

In practice, the Reynolds number seen by the code is :

which is much smaller than the Reynolds of the flow.

==> We are not computing the same flow…

Page 41: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 40

RANS: turbulent viscosity is very large ==> the Reynolds of the code is so small that the flow is steady (ie laminar)

Laminar viscosity

The code sees a laminar flow!

Turbulent viscosity

Page 42: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 41

RANS: since the flow is so viscous, might as well use numerical viscosity too to make it faster and more robust !

Numerical viscosity

Upwind schemes

!

Re =UL/(" +" t +" a ) << Re(real)

large CFL (implicit codes)

Temporal

Spatial

Laminar viscosity

Turbulent viscosity

Page 43: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 42

CODE DNS: nothing more than the laminar viscosity

High-order scheme + Small CFL

!

Re(num) =UL/(" +" t +" a ) =UL/"Numerical viscosity

Laminar viscosity

Turbulent viscosity

Page 44: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 43

A good LES code: turbulent viscosity reduced and limited numerical viscosity ==> Reynolds turbulent smaller than the true one but large enough for the flow to be turbulent

Centered schemes

!

Re =UL/(" +" t +" a ) > Re(crit)

Small CFL

Numerical viscosity

Laminar viscosity

Turbulent viscosity

Page 45: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 44

DANGERS of RANS codes used for LES:

Temporel

Upwind schemes

!

Re(num) =UL/(" +" t +" a ) toosmall

Spatial Large CFL

Numerical viscosity

Laminar viscosity

Turbulent viscosity

Page 46: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 45

Classical test: remove the turbulent viscosity

Temporel

Spatial

Numerical viscosity

Laminar viscosity

Turbulent viscosity

Page 47: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 46

CONCLUSION: A good LES needs: !  high order schemes !  small time steps !  small CPU times ? (! OK, let us say ‘reasonable’)

Of course, needs also !  combustion models for LES !  boundary conditions

Page 48: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 47

Numerical waves vs acoustic waves

CFD approaches must propagate vortices and acoustic waves. An important set of questions is: •  How do codes propagate waves ? NOT SO WELL… •  Do codes propagate ‘other’ non physical waves ? YES…

Consider the simplest case of one-dimensional convection equation at speed c:

!

""tu + c ""xu=0

NOTE: everything here is valid for compressible codes but also for incompressible or low Mach number codes

Page 49: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 48

The exact solution for this wave problem is a convection at speed c:

!

u(x,t) = u(x"ct, t=0) = v(0) exp2 j#$(x"ct)%

& ' '

(

) * *

x

u(x,t) exact

ct

Being able to predict this convection speed is crucial for acoustics but also for turbulence (to convect vortices or entropy waves).

u(x,t=0)= v(0) exp2 j!"x#

$

% %

&

'

( (

Page 50: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 49

!

x=i"xDiscretize x axis:

Assume that u is a sinusoidal function of space (pulsation "):

!

u(i"x,t)=ui(t)=v(t)exp(2#j $ i"x) j2=-1 x

What happens in codes ? space is discretized…!Take the simplest finite difference example:!

Page 51: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 50

What does a second order code do ? Suppose we discretize this equation in space on a grid of spacing #x and assume we have perfect time advancement:

!

""tui + cui+1#ui#12$x =0

!

u(x,t) = v(0) exp2j"#(x$csin(2"#%x)2"#%x t)&

'

( (

)

*

+ +

The numerical solution for this problem is:

For sinusoidal wave propagation: Replacing u by v(t) in Eq. (1) leads to:

!

ui = v(t) exp(2"j # i$x)

!

""tv = #cjv sin(2$%&x)/&x

!

v(t) = v(0) exp("cj sin(2#$%x)%x t)Or:

(1)

Page 52: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 51

Numerical dissipation factor !

Comparing the exact and the numerical solution:

!

u(x,t) = v(0) exp2 j"#(x$ct)%

& ' '

(

) * *

The numerical scheme is dispersive: the speed is not right BUT the amplitude of the signal is right==> no damping is introduced by the centered scheme. Good for LES/DNS !

u(x,t) = v(0) exp2 j"#(x$csin(2"#%x)2"#%x

t)&

'

( ( ( (

)

*

+ + + +

Exact:

Numerical:

!

u(x,t) = v(0) exp("ct/#x(1"cos2$%#x))exp2j$%(x"csin(2$%#x)2$%#x t)&

'

( (

)

*

+ +

This property is true of all centered schemes but not of upwind schemes. For the first order upwind scheme, for example, the numerical solution would be:

Page 53: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 52

!

c(")c = sin(2#"$x)2#"$x

Moreover, for the centered scheme, comparing now the speeds:

!

u(x,t) = v(0) exp2 j"#(x$ct)%

& ' '

(

) * *

shows that the numerical scheme makes the flow ‘dispersive’; different wavelengths " are propagated at different speeds c(" ):

!

u(x,t) = v(0) exp2 j"#(x$csin(2"#%x)2"#%x

t)&

'

( ( ( (

)

*

+ + + +

!

"#x = #x/$

1.0

0.8

0.6

0.4

0.2

0.0

0.50.40.30.20.10.0

Exact

Second order scheme

!

c(")c

Exact:

Numerical:

Page 54: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 53

1.0

0.8

0.6

0.4

0.2

0.0

108642

Second order scheme

Exact

!

"/#x=1/($#x) (Number of points per wavelength)

!

c(")c

!

"

!

"x

This is not good news for second-order schemes: they do not propagate waves at the right speed as soon as the resolution (ie the number of points per wavelength ) is not very high. ! /"x

3rd order scheme

Higher order schemes do better.

6th order!

Page 55: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 54 0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa

A simple example in one dimension!•  Second order centered scheme!•  Fourth order Runge Kutta time integration!

!

""tu + c ""xu=0

Black:code!Cyan: exact!

Periodic boundaries

0 10 20 30 40-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa

Page 56: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 55

Examples specific to studies of combustion instabilities:!

" Convection of vortices in periodic 2D flows.!

" Propagation of acoustic waves in 1D periodic domain.!

Page 57: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 56

2D Vortex convection!

!

u = "#Rc2 ye

"x 2 +y 2

2Rc2

!

v ="Rc2 xe

#x 2 +y 2

2Rc2

!

p " p0 = "#$2

2Rc2 e

"x 2 +y 2

Rc2

!

Ux =100m /s Cutting line!Symmetry!

Symmetry!

Periodicity! Periodicity!x

y

Convecting vortices is the basic feature of LES!

Moureau et al, JCP 2005!

•  $= 1 m/s2 ; Rc = 19.45*10-3 m ; p0 = 101300 Pa!

•  2D structured mesh 30X30 elements.!•  Analytical solution!•  Tested LW (2nd order) and TTGC (3rd order) numerical scheme.!•  Acoustic CFL = 0.7!•  Tested also a commercial code. CFX 5.7 using a 2nd order centred finite volume

scheme.!

Page 58: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 57

Periodic on all sides Vortex leaves

And comes back

Page 59: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 58

Results after three turn over times!Time step is set by CFL = c #t/#x = 0.7!

Comparing three schemes: •  2nd order Lax Wendroff in AVBP (code CERFACS) •  2nd order CFX •  3rd order TTGC in AVBP (Oxford/CERFACS: Colin and Rudgyard, J. Comp. Phys. 162 (2000)).

Page 60: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 59

-1600

-1200

-800

-400

0

-0.04 0.00 0.04

X [m]

Relative pressure [Pa]

Exact sol. AVBP LW

CFXLow pressure in vortex center (analytical solution)!

Page 61: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 60

-1600

-1200

-800

-400

0

-0.04 0.00 0.04

X [m]

Relative pressure [Pa]

Exact sol. AVBP LW

CFX

AVBP TTGC

Page 62: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 61

-30

-15

0

15

30

-0.04 0.00 0.04

X [m]

Velocity y [m/s]

Exact sol. AVBP LW

CFX

Page 63: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 62

-30

-15

0

15

30

-0.04 0.00 0.04

X [m]

Velocity y [m/s]

Exact sol. AVBP LW

CFX

AVBP TTGC

Page 64: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 63

CFL = 0.7!

Results after ten turn over times!

Page 65: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 64

-1600

-1200

-800

-400

0

-0.04 0.00 0.04

X [m]

Relative pressure [Pa]

Exact sol. AVBP LW

CFX

Page 66: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 65

-1600

-1200

-800

-400

0

-0.04 0.00 0.04

X [m]

Relative pressure [Pa]

Exact sol. AVBP LW

CFX

AVBP TTGC

Page 67: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 66

-30

-15

0

15

30

-0.04 0.00 0.04

X [m]

Velocity y [m/s]

Exact sol. AVBP LW

CFX

Page 68: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 67

-30

-15

0

15

30

-0.04 0.00 0.04

X [m]

Velocity y [m/s]

Exact sol. AVBP LW

CFX

AVBP TTGC

Page 69: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 68

Page 70: T. POINSOT Codes de Combustion - ForeFire API: javascript

69!

Influence of time step !Influence of time step !

Most implicit codes use large time steps and therefore additional dissipation!

How does this change the present results ?!

The same case was run with an implicit commercial code: !

Page 71: T. POINSOT Codes de Combustion - ForeFire API: javascript

70!

Influence of time step !

-1600

-1200

-800

-400

0

-0.04 0.00 0.04

X [m]

Relative pressure [Pa]

Exact sol. CFX CFL=0.7

CFX CFL=3.5

CFX CFL=25

Influence of time step!

Page 72: T. POINSOT Codes de Combustion - ForeFire API: javascript

71!

Acoustic wave propagation - 1 !

Acoustic waves must propagate, without being artificially damped, over the entire computational domain.!

Initialization of the 1D periodic domain (30 mesh points)!

•  Euler equations, no artificial viscosity.!•  Periodic computational domain.!•  100 cycles computed.!•  Only numerical dissipation observed.!•  Tested only LW and TTGC AVBP schemes.!

Page 73: T. POINSOT Codes de Combustion - ForeFire API: javascript

72!

Acoustic wave propagation - 2 !

Pressure [Pa]!

Pressure temporal evolution on a grid point. !

For this periodic test case, TTGC is clearly less dissipative than LW. !

Page 74: T. POINSOT Codes de Combustion - ForeFire API: javascript

73!

Convergence order analysis !

In a periodic domain, the convergence order is correctly recovered for both schemes.!

Page 75: T. POINSOT Codes de Combustion - ForeFire API: javascript

74!

-0.20

-0.10

0.00

0.10

0.20

43210

Cycles

Exact sol.

CFX CFL=0.7

CFX CFL=3.5

CFX CFL=25

Influence of time step - 2!

Page 76: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 75

So high order schemes are better ==> well known : they are a MUST for DNS codes

In the DNS community (which uses structured grids): - Spectral schemes (not many in combustion) - Pseudo spectral schemes - Finite differences: 6th, 8th, 10th order in space

BUT IT IS NOT SIMPLE TO CONSTRUCT AN EXPLICIT HIGH-ORDER SCHEME ON UNSTRUCTURED MESHES ! 1st order: easy 2nd order: OK 3rd order: much more difficult 4th order: ouch !

Page 77: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 76

Since structured meshes can not be a good approach for combustion chambers… BIG PROBLEM FOR LES ! The previous example was obtained with TTGC (3rd order in space): Colin and Rudgyard, J. Comp. Phys. 162 (2000). ==> Care is needed to propagate physical waves (vortex and acoustic waves) at the right speed and amplitude.

But there are worse news: ‘other’ waves are created and propagated by codes. These waves travel in ‘packets’: need to study their group velocity

Vichnevetski and Bowles 1982, SIAM studies in Applied Mechanics Sengupta 2004 Fundamentals of Computational Fluid Dynamics Poinsot Veynante 2005, R.T. Edwards

Page 78: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 77

The group velocity of wiggles

Main idea: in dispersive flows, group velocities Vg (") of wave packets differ from c(#)…Illustration for the advection equation with a second order scheme.

!

""tu + c ""xu=0

Typical wave packet: enveloppe (long wave length %) + higher frequency wave (short wave length &)

X

!

"

!

"

Vg

Page 79: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 78

0 10 20 30 40-1

-0.5

0

0.5

1

Spatial abscissa

Initial condition: A typical wave train of numerical waves

0 10 20 30 40-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa

Numerical wave packet: • Wavelength=2 #x • Propagating in the wrong direction !

Page 80: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 79

Do we understand this ? See theory in waves books. For fluid flow and centered schemes, see Vichnevetski and Bowles 1982, 1986 or Sengupta 2004. The main result is that the group velocity Vg of wave packets is given by:

Vg(!)

c= dd!

!c(!)c

"

#

$ $ $ $ $

%

&

' ' ' ' '

Vg(!)

c= cos(2"!#x)

For the second-order scheme:

-1.0

-0.5

0.0

0.5

1.0

108642

!

"/#x=1/($#x)

Vg(!)

c

!

c(")c = sin(2#"$x)2#"$x

Page 81: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 80

•  Numerical waves (short wave) called ‘q’ going against the flow

q waves

•  Physical waves called ‘p’ (long wave): they go with the flow

p waves

Codes propagate two types of waves depending on the sign of Vg:

-1.0

-0.5

0.0

0.5

1.0

108642

!

"/#x=1/($#x)

Vg(!)

c

Page 82: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 81

For the centered second order scheme, the group velocity of wiggles (waves with a wavelength equal to 2 Dx) is

Vg(!)

c= -1

For higher order schemes, this velocity gets … worse. For example, a compact sixth-order scheme (Baum et al 1994):

Vg(!)

c= -4.3

Wiggles propagate upstream at -4.3 times the sound speed.

Page 83: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 82

Why do we care about ‘q’ waves ? : they perturb the flow. They also reflect into ‘p’ waves at boundaries !

0 10 20 30 40-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa

Page 84: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 83

Numerical waves are difficult to avoid:!1/ They can be created by stiff initial conditions,even if the user does not see them!

0 10 20 30 40-0.2

0

0.2

0.4

0.6

0.8

Spatial abscissa0 10 20 30 40

-0.2

0

0.2

0.4

0.6

0.8

Spatial abscissa0 10 20 30 40

-0.2

0

0.2

0.4

0.6

0.8

Spatial abscissa0 10 20 30 40

-0.2

0

0.2

0.4

0.6

0.8

Spatial abscissa0 10 20 30 40

-0.2

0

0.2

0.4

0.6

0.8

Spatial abscissa

Non reflecting outlet

Page 85: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 84

2/ Numerical ‘"q"’ waves are also generated when physical ‘"p"’waves interact with boundaries!

0 10 20 30 40-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa

Page 86: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 85

As a consequence, numerical waves can induce false numerical resonances (see Buelle and Huerre CTR 1988, Poinsot and Lele 1992, Poinsot and Veynante 2005):

0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa

Non reflecting outlet

u=0

0 10 20 30 40

-0.4

-0.2

0

0.2

0.4

0.6

Spatial abscissa

Will happen even in supersonic flows

Page 87: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 86

Some people wonder WHY we discuss this: they have never seen this problem in commercial codes !! Well... this is due to the viscosity of RANS codes. Example: compare non dissipative scheme (left) and typical RANS scheme (right)!

0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa0 10 20 30 40

-1

-0.5

0

0.5

1

Spatial abscissa

NON DISSIPATIVE SCHEME!(LES or DNS)!

DISSIPATIVE SCHEME!(RANS)!

Page 88: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 87

All waves (acoustic and numerical) exist in AVBP and you will see them this week and also later in your work with AVBP. The question is: How do we avoid creating ‘q’ waves ?:

•  Stable and better numerical schemes ! --> zero dissipation and better dispersion •  Smooth initial conditions: do not start from step functions •  Good boundary conditions: Do not use step functions. Do not impose non-zero velocities on walls. Do not etc… •  Use good meshes In turbulent cases, AVBP uses local artificial viscosity (smu2, smu4) triggered by localized sensors to add just the dissipation required for stability and not more. Do not use upwind schemes

Page 89: T. POINSOT Codes de Combustion - ForeFire API: javascript

AVBP-course 88

•  LES do not have large viscosities like RANS ==> wiggles must be avoided at boundaries

•  Turbulence must be injected at the boundaries

•  Acoustic waves (to mimic forcing) must also be injected at boundaries

Among all these problems, boundary conditions are the most critical: an old issue in CFD but a topic of much more interest for LES than for RANS because:

Page 90: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 89

HIGH PERFORMANCE COMPUTING AND COMBUSTION

For 3D LES and DNS, CPU time is a major issue

Parallel computing has opened a revolutionary evolution ten years ago

DNS has become possible in simple geometries

LES has become in complex geometries

DNS is becoming possible in complex geometries

Page 91: T. POINSOT Codes de Combustion - ForeFire API: javascript

90

La combustion numérique: à l’intersection de la physique et de l’informatique

Page 92: T. POINSOT Codes de Combustion - ForeFire API: javascript

91

Analysis of code performance Target machines: 5 machines among the Top 20, 2 in-house machines (IBM JS21 226 PP970MP and CRAY XD1 120 procs) and an HP Cluster (800 Opterons at CINES). !

JUNE 2006!

Page 93: T. POINSOT Codes de Combustion - ForeFire API: javascript

92

Scalability: speedup

The performance obtained on parallel machines with more than 300 processors would be impossible to obtain on vector machines!

12000

10000

8000

6000

4000

2000

0

Equiv

alent

Perf

orm

ance

120001000080006000400020000

Cores

Ideal /L

CINES, GENCI, SGI Altix ICE - AVBP GR (*)

Thomas Watson, Bluegene /L (1)

CCRT, Novascale Itanium (2)

CINES, GENCI, SGI Altix ICE (4)

CERFACS, BlueGene /L(5)

ARNL, INCITE, BlueGene /P (5)

(1) 40M cells case / AVBP

(2) 18M cells case / AVBP

(3) 10M cells case / AVBP

(4) 75M cells case /AVBP

(5) 37M cells case /AVBP

(*) 29M cells case/ AVBP GR

Page 94: T. POINSOT Codes de Combustion - ForeFire API: javascript

93

And the next step: 320 000 processors!

CERFACS is performing combustion LES on the BlueGene/P machine of Argonne National Lab!

http://www.doe.gov/sciencetech/5849.htm.

http://www.sc.doe.gov/ascr/incite/index.html.

Objective : simulate gas turbine chambers on 10 to 40 000 processors!Status today: 16 000 proc run performed in March 2008. Speed up of the order of 13 000!

Page 95: T. POINSOT Codes de Combustion - ForeFire API: javascript

2008 94

Do we still need DNS ? YES, to: •  understand •  build SGS models for LES •  maybe one day, replace LES

C3H8/air flame DNS Full chemical scheme Jimenez et al, Comb and Flame 2002.

Page 96: T. POINSOT Codes de Combustion - ForeFire API: javascript

2008 95

Page 97: T. POINSOT Codes de Combustion - ForeFire API: javascript

2008 96

Chen et al 31st Symp.

Today: 1 billion points on 30 000 proc

Page 98: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 97

Tomorrow: DNS in complex geometries

V. Moureau, P. Domingo, L. Vervisch, MSC-DNS: a multi-scale convergence methodology for Direct Numerical Simulation of turbulent reacting flows. Application in an industrial premixed burner. Soumis au Combustion Symposium, 2010

DNS – like LES on 2.7 billion points

Page 99: T. POINSOT Codes de Combustion - ForeFire API: javascript

Waves 98

THIS PROGRESS IN HPC FOR COMBUSTION IMPACTS COMBUSTION SCIENCE:

-  long course on turbulent combustion during this school

BUT : if we can perform DNS everywhere… we will not need turbulent combustion models !

Same evolution observed about RANS:

-  who does high-order turbulence models today ? -  who does analytical methods ?

Is this good ? We will still need to understand what is going on.

Page 100: T. POINSOT Codes de Combustion - ForeFire API: javascript

!"#$%&'"()*+,-)+()./012)

345)6%*-&)-7-689:-6-;)<:-"68)+&)="(-;)>-)?@()&"*7-)-7-68A:+(=)9+A:)"%6)(%#-6+?@*)#-A:"B&)C)

<:-)(-9)D6"E-?A)F3G)02)9-)@??-DA-B)A")&"*7-)A:-)-H%@'"()9:+?:)D%II*-&)&")#@(8)D-"D*-)+()+(B%&A68)

99

F"6)A:+&)#-=@)D6"E-?AJ)K)$6+**+@(A)L",)?"%6&-M)N:3)&A%B-(A&)?"**@$"6@A-)A")%&-)OPQNRRR;)<:+&)(-9)?"B-)%&-&2)

•  0SA:)"6B-6J)#+#-'?J),%-*)+(E-?A-BJ)%*A6@D@6@**-*)&?:-#-&)

•  <"A@**8)@%A"#@'?)#-&:)=-(-6@'"()#-A:"B&)&A@6'(=),6"#)@)D:"A"=6@D:)",)A:-)"$E-?A)A")#-&:)L9"6T&)-7-()+()A:-)B@6TM)

•  UV@W"D)#@?:+(-&)+(&A@**-B)+()@)01)W""6)$%+*B+(=)

•  <:-)*@A-&A)7-6&+"()",)A:-)GXY)+()9:+?:)8"%)A@*T)+(&A-@B)",)?*+?T+(=)*+T-)ZN*-@&-)?"#D%A-)=-"#-A68).K)("9[))

Page 101: T. POINSOT Codes de Combustion - ForeFire API: javascript

<:-)F3G)D6"$*-#2)

•  <:-)+(B%&A68)@(B)A:-)="7-6(#-(A):@7-)@&T-B)A")&"*7-)@)7-68)B+\?%*A)D6"$*-#2)

•  <:-)D6"D"&@*)+(?*%B-&)A:6--)D:@&-&),"6)F3GJ)-@?:)"(-)+&)A:6--)8-@6&)*"(=;)Q%B=-A)];1^)U%6"&)

•  <:-)F3G)-H%@'"()A")&"*7-)+&2)_(B)V)&%?:)A:@A2)

100

!

Page 102: T. POINSOT Codes de Combustion - ForeFire API: javascript

O`-6)A:6--)8-@6&)LF3G)0M2)

• >-):@7-)%&-B)#@(8)#-A:"B&)@7@+*@$*-)+()OPQN)A")&"*7-)A:+&)-H%@'"(),"6)@)a)0J)$a)bJ)?)a)0)

• >-)$-*+-7-)A:@A)A:-6-)@6-)?@&-&)9:-6-)OPQNRRR)?"(7-6=-&)@(B)=+7-&)@)&"*%'"(;)P-68)-(?"%6@=+(=)6-&%*A&;)<:+&)=+7-&)@)=""B)#"'7@'"()A")@&T),"6)F3G).)@(B)./)^)U%6"&)

101

!

Page 103: T. POINSOT Codes de Combustion - ForeFire API: javascript

O`-6)&+V)8-@6&)LF3G).M2)

We do not know yet the form of the solution but something very strange happened. One of the PhD students tried a=1, b=2, c=4 and he could not find ANY solution.

Had to run 150 million CPU hours and the code did not converge ! Exciting ! We need FDG 3, a new code and more efforts: 30 Million Euros.

102

!

Page 104: T. POINSOT Codes de Combustion - ForeFire API: javascript

O`-6)(+(-)8-@6&)LF3G)bM)2)

We tried to write papers on their results but (strange…) noone wants to publish them. It does not matter: we have found something even more exciting. Sometimes, the code gives not only ONE solution but TWO !

Negociations begin with sponsors to define FDG 4 where we will test all values of a, b and c.

We will especially focus on cases with more than two solutions ! (very promising indeed !)

103

!

Page 105: T. POINSOT Codes de Combustion - ForeFire API: javascript

5"c;)

How long before understanding: -  That a does not play a role. Only b/a and c/a are important

-  That there is an analytical solution !

-  Answer: NEVER ! This will simply never happen ! Because the method is wrong. We compute and we do not … think !

104

!

Page 106: T. POINSOT Codes de Combustion - ForeFire API: javascript

>-**J)$"&&J)7-68),%((8)$%A)A:+&)+&)A"")#%?:;)>"([A):@DD-()A")%&c)

Well, well, not so sure…

3%6+(=)#8)N:3)B-,-(&-)L0dS]MJ)^;)Q@66-6-)A"*B)#-2)ZefJ)8"%6)6-&%*A&)&:"9)A:@A)A:-)+(&A@$+*+A8)?6+A-6+"()+()@)$%6(-6)+&)A:@A)A:-)?"#$%&'"()B-*@8)&:"%*B)$-)#"6-)A:@():@*,)A:-)@?"%&'?)D-6+"B;)<:+&)+&)9:@A)9-),"%(B)+()0d11c[)

Y()N"+(&"AgP-8(@(A-)L.//1MJ)?:@DA-6)SJ)8"%)_(B)@)A9")D@=-&)B-#")&:"9+(=)A:@A)&@#-)6-&%*A)+()@)&+(=*-)$%6(-6;))

105

!

Page 107: T. POINSOT Codes de Combustion - ForeFire API: javascript

O6-)8"%)&%6-)8"%)@6-)("A)9@&'(=)8"%6)'#-)@(B)"%6)&D"(&"6&)#"(-8)h)

Y().//SJ)@`-6)&+V)8-@6&)",)7-68):@6B)9"6TJ)!;)5-(&+@%)L54U!^O)g)!UiFO!5M)%&-B)@()OP5N)?"B-)A")D6-B+?A)&A@$+*+A8)+()@((%*@6)?:@#$-6&;)>:-()-7-68A:+(=)9@&)_(+&:-B)L+A)A""T)A:6--)8-@6&MJ)A:-)&A@$+*+A8)?6+A-6+"(),"6)@I+#%A:@*)#"B-&):-)"$A@+(-B)9@&)A:@A)A:-)?"#$%&'"()B-*@8)&:"%*B)$-)#"6-)A:@():@*,)A:-)@I+#%A:@*)D-6+"B;)

<:+&)A8D-)",)?"+(?+B-(?-)#@T-&)#-)(-67"%&;)>@&)A:-6-)@)9@8)A")"$A@+()+()A9")*+(-&)9:@A)9-)"$A@+(-B)+()j)8-@6&)hh)3+B)9-),"6=-A)A")A:+(T)h))

106

!

Page 108: T. POINSOT Codes de Combustion - ForeFire API: javascript

5")D*-@&-)

• )<:+(T)C)• )Q-)?%6+"%&)• )i-@B)D@D-6&)• )>6+A-)-H%@'"(&)@(B)&A%B8)A:-"68)• )G-A)8"%6)Z?"#D%'(=)*+?-(?-)

107

!