finite volume transport on a regular grid
We are solving the following equation
∂t∂u+∇⋅(uF)=0
based on the Riemann-solver-free scheme for regular grids given in this paper by Kurganov and Tadmor.
Time stepping
We use the time stepping scheme given on p. 258 in the paper
u(1)u(l+1)un+1=un+ΔtnC[un]=ηlun+(1−ηl)(u(l))+ΔtnC[u(l)]),l=1,…,s−1=u(s)
local propagation speeds
For a scalar equation, we define
uj+21±(t)uj−21±(t)=uj+1(t)∓2Δx(ux)j+21±21(t),=uj−1(t)±?2Δx(ux)j−21±21(t)
so we can define
aj±21(t)=u∈[uj±21−,uj±21+]max∣f′(u)∣
but since we are using a flux which is linear in u,
this value is constant and so this reduces to aj+21=∣F(t,x)∣
horizontal differencing:
C[⋅]
is defined as follows:
C[w]=−[ΔxHj+21,kx(w)−Hj−21,kx(w)+ΔyHj,k+21y(w)−Hj,k−21y(w)]
and we use the minmod limiter from the paper for simplicity, namely
(ux)j,kn(uy)j,knminmod[a,b]=minmod (θΔxuj,kn−uj−1,kn,2Δxuj+1,kn−uj−1,kn,θΔxuj+1,kn−uj,kn),1≤θ≤2=minmod (θΔyuj,kn−uj,k−1n,2Δyuj,k+1n−uj,k−1n,θΔyuj,k+1n−uj,kn),1≤θ≤2=21[sgn(a)+sgn(b)]⋅min(∣a∣,∣b∣)
and we finish by defining
Hj±21,kx(t)Hj,k±21y(t)=2f(uj±21,k+(t))+f(uj±21,k−(t))−2aj±21,kx(t)[uj±21,k+(t)−uj±21,k−(t)]=2g(uj,k±21+(t))+g(uj,k±21−(t))−2aj,k±21y(t)[uj,k±21+(t)−uj,k±21−(t)]
Note that evaluation of f,g
occur only at j±21,k±21
points, respectively. This indicates that we are implicitly working on an arakawa C grid.
Since we are assuming that the domain is T2
, this means that we can assume that f−21,k=fn+21,k
and likewise fj,−21=fj,n+21
.
This, therefore, resolves any ambiguity surrounding the flux used to compute aj±21(t)=maxu∈[uj±21−,uj±21+]∣f′(u)∣
We find that the construction of the numerical fluxes gives
21[f(ur+ul)−∣f∣(ur−ul)]=21[(f−∣f∣)ur+(f+∣f∣)ul]
which is implicit upwind biasing.
Note: do not accidentally solve the equation
∂t∂ρ+∇⋅(ρ2u)=0