The thirdOrderMusclUpdater uses third order accurate spatial reconstruction that is suitable for use on general unstructured tetrahedral and hexahedral meshes to compute an upwind discretization of the spatial component of a non-linear hyperbolic system, possibly with source terms:
where \(\mathbf{q}\) is a vector of conserved variables (e.g. density, momentum, total energy), \(\mathcal{F}\left( \mathbf{w} \right)\) is a non-linear flux tensor computed from a vector of primitive variables, (e.g. density, velocity, pressure), \(\mathbf{w} = \mathbf{w}(\mathbf{q})\) and \(\mathcal{S} \left( \mathbf{w} \right)\) is some source term.
The thirdOrderMuscl updater accepts the parameters below, in addition to those required by Updater.
in
(string vector, required)out
(string vector, required)waveSpeeds
(string vector, optional)equations
(string vector, required)numericalFlux
(string, required)limiter
(string vector, required)variableForm
(string, required)preservePositivity
(boolean, optional)numberOfInterpolationPoints
(integer, required)Number of points to be considerd for the least squares fit. This parameter varies from mesh to mesh and should be determined by computing a known function on the mesh.
The numberOfInterpolationPoints must be greater than (or equal to) the number of coefficients in the polynomial approximation. This means that in 1d the value is 4, in 2D the value is at least 6 and in 3D the value is at least 10.
These choices do not guarantee that a matrix inverse will be found. The following values though appear to be adequate in general: in 1D 4; in 2D 8 and in 3D 20.
orderAccuracy
(integer, option)formulation
(string, optional)Whether to use a reconstruction based on constant or spline interpolation. Defaults to constant.
If formulation = “spline”, then the following options can be specified:
leastSquaresBasis
(string, optional) The spline basis to use for the least squares problem. Options are: wendland, wu and bumann. Defaults to buhmann.
leastSquaresBasisOrder
(string, optional) Order of polynomial to use for the least squares basis. Can accept up to 6th order polynomials, dependent on the choice of spline basis.
cfl
(float, optional)checkCfl
(bool, optional)sources
(string vector, optional)Equation
(block, required)Source
(block)The following block demonstrates the classicMuscl updater used in combination with the mhdDednerEqn to compute \(\nabla \cdot \mathcal{F}\left(\mathbf{w} \right)\) with an externally supplied magnetic field:
<Updater hyper>
kind=classicMuscl1d
onGrid=domain
# input nodal component arrays
in=[q backgroundB]
# output nodal component array
out=[qnew]
# input dynVector containing fastest wave speed
waveSpeeds=[waveSpeed]
# the numerical flux to use
numericalFlux= hlldFlux
# CFL number to use
cfl=0.3
# Form of variables to limit
variableForm= primitive
# Limiter; one per input nodal component array
limiter=[minmod minmod]
# list of equations to solve
equations=[mhd]
<Equation mhd>
kind=mhdDednerEqn
gasGamma=1.4
externalBfield="backgroundB"
</Equation>
</Updater>