Numerical Fluxes

Types

ClimateMachine.DGMethods.NumericalFluxes.NumericalFluxGradientType
NumericalFluxGradient

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)

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.

@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}
}
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