Numerical Fluxes

Types

ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxGradientType
NumericalFluxGradient

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
)
source
ClimateMachine.DGMethods.NumericalFluxes.HLLCNumericalFluxType
HLLCNumericalFlux() <: 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.

source
ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxFirstOrderType
NumericalFluxFirstOrder

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 array
  • normal_vector⁻ is the unit normal
  • Q⁻/Q⁺ are the minus/positive state arrays
  • t 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
)
source
ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxSecondOrderType
NumericalFluxSecondOrder

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 array
  • normal_vector⁻ is the unit normal
  • Q⁻/Q⁺ are the minus/positive state arrays
  • Qstate_gradient_flux⁻/Qstate_gradient_flux⁺ are the minus/positive diffusive state arrays
  • Qstate_gradient_flux⁻/Qstate_gradient_flux⁺ are the minus/positive auxiliary state arrays
  • t 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
)
source