version 3.9-dev

Assembly of linear systems (Jacobian and residual) More...

Description

Files

file  assembly/cclocalassembler.hh
 An assembler for Jacobian and residual contribution per element (cell-centered methods)
 
file  cclocalresidual.hh
 Calculates the element-wise residual for cell-centered discretization schemes.
 
file  coloring.hh
 Coloring schemes for shared-memory-parallel assembly.
 
file  assembly/cvfelocalassembler.hh
 An assembler for Jacobian and residual contribution per element (CVFE methods)
 
file  cvfelocalresidual.hh
 Calculates the element-wise residual for control-volume finite element schemes.
 
file  diffmethod.hh
 An enum class to define various differentiation methods available in order to compute the derivatives of the residual i.e. the entries in the jacobian matrix.
 
file  entitycolor.hh
 An enum class to define the colors of elements and vertices required for partial Jacobian reassembly.
 
file  fclocalassembler.hh
 An assembler for Jacobian and residual contribution per element (face-centered staggered methods)
 
file  fclocalresidual.hh
 Calculates the element-wise residual for the box scheme.
 
file  assembly/fvassembler.hh
 A linear system assembler (residual and Jacobian) for finite volume schemes.
 
file  assembly/fvlocalassemblerbase.hh
 
file  fvlocalresidual.hh
 The element-wise residual for finite volume schemes.
 
file  initialsolution.hh
 Function to create initial solution vectors.
 
file  jacobianpattern.hh
 Helper function to generate Jacobian pattern for different discretization methods.
 
file  numericepsilon.hh
 An adapter class for local assemblers using numeric differentiation.
 
file  partialreassembler.hh
 Detects which entries in the Jacobian have to be recomputed.
 
file  staggeredfvassembler.hh
 A linear system assembler (residual and Jacobian) for staggered finite volume schemes.
 
file  staggeredlocalresidual.hh
 Calculates the element-wise residual for the staggered FV scheme.
 
file  experimental/assembly/cclocalassembler.hh
 An assembler for Jacobian and residual contribution per element (cell-centered methods)
 
file  experimental/assembly/cvfelocalassembler.hh
 An assembler for Jacobian and residual contribution per element (CVFE methods)
 
file  experimental/assembly/fvlocalassemblerbase.hh
 
file  multistagefvassembler.hh
 A linear system assembler (residual and Jacobian) for finite volume schemes.
 
file  multistagefvlocaloperator.hh
 A local operator wrapper for multi-stage time stepping schemes.
 
file  multistagemultidomainfvassembler.hh
 A linear system assembler (residual and Jacobian) for finite volume schemes with multiple domains.
 
file  experimental/assembly/subdomaincclocalassembler.hh
 A multidomain local assembler for Jacobian and residual contribution per element (cell-centered methods)
 
file  experimental/assembly/subdomaincvfelocalassembler.hh
 An assembler for Jacobian and residual contribution per element (CVFE methods) for multidomain problems.
 
file  assemblerview.hh
 Subdomain-specific views on multidomain assemblers.
 
file  multidomain/fvassembler.hh
 A linear system assembler (residual and Jacobian) for finite volume schemes with multiple domains.
 
file  multidomain/subdomaincclocalassembler.hh
 A multidomain local assembler for Jacobian and residual contribution per element (cell-centered methods)
 
file  multidomain/subdomaincvfelocalassembler.hh
 An assembler for Jacobian and residual contribution per element (CVFE methods) for multidomain problems.
 
file  subdomainfclocalassembler.hh
 An assembler for Jacobian and residual contribution per element (face-centered staggered methods) for multidomain problems.
 
file  subdomainstaggeredlocalassembler.hh
 A multidomain assembler for Jacobian and residual contribution per element (staggered method)
 

Classes

class  Dumux::CCLocalAssemblerBase< TypeTag, Assembler, Implementation, implicit >
 A base class for all local cell-centered assemblers. More...
 
class  Dumux::CCLocalAssembler< TypeTag, Assembler, diffMethod, implicit >
 An assembler for Jacobian and residual contribution per element (cell-centered methods) More...
 
class  Dumux::CCLocalAssembler< TypeTag, Assembler, DiffMethod::numeric, true >
 Cell-centered scheme local assembler using numeric differentiation and implicit time discretization. More...
 
class  Dumux::CCLocalAssembler< TypeTag, Assembler, DiffMethod::numeric, false >
 Cell-centered scheme local assembler using numeric differentiation and explicit time discretization. More...
 
