version 3.9-dev
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 >
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 ResidualType = typename MDTraits::ResidualVector
 
using SolutionVector = typename MDTraits::SolutionVector
 
using Traits = StaggeredMultiDomainTraits< TypeTag, TypeTag >
 
using Scalar = typename MDTraits::Scalar
 
using LocalResidual = GetPropType< SubDomainTypeTag< id >, Properties::LocalResidual >
 TODO get rid of this GetPropType. More...
 
using JacobianMatrix = typename MDTraits::JacobianMatrix
 

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. More...
 
 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 time-dependent problems. More...
 
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. More...
 
void assembleResidual (const SolutionVector &curSol)
 compute the residuals using the internal residual More...
 
void assembleResidual (ResidualType &r, const SolutionVector &curSol)
 assemble a residual r More...
 
void setLinearSystem (std::shared_ptr< JacobianMatrix > A, std::shared_ptr< ResidualType > 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. More...
 
void setLinearSystem ()
 The version without arguments uses the default constructor to create the jacobian and residual objects in this assembler if you don't need them outside this class. More...
 
void setJacobianBuildMode (JacobianMatrix &jac) const
 Sets the jacobian build mode. More...
 
void updateAfterGridAdaption ()
 Resizes jacobian and residual and recomputes colors. More...
 
void updateGridVariables (const SolutionVector &curSol)
 Updates the grid variables with the given solution. More...
 
void resetTimeStep (const SolutionVector &curSol)
 Resets the grid variables to the last time step. More...
 
std::size_t numDofs (Dune::index_constant< i > domainId) const
 the number of dof locations of domain i More...
 
const auto & problem (Dune::index_constant< i > domainId) const
 the problem of domain i More...
 
const auto & gridGeometry (Dune::index_constant< i > domainId) const
 the finite volume grid geometry of domain i More...
 
const auto & gridView (Dune::index_constant< i > domainId) const
 the grid view of domain i More...
 
GridVariables< i > & gridVariables (Dune::index_constant< i > domainId)
 the grid variables of domain i More...
 
const GridVariables< i > & gridVariables (Dune::index_constant< i > domainId) const
 the grid variables of domain i More...
 
const CouplingManagercouplingManager () const
 the coupling manager More...
 
JacobianMatrixjacobian ()
 the full Jacobian matrix More...
 
ResidualTyperesidual ()
 the full residual vector More...
 
const SolutionVectorprevSol () const
 the solution of the previous time step More...
 
void setTimeManager (std::shared_ptr< const TimeLoop > timeLoop)
 Set time loop for instationary problems. More...
 
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. More...
 
bool isStationaryProblem () const
 Whether we are assembling a stationary or instationary problem. More...
 
LocalResidual< i > localResidual (Dune::index_constant< i > domainId) const
 Create a local residual object (used by the local assembler) More...
 

Static Public Member Functions

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

Protected Attributes

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

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 = typename MDTraits::JacobianMatrix
inherited

◆ LocalResidual

using Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag > , StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > > , diffMethod, useImplicitAssembly >::LocalResidual = GetPropType<SubDomainTypeTag<id>, Properties::LocalResidual>
inherited

◆ ResidualType

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
using Dumux::MultiDomainFVAssembler< MDTraits, CMType, diffMethod, useImplicitAssembly >::ResidualType = typename MDTraits::ResidualVector

◆ Scalar

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

◆ SolutionVector

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
using Dumux::MultiDomainFVAssembler< MDTraits, CMType, diffMethod, useImplicitAssembly >::SolutionVector = typename MDTraits::SolutionVector

◆ Traits

using Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag > , StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > > , diffMethod, useImplicitAssembly >::Traits = StaggeredMultiDomainTraits< TypeTag, TypeTag >
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

◆ 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

Member Function Documentation

◆ assembleJacobianAndResidual()

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

◆ assembleResidual() [1/2]

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

◆ assembleResidual() [2/2]

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

◆ couplingManager()

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

◆ gridGeometry() [1/2]

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

◆ gridGeometry() [2/2]

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

◆ gridVariables() [1/4]

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

◆ gridVariables() [2/4]

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

◆ gridVariables() [3/4]

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

◆ gridVariables() [4/4]

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

◆ gridView()

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

◆ isImplicit()

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

◆ isStationaryProblem()

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

◆ jacobian()

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

◆ localResidual()

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

◆ numDofs()

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

◆ prevSol()

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

◆ problem()

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

◆ resetTimeStep()

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

◆ residual()

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

◆ setJacobianBuildMode()

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

◆ setLinearSystem() [1/2]

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag > , StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > > , diffMethod, useImplicitAssembly >::setLinearSystem ( )
inlineinherited

◆ setLinearSystem() [2/2]

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

◆ setPreviousSolution()

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

◆ setTimeManager()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag > , StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > > , diffMethod, useImplicitAssembly >::setTimeManager ( std::shared_ptr< const TimeLoop timeLoop)
inlineinherited
Note
calling this turns this into a stationary assembler

◆ updateAfterGridAdaption()

void Dumux::MultiDomainFVAssembler< StaggeredMultiDomainTraits< TypeTag, TypeTag > , StaggeredCouplingManager< StaggeredMultiDomainTraits< TypeTag, TypeTag > > , diffMethod, useImplicitAssembly >::updateAfterGridAdaption ( )
inlineinherited

◆ updateGridVariables()

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

Member Data Documentation

◆ couplingManager_

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

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