Numerical Fluxes
Types
ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxGradient — TypeNumericalFluxGradientAny 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 <: NumericalFluxFirstOrderThe 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() <: NumericalFluxFirstOrderA 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() <: NumericalFluxFirstOrderA 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 — TypeNumericalFluxFirstOrderAny 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
fluxis the numerical flux arraynormal_vector⁻is the unit normalQ⁻/Q⁺are the minus/positive state arraystis 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 — TypeNumericalFluxSecondOrderAny 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
fluxis 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 arraystis 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 <: NumericalFluxSecondOrderThe central numerical flux for diffusive terms
Usage
CentralNumericalFluxSecondOrder()Requires a flux_second_order! for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.CentralNumericalFluxFirstOrder — TypeCentralNumericalFluxFirstOrder() <: NumericalFluxFirstOrderThe central numerical flux for nondiffusive terms
Usage
CentralNumericalFluxFirstOrder()Requires a flux_first_order! method for the balance law.
ClimateMachine.DGMethods.NumericalFluxes.CentralNumericalFluxGradient — TypeCentralNumericalFluxGradient <: NumericalFluxGradient