Contravariant flux-vector splitting along a general metric/area vector
smetric = S_xi or S_eta (size 2). Splits the CONTRAVARIANT flux
Fhat = smetric(1)F + smetric(2)G (F,G physical Euler fluxes)
into fp/fm with eigenvalues U, U, U +- c|S| where the contravariant velocity
is U = smetric(1)u + smetric(2)v and |S| = norm2(smetric).
Realized by ROTATING the state into the metric-normal frame n = S/|S|, applying the proven axis split_flux_2d (dir=1, eigenvalues u_n -+ c), rotating the split fluxes back, and scaling by |S|. Because the rotation is orthogonal and |S| > 0, this is algebraically IDENTICAL to the metric-normal Steger-Warming/van-Leer/Lax-Friedrichs split (eigenvalues |S|*(u_n -+ c) = U -+ c|S|), so it inherits: * consistency fp + fm == Fhat (rotational invariance of the Euler flux); * axis reduction: with smetric=(s,0), s>0, n=(1,0) and the rotation is the identity, so the result is exactly s * split_flux_2d(...,dir=1,...). NOT pure: may reach steger_warming_split_2d (LAPACK) via split_flux_2d.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | q(neq2d) | |||
| real(kind=wp), | intent(in) | :: | smetric(2) | |||
| character(len=*), | intent(in) | :: | scheme | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | fp(neq2d) | |||
| real(kind=wp), | intent(out) | :: | fm(neq2d) |