H1a

Hilbertian $ H^1 $ extension-regularization procedure with a regularization length-scale parameter.

Defined in Rodin/Hilbert/H1a.h

template <
  class Solution,
  class FES>
class H1a;
Template parameters
Solution Solution type
FES Finite element space type

This class implements a Hilbert space extension operator that solves regularized problems of the form:

\[a(u, v) := \alpha^2 \int_{\mathbb{R}^d} \nabla u : \nabla v \, dx + \int_{\mathbb{R}^d} u \cdot v \, dx \]

where $ \alpha $ is the regularization parameter controlling the length scale of the extension.

Constructors, destructors, conversion operators

H1a(const FES& fes)
Constructs an H1a extension operator.
H1a(const H1a& other)
Copies parameters, boundary conditions and the owned solution.
H1a(H1a&& other)
Moves an extension while binding its working problem to its new owner.

Public functions

auto setAlpha(Real alpha) -> H1a&
Sets the regularization parameter $ \alpha $ .
template<class Differential>
auto operator()(const Differential& lf) -> auto
Applies the extension operator to a differential form.
auto operator+=(const Variational::DirichletBCBase<ScalarType>& dbc) -> H1a&
Adds a Dirichlet boundary condition to the problem.
auto getProblem() -> auto&
Gets the underlying variational problem.
auto getProblem() const -> const auto&
Gets the underlying variational problem.
auto getTrialFunction() const -> const auto&
Gets the trial function used in the formulation.
auto getTestFunction() const -> const auto&
Gets the test function used in the formulation.
auto getFiniteElementSpace() const -> const FES&
Gets the finite element space.

Function documentation

H1a(const FES& fes)

Constructs an H1a extension operator.

Parameters
fes Finite element space for the problem

H1a(const H1a& other)

Copies parameters, boundary conditions and the owned solution.

Parameters
other Extension to copy.

The working problem is bound to this object's trial and test functions. Its formulation and linear system are rebuilt on the next application.

H1a(H1a&& other)

Moves an extension while binding its working problem to its new owner.

Parameters
other Extension to move.

Boundary conditions are retained; the formulation and linear system are rebuilt on the next application, as in copy construction.

H1a& setAlpha(Real alpha)

Sets the regularization parameter $ \alpha $ .

Parameters
alpha Regularization length-scale parameter
Returns Reference to this object for method chaining

template<class Solution, class FES> template<class Differential>
auto operator()(const Differential& lf)

Applies the extension operator to a differential form.

Template parameters
Differential Type of the differential form
Parameters
lf Linear functional to extend
Returns Solution of the regularized extension problem

Replaces the retained formulation and solves into the owned trial function. This operation updates the extension's working state.

H1a& operator+=(const Variational::DirichletBCBase<ScalarType>& dbc)

Adds a Dirichlet boundary condition to the problem.

Parameters
dbc Dirichlet boundary condition to add
Returns Reference to this object for method chaining

auto& getProblem()

Gets the underlying variational problem.

Returns Reference to the variational problem

const auto& getProblem() const

Gets the underlying variational problem.

Returns Const reference to the variational problem

const auto& getTrialFunction() const

Gets the trial function used in the formulation.

Returns Const reference to the trial function

const auto& getTestFunction() const

Gets the test function used in the formulation.

Returns Const reference to the test function

const FES& getFiniteElementSpace() const

Gets the finite element space.

Returns Const reference to the finite element space