Technische Universitat Munchen
Godunov/Roe Fluxes
Oliver Meister
May 20th 2015
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 1
Technische Universitat Munchen
Integral form of Conservation Law
Start point: Integral form of a general conservation law in 1D:For any x1, x2, t1, t2 ∈ R the quantity q is conserved if:
x2∫x1
q(x , t2)− q(x , t1) dx +
t2∫t1
f (q(x2, t))− f (q(x1, t))dt = 0 (1)
where:• x , t ∈ R: space and time variables• q : R× R→ Rd : conserved quantity vector
(function over space and time)• f : Rd → Rd : flux function
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 2
Technische Universitat Munchen
FV discretization
Finite Volumes: subdivision of domain into grid cells, eachdenoted by a range Ci := (xi− 1
2, xi+ 1
2).
Similarly, we choose a finite set of time steps (tn)n=1...N This
gives the following update rule:
xi+ 1
2∫x
i− 12
q(x , tn+1)− q(x , tn)dx =
tn+1∫tn
f (q(xi− 12, t))− f (q(xi+ 1
2, t))dt
(2)Note: No approximation has been performed. So far we havean exact solver.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 3
Technische Universitat Munchen
FV discretization
Discretization:Average q over space by Qn
i := 1∆x
∫Ci
q(x , tn)dx .
Average f (q) over time by F ni+ 1
2:= 1
∆t
tn+1∫tn
f (q(xi+ 12, t))dt .
⇒ Qn+1i = Qn
i −∆t∆x
(F ni+ 1
2− F n
i− 12)
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 4
Technische Universitat Munchen
FV discretization
Discretization:Average q over space by Qn
i := 1∆x
∫Ci
q(x , tn)dx .
Average f (q) over time by F ni+ 1
2:= 1
∆t
tn+1∫tn
f (q(xi+ 12, t))dt .
⇒ Qn+1i = Qn
i −∆t∆x
(F ni+ 1
2− F n
i− 12)
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 4
Technische Universitat Munchen
FV discretization
Discretization:Average q over space by Qn
i := 1∆x
∫Ci
q(x , tn)dx .
Average f (q) over time by F ni+ 1
2:= 1
∆t
tn+1∫tn
f (q(xi+ 12, t))dt .
⇒ Qn+1i = Qn
i −∆t∆x
(F ni+ 1
2− F n
i− 12)
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 4
Technische Universitat Munchen
An unstable method
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Use a numerical flux function
F ni+ 1
2= F(Qn
i ,Qni+1)
First attempt:
F(Qni ,Q
ni+1) :=
12
(f (Qni ) + f (Qn
i+1))
Resulting method:
Qn+1i = Qn
i −∆t
2∆x(f (Qn
i+1)− f (Qni−1))
⇒ Central difference term, unstable.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 5
Technische Universitat Munchen
An unstable method
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Use a numerical flux function
F ni+ 1
2= F(Qn
i ,Qni+1)
First attempt:
F(Qni ,Q
ni+1) :=
12
(f (Qni ) + f (Qn
i+1))
Resulting method:
Qn+1i = Qn
i −∆t
2∆x(f (Qn
i+1)− f (Qni−1))
⇒ Central difference term, unstable.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 5
Technische Universitat Munchen
An unstable method
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Use a numerical flux function
F ni+ 1
2= F(Qn
i ,Qni+1)
First attempt:
F(Qni ,Q
ni+1) :=
12
(f (Qni ) + f (Qn
i+1))
Resulting method:
Qn+1i = Qn
i −∆t
2∆x(f (Qn
i+1)− f (Qni−1))
⇒ Central difference term, unstable.Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 5
Technische Universitat Munchen
Lax-Friedrichs Method
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Use a numerical flux function
F ni+ 1
2= F(Qn
i ,Qni+1)
Another attempt:
F(Qni ,Q
ni+1) :=
12
(f (Qni ) + f (Qn
i+1))− ∆t∆x
(Qni+1 −Qn
i )
Resulting method:
Qn+1i =
12
(Qni−1 + Qn
i+1) +∆t
2∆x(f (Qn
i+1)− f (Qni−1))
⇒ Lax-Friedrichs Method, stable but diffusive.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 6
Technische Universitat Munchen
Lax-Friedrichs Method
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Use a numerical flux function
F ni+ 1
2= F(Qn
i ,Qni+1)
Another attempt:
F(Qni ,Q
ni+1) :=
12
(f (Qni ) + f (Qn
i+1))− ∆t∆x
(Qni+1 −Qn
i )
Resulting method:
Qn+1i =
12
(Qni−1 + Qn
i+1) +∆t
2∆x(f (Qn
i+1)− f (Qni−1))
⇒ Lax-Friedrichs Method, stable but diffusive.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 6
Technische Universitat Munchen
Lax-Friedrichs Method
Problem: Assume Qni is known, how do we get F n
i− 12, F n
i+ 12
in
order to compute Qn+1i ?
Use a numerical flux function
F ni+ 1
2= F(Qn
i ,Qni+1)
Another attempt:
F(Qni ,Q
ni+1) :=
12
(f (Qni ) + f (Qn
i+1))− ∆t∆x
(Qni+1 −Qn
i )
Resulting method:
Qn+1i =
12
(Qni−1 + Qn
i+1) +∆t
2∆x(f (Qn
i+1)− f (Qni−1))
⇒ Lax-Friedrichs Method, stable but diffusive.Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 6
Technische Universitat Munchen
Upwind Method
Idea: Use Riemann problems for scalar conservation laws inorder to approximate fluxes
• Riemann problem: constant function with a singlediscontinuity at x = 0 in an infinite domain
• Finite Volumes: piecewise constant function withdiscontinuities between cell interfaces
• Find a single shock solution on the cell interfaces→ solution q on the interface is either left state ql or rightstate qr . Then f (q) = f (ql) or f (qr ).
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 7
Technische Universitat Munchen
Upwind Method
Result:
Qn+1i =
{Qn
i −∆t∆x (f (Qn
i )− f (Qni−1)) f ′(Qn
i ) ≥ 0Qn
i −∆t∆x (f (Qn
i+1)− f (Qni )) f ′(Qn
i ) < 0
Upwind method, works if f ′ ≥ 0 or f ′ < 0. But what aboutsystems of equations and rarefaction waves?
⇒ Godunov’s method, etc.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 8
Technische Universitat Munchen
Upwind Method
Result:
Qn+1i =
{Qn
i −∆t∆x (f (Qn
i )− f (Qni−1)) f ′(Qn
i ) ≥ 0Qn
i −∆t∆x (f (Qn
i+1)− f (Qni )) f ′(Qn
i ) < 0
Upwind method, works if f ′ ≥ 0 or f ′ < 0. But what aboutsystems of equations and rarefaction waves?
⇒ Godunov’s method, etc.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 8
Technische Universitat Munchen
Upwind Method
Result:
Qn+1i =
{Qn
i −∆t∆x (f (Qn
i )− f (Qni−1)) f ′(Qn
i ) ≥ 0Qn
i −∆t∆x (f (Qn
i+1)− f (Qni )) f ′(Qn
i ) < 0
Upwind method, works if f ′ ≥ 0 or f ′ < 0. But what aboutsystems of equations and rarefaction waves?
⇒ Godunov’s method, etc.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 8
Technische Universitat Munchen
Godunov’s method
A step further:
• Find the solution to the general Riemann problem(see last talk).
• Evaluate the solution at the cell interface. Due to theself-similarity of the Riemann solution, the result q◦ isconstant in time.
• ⇒ The numerical flux 1∆t
tn+1∫tn
f (q(x , t))dt reduces to the
simple formula f (q◦)
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 9
Technische Universitat Munchen
Godunov’s method with Roe linearization
General Riemann problem is far too expensive, hence we try toapproximate the solution by linearization.
Goal: For each cell interface, find matrix A ∈ Rd×d such that thesystem
qt + Ai− 12qx = 0
approximates the original system
qt + f ′(q)qx = 0
by Ai− 12→ f ′(q) as Qi−1,Qi → q.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 10
Technische Universitat Munchen
Godunov’s method with Roe linearization
Assumption: A single shock wave with speed s connects Qiand Qi+1, so that
f (Qi)− f (Qi−1) = s · (Qi −Qi−1)
Our approximation must meet
Ai− 12(Qi −Qi+1) = s · (Qi −Qi−1) = f (Qi)− f (Qi−1)
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 11
Technische Universitat Munchen
Godunov’s method with Roe linearization
Set:q(ξ) := Qi−1 + ξ · (Qi −Qi−1)
Then
f (Qi) − f (Qi−1) =
1∫0
df (q(ξ))
dξdξ =
1∫0
f ′(q(ξ))q′(ξ)dξ =
1∫0
f ′(q(ξ))dξ
(Qi −Qi−1)
So a suitable choice for A is1∫0
f ′(q(ξ))dξ.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 12
Technische Universitat Munchen
Godunov’s method with Roe linearization
Set:q(ξ) := Qi−1 + ξ · (Qi −Qi−1)
Then
f (Qi) − f (Qi−1) =
1∫0
df (q(ξ))
dξdξ =
1∫0
f ′(q(ξ))q′(ξ)dξ =
1∫0
f ′(q(ξ))dξ
(Qi −Qi−1)
So a suitable choice for A is1∫0
f ′(q(ξ))dξ.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 12
Technische Universitat Munchen
Godunov’s method with Roe linearization
Usually, instead of integrating over ξ a transformation z(ξ) isused to integrate a path on, because the resulting system mightnot be hyperbolic any more.
f (Qi)− f (Qi−1) =
1∫0
f ′(q(z(ξ)))dξ
(Zi − Zi−1)
where Zi = z(Qi),Zi−1 = z(Qi−1) and
Qi −Qi−1 =
1∫0
dq(z(ξ)))
dzdξ
(Zi − Zi−1)
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 13
Technische Universitat Munchen
Roe solver for the 1D Shallow Water Equations
Nonlinear system of equations (ignoring source terms):[h
hu
]t
+
[hu
hu2 + 12gh2
]x
= 0
They can be described in quasilinear form:[h
hu
]t
+
[0 1
−(u)2 + gh 2u
] [h
hu
]x
= 0
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 14
Technische Universitat Munchen
Roe solver for the 1D Shallow Water Equations
Choose as parameter vector z := 1√hq. Leaving out
intermediate steps we obtain:
A =
[0 1
−u2 + gh 2u
]as our Roe matrix with the arithmetic average h and the Roeaverage u. Applying Godunov’s method for the time step, wehave a full numerical scheme now.
Oliver Meister: Godunov/Roe Fluxes
, May 20th 2015 15
Top Related