14#include <Eigen/Sparse>
27template <
typename FEC,
typename DV>
52template <
class T,
class DirichletValuesType>
53ScalarFlatAssembler(T&& fes,
const DirichletValuesType&
dirichletValues) -> ScalarFlatAssembler<T, DirichletValuesType>;
63template <
typename FEC,
typename DV>
65 public VectorAssembler<VectorFlatAssembler<FEC, DV>, FEC, DV, Eigen::VectorXd>
96template <
class T,
class DirichletValuesType>
97VectorFlatAssembler(T&& fes,
const DirichletValuesType&
dirichletValues) -> VectorFlatAssembler<T, DirichletValuesType>;
108template <
typename FEC,
typename DV>
139 void createOccupationPattern(
MatrixType& assemblyMat);
143 void createReducedOccupationPattern(
MatrixType& assemblyMat);
146 void createLinearDOFsPerElement(
MatrixType& assemblyMat);
150 void createLinearDOFsPerElementReduced(
MatrixType& assemblyMat);
153 void preProcessSparseMatrix(
MatrixType& assemblyMat);
156 void preProcessSparseMatrixReduced(
MatrixType& assemblyMat);
161 std::vector<std::vector<Eigen::Index>>
162 elementLinearIndices_;
163 std::vector<std::vector<Eigen::Index>>
164 elementLinearReducedIndices_;
165 bool sparsePreProcessorRaw_{}, sparsePreProcessor_{},
166 sparsePreProcessorReduced_{};
170template <
class FEC,
class DV>
171SparseFlatAssembler(FEC&& fes,
const DV&
dirichletValues) -> SparseFlatAssembler<FEC, DV>;
174template <
typename FEC,
typename DV>
176 return std::make_shared<SparseFlatAssembler<FEC, DV>>(std::forward<FEC>(fes),
dirichletValues);
188template <
typename FEC,
typename DV>
224template <
class FEC,
class DV>
225DenseFlatAssembler(FEC&& fes,
const DV&
dirichletValues) -> DenseFlatAssembler<FEC, DV>;
228template <
typename FEC,
typename DV>
230 return std::make_shared<DenseFlatAssembler<FEC, DV>>(std::forward<FEC>(fes),
dirichletValues);
Implementation of assembler functions.
Definition of the LinearElastic class for finite element mechanics computations.
Definition: assemblermanipulatorbuildingblocks.hh:22
MatrixAffordance
A strongly typed enum class representing the matrix affordance.
Definition: ferequirements.hh:63
auto makeSparseFlatAssembler(FEC &&fes, const DV &dirichletValues)
Definition: simpleassemblers.hh:175
auto makeDenseFlatAssembler(FEC &&fes, const DV &dirichletValues)
Definition: simpleassemblers.hh:229
VectorAffordance
A strongly typed enum class representing the vector affordance.
Definition: ferequirements.hh:48
ScalarAffordance
A strongly typed enum class representing the scalar affordance.
Definition: ferequirements.hh:37
def dirichletValues(basis)
Definition: dirichlet_values.py:38
The FlatAssemblerBase takes care of common subtasks done by flat assemblers.
Definition: assembler/interface.hh:30
typename FEContainerRaw::value_type::Requirement FERequirement
Type of the finite element requirement.
Definition: assembler/interface.hh:34
FEC FEContainer
Type of the finite element container (reference or by value).
Definition: assembler/interface.hh:39
typename FEContainerRaw::value_type::GlobalIndex GlobalIndex
Type of the global index.
Definition: assembler/interface.hh:35
DV DirichletValuesType
Type of the Dirichlet values.
Definition: assembler/interface.hh:40
typename DV::Basis Basis
Type of the basis.
Definition: assembler/interface.hh:36
The ScalarAssembler provides an interface for an assembler that assembles scalar quantities.
Definition: assembler/interface.hh:267
ST ScalarType
Definition: assembler/interface.hh:270
The VectorAssembler provides an interface for an assembler that assembles vector quantities.
Definition: assembler/interface.hh:312
VT VectorType
Definition: assembler/interface.hh:315
The MatrixAssembler provides an interface for an assembler that assembles matrix quantities.
Definition: assembler/interface.hh:389
Eigen::SparseMatrix< double > MatrixType
Definition: assembler/interface.hh:392
ScalarFlatAssembler assembles scalar quantities.
Definition: simpleassemblers.hh:30
typename FEContainerRaw::value_type::Requirement FERequirement
Type of the finite element requirement.
Definition: assembler/interface.hh:34
FEC FEContainer
Type of the finite element container (reference or by value).
Definition: assembler/interface.hh:39
ScalarType & getScalarImpl(const FERequirement &feRequirements, ScalarAffordance affordance)
Definition: simpleassemblers.inl:15
ScalarType scal_
Definition: simpleassemblers.hh:48
typename FEContainerRaw::value_type::GlobalIndex GlobalIndex
Type of the global index.
Definition: assembler/interface.hh:35
DV DirichletValuesType
Type of the Dirichlet values.
Definition: assembler/interface.hh:40
FlatAssemblerBase< FEC, DV > Base
Type alias for the base class.
Definition: simpleassemblers.hh:32
typename DV::Basis Basis
Type of the basis.
Definition: assembler/interface.hh:36
VectorFlatAssembler assembles vector quantities using a flat basis Indexing strategy.
Definition: simpleassemblers.hh:66
VectorType vecRed_
Reduced vector quantity.
Definition: simpleassemblers.hh:92
VectorType vec_
Vector quantity.
Definition: simpleassemblers.hh:91
typename FEContainerRaw::value_type::Requirement FERequirement
Type of the finite element requirement.
Definition: assembler/interface.hh:34
ScalarFlatAssembler< FEC, DV > Base
Type alias for the base class.
Definition: simpleassemblers.hh:68
FEC FEContainer
Type of the finite element container (reference or by value).
Definition: assembler/interface.hh:39
void assembleRawVectorImpl(const FERequirement &feRequirements, VectorAffordance affordance, VectorType &assemblyVec)
Definition: simpleassemblers.inl:42
VectorType & getRawVectorImpl(const FERequirement &feRequirements, VectorAffordance affordance)
Definition: simpleassemblers.inl:62
typename FEContainerRaw::value_type::GlobalIndex GlobalIndex
Type of the global index.
Definition: assembler/interface.hh:35
VectorType & getReducedVectorImpl(const FERequirement &feRequirements, VectorAffordance affordance)
Definition: simpleassemblers.inl:79
VectorType & getVectorImpl(const FERequirement &feRequirements, VectorAffordance affordance)
Definition: simpleassemblers.inl:69
DV DirichletValuesType
Type of the Dirichlet values.
Definition: assembler/interface.hh:40
VectorType vecRaw_
Raw vector without changes for dirichlet degrees of freedom.
Definition: simpleassemblers.hh:90
typename DV::Basis Basis
Type of the basis.
Definition: assembler/interface.hh:36
SparseFlatAssembler assembles matrix quantities using a flat basis Indexing strategy....
Definition: simpleassemblers.hh:111
MatrixType & getMatrixImpl(const FERequirement &feRequirements, MatrixAffordance affordance)
Definition: simpleassemblers.inl:134
MatrixType & getReducedMatrixImpl(const FERequirement &feRequirements, MatrixAffordance affordance)
Definition: simpleassemblers.inl:154
MatrixType & getRawMatrixImpl(const FERequirement &feRequirements, MatrixAffordance affordance)
Definition: simpleassemblers.inl:122
DenseFlatAssembler assembles matrix quantities using a flat basis Indexing strategy....
Definition: simpleassemblers.hh:191
MatrixType & getRawMatrixImpl(const FERequirement &feRequirements, MatrixAffordance affordance)
Definition: simpleassemblers.inl:306
MatrixType & getMatrixImpl(const FERequirement &feRequirements, MatrixAffordance affordance)
Definition: simpleassemblers.inl:313
MatrixType & getReducedMatrixImpl(const FERequirement &feRequirements, MatrixAffordance affordance)
Definition: simpleassemblers.inl:329
Defines the interface for flat, scalar, vector and matrix assemblers.