3.4
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit > Class Template Reference

A linear system assembler (residual and Jacobian) for staggered finite volume schemes. This is basically just a wrapper for the MultiDomainFVAssembler which simplifies the set-up of uncoupled problems using the staggered scheme. More...

#include <dumux/assembly/staggeredfvassembler.hh>

Inheritance diagram for Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >:

Description

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
class Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >

A linear system assembler (residual and Jacobian) for staggered finite volume schemes. This is basically just a wrapper for the MultiDomainFVAssembler which simplifies the set-up of uncoupled problems using the staggered scheme.

Template Parameters
TypeTagthe TypeTag
diffMethodthe differentiation method to residual compute derivatives
isImplicitif to use an implicit or explicit time discretization

Public Types

using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>
using GridVariables = GetPropType<TypeTag, Properties::GridVariables>
using CouplingManager = typename ParentType::CouplingManager
using Traits
using Scalar
using LocalResidual
 TODO get rid of this GetPropType.
using JacobianMatrix
using ResidualType

Public Member Functions

 StaggeredFVAssembler (std::shared_ptr< const Problem > problem, std::shared_ptr< const GridGeometry > gridGeometry, std::shared_ptr< GridVariables > gridVariables)
 The constructor for stationary problems.
 StaggeredFVAssembler (std::shared_ptr< const Problem > problem, std::shared_ptr< const GridGeometry > gridGeometry, std::shared_ptr< GridVariables > gridVariables, std::shared_ptr< const TimeLoop > timeLoop, const SolutionVector &prevSol)
 The constructor for instationary problems.
auto & gridVariables ()
const auto & gridVariables () const
const GridGeometrygridGeometry () const
void assembleJacobianAndResidual (const SolutionVector &curSol)
 Assembles the global Jacobian of the residual and the residual for the current solution.
void assembleResidual (const SolutionVector &curSol)
 compute the residuals using the internal residual
Scalar residualNorm (const SolutionVector &curSol)
 compute the residual and return it's vector norm
void setLinearSystem (std::shared_ptr< JacobianMatrix > A, std::shared_ptr< SolutionVector > r)
 Tells the assembler which jacobian and residual to use. This also resizes the containers to the required sizes and sets the sparsity pattern of the jacobian matrix.
void setJacobianBuildMode (JacobianMatrix &jac) const
 Sets the jacobian build mode.
void setJacobianPattern (JacobianMatrix &jac) const
 Sets the jacobian sparsity pattern.
void setResidualSize (SolutionVector &res) const
 Resizes the residual.
void updateGridVariables (const SolutionVector &curSol)
 Updates the grid variables with the given solution.
void resetTimeStep (const SolutionVector &curSol)
 Resets the grid variables to the last time step.
std::size_t numDofs (Dune::index_constant< i > domainId) const
 the number of dof locations of domain i
const auto & problem (Dune::index_constant< i > domainId) const
 the problem of domain i
const auto & gridGeometry (Dune::index_constant< i > domainId) const
 the finite volume grid geometry of domain i
const auto & gridView (Dune::index_constant< i > domainId) const
 the grid view of domain i
GridVariables< i > & gridVariables (Dune::index_constant< i > domainId)
 the grid variables of domain i
const CouplingManagercouplingManager () const
 the coupling manager
JacobianMatrixjacobian ()
 the full Jacobian matrix
SolutionVector & residual ()
 the full residual vector
const SolutionVector & prevSol () const
 the solution of the previous time step
void setTimeManager (std::shared_ptr< const TimeLoop > timeLoop)
 Set time loop for instationary problems.
void setPreviousSolution (const SolutionVector &u)
 Sets the solution from which to start the time integration. Has to be called prior to assembly for time-dependent problems.
bool isStationaryProblem () const
 Whether we are assembling a stationary or instationary problem.
LocalResidual< i > localResidual (Dune::index_constant< i > domainId) const
 Create a local residual object (used by the local assembler).

Static Public Member Functions

static constexpr bool isImplicit ()
 Returns true if the assembler considers implicit assembly.

Protected Attributes

std::shared_ptr< CouplingManagercouplingManager_
 the coupling manager coupling the sub domains

Member Typedef Documentation

◆ CouplingManager

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
using Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::CouplingManager = typename ParentType::CouplingManager

◆ GridGeometry

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
using Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>

◆ GridVariables

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
using Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::GridVariables = GetPropType<TypeTag, Properties::GridVariables>

◆ JacobianMatrix

using Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::JacobianMatrix
inherited

◆ LocalResidual

using Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::LocalResidual
inherited

TODO get rid of this GetPropType.

◆ ResidualType

using Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::ResidualType
inherited

◆ Scalar

using Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::Scalar
inherited

◆ Traits

using Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::Traits
inherited

Constructor & Destructor Documentation

