Documentation 6b54b78464
Loading...
Searching...
No Matches
EdgeResidual< Double, nVar_ > Struct Template Reference

Residual of one edge, accumulated by the convective and the diffusive terms. More...

#include <util.hpp>

Public Member Functions

 EdgeResidual (size_t nEqn)
 Zero the terms of the equations in use, so that both terms can accumulate into them.
 

Public Attributes

Vector< Double, Size > flux_i
 
Vector< Double, Size > flux_j
 
Matrix< Double, Size, Size > jac_ii
 
Matrix< Double, Size, Size > jac_ij
 
Matrix< Double, Size, Size > jac_ji
 
Matrix< Double, Size, Size > jac_jj
 
const size_t nVar
 

Static Public Attributes

static constexpr size_t Size = Max(2, (nVar_ == Dynamic) ? MaxScalarVar : nVar_)
 The Matrix<Double,1,1> a static nVar==1 model would otherwise need degenerates to vector-only indexing in C2DContainer (its RowMajor, one-row specialization), so the backing is never smaller than 2; the unused padding row/column is simply never visited, every loop here and in the model bounds itself to nVar, not Size.
 

Detailed Description

template<class Double, size_t nVar_>
struct EdgeResidual< Double, nVar_ >

Residual of one edge, accumulated by the convective and the diffusive terms.

Note
flux_i and flux_j are the contributions to the rows of i and j. They are opposite for a conservative term and independent for a non-conservative one. The Jacobians map onto the ii, ij, ji and jj blocks of the edge. A dynamic model sizes the storage with the maximum and iterates to nVar, which the scheme sets from the solver.

Constructor & Destructor Documentation

◆ EdgeResidual()

template<class Double , size_t nVar_>
EdgeResidual< Double, nVar_ >::EdgeResidual ( size_t  nEqn)
inlineexplicit

Zero the terms of the equations in use, so that both terms can accumulate into them.

Note
A static model zeroes its whole storage with constant trip counts; a dynamic one zeroes the leading nVar rows and columns and leaves the rest of the backing untouched.

Member Data Documentation

◆ flux_i

template<class Double , size_t nVar_>
Vector<Double, Size> EdgeResidual< Double, nVar_ >::flux_i

◆ flux_j

template<class Double , size_t nVar_>
Vector<Double, Size> EdgeResidual< Double, nVar_ >::flux_j

◆ jac_ii

template<class Double , size_t nVar_>
Matrix<Double, Size, Size> EdgeResidual< Double, nVar_ >::jac_ii

◆ jac_ij

template<class Double , size_t nVar_>
Matrix<Double, Size, Size> EdgeResidual< Double, nVar_ >::jac_ij

◆ jac_ji

template<class Double , size_t nVar_>
Matrix<Double, Size, Size> EdgeResidual< Double, nVar_ >::jac_ji

◆ jac_jj

template<class Double , size_t nVar_>
Matrix<Double, Size, Size> EdgeResidual< Double, nVar_ >::jac_jj

◆ nVar

template<class Double , size_t nVar_>
const size_t EdgeResidual< Double, nVar_ >::nVar

◆ Size

template<class Double , size_t nVar_>
constexpr size_t EdgeResidual< Double, nVar_ >::Size = Max(2, (nVar_ == Dynamic) ? MaxScalarVar : nVar_)
staticconstexpr

The Matrix<Double,1,1> a static nVar==1 model would otherwise need degenerates to vector-only indexing in C2DContainer (its RowMajor, one-row specialization), so the backing is never smaller than 2; the unused padding row/column is simply never visited, every loop here and in the model bounds itself to nVar, not Size.

<


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