Processing math: 100%

fWaveFlux

The fWaveFlux uses a Riemann decomposition to determine the upwind direction.

qt+f(q,v)=0

is linearized in 1d to produce

qt+fqqx=0

The Jacobian fq contains information about wave speeds and direction. Applying an eigenvalue decomposition to the Jacobian we have fq=RΛL where R is the matrix of right eigenvectors, L is the matrix of left eigenvectors and Λ is the diagonal matrix of eigenvalues denoted by λα, or wave speeds. The sign of these waves tells us which direction is upwind.

The left eigenvector matrix L is applied to the fluxes at the face of a cell so that β+α=[Lf+i]α, βα=[Lfi+1]α, ω+α=[Lq+i]α and ωα=[Lqi+1]α. The fluxes are then chosen based on the sign of the eigenvalues, therefore

βα=(βαif λα<0β+αif λα>012(β+α+βα)12|λmax|(ωαω+α)otherwise)

where λmax is the maximum eigenvalue of the system (in absolute value) at the interface.

The transformed flux is the rotated back to give

˜fi+1/2=Rβ.

Riemann decompositions typically produce the least diffusive fluxes, however they do not preserve positivity of pressure and density so are typically not used in problems with vacuum regions.