Documentation 6b54b78464
Loading...
Searching...
No Matches
CScalarFlux_SST< Double, FlowIndices, nDim, nVar > Class Template Reference

Convection and diffusion of the Menter SST model, conservative with a coupled (but neither symmetric nor diagonal) 2x2 diffusion matrix. More...

#include <turb_sst_edge_flux.hpp>

Inheritance diagram for CScalarFlux_SST< Double, FlowIndices, nDim, nVar >:
[legend]

Classes

struct  CCoefficients
 Diffusion coefficients of both orientations of the edge, and the terms of the cross diffusion that the Jacobian correction below needs, so that neither the gathers nor the blending are repeated for it. More...
 

Public Types

using Base = CUpwScalarBase< Double, CScalarFlux_SST, FlowIndices, nDim, nVar >
 
using Int = typename Base::Int
 
using Base = CUpwScalarFlux< Double_, Derived, FlowIndices, nDim_, nVar_ >
 
- Public Types inherited from CUpwScalarBase< Double_, Derived, FlowIndices, nDim_, nVar_ >
using Double = Double_
 
using Int = typename CLaneTraits< Double_ >::Int
 

Public Member Functions

template<class VariableType >
CCoefficients coefficients (const FlowIndices &idx, Int iPoint, const EdgeSide< VariableType > &side_i, Int jPoint, const EdgeSide< VariableType > &side_j, const CPair< Double > &rho) const
 
template<size_t Size>
void coefficientJacobians (const ScalarFluxOptions &opt, const CCoefficients &D, const Vector< Double, Size > &projGrad, EdgeResidual< Double, nVar > &res) const
 Extra Jacobian terms from the dependence of the cross-diffusion coefficient on omega.
 
- Public Member Functions inherited from CUpwScalarBase< Double_, Derived, FlowIndices, nDim_, nVar_ >
 CUpwScalarBase (const CConfig &config, size_t nEqn_=nVar_)
 Constructor, inherited by the model with using Base::Base.
 
template<class VariableType >
EdgeResidual< Double, nVar > ComputeFlux (const ScalarFluxOptions &opt, Int iPoint, const EdgeSide< VariableType > &side_i, Int jPoint, const EdgeSide< VariableType > &side_j, const Vector< Double, nDim > &normal, const Double &massFlux) const
 
template<class VariableType >
void ComputeFlux (const ScalarFluxOptions &opt, Int iEdge, Int iPoint, const EdgeSide< VariableType > &side_i, Int jPoint, const EdgeSide< VariableType > &side_j, const Vector< Double, nDim > &normal, const Double &massFlux, UpdateType updateType, Double updateMask, CSysVector< su2double > &vector, CSysVector< su2double > &vectorDiff, SparseMatrixType &matrix) const
 Compute the flux of an edge and write it to the linear system.
 

Static Public Attributes

static constexpr bool Conservative = true
 
static constexpr bool DiagonalDiffusion = false
 
- Static Public Attributes inherited from CUpwScalarBase< Double_, Derived, FlowIndices, nDim_, nVar_ >
static constexpr int nDim = nDim_
 
static constexpr size_t nVar = nVar_
 
static constexpr size_t Size = EdgeResidual<Double_, nVar_>::Size
 Backing size, for the model to size the containers its coefficients() returns; nVar itself is Dynamic for a runtime model and never usable as a container size.
 
static constexpr bool DiffusionReadsDensity = false
 Whether the model's diffusion coefficients read the density, beyond the reading that Conservative already implies. A model that declares neither never gathers it.
 

Additional Inherited Members

- Protected Types inherited from CUpwScalarBase< Double_, Derived, FlowIndices, nDim_, nVar_ >
using Base = CUpwScalarFlux< Double_, Derived, FlowIndices, nDim_, nVar_ >
 
- Protected Types inherited from CUpwScalarFlux< Double_, Derived, FlowIndices, nDim_, nVar_ >
using Int = typename CLaneTraits< Double_ >::Int
 
- Protected Types inherited from CAvgGradScalarBase< Double, Derived, FlowIndices, nDim, nVar >
using Int = typename CLaneTraits< Double >::Int
 
- Protected Member Functions inherited from CUpwScalarFlux< Double_, Derived, FlowIndices, nDim_, nVar_ >
 CUpwScalarFlux (const CConfig &)
 
void finalizeFlux (const FlowIndices &, const ScalarFluxOptions &opt, Int, const EdgeSide< VariableType > &, Int, const EdgeSide< VariableType > &, const Double_ &a0, const Double_ &a1, const CPair< Double_ > &rho, const CPair< CScalarValues< Double_, Size > > &phi, EdgeResidual< Double_, nVar > &res) const
 Upwind convection of the transported variable, weighted by the density for a conservative model.
 
