version 0.4.1
Ikarus::DenseFlatAssembler< FEC, DV > Class Template Reference

DenseFlatAssembler assembles matrix quantities using a flat basis Indexing strategy. The matrix is stored in a dense matrix format. This format is exploited during the assembly process. More...

#include <ikarus/assembler/simpleassemblers.hh>

Inheritance diagram for Ikarus::DenseFlatAssembler< FEC, DV >:
[legend]

Public Types

using FEContainerRaw = std::remove_cvref_t< FEC >
 Type of the raw finite element container. More...
 
using Base = VectorFlatAssembler< FEC, DV >
 Type alias for the base class. More...
 
using Basis = typename DV::Basis
 Type of the basis. More...
 
using DirichletValuesType = DV
 Type of the Dirichlet values. More...
 
using FEContainer = FEC
 Type of the finite element container. More...
 
using FERequirementType = typename FEContainerRaw::value_type::FERequirementType
 Type of the finite element requirement. More...
 
using GlobalIndex = typename FEContainerRaw::value_type::GlobalIndex
 Type of the global index. More...
 
using GridView = typename Basis::GridView
 Type of the grid view. More...
 
using FEContainerType = std::conditional_t< std::is_reference_v< FEContainer >, const FEContainer, FEContainer >
 Type of the finite element container (reference or by value). More...
 

Public Member Functions

 DenseFlatAssembler (FEContainer &&fes, const DirichletValuesType &dirichletValues)
 < Type of the global index. More...
 
const Eigen::MatrixXd & getRawMatrix (const FERequirementType &feRequirements)
 Calculates the matrix quantity requested by feRequirements and returns a reference. More...
 
const Eigen::MatrixXd & getMatrix (const FERequirementType &feRequirements)
 Calculates the matrix quantity requested by feRequirements and returns a reference. A zero is written on fixed degrees of freedom rows and columns, and a one is written on the diagonal. More...
 
const Eigen::MatrixXd & getReducedMatrix (const FERequirementType &feRequirements)
 Calculates the matrix quantity requested by feRequirements and returns a reference. The size of the matrix has the size of the free degrees of freedom. More...
 
const Eigen::VectorXd & getRawVector (const FERequirementType &feRequirements)
 Calculates the vectorial quantity requested by feRequirements and returns a reference. More...
 
const Eigen::VectorXd & getVector (const FERequirementType &feRequirements)
 Calculates the vectorial quantity requested by feRequirements and returns a reference. A zero is written on fixed degrees of freedom. More...
 
const Eigen::VectorXd & getReducedVector (const FERequirementType &feRequirements)
 Calculates the vectorial quantity requested by feRequirements and returns a reference. This vector has a reduced size by the number of fixed degrees of freedom. More...
 
const double & getScalar (const FERequirementType &feRequirements)
 Calculates the scalar quantity requested by feRequirements and returns a reference. More...
 
size_t reducedSize ()
 Returns the size of the free degrees of freedom, which are not fixed by a Dirichlet boundary condition. More...
 
size_t size ()
 Returns the size of nodes, i.e., the number of degrees of freedom. More...
 
Eigen::VectorXd createFullVector (Eigen::Ref< const Eigen::VectorXd > reducedVector)
 Creates the full-sized vector of size Dof and inserts the values of a reduced vector at the "free" degrees of freedom and writes a zero for the fixed doffs. More...
 
auto & finiteElements () const
 Returns the container of finite elements. More...
 
size_t constraintsBelow (size_t i) const
 Returns the number of constraints below a given degrees of freedom index. More...
 
bool isConstrained (size_t i) const
 Returns true if a given degree of freedom is fixed by a Dirichlet boundary condition. More...
 
size_t estimateOfConnectivity () const
 Coarse estimate of node connectivity, i.e., this relates to the bandwidth of a sparse matrix. This estimate overestimates the real connectivity and should only be used for allocating vectors. More...
 

Detailed Description

template<typename FEC, typename DV>
class Ikarus::DenseFlatAssembler< FEC, DV >
Template Parameters
FECType of the finite element container.
DVType of the Dirichlet values.
Note
Requires Ikarus::Concepts::FlatIndexBasis<BasisEmbedded>.

Member Typedef Documentation

◆ Base

template<typename FEC , typename DV >
using Ikarus::DenseFlatAssembler< FEC, DV >::Base = VectorFlatAssembler<FEC, DV>

◆ Basis

template<typename FEC , typename DV >
using Ikarus::FlatAssemblerBase< FEC, DV >::Basis = typename DV::Basis

◆ DirichletValuesType

template<typename FEC , typename DV >
using Ikarus::FlatAssemblerBase< FEC, DV >::DirichletValuesType = DV

◆ FEContainer

template<typename FEC , typename DV >
using Ikarus::FlatAssemblerBase< FEC, DV >::FEContainer = FEC

◆ FEContainerRaw

template<typename FEC , typename DV >
using Ikarus::DenseFlatAssembler< FEC, DV >::FEContainerRaw = std::remove_cvref_t<FEC>

◆ FEContainerType

template<typename FEC , typename DV >
using Ikarus::FlatAssemblerBase< FEC, DV >::FEContainerType = std::conditional_t<std::is_reference_v<FEContainer>, const FEContainer, FEContainer>
inherited

