Defines the general interface of the local assembler classes for the assembly of the interaction volume-local transmissibility matrix. Specializations have to be provided for the available interaction volume implementations. these should derive from this base class.
More...
#include <dumux/discretization/cellcentered/mpfa/localassemblerbase.hh>
template<class P, class EG, class EV>
class Dumux::InteractionVolumeAssemblerBase< P, EG, EV >
Defines the general interface of the local assembler classes for the assembly of the interaction volume-local transmissibility matrix. Specializations have to be provided for the available interaction volume implementations. these should derive from this base class.
- Template Parameters
-
P | The problem type |
EG | The element finite volume geometry |
EV | The element volume variables type |
|
| InteractionVolumeAssemblerBase (const Problem &problem, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) |
| The constructor. Sets pointers to the objects required for a subsequent call to assemble(). More...
|
|
const Problem & | problem () const |
|
const FVElementGeometry & | fvGeometry () const |
|
const ElementVolumeVariables & | elemVolVars () const |
|
template<class DataHandle , class IV , class TensorFunc > |
void | assembleMatrices (DataHandle &handle, IV &iv, const TensorFunc &getT) |
| Assembles the matrices involved in the flux expressions and the local system of equations within an mpfa interaction volume. More...
|
|
template<class DataHandle , class IV , class GetU > |
void | assembleU (DataHandle &handle, const IV &iv, const GetU &getU) |
| Assembles the vector of primary (cell) unknowns and (maybe) Dirichlet boundary conditions within an interaction volume. More...
|
|
template<class DataHandle , class IV , class GetRho > |
void | assembleGravity (DataHandle &handle, const IV &iv, const GetRho &getRho) |
| Assembles the gravitational flux contributions on the scvfs within an interaction volume. More...
|
|
|
template<class FVElementGeometry , class DataHandle , class IV > |
static void | solveLocalSystem (const FVElementGeometry &fvGeometry, DataHandle &handle, IV &iv) |
| Solves a previously assembled iv-local system of equations and stores the resulting transmissibilities in the provided containers within the interaction volume data handle. More...
|
|
template<class DataHandle , class IV > |
static IV::Traits::MatVecTraits::FaceVector | assembleFaceUnkowns (const DataHandle &handle, const IV &iv) |
| Assembles the vector of face unknowns within an interaction volume. More...
|
|
template<class DataHandle , class IV > |
static std::vector< typename IV::Traits::LocalScvType::GlobalCoordinate > | assembleScvGradients (const DataHandle &handle, const IV &iv) |
| Assembles the solution gradients in the sub-control volumes within an interaction volume. More...
|
|
template<class Matrix , class size_type , std::enable_if_t< matrixHasResizeFunction< Matrix >(), int > = 0> |
static void | resizeMatrix (Matrix &M, size_type rows, size_type cols) |
| resizes a matrix to the given sizes (specialization for dynamic matrix type) More...
|
|
template<class Matrix , class size_type , std::enable_if_t<!matrixHasResizeFunction< Matrix >(), int > = 0> |
static void | resizeMatrix (Matrix &M, size_type rows, size_type cols) |
| resizes a matrix to the given sizes (specialization for static matrix type - do nothing) More...
|
|
template<class Vector , class size_type , std::enable_if_t< vectorHasResizeFunction< Vector >(), int > = 0> |
static void | resizeVector (Vector &v, size_type size) |
| resizes a vector to the given size (specialization for dynamic matrix type) More...
|
|
template<class Vector , class size_type , std::enable_if_t<!vectorHasResizeFunction< Vector >(), int > = 0> |
static void | resizeVector (Vector &v, size_type rows) |
| resizes a vector to the given size (specialization for static vector type - do nothing) More...
|
|
◆ InteractionVolumeAssemblerBase()
template<class P , class EG , class EV >
Dumux::InteractionVolumeAssemblerBase< P, EG, EV >::InteractionVolumeAssemblerBase |
( |
const Problem & |
problem, |
|
|
const FVElementGeometry & |
fvGeometry, |
|
|
const ElementVolumeVariables & |
elemVolVars |
|
) |
| |
|
inline |
The constructor. Sets pointers to the objects required for a subsequent call to assemble().
- Parameters
-
problem | The problem to be solved (boundary/initial conditions etc.) |
fvGeometry | The local view on the finite volume grid geometry |
elemVolVars | The local view on the primary/secondary variables |
◆ assembleFaceUnkowns()
template<class DataHandle , class IV >
static IV::Traits::MatVecTraits::FaceVector Dumux::InteractionVolumeAssemblerHelper::assembleFaceUnkowns |
( |
const DataHandle & |
handle, |
|
|
const IV & |
iv |
|
) |
| |
|
inlinestaticinherited |
Assembles the vector of face unknowns within an interaction volume.
- Note
- This requires the data handle to be fully assembled already.
- Parameters
-
handle | The data handle in which the vector is stored |
iv | The interaction volume |
◆ assembleGravity()
template<class P , class EG , class EV >
template<class DataHandle , class IV , class GetRho >
Assembles the gravitational flux contributions on the scvfs within an interaction volume.
- Parameters
-
handle | The data handle in which the vector is stored |
iv | The interaction volume |
getRho | Lambda to obtain the density from volume variables |
For each face, we...
- arithmetically average the phase densities
- compute the term \( \alpha := \mathbf{A} \rho \ \mathbf{n}^T \mathbf{K} \mathbf{g} \) in each neighboring cell
- compute \( \alpha^* = \sum{\alpha_{outside, i}} - \alpha_{inside} \)
◆ assembleMatrices()
template<class P , class EG , class EV >
template<class DataHandle , class IV , class TensorFunc >
Assembles the matrices involved in the flux expressions and the local system of equations within an mpfa interaction volume.
- Template Parameters
-
IV | The interaction volume type implementation |
TensorFunc | Lambda to obtain the tensor w.r.t. which the local system is to be solved |
- Parameters
-
handle | The data handle in which the matrices are stored |
iv | The interaction volume |
getT | Lambda to evaluate the scv-wise tensors |
◆ assembleScvGradients()
template<class DataHandle , class IV >
static std::vector< typename IV::Traits::LocalScvType::GlobalCoordinate > Dumux::InteractionVolumeAssemblerHelper::assembleScvGradients |
( |
const DataHandle & |
handle, |
|
|
const IV & |
iv |
|
) |
| |
|
inlinestaticinherited |
Assembles the solution gradients in the sub-control volumes within an interaction volume.
- Note
- This requires the data handle to be fully assembled already.
- Parameters
-
handle | The data handle in which the vector is stored |
iv | The interaction volume |
◆ assembleU()
template<class P , class EG , class EV >
template<class DataHandle , class IV , class GetU >
Assembles the vector of primary (cell) unknowns and (maybe) Dirichlet boundary conditions within an interaction volume.
- Template Parameters
-
IV | The interaction volume type implementation |
GetU | Lambda to obtain the cell unknowns from grid indices |
- Parameters
-
handle | The data handle in which the vector is stored |
iv | The interaction volume |
getU | Lambda to obtain the desired cell/Dirichlet value from vol vars |
◆ elemVolVars()
template<class P , class EG , class EV >
◆ fvGeometry()
template<class P , class EG , class EV >
◆ problem()
template<class P , class EG , class EV >
◆ resizeMatrix() [1/2]
template<class Matrix , class size_type , std::enable_if_t< matrixHasResizeFunction< Matrix >(), int > = 0>
static void Dumux::InteractionVolumeAssemblerHelper::resizeMatrix |
( |
Matrix & |
M, |
|
|
size_type |
rows, |
|
|
size_type |
cols |
|
) |
| |
|
inlinestaticinherited |
resizes a matrix to the given sizes (specialization for dynamic matrix type)
◆ resizeMatrix() [2/2]
template<class Matrix , class size_type , std::enable_if_t<!matrixHasResizeFunction< Matrix >(), int > = 0>
static void Dumux::InteractionVolumeAssemblerHelper::resizeMatrix |
( |
Matrix & |
M, |
|
|
size_type |
rows, |
|
|
size_type |
cols |
|
) |
| |
|
inlinestaticinherited |
resizes a matrix to the given sizes (specialization for static matrix type - do nothing)
◆ resizeVector() [1/2]
template<class Vector , class size_type , std::enable_if_t<!vectorHasResizeFunction< Vector >(), int > = 0>
static void Dumux::InteractionVolumeAssemblerHelper::resizeVector |
( |
Vector & |
v, |
|
|
size_type |
rows |
|
) |
| |
|
inlinestaticinherited |
resizes a vector to the given size (specialization for static vector type - do nothing)
◆ resizeVector() [2/2]
template<class Vector , class size_type , std::enable_if_t< vectorHasResizeFunction< Vector >(), int > = 0>
static void Dumux::InteractionVolumeAssemblerHelper::resizeVector |
( |
Vector & |
v, |
|
|
size_type |
size |
|
) |
| |
|
inlinestaticinherited |
resizes a vector to the given size (specialization for dynamic matrix type)
◆ solveLocalSystem()
template<class FVElementGeometry , class DataHandle , class IV >
static void Dumux::InteractionVolumeAssemblerHelper::solveLocalSystem |
( |
const FVElementGeometry & |
fvGeometry, |
|
|
DataHandle & |
handle, |
|
|
IV & |
iv |
|
) |
| |
|
inlinestaticinherited |
Solves a previously assembled iv-local system of equations and stores the resulting transmissibilities in the provided containers within the interaction volume data handle.
- Parameters
-
fvGeometry | The bound element finite volume geometry |
handle | The data handle in which the matrices are stored |
iv | The interaction volume |
The documentation for this class was generated from the following file: