Flux Limiter
Given a hyperbolic system of m equations we want to solve it
with the flux limiter method. We can specify the parameter m
as well as the number of cell averages
n that we wish to use in the WorldModel block.
The first block we need is the integrator block that will
give the mxn+gcl+gcr average matrix Q as output
with which we can start the construction. Having matrix
Q we can compute the jumps
at each interface i = 1,...,n+gcl+gcr-1. The deltaQ block
achieves this task. The next step is to solve the Riemann problem
This can be accomplished by passing DeltaQ and mxm
eigenvalue matrix R to the Riemann block which will
give us the
mxn+gcl+gcr-1 matrix alpha as output. It is
important to note that the eigenvalue matrix R as well as the
eigenvalues lambdai must be provided
by the user. In the case of a constant coefficient linear hyperbolic system these do not
change with time. The next step is to use the alpha matrix just
obtained together
with the i-th eigenvalue lambdai to
calculate thetai. The thetai matrix has the thetai
values in the i-th row and zeros elsewhere.
Once thetai matrix is computed we can use for instance Beam-Warming block to
compute phi(theta), which is just theta in the Beam-Warming
method.
Beam-Warming together with many other methods is implemented
in FluxSolver block. The user can choose which method to use
in the WorldModel block
by giving the corresponding value to
the fls variable. Here is a list of methods with their
corresponding values:
- Upwind method: fls = 1
- Lax-Wendroff method: fls = 2
- Beam-Warming method: fls = 3
- Fromm method: fls = 4
- van Leer method: fls = 5
The next step is to pass the alpha and R matrix to the
pWave block, that will calculate the p-th Wave matrix
and give the mxn+1 matrix as output. Each column p in
this matrix contains the wave Wi-1/2p. By using the same
block but giving this time
widetilde{alpha} as input instead of
\alpha we can compute the limited wave widetilde{W}
The limited widetilde{alpha} can be computed by using the block
LimitedAlpha which need phi(theta) and alpha matrices
as input. With the eigenvalues
lambdap and the waves matrices
W, widetilde{W} we can compute the fluxes and fluctuations.
This is done by blocks FluxLimited and Fluctuation.
The FluxLimited block computes
If we have m equations in the system then we must use m
FluxLimited block to compute each term of the sum
and then sum all the outputs of the blocks and pass the result to the
Flux input of the integrator block. The same applies to the
Fluctuation block, only that here we must sum the + outputs
of the blocks and - outputs of the blocks separately
and at the end pass them to the + and - inputs of the
integrator, respectively. Finally we specify the initial
and boundary conditions and connect them to the IC and gcl,
gcr inputs, respectively.
Release Notes: