version 3.9-dev
Dumux::FVAssembler< TypeTag, diffMethod, isImplicit > Class Template Reference

A linear system assembler (residual and Jacobian) for finite volume schemes (box, tpfa, mpfa, ...) More...

#include <dumux/assembly/fvassembler.hh>

Description

template<class TypeTag, DiffMethod diffMethod, bool isImplicit = true>
class Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >
Template Parameters
TypeTagThe TypeTag
diffMethodThe differentiation method to residual compute derivatives
isImplicitSpecifies whether the time discretization is implicit or not not (i.e. explicit)

Public Types

using Scalar = GetPropType< TypeTag, Properties::Scalar >
 
using JacobianMatrix = GetPropType< TypeTag, Properties::JacobianMatrix >
 
using SolutionVector = GetPropType< TypeTag, Properties::SolutionVector >
 
using ResidualType = typename Detail::NativeDuneVectorType< SolutionVector >::type
 
using GridVariables = GetPropType< TypeTag, Properties::GridVariables >
 
using GridGeometry = GridGeo
 
using Problem = GetPropType< TypeTag, Properties::Problem >
 

Public Member Functions

 FVAssembler (std::shared_ptr< const Problem > problem, std::shared_ptr< const GridGeometry > gridGeometry, std::shared_ptr< GridVariables > gridVariables)
 The constructor for stationary problems. More...
 
 FVAssembler (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...
 
template<class PartialReassembler = DefaultPartialReassembler>
void assembleJacobianAndResidual (const SolutionVector &curSol, const PartialReassembler *partialReassembler=nullptr)
 Assembles the global Jacobian of the residual and the residual for the current solution. More...
 
void assembleJacobian (const SolutionVector &curSol)
 Assembles only the global Jacobian of the residual. More...
 
void assembleResidual (const SolutionVector &curSol)
 compute the residuals using the internal residual More...
 
void assembleResidual (ResidualType &r, const SolutionVector &curSol) const
 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 updateAfterGridAdaption ()
 Resizes jacobian and residual and recomputes colors. More...
 
std::size_t numDofs () const
 Returns the number of degrees of freedom. More...
 
const Problemproblem () const
 The problem. More...
 
const GridGeometrygridGeometry () const
 The global finite volume geometry. More...
 
const GridView & gridView () const
 The gridview. More...
 
GridVariablesgridVariables ()
 The global grid variables. More...
 
const GridVariablesgridVariables () const
 The global grid variables. More...
 
JacobianMatrixjacobian ()
 The jacobian matrix. More...
 
ResidualTyperesidual ()
 The residual vector (rhs) More...
 
const SolutionVectorprevSol () const
 The solution of the previous time step. More...
 
void setTimeLoop (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 localResidual () const
 Create a local residual object (used by the local assembler) More...
 
void updateGridVariables (const SolutionVector &cursol)
 Update the grid variables. More...
 
void resetTimeStep (const SolutionVector &cursol)
 Reset the gridVariables. More...
 

Member Typedef Documentation

◆ GridGeometry

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
using Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::GridGeometry = GridGeo

◆ GridVariables

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

◆ JacobianMatrix

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

◆ Problem

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

◆ ResidualType

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
using Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::ResidualType = typename Detail::NativeDuneVectorType<SolutionVector>::type

◆ Scalar

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

◆ SolutionVector

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

Constructor & Destructor Documentation

◆ FVAssembler() [1/2]

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::FVAssembler ( std::shared_ptr< const Problem problem,
std::shared_ptr< const GridGeometry gridGeometry,
std::shared_ptr< GridVariables gridVariables 
)
inline
Note
the grid variables might be temporarily changed during assembly (if caching is enabled) it is however guaranteed that the state after assembly will be the same as before

◆ FVAssembler() [2/2]

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::FVAssembler ( 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
Note
the grid variables might be temporarily changed during assembly (if caching is enabled) it is however guaranteed that the state after assembly will be the same as before

Member Function Documentation

◆ assembleJacobian()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::assembleJacobian ( const SolutionVector curSol)
inline

◆ assembleJacobianAndResidual()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
template<class PartialReassembler = DefaultPartialReassembler>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::assembleJacobianAndResidual ( const SolutionVector curSol,
const PartialReassembler partialReassembler = nullptr 
)
inline

◆ assembleResidual() [1/2]

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::assembleResidual ( const SolutionVector curSol)
inline

◆ assembleResidual() [2/2]

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::assembleResidual ( ResidualType r,
const SolutionVector curSol 
) const
inline

◆ gridGeometry()

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

◆ gridVariables() [1/2]

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

◆ gridVariables() [2/2]

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

◆ gridView()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
const GridView & Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::gridView ( ) const
inline

◆ isStationaryProblem()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
bool Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::isStationaryProblem ( ) const
inline

◆ jacobian()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
JacobianMatrix & Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::jacobian ( )
inline

◆ localResidual()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
LocalResidual Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::localResidual ( ) const
inline

◆ numDofs()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
std::size_t Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::numDofs ( ) const
inline

◆ prevSol()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
const SolutionVector & Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::prevSol ( ) const
inline

◆ problem()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
const Problem & Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::problem ( ) const
inline

◆ resetTimeStep()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::resetTimeStep ( const SolutionVector cursol)
inline

◆ residual()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
ResidualType & Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::residual ( )
inline

◆ setLinearSystem() [1/2]

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::setLinearSystem ( )
inline

◆ setLinearSystem() [2/2]

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::setLinearSystem ( std::shared_ptr< JacobianMatrix A,
std::shared_ptr< ResidualType r 
)
inline

◆ setPreviousSolution()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::setPreviousSolution ( const SolutionVector u)
inline

◆ setTimeLoop()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::setTimeLoop ( std::shared_ptr< const TimeLoop timeLoop)
inline
Note
calling this turns this into a stationary assembler

◆ updateAfterGridAdaption()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::updateAfterGridAdaption ( )
inline

◆ updateGridVariables()

template<class TypeTag , DiffMethod diffMethod, bool isImplicit = true>
void Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >::updateGridVariables ( const SolutionVector cursol)
inline

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