◆ FERequirementType

template<typename FEC , typename DV >
using Ikarus::FlatAssemblerBase< FEC, DV >::FERequirementType = typename FEContainerRaw::value_type::FERequirementType

◆ GlobalIndex

template<typename FEC , typename DV >
using Ikarus::FlatAssemblerBase< FEC, DV >::GlobalIndex = typename FEContainerRaw::value_type::GlobalIndex

◆ GridView

template<typename FEC , typename DV >
using Ikarus::FlatAssemblerBase< FEC, DV >::GridView = typename Basis::GridView
inherited

Constructor & Destructor Documentation

◆ DenseFlatAssembler()

template<typename FEC , typename DV >
Ikarus::DenseFlatAssembler< FEC, DV >::DenseFlatAssembler ( FEContainer &&  fes,
const DirichletValuesType dirichletValues 
)
inlineexplicit

Constructor for DenseFlatAssembler.

Parameters
fesFinite element container.
dirichletValuesReference to Dirichlet values.

Member Function Documentation

◆ constraintsBelow()

template<typename FEC , typename DV >
size_t Ikarus::FlatAssemblerBase< FEC, DV >::constraintsBelow ( size_t  i) const
inlineinherited
Parameters
iIndex of the degree of freedom.
Returns
Number of constraints below the given index.

◆ createFullVector()

template<typename B , typename FEC >
Eigen::VectorXd Ikarus::FlatAssemblerBase< B, FEC >::createFullVector ( Eigen::Ref< const Eigen::VectorXd >  reducedVector)
inherited
Parameters
reducedVectorReference to the reduced vector.
Returns
Eigen::VectorXd The full-sized vector.

◆ estimateOfConnectivity()

template<typename FEC , typename DV >
size_t Ikarus::FlatAssemblerBase< FEC, DV >::estimateOfConnectivity ( ) const
inlineinherited
Returns
Size_t Coarse estimate of node connectivity.

◆ finiteElements()

template<typename FEC , typename DV >
auto & Ikarus::FlatAssemblerBase< FEC, DV >::finiteElements ( ) const
inlineinherited
Returns
Reference to the finite element container.

◆ getMatrix()

template<typename FEC , typename DV >
const Eigen::MatrixXd & Ikarus::DenseFlatAssembler< FEC, DV >::getMatrix ( const FERequirementType feRequirements)
inline
Parameters
feRequirementsReference to the finite element requirements.
Returns
Reference to the modified dense matrix quantity.

◆ getRawMatrix()

template<typename FEC , typename DV >
const Eigen::MatrixXd & Ikarus::DenseFlatAssembler< FEC, DV >::getRawMatrix ( const FERequirementType feRequirements)
inline
Parameters
feRequirementsReference to the finite element requirements.
Returns
Reference to the raw dense matrix quantity.

◆ getRawVector()

template<typename FEC , typename DV >
const Eigen::VectorXd & Ikarus::VectorFlatAssembler< FEC, DV >::getRawVector ( const FERequirementType feRequirements)
inlineinherited
Parameters
feRequirementsReference to the finite element requirements.
Returns
Const reference to the calculated vectorial quantity.

◆ getReducedMatrix()

template<typename FEC , typename DV >
const Eigen::MatrixXd & Ikarus::DenseFlatAssembler< FEC, DV >::getReducedMatrix ( const FERequirementType feRequirements)
inline
Parameters
feRequirementsReference to the finite element requirements.
Returns
Reference to the reduced dense matrix quantity.

◆ getReducedVector()

template<typename FEC , typename DV >
const Eigen::VectorXd & Ikarus::VectorFlatAssembler< FEC, DV >::getReducedVector ( const FERequirementType feRequirements)
inlineinherited
Parameters
feRequirementsReference to the finite element requirements.
Returns
Const reference to the calculated reduced vectorial quantity.

◆ getScalar()

template<typename FEC , typename DV >
const double & Ikarus::ScalarAssembler< FEC, DV >::getScalar ( const FERequirementType feRequirements)
inlineinherited
Parameters
feRequirementsReference to the finite element requirements.
Returns
Const reference to the calculated scalar quantity.

◆ getVector()

template<typename FEC , typename DV >
const Eigen::VectorXd & Ikarus::VectorFlatAssembler< FEC, DV >::getVector ( const FERequirementType feRequirements)
inlineinherited
Parameters
feRequirementsReference to the finite element requirements.
Returns
Const reference to the calculated vectorial quantity.

◆ isConstrained()

template<typename FEC , typename DV >
bool Ikarus::FlatAssemblerBase< FEC, DV >::isConstrained ( size_t  i) const
inlineinherited
Parameters
iIndex of the degree of freedom.
Returns
True if the degree of freedom is fixed; false otherwise.

◆ reducedSize()

template<typename FEC , typename DV >
size_t Ikarus::FlatAssemblerBase< FEC, DV >::reducedSize ( )
inlineinherited
Returns
Size of the reduced degrees of freedom.

◆ size()

template<typename FEC , typename DV >
size_t Ikarus::FlatAssemblerBase< FEC, DV >::size ( )
inlineinherited
Returns
Size of the degrees of freedom.

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