class  Dumux::CCLocalAssembler< TypeTag, Assembler, DiffMethod::analytic, true >
 Cell-centered scheme local assembler using analytic (hand-coded) differentiation and implicit time discretization. More...
 
class  Dumux::CCLocalAssembler< TypeTag, Assembler, DiffMethod::analytic, false >
 Cell-centered scheme local assembler using analytic (hand-coded) differentiation and explicit time discretization. More...
 
class  Dumux::CCLocalResidual< TypeTag >
 Calculates the element-wise residual for the cell-centered discretization schemes. More...
 
class  Dumux::CVFELocalAssemblerBase< TypeTag, Assembler, Implementation, implicit >
 A base class for all local CVFE assemblers. More...
 
class  Dumux::CVFELocalAssembler< TypeTag, Assembler, diffMethod, implicit, Implementation >
 An assembler for Jacobian and residual contribution per element (CVFE methods) More...
 
class  Dumux::CVFELocalAssembler< TypeTag, Assembler, DiffMethod::numeric, true, Implementation >
 Control volume finite element local assembler using numeric differentiation and implicit time discretization. More...
 
class  Dumux::CVFELocalAssembler< TypeTag, Assembler, DiffMethod::numeric, false, Implementation >
 Control volume finite element local assembler using numeric differentiation and explicit time discretization. More...
 
class  Dumux::CVFELocalAssembler< TypeTag, Assembler, DiffMethod::analytic, true, Implementation >
 Control volume finite element local assembler using analytic differentiation and implicit time discretization. More...
 
class  Dumux::CVFELocalAssembler< TypeTag, Assembler, DiffMethod::analytic, false, Implementation >
 Control volume finite element local assembler using analytic differentiation and explicit time discretization. More...
 
class  Dumux::CVFELocalResidual< TypeTag >
 The element-wise residual for control-volume finite element schemes. More...
 
class  Dumux::FaceCenteredLocalAssemblerBase< TypeTag, Assembler, Implementation, implicit >
 A base class for all local cell-centered assemblers. More...
 
class  Dumux::FaceCenteredLocalAssembler< TypeTag, Assembler, diffMethod, implicit, Implementation >
 An assembler for Jacobian and residual contribution per element (Face-centered methods) More...
 
class  Dumux::FaceCenteredLocalAssembler< TypeTag, Assembler, DiffMethod::numeric, true, Implementation >
 Face-centered scheme local assembler using numeric differentiation and implicit time discretization. More...
 
class  Dumux::FaceCenteredLocalAssembler< TypeTag, Assembler, DiffMethod::numeric, false, Implementation >
 TODO docme. More...
 
class  Dumux::FaceCenteredLocalAssembler< TypeTag, Assembler, DiffMethod::analytic, true, Implementation >
 TODO docme. More...
 
class  Dumux::FaceCenteredLocalAssembler< TypeTag, Assembler, DiffMethod::analytic, false, Implementation >
 TODO docme. More...
 
class  Dumux::FaceCenteredLocalResidual< TypeTag >
 The element-wise residual for the box scheme. More...
 
class  Dumux::FVAssembler< TypeTag, diffMethod, isImplicit >
 A linear system assembler (residual and Jacobian) for finite volume schemes (box, tpfa, mpfa, ...) More...
 
class  Dumux::FVLocalAssemblerBase< TypeTag, Assembler, Implementation, useImplicitAssembly >
 A base class for all local assemblers. More...
 
class  Dumux::FVLocalResidual< TypeTag >
 The element-wise residual for finite volume schemes. More...
 
class  Dumux::NumericEpsilon< Scalar, numEq >
 A helper class for local assemblers using numeric differentiation to determine the epsilon. More...
 
class  Dumux::PartialReassemblerEngine< Assembler, DiscretizationMethods::Box >
 The partial reassembler engine specialized for the box method. More...
 
class  Dumux::PartialReassemblerEngine< Assembler, DiscretizationMethods::CCTpfa >
 The partial reassembler engine specialized for the cellcentered TPFA method. More...
 
class  Dumux::PartialReassemblerEngine< Assembler, DiscretizationMethods::CCMpfa >
 The partial reassembler engine specialized for the cellcentered MPFA method. More...
 
class  Dumux::PartialReassembler< Assembler >
 detects which entries in the Jacobian have to be recomputed More...
 
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. More...
 
class  Dumux::StaggeredLocalResidual< TypeTag >
 Calculates the element-wise residual for the staggered FV scheme. More...
 
class  Dumux::Experimental::CCLocalAssemblerBase< TypeTag, Assembler, Implementation >
 A base class for all local cell-centered assemblers. More...
 
class  Dumux::Experimental::CCLocalAssembler< TypeTag, Assembler, diffMethod, Implementation >
 An assembler for Jacobian and residual contribution per element (cell-centered methods) More...
 
class  Dumux::Experimental::CCLocalAssembler< TypeTag, Assembler, DiffMethod::numeric, Implementation >
 Cell-centered scheme local assembler using numeric differentiation. More...
 
class  Dumux::Experimental::CVFELocalAssemblerBase< TypeTag, Assembler, Implementation >
 A base class for all local CVFE assemblers. More...
 
class  Dumux::Experimental::CVFELocalAssembler< TypeTag, Assembler, diffMethod, Implementation >
 An assembler for Jacobian and residual contribution per element (CVFE methods) More...
 
class  Dumux::Experimental::CVFELocalAssembler< TypeTag, Assembler, DiffMethod::numeric, Implementation >
 Control volume finite element local assembler using numeric differentiation. More...
 
class  Dumux::Experimental::FVLocalAssemblerBase< TypeTag, Assembler, Implementation >
 A base class for all local assemblers. More...
 
class  Dumux::Experimental::MultiStageFVAssembler< TypeTag, diffMethod >
 A linear system assembler (residual and Jacobian) for finite volume schemes (box, tpfa, mpfa, ...) More...
 
struct  Dumux::CouplingManagerSupportsMultithreadedAssembly< CM >
 Type trait that is specialized for coupling manager supporting multithreaded assembly. More...
 
class  Dumux::Experimental::MultiStageMultiDomainFVAssembler< MDTraits, CMType, diffMethod >
 A linear system assembler (residual and Jacobian) for finite volume schemes (box, tpfa, mpfa, ...) with multiple domains. More...
 
class  Dumux::Experimental::SubDomainCCLocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm >
 A base class for all multidomain local assemblers. More...
 
class  Dumux::Experimental::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DM >
 The cell-centered scheme multidomain local assembler. More...
 
class  Dumux::Experimental::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric >
 Cell-centered scheme multidomain local assembler using numeric differentiation. More...
 
class  Dumux::Experimental::SubDomainCVFELocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm >
 A base class for all CVFE subdomain local assemblers. More...
 
class  Dumux::Experimental::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DM >
 The CVFE scheme multidomain local assembler. More...
 
class  Dumux::Experimental::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric >
 CVFE scheme multi domain local assembler using numeric differentiation. More...
 
class  Dumux::MultiDomainAssemblerSubDomainView< MDAssembler, domainId >
 Subdomain-specific view on a multidomain assembler. Allows retrieval of sub-domain specific objects w/o passing a domain id. More...
 
class  Dumux::MultiDomainFVAssembler< MDTraits, CMType, diffMethod, useImplicitAssembly >
 A linear system assembler (residual and Jacobian) for finite volume schemes (box, tpfa, mpfa, ...) with multiple domains. More...
 
class  Dumux::SubDomainCCLocalAssemblerBase< id, TypeTag, Assembler, Implementation, implicit >
 A base class for all multidomain local assemblers. More...
 
class  Dumux::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DM, implicit >
 The cell-centered scheme multidomain local assembler. More...
 
class  Dumux::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true >
 Cell-centered scheme multidomain local assembler using numeric differentiation and implicit time discretization. More...
 
class  Dumux::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, false >
 Cell-centered scheme multidomain local assembler using numeric differentiation and explicit time discretization. More...
 
class  Dumux::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::analytic, true >
 Cell-centered scheme local assembler using analytic differentiation and implicit time discretization. More...
 
class  Dumux::SubDomainCVFELocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm, implicit >
 A base class for all CVFE subdomain local assemblers. More...
 
class  Dumux::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DM, implicit >
 The CVFE scheme multidomain local assembler. More...
 
class  Dumux::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true >
 CVFE scheme multi domain local assembler using numeric differentiation and implicit time discretization. More...
 
class  Dumux::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, false >
 CVFE scheme multi domain local assembler using numeric differentiation and explicit time discretization. More...
 
class  Dumux::SubDomainFaceCenteredLocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm, implicit >
 A base class for all face-centered staggered local assemblers. More...
 
class  Dumux::SubDomainFaceCenteredLocalAssembler< id, TypeTag, Assembler, DM, implicit >
 The face-centered staggered scheme multidomain local assembler. More...
 
class  Dumux::SubDomainFaceCenteredLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true >
 Face-centered staggered scheme multi domain local assembler using numeric differentiation and implicit time discretization. More...
 
class  Dumux::SubDomainFaceCenteredLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, false >
 Face-centered staggered scheme multi domain local assembler using numeric differentiation and explicit time discretization. More...
 
class  Dumux::SubDomainStaggeredLocalAssemblerBase< id, TypeTag, Assembler, Implementation, isImplicit >
 A base class for all multidomain local assemblers (staggered) More...
 
class  Dumux::SubDomainStaggeredLocalAssemblerImplicitBase< id, TypeTag, Assembler, Implementation >
 A base class for all implicit multidomain local assemblers (staggered) More...
 
class  Dumux::SubDomainStaggeredLocalAssembler< id, TypeTag, Assembler, DM, implicit >
 The staggered multidomain local assembler. More...
 
class  Dumux::SubDomainStaggeredLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true >
 Staggered scheme local assembler using numeric differentiation and implicit time discretization. More...
 

Enumerations

enum class  Dumux::DiffMethod { Dumux::DiffMethod::numeric , Dumux::DiffMethod::analytic , Dumux::DiffMethod::automatic }
 Differentiation methods in order to compute the derivatives of the residual i.e. the entries in the jacobian matrix. More...
 
enum class  Dumux::EntityColor { Dumux::EntityColor::red , Dumux::EntityColor::yellow , Dumux::EntityColor::orange , Dumux::EntityColor::green }
 The colors of elements and vertices required for partial Jacobian reassembly. More...
 

Functions

template<class SolutionVector , class Problem >
void Dumux::assembleInitialSolution (SolutionVector &sol, const Problem &problem)
 Set a solution vector to the initial solution provided by the problem. More...
 
template<class SolutionVector , class Problem >
SolutionVector Dumux::makeInitialSolution (const Problem &problem)
 Create a solution vector filled with the initial solution provided by the problem. More...
 
template<bool isImplicit, class GridGeometry , typename std::enable_if_t<((GridGeometry::discMethod==DiscretizationMethods::cctpfa)||(GridGeometry::discMethod==DiscretizationMethods::ccmpfa)), int > = 0>
Dune::MatrixIndexSet Dumux::getJacobianPattern (const GridGeometry &gridGeometry)
 Helper function to generate Jacobian pattern for cell-centered methods. More...
 
template<class FEBasis >
Dune::MatrixIndexSet Dumux::getFEJacobianPattern (const FEBasis &feBasis)
 Helper function to generate Jacobian pattern for finite element scheme. More...
 

Enumeration Type Documentation

◆ DiffMethod

enum class Dumux::DiffMethod
strong
Enumerator
numeric 
analytic 
automatic 

◆ EntityColor

enum class Dumux::EntityColor
strong
Enumerator
red 

distance from last linearization is above the tolerance

yellow 

neighboring entity is red

orange 

A yellow entity that has only non-green neighbor elements.

This means that its relative error is below the tolerance, but its defect can be linearized without any additional cost.

green 

does not need to be reassembled

Function Documentation

◆ assembleInitialSolution()

template<class SolutionVector , class Problem >
void Dumux::assembleInitialSolution ( SolutionVector &  sol,
const Problem &  problem 
)

◆ getFEJacobianPattern()

template<class FEBasis >
Dune::MatrixIndexSet Dumux::getFEJacobianPattern ( const FEBasis &  feBasis)

◆ getJacobianPattern()

template<bool isImplicit, class GridGeometry , typename std::enable_if_t<((GridGeometry::discMethod==DiscretizationMethods::cctpfa)||(GridGeometry::discMethod==DiscretizationMethods::ccmpfa)), int > = 0>
Dune::MatrixIndexSet Dumux::getJacobianPattern ( const GridGeometry &  gridGeometry)

Compute the Jacobian matrix sparsity pattern for control volume finite element schemes.

Helper function to generate Jacobian pattern for the face-centered methods.

Helper function to generate Jacobian pattern for finite element scheme.

Note
This interface is for compatibility with the other schemes. The pattern in fem is the same independent of the time discretization scheme.

◆ makeInitialSolution()

template<class SolutionVector , class Problem >
SolutionVector Dumux::makeInitialSolution ( const Problem &  problem)