Numerical Fluxes
Types
ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxGradient
— TypeNumericalFluxGradient
Any P <: NumericalFluxGradient
should define methods for:
numerical_flux_gradient!(
gnf::P,
balance_law::BalanceLaw,
diffF, n⁻,
Q⁻, Qstate_gradient_flux⁻, Qaux⁻,
Q⁺, Qstate_gradient_flux⁺, Qaux⁺,
t
)
numerical_boundary_flux_gradient!(
gnf::P,
balance_law::BalanceLaw,
local_state_gradient_flux,
n⁻,
local_transform⁻, local_state_prognostic⁻, local_state_auxiliary⁻,
local_transform⁺, local_state_prognostic⁺, local_state_auxiliary⁺,
bctype,
t
)
ClimateMachine.DGMethods.NumericalFluxes.RusanovNumericalFlux
— TypeRusanovNumericalFlux <: NumericalFluxFirstOrder
The RusanovNumericalFlux (aka local Lax-Friedrichs) numerical flux.
Usage
RusanovNumericalFlux()
Requires a flux_first_order!
and wavespeed
method for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.RoeNumericalFlux
— TypeRoeNumericalFlux() <: NumericalFluxFirstOrder
A numerical flux based on the approximate Riemann solver of Roe
Usage
RoeNumericalFlux()
Requires a custom implementation for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.HLLCNumericalFlux
— TypeHLLCNumericalFlux() <: NumericalFluxFirstOrder
A numerical flux based on the approximate Riemann solver of the HLLC method. The HLLC flux is a modification of the Harten, Lax, van-Leer (HLL) flux, where an additional contact property is introduced in order to restore missing rarefraction waves. The HLLC flux requires model-specific information, hence it requires a custom implementation based on the underlying balance law.
Usage
HLLCNumericalFlux()
Requires a custom implementation for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.RoeNumericalFluxMoist
— TypeRoeNumericalFluxMoist <: NumericalFluxFirstOrder
A moist implementation of the numerical flux based on the approximate Riemann solver of Roe
Requires a custom implementation for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxFirstOrder
— TypeNumericalFluxFirstOrder
Any N <: NumericalFluxFirstOrder
should define the a method for
numerical_flux_first_order!(
numerical_flux::N,
balance_law::BalanceLaw,
flux,
normal_vector⁻,
Q⁻, Qaux⁻,
Q⁺, Qaux⁺,
t
)
where
flux
is the numerical flux arraynormal_vector⁻
is the unit normalQ⁻
/Q⁺
are the minus/positive state arrayst
is the time
An optional method can also be defined for
numerical_boundary_flux_first_order!(
numerical_flux::N,
balance_law::BalanceLaw,
flux,
normal_vector⁻,
Q⁻, Qaux⁻,
Q⁺, Qaux⁺,
bctype, t
)
ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxSecondOrder
— TypeNumericalFluxSecondOrder
Any N <: NumericalFluxSecondOrder
should define the a method for
numerical_flux_second_order!(
numerical_flux::N,
balance_law::BalanceLaw,
flux,
normal_vector⁻,
Q⁻, Qstate_gradient_flux⁻, Qaux⁻,
Q⁺, Qstate_gradient_flux⁺, Qaux⁺,
t
)
where
flux
is the numerical flux arraynormal_vector⁻
is the unit normalQ⁻
/Q⁺
are the minus/positive state arraysQstate_gradient_flux⁻
/Qstate_gradient_flux⁺
are the minus/positive diffusive state arraysQstate_gradient_flux⁻
/Qstate_gradient_flux⁺
are the minus/positive auxiliary state arrayst
is the time
An optional method can also be defined for
numerical_boundary_flux_second_order!(
numerical_flux::N,
balance_law::BalanceLaw,
flux,
normal_vector⁻,
Q⁻, Qstate_gradient_flux⁻, Qaux⁻,
Q⁺, Qstate_gradient_flux⁺, Qaux⁺,
bctype,
t
)
ClimateMachine.DGMethods.NumericalFluxes.CentralNumericalFluxSecondOrder
— TypeCentralNumericalFluxSecondOrder <: NumericalFluxSecondOrder
The central numerical flux for diffusive terms
Usage
CentralNumericalFluxSecondOrder()
Requires a flux_second_order!
for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.CentralNumericalFluxFirstOrder
— TypeCentralNumericalFluxFirstOrder() <: NumericalFluxFirstOrder
The central numerical flux for nondiffusive terms
Usage
CentralNumericalFluxFirstOrder()
Requires a flux_first_order!
method for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.CentralNumericalFluxGradient
— TypeCentralNumericalFluxGradient <: NumericalFluxGradient
ClimateMachine.DGMethods.NumericalFluxes.LMARSNumericalFlux
— TypeLMARSNumericalFlux <: NumericalFluxFirstOrder
Low Mach Number Approximate Riemann Solver. Upwind biased first order flux function.