3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
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 = 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
 
using ResidualType = SolutionVector
 

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 instationary 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...
 
Scalar residualNorm (const SolutionVector &curSol)
 compute the residual and return it's vector norm More...
 
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. 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 setJacobianPattern (JacobianMatrix &jac) const
 Sets the jacobian sparsity pattern. More...
 
void setResidualSize (SolutionVector &res) const
 Resizes the residual. 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...
 
SolutionVector & residual ()
 the full residual vector More...
 
const SolutionVector & prevSol () 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

TODO get rid of this GetPropType.

◆ ResidualType

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

◆ Scalar

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

◆ 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

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() [1/2]

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

compute the residuals using the internal residual

◆ assembleResidual() [2/2]

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

assemble a residual r

◆ couplingManager()

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

the coupling manager

◆ 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

the finite volume grid geometry of domain i

◆ 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

the grid variables of domain i

◆ 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

the grid variables of domain i

◆ 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()

static 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() [1/2]

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

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.

◆ setLinearSystem() [2/2]

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: