template<class TrialFES, class TestFES>
Rodin::Variational::Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>> class

General class to assemble linear systems with Math::SparseMatrix and Math::Vector types in a sequential context.

Base classes

template<class Operator, class Vector, class Scalar>
class ProblemBase<Math::SparseMatrix<FormLanguage::Mult<FormLanguage::Traits<TrialFES>::ScalarType, FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<FormLanguage::Traits<TestFES>::ScalarType>, FormLanguage::Mult<FormLanguage::Traits<TrialFES>::ScalarType, FormLanguage::Traits<TrialFES>::ScalarType> ::Type>
Base class for variational problem objects.

Constructors, destructors, conversion operators

Problem(TrialFunction<TrialFES>& u, TestFunction<TestFES>& v) constexpr
Constructs an empty problem involving the trial function $ u $ and the test function $ v $ .
Problem(const Problem& other) deleted
Deleted copy constructor.

Public functions

void operator=(const Problem& other) deleted
Deleted copy assignment operator.
auto assemble() -> Problem& override
Assembles the underlying linear system to solve.
auto getMassVector() -> VectorType& override
auto getMassVector() const -> const VectorType& override
auto getStiffnessOperator() -> OperatorType& override
auto getStiffnessOperator() const -> const OperatorType& override
auto copy() const -> Problem* override noexcept
Copies the object and returns a non-owning pointer to the copied object.

Function documentation

template<class TrialFES, class TestFES>
Rodin::Variational::Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>><TrialFES, TestFES>::Problem(TrialFunction<TrialFES>& u, TestFunction<TestFES>& v) constexpr

Constructs an empty problem involving the trial function $ u $ and the test function $ v $ .

Parameters
in/out Trial function
in/out Test function

template<class TrialFES, class TestFES>
VectorType& Rodin::Variational::Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>><TrialFES, TestFES>::getMassVector() override

Returns Reference to the mass vector.

This must be called only after assemble() has been called.

template<class TrialFES, class TestFES>
const VectorType& Rodin::Variational::Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>><TrialFES, TestFES>::getMassVector() const override

Returns Constant reference to the mass vector.

This must be called only after assemble() has been called.

template<class TrialFES, class TestFES>
OperatorType& Rodin::Variational::Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>><TrialFES, TestFES>::getStiffnessOperator() override

Returns Reference to the stiffness operator.

This must be called only after assemble() has been called.

template<class TrialFES, class TestFES>
const OperatorType& Rodin::Variational::Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>><TrialFES, TestFES>::getStiffnessOperator() const override

Returns Constant reference to the stiffness operator.

This must be called only after assemble() has been called.

template<class TrialFES, class TestFES>
Problem* Rodin::Variational::Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>><TrialFES, TestFES>::copy() const override noexcept

Copies the object and returns a non-owning pointer to the copied object.

Returns Non-owning pointer to the copied object.