Rodin::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

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.