◆ StaggeredFVAssembler() [1/2]

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::StaggeredFVAssembler ( std::shared_ptr< const Problem > problem,
std::shared_ptr< const GridGeometry > gridGeometry,
std::shared_ptr< GridVariables > gridVariables )
inline

The constructor for stationary problems.

◆ StaggeredFVAssembler() [2/2]

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::StaggeredFVAssembler ( std::shared_ptr< const Problem > problem,
std::shared_ptr< const GridGeometry > gridGeometry,
std::shared_ptr< GridVariables > gridVariables,
std::shared_ptr< const TimeLoop > timeLoop,
const SolutionVector & prevSol )
inline

The constructor for instationary problems.

Member Function Documentation

◆ assembleJacobianAndResidual()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::assembleJacobianAndResidual ( const SolutionVector & curSol)
inlineinherited

Assembles the global Jacobian of the residual and the residual for the current solution.

◆ assembleResidual()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::assembleResidual ( const SolutionVector & curSol)
inlineinherited

compute the residuals using the internal residual

◆ couplingManager()

const CouplingManager & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::couplingManager ( ) const
inlineinherited

the coupling manager

◆ gridGeometry() [1/2]

const auto & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::gridGeometry ( Dune::index_constant< i > domainId) const
inlineinherited

the finite volume grid geometry of domain i

◆ gridGeometry() [2/2]

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
const GridGeometry & Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::gridGeometry ( ) const
inline

◆ gridVariables() [1/3]

GridVariables< i > & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::gridVariables ( Dune::index_constant< i > domainId)
inlineinherited

the grid variables of domain i

◆ gridVariables() [2/3]

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
auto & Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::gridVariables ( )
inline

◆ gridVariables() [3/3]

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
const auto & Dumux::StaggeredFVAssembler< TypeTag, diffMethod, isImplicit >::gridVariables ( ) const
inline

◆ gridView()

const auto & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::gridView ( Dune::index_constant< i > domainId) const
inlineinherited

the grid view of domain i

◆ isImplicit()

constexpr bool Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::isImplicit ( )
inlinestaticconstexprinherited

Returns true if the assembler considers implicit assembly.

◆ isStationaryProblem()

bool Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::isStationaryProblem ( ) const
inlineinherited

Whether we are assembling a stationary or instationary problem.

◆ jacobian()

JacobianMatrix & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::jacobian ( )
inlineinherited

the full Jacobian matrix

◆ localResidual()

LocalResidual< i > Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::localResidual ( Dune::index_constant< i > domainId) const
inlineinherited

Create a local residual object (used by the local assembler).

◆ numDofs()

std::size_t Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::numDofs ( Dune::index_constant< i > domainId) const
inlineinherited

the number of dof locations of domain i

◆ prevSol()

const SolutionVector & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::prevSol ( ) const
inlineinherited

the solution of the previous time step

◆ problem()

const auto & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::problem ( Dune::index_constant< i > domainId) const
inlineinherited

the problem of domain i

◆ resetTimeStep()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::resetTimeStep ( const SolutionVector & curSol)
inlineinherited

Resets the grid variables to the last time step.

◆ residual()

SolutionVector & Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::residual ( )
inlineinherited

the full residual vector

◆ residualNorm()

Scalar Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::residualNorm ( const SolutionVector & curSol)
inlineinherited

compute the residual and return it's vector norm

◆ setJacobianBuildMode()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::setJacobianBuildMode ( JacobianMatrix & jac) const
inlineinherited

Sets the jacobian build mode.

◆ setJacobianPattern()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::setJacobianPattern ( JacobianMatrix & jac) const
inlineinherited

Sets the jacobian sparsity pattern.

◆ setLinearSystem()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::setLinearSystem ( std::shared_ptr< JacobianMatrix > A,
std::shared_ptr< SolutionVector > r )
inlineinherited

Tells the assembler which jacobian and residual to use. This also resizes the containers to the required sizes and sets the sparsity pattern of the jacobian matrix.

◆ setPreviousSolution()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::setPreviousSolution ( const SolutionVector & u)
inlineinherited

Sets the solution from which to start the time integration. Has to be called prior to assembly for time-dependent problems.

◆ setResidualSize()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::setResidualSize ( SolutionVector & res) const
inlineinherited

Resizes the residual.

◆ setTimeManager()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::setTimeManager ( std::shared_ptr< const TimeLoop > timeLoop)
inlineinherited

Set time loop for instationary problems.

Note
calling this turns this into a stationary assembler

◆ updateGridVariables()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::updateGridVariables ( const SolutionVector & curSol)
inlineinherited

Updates the grid variables with the given solution.

Member Data Documentation

◆ couplingManager_

std::shared_ptr<CouplingManager> Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag >, StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > >, diffMethod, useImplicitAssembly >::couplingManager_
protectedinherited

the coupling manager coupling the sub domains


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