- Protected Member Functions inherited from CAvgGradScalarBase< Double, Derived, FlowIndices, nDim, nVar >
template<class VariableType >
void diffusionTerms (const FlowIndices &idx, const ScalarFluxOptions &opt, Int iPoint, const EdgeSide< VariableType > &side_i, Int jPoint, const EdgeSide< VariableType > &side_j, const CPair< Double > &rho, const Vector< Double, nDim > &normal, const Vector< Double, nDim > &vector_ij, EdgeResidual< Double, nVar > &res) const
 
template<class... Ts>
void coefficientJacobians (Ts &&...) const
 Contribution of the derivatives of the coefficients themselves.
 
template<class... Ts>
void extraDiffusionTerms (Ts &&...) const
 Diffusion of a model that transports more than one gradient, of states it synthesises from its own containers.
 
- Protected Attributes inherited from CUpwScalarBase< Double_, Derived, FlowIndices, nDim_, nVar_ >
const FlowIndices idx
 
const size_t nEqn
 Equations of the model, which a dynamic one gives to its base.
 
const su2double kappa
 MUSCL reconstruction parameters, read from CConfig once per construction (i.e. once per nonlinear iteration, see CScalarSolver::EdgeFluxResidual) instead of per edge; this is also where the scalar limiter's freezing (GetLimiterIter) is resolved, by collapsing its type to NONE once frozen. The flow limiter is not frozen this way: once the flow solver stops recomputing it, it keeps applying the last values it has.
 
const su2double umusclRamp
 
const su2double kappaFlow
 
const LIMITER limiterType
 
const LIMITER limiterTypeFlow
 
const bool musclFlow
 

Detailed Description

template<class Double, class FlowIndices, int nDim, size_t nVar = 2>
class CScalarFlux_SST< Double, FlowIndices, nDim, nVar >

Convection and diffusion of the Menter SST model, conservative with a coupled (but neither symmetric nor diagonal) 2x2 diffusion matrix.

Note
SST writes no finalizeFlux of its own: the inherited CUpwScalarFlux one is exactly flux(iVar) = a0*rho_i*phi_i(iVar) + a1*rho_j*phi_j(iVar), Conservative weighting by density, which is the model's whole convective term.

Member Typedef Documentation

◆ Base [1/2]

template<class Double , class FlowIndices , int nDim, size_t nVar = 2>
using CScalarFlux_SST< Double, FlowIndices, nDim, nVar >::Base = CUpwScalarBase<Double, CScalarFlux_SST, FlowIndices, nDim, nVar>

◆ Base [2/2]

template<class Double , class FlowIndices , int nDim, size_t nVar = 2>
using CUpwScalarBase< Double_, Derived, FlowIndices, nDim_, nVar_ >::Base = CUpwScalarFlux<Double_, Derived, FlowIndices, nDim_, nVar_>

◆ Int

template<class Double , class FlowIndices , int nDim, size_t nVar = 2>
using CScalarFlux_SST< Double, FlowIndices, nDim, nVar >::Int = typename Base::Int

Member Function Documentation

◆ coefficientJacobians()

template<class Double , class FlowIndices , int nDim, size_t nVar = 2>
template<size_t Size>
void CScalarFlux_SST< Double, FlowIndices, nDim, nVar >::coefficientJacobians ( const ScalarFluxOptions &  opt,
const CCoefficients &  D,
const Vector< Double, Size > &  projGrad,
EdgeResidual< Double, nVar > &  res 
) const
inline

Extra Jacobian terms from the dependence of the cross-diffusion coefficient on omega.

Note
diff_omega_T3_i and diff_omega_T3_j both depend on omega_i and omega_j through w_ij, so each of the four blocks needs a correction beyond the one diffusionTerms already applies through projGrad. The correction only depends on which point's omega is being differentiated against, not on which row it lands in: differentiating against omega_i gives +E_j in both jac_ii and jac_ji, differentiating against omega_j gives -E_i in both jac_ij and jac_jj.

◆ coefficients()

template<class Double , class FlowIndices , int nDim, size_t nVar = 2>
template<class VariableType >
CCoefficients CScalarFlux_SST< Double, FlowIndices, nDim, nVar >::coefficients ( const FlowIndices &  idx,
Int  iPoint,
const EdgeSide< VariableType > &  side_i,
Int  jPoint,
const EdgeSide< VariableType > &  side_j,
const CPair< Double > &  rho 
) const
inline

Member Data Documentation

◆ Conservative

template<class Double , class FlowIndices , int nDim, size_t nVar = 2>
constexpr bool CScalarFlux_SST< Double, FlowIndices, nDim, nVar >::Conservative = true
staticconstexpr

◆ DiagonalDiffusion

template<class Double , class FlowIndices , int nDim, size_t nVar = 2>
constexpr bool CScalarFlux_SST< Double, FlowIndices, nDim, nVar >::DiagonalDiffusion = false
staticconstexpr

The documentation for this class was generated from the following file: