Q = (rho, rhou, rhov, E). For a face with normal in direction dir (1=x, 2=y), normal-momentum index mn and tangential mt: dir=1 -> mn=2 (rhou), mt=3 (rhov); dir=2 -> mn=3 (rhov), mt=2 (rhou). Pressure uses BOTH velocity components (full KE) -- this is why the 3-component 1D solvers cannot be reused directly.
Inviscid solid-wall (no-penetration) face flux through unit normal nrm.
At a solid wall v.n = 0, so the Euler flux collapses to the pressure term:
F = [ 0, pnx, pny, 0 ],
with p the interior-side pressure and (nx,ny) the boundary-face normal.
Mass and energy flux are EXACTLY zero by construction (a "weak"/pressure
wall), so no spurious mass crosses the wall and no spurious entropy is
generated by an acoustic over-pressure -- unlike a ghost-reflection wall,
whose Riemann star pressure carries an O(rhoc|v_n|) error wherever the
reconstructed interior normal velocity is non-zero (always, on a curved
wall). q is the interior-side (reconstructed) conserved state; gam the
ratio of specific heats. nrm need not be normalised in sign: the residual's
+xi/+eta divergence orientation makes the resulting wall pressure force act
into the domain at both min and max edges.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | q(neq2d) | |||
| real(kind=wp), | intent(in) | :: | nrm(2) | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | flux(neq2d) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | q(neq2d) | |||
| integer, | intent(in) | :: | dir | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | rho | |||
| real(kind=wp), | intent(out) | :: | un | |||
| real(kind=wp), | intent(out) | :: | ut | |||
| real(kind=wp), | intent(out) | :: | p | |||
| real(kind=wp), | intent(out) | :: | c | |||
| integer, | intent(out) | :: | mn | |||
| integer, | intent(out) | :: | mt |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | q(neq2d) | |||
| integer, | intent(in) | :: | dir | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | f(neq2d) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | qL(neq2d) | |||
| real(kind=wp), | intent(in) | :: | qR(neq2d) | |||
| integer, | intent(in) | :: | dir | |||
| character(len=*), | intent(in) | :: | scheme | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | flux(neq2d) |
Face flux through an arbitrary UNIT normal nrm=(nx,ny). Rotates the conserved momentum into the face frame, reuses the axis solver (dir=1), then rotates the momentum flux back to (x,y). nrm must be a unit vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | qL(neq2d) | |||
| real(kind=wp), | intent(in) | :: | qR(neq2d) | |||
| real(kind=wp), | intent(in) | :: | nrm(2) | |||
| character(len=*), | intent(in) | :: | scheme | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | flux(neq2d) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | qL(neq2d) | |||
| real(kind=wp), | intent(in) | :: | qR(neq2d) | |||
| integer, | intent(in) | :: | dir | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | flux(neq2d) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | qL(neq2d) | |||
| real(kind=wp), | intent(in) | :: | qR(neq2d) | |||
| integer, | intent(in) | :: | dir | |||
| real(kind=wp), | intent(in) | :: | gam | |||
| real(kind=wp), | intent(out) | :: | flux(neq2d) |