Assembly namespace
Module for performing the assembly of linear algebra objects from variational expressions.
The Assembly module provides the core infrastructure for assembling finite element matrices and vectors from variational forms. It supports both sequential and parallel assembly strategies, with specializations for different operator types and finite element spaces.
Key Features
- Bilinear Form Assembly: Efficient assembly of stiffness matrices
- Linear Form Assembly: Assembly of load vectors and right-hand sides
- Parallel Assembly: Support for OpenMP-based parallel assembly
- Template Specialization: Optimized assembly for different operator types
- Mixed Formulations: Support for mixed finite element problems
Classes
-
template<class LinearAlgebraType, class Operand>class AssemblyBase
- Base class template for assembly operations.
-
template<class OperatorType, class Solution, class TrialFES, class TestFES>class AssemblyBase<OperatorType, Variational::BilinearForm<Solution, TrialFES, TestFES, OperatorType>>
- Base class for bilinear form assembly operations.
-
template<class VectorType, class FES>class AssemblyBase<VectorType, Variational::LinearForm<FES, VectorType>>
- Base class for linear form assembly operations.
-
template<class TrialFES, class TestFES>class BilinearFormAssemblyInput
- Input data for bilinear form assembly.
-
template<class ... Ts>class BilinearFormTupleAssemblyInput
- Input data for tuple of bilinear forms assembly.
-
template<class ... Ts>class Default
- Default assembly strategy selector.
-
template<>class Default<Context::Local>
- Default assembly strategy for local context without OpenMP.
-
template<>class Default<Context::Local, Context::Local>
- Default assembly strategy for mixed local contexts without OpenMP.
-
template<class Scalar, class Solution, class FES, class Value>class DirichletBCAssemblyInput
- Input data for Dirichlet boundary condition assembly.
-
template<class ... Ts>class Generic
- Generic problem assembly implementation.
-
template<class LinearSystem, class TrialFunction, class TestFunction>class Generic<LinearSystem, Variational::Problem<LinearSystem, TrialFunction, TestFunction>>
- Generic assembly implementation for complete variational problems.
-
template<class FES>class LinearFormAssemblyInput
- Input data for linear form assembly.
-
template<class ... Ts>class LinearFormTupleAssemblyInput
- Input data for tuple of linear forms assembly.
-
template<class Solution, class TrialFES, class TestFES>class OpenMP<::Mat, Variational::BilinearForm<Solution, TrialFES, TestFES, ::Mat>>
- OpenMP assembly for PETSc Mat (bilinear form)
-
template<class FES>class OpenMP<::Vec, Variational::LinearForm<FES, ::Vec>>
- OpenMP assembly for PETSc Vec (linear form)
-
template<class Solution, class TrialFES, class TestFES>class OpenMP<Math::SparseMatrix<typename FormLanguage::Dot<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TestFES>::ScalarType>::Type>, Variational::BilinearForm<Solution, TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Dot<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TestFES>::ScalarType>::Type>>>
- OpenMP assembly of the Math::
SparseMatrix associated to a BilinearFormBase object. -
template<class FES>class OpenMP<Math::Vector<typename FormLanguage::Traits<FES>::ScalarType>, Variational::LinearForm<FES, Math::Vector<typename FormLanguage::Traits<FES>::ScalarType>>>
- OpenMP assembly of the Math::
Vector associated to a LinearForm object. -
template<class Solution, class TrialFES, class TestFES>class OpenMP<std::vector<Eigen::Triplet<typename FormLanguage::Dot<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TestFES>::ScalarType>::Type>>, Variational::BilinearForm<Solution, TrialFES, TestFES, std::vector<Eigen::Triplet<typename FormLanguage::Dot<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TestFES>::ScalarType>::Type>>>>
- OpenMP-based parallel assembly for bilinear forms.
-
template<>class OpenMPIteration<Geometry::Mesh<Context::Local>>
- OpenMP-based parallel mesh iteration for multi-threaded assembly.
-
template<class ProblemBody, class TrialFunction, class TestFunction>class ProblemAssemblyInput
- Input data for complete problem assembly.
-
template<class LinearAlgebraType, class Operand>class Sequential
- Sequential (single-threaded) assembly implementation.
-
template<class Mesh>class SequentialIteration
- Sequential mesh iteration strategy.
-
template<>class SequentialIteration<Geometry::Mesh<Context::Local>>
- Sequential mesh iteration for single-threaded assembly.
Functions
-
template<class TrialFES, class TestFES>BilinearFormAssemblyInput(const TrialFES&, const TestFES&, FormLanguage::
List<Variational:: LocalBilinearFormIntegratorBase<decltype(std::declval<typename FormLanguage:: Traits<TrialFES>::ScalarType>()*std::declval<typename FormLanguage:: Traits<TestFES>::ScalarType>())>, &, FormLanguage:: List<Variational:: GlobalBilinearFormIntegratorBase<decltype(std::declval<typename FormLanguage:: Traits<TrialFES>::ScalarType>()*std::declval<typename FormLanguage:: Traits<TestFES>::ScalarType>())>, &) -> BilinearFormAssemblyInput< TrialFES, TestFES > - Template argument deduction guide for BilinearFormAssemblyInput.
-
OpenMPIteration(const Geometry::
Mesh<Context:: Local>& mesh, const Geometry:: Region&) -> OpenMPIteration< Geometry::Mesh< Context::Local > > - Template argument deduction guide for OpenMPIteration.
-
SequentialIteration(const Geometry::
Mesh<Context:: Local>& mesh, const Geometry:: Region&) -> SequentialIteration< Geometry::Mesh< Context::Local > > - Template argument deduction guide for SequentialIteration.
Function documentation
#include <Rodin/Assembly/Input.h>
template<class TrialFES, class TestFES>
Rodin:: Assembly:: BilinearFormAssemblyInput(const TrialFES&,
const TestFES&,
FormLanguage:: List<Variational:: LocalBilinearFormIntegratorBase<decltype(std::declval<typename FormLanguage:: Traits<TrialFES>::ScalarType>()*std::declval<typename FormLanguage:: Traits<TestFES>::ScalarType>())>,
&,
FormLanguage:: List<Variational:: GlobalBilinearFormIntegratorBase<decltype(std::declval<typename FormLanguage:: Traits<TrialFES>::ScalarType>()*std::declval<typename FormLanguage:: Traits<TestFES>::ScalarType>())>,
&) -> BilinearFormAssemblyInput< TrialFES, TestFES >
Template argument deduction guide for BilinearFormAssemblyInput.