Numerical Fluxes
Types
ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxGradient
— TypeNumericalFluxGradient
Any P <: NumericalFluxGradient
should define methods for:
numericalfluxgradient!(gnf::P, balancelaw::BalanceLaw, diffF, n⁻, Q⁻, Qstategradientflux⁻, Qaux⁻, Q⁺, Qstategradientflux⁺, Qaux⁺, t) numericalboundaryfluxgradient!(gnf::P, balancelaw::BalanceLaw, localstategradientflux, n⁻, localtransform⁻, localstateprognostic⁻, localstateauxiliary⁻, localtransform⁺, localstateprognostic⁺, localstateauxiliary⁺, 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.
@book{toro2013riemann,
title={Riemann solvers and numerical methods for fluid dynamics: a practical introduction},
author={Toro, Eleuterio F},
year={2013},
publisher={Springer Science & Business Media}
}
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