template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody class

Accumulated bilinear forms, linear forms and boundary conditions of a Problem.

Base classes

template<class Scalar>
class ProblemBodyBase<Scalar>
Base class representing the body of a variational problem.

Public types

using VectorType = Vector
Vector type of the linear system.
using OperatorType = Operator
Assembled operator type.
using VectorScalarType = typename FormLanguage::Traits<std::remove_reference_t<VectorType>>::ScalarType
Scalar value type of the vector.
using OperatorScalarType = typename FormLanguage::Traits<std::remove_reference_t<OperatorType>>::ScalarType
Scalar value type of the operator.
using LinearFormBaseType = LinearFormBase<VectorType>
Linear form base type.
using BilinearFormBaseType = BilinearFormBase<OperatorType>
Bilinear form base type.
using LinearFormBaseListType = FormLanguage::List<LinearFormBaseType>
List type of linear forms.
using BilinearFormBaseListType = FormLanguage::List<BilinearFormBaseType>
List type of bilinear forms.
using LinearFormIntegratorBaseType = LinearFormIntegratorBase<VectorScalarType>
Linear form integrator base type.
using LocalBilinearFormIntegratorBaseType = LocalBilinearFormIntegratorBase<OperatorScalarType>
Local bilinear form integrator base type.
using GlobalBilinearFormIntegratorBaseType = GlobalBilinearFormIntegratorBase<OperatorScalarType>
Global bilinear form integrator base type.
using LinearFormIntegratorBaseListType = FormLanguage::List<LinearFormIntegratorBaseType>
List type of linear form integrators.
using LocalBilinearFormIntegratorBaseListType = FormLanguage::List<LocalBilinearFormIntegratorBaseType>
List type of local bilinear form integrators.
using GlobalBilinearFormIntegratorBaseListType = FormLanguage::List<GlobalBilinearFormIntegratorBaseType>
List type of global bilinear form integrators.
using Parent = ProblemBodyBase<Scalar>
Parent class type.

Constructors, destructors, conversion operators

ProblemBody(const LocalBilinearFormIntegratorBaseType& bfi)
Constructs the ProblemBody from the given arguments.
ProblemBody(const GlobalBilinearFormIntegratorBaseType& bfi)
Constructs the ProblemBody from the given arguments.
ProblemBody(const LocalBilinearFormIntegratorBaseListType& bfis)
Constructs the ProblemBody from the given arguments.
ProblemBody(const GlobalBilinearFormIntegratorBaseListType& bfis)
Constructs the ProblemBody from the given arguments.
ProblemBody(const ProblemBody<OperatorType, void, Scalar>& pbo)
Constructs the ProblemBody from the given arguments.
ProblemBody(const BilinearFormBaseType& bf)
Constructs the ProblemBody from the given arguments.
ProblemBody(const ProblemBody<void, VectorType, Scalar>& pbv)
Constructs the ProblemBody from the given arguments.
ProblemBody(const ProblemBody<void, void, Scalar>& parent)
Constructs the ProblemBody from the given arguments.
ProblemBody(const ProblemBody& other)
Copy constructor.
ProblemBody(ProblemBody&& other)
Move constructor.

Public functions

auto operator=(const ProblemBody& other) -> ProblemBody&
Copy assignment.
auto operator=(ProblemBody&& other) -> ProblemBody&
Move assignment.
auto getLFs() -> LinearFormBaseListType&
Gets the linear forms of the problem.
auto getBFs() -> BilinearFormBaseListType&
Gets the bilinear forms of the problem.
auto getLFs() const -> const LinearFormBaseListType&
Gets the linear forms of the problem.
auto getBFs() const -> const BilinearFormBaseListType&
Gets the bilinear forms of the problem.
auto copy() const -> ProblemBody* override noexcept
Polymorphically copies this problem body base.

Function documentation

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const LocalBilinearFormIntegratorBaseType& bfi)

Constructs the ProblemBody from the given arguments.

Parameters
bfi Bilinear form integrator.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const GlobalBilinearFormIntegratorBaseType& bfi)

Constructs the ProblemBody from the given arguments.

Parameters
bfi Bilinear form integrator.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const LocalBilinearFormIntegratorBaseListType& bfis)

Constructs the ProblemBody from the given arguments.

Parameters
bfis Bilinear form integrators.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const GlobalBilinearFormIntegratorBaseListType& bfis)

Constructs the ProblemBody from the given arguments.

Parameters
bfis Bilinear form integrators.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const ProblemBody<OperatorType, void, Scalar>& pbo)

Constructs the ProblemBody from the given arguments.

Parameters
pbo Problem body supplying the operator terms.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const BilinearFormBaseType& bf)

Constructs the ProblemBody from the given arguments.

Parameters
bf Bilinear form.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const ProblemBody<void, VectorType, Scalar>& pbv)

Constructs the ProblemBody from the given arguments.

Parameters
pbv Problem body supplying the vector terms.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const ProblemBody<void, void, Scalar>& parent)

Constructs the ProblemBody from the given arguments.

Parameters
parent Problem body supplying the boundary conditions.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(const ProblemBody& other)

Copy constructor.

Parameters
other Object to copy from.

template<class Operator, class Vector, class Scalar>
Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::ProblemBody(ProblemBody&& other)

Move constructor.

Parameters
other Object to move from.

template<class Operator, class Vector, class Scalar>
ProblemBody& Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::operator=(const ProblemBody& other)

Copy assignment.

Parameters
other Object to copy from.
Returns Reference to this object after the operation.

template<class Operator, class Vector, class Scalar>
ProblemBody& Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::operator=(ProblemBody&& other)

Move assignment.

Parameters
other Object to move from.
Returns Reference to this object after the operation.

template<class Operator, class Vector, class Scalar>
LinearFormBaseListType& Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::getLFs()

Gets the linear forms of the problem.

Returns The linear forms of the problem.

template<class Operator, class Vector, class Scalar>
BilinearFormBaseListType& Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::getBFs()

Gets the bilinear forms of the problem.

Returns The bilinear forms of the problem.

template<class Operator, class Vector, class Scalar>
const LinearFormBaseListType& Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::getLFs() const

Gets the linear forms of the problem.

Returns The linear forms of the problem.

template<class Operator, class Vector, class Scalar>
const BilinearFormBaseListType& Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::getBFs() const

Gets the bilinear forms of the problem.

Returns The bilinear forms of the problem.

template<class Operator, class Vector, class Scalar>
ProblemBody* Rodin::Variational::ProblemBody<Operator, Vector, Scalar>::copy() const override noexcept

Polymorphically copies this problem body base.

Returns Pointer to a newly allocated copy; the caller owns the returned object.