Dune-Fufem 2.11-git
Loading...
Searching...
No Matches
Form language (differential operators)

Description

Differential operators.

Collaboration diagram for Form language (differential operators):

Functions

template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::jacobian (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the jacobian of an operator.
 
template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::divergence (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the divergence of an operator.
 
template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::curl (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the curl of an operator.
 
template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(jacobian(ops)...); }
auto Dune::Fufem::Forms::jacobian (const SumOperator< Ops... > &op)
 Obtain the jacobian of a sum of operators.
 
template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(jacobian(ops)...); }
auto Dune::Fufem::Forms::divergence (const SumOperator< Ops... > &op)
 Obtain the divergence of a sum of operators.
 
template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(curl(ops)...); }
auto Dune::Fufem::Forms::curl (const SumOperator< Ops... > &op)
 Obtain the curl of a sum of operators.
 
template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto Dune::Fufem::Forms::gradient (const Op &op)
 Obtain the gradient of an operator.
 
template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto Dune::Fufem::Forms::grad (const Op &op)
 Obtain the gradient of an operator.
 
template<class Op >
requires requires {divergence(op);}
auto Dune::Fufem::Forms::div (const Op &op)
 Obtain the divergence of an operator.
 
template<class Op >
requires requires {curl(op);}
auto Dune::Fufem::Forms::rot (const Op &op)
 Obtain the curl of an operator.
 
template<class Op >
requires requires {grad(op);}
auto Dune::Fufem::Forms::D (const Op &op, std::size_t k)
 Obtain the i-th partial derivative of an operator.
 

Function Documentation

◆ curl() [1/2]

template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::curl ( const FEFunctionOperator< B, TP, argIndex > &  op)

Obtain the curl of an operator.

Parameters
opThe operator to differentiate

This is implemented for 2d and 3d vector fields only.

◆ curl() [2/2]

template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(curl(ops)...); }
auto Dune::Fufem::Forms::curl ( const SumOperator< Ops... > &  op)

Obtain the curl of a sum of operators.

Parameters
opThe operator to differentiate

This is implemented for 2d and 3d vector fields only.

◆ D()

template<class Op >
requires requires {grad(op);}
auto Dune::Fufem::Forms::D ( const Op &  op,
std::size_t  k 
)

Obtain the i-th partial derivative of an operator.

Parameters
opThe operator to differentiate (must support grad(op))
kIndex of the component to extract.

This extracts the k-th component of the gradient, i.e., the k-th partial derivative.

◆ div()

template<class Op >
requires requires {divergence(op);}
auto Dune::Fufem::Forms::div ( const Op &  op)

Obtain the divergence of an operator.

Parameters
opThe operator to differentiate

◆ divergence() [1/2]

template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::divergence ( const FEFunctionOperator< B, TP, argIndex > &  op)

Obtain the divergence of an operator.

Parameters
opThe operator to differentiate

◆ divergence() [2/2]

template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(jacobian(ops)...); }
auto Dune::Fufem::Forms::divergence ( const SumOperator< Ops... > &  op)

Obtain the divergence of a sum of operators.

Parameters
opThe operator to differentiate

◆ grad()

template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto Dune::Fufem::Forms::grad ( const Op &  op)

Obtain the gradient of an operator.

Parameters
opThe operator to differentiate

This is a shortcut for transpose(jacobian(op)) and gradient(op).

Notice that for a scalar function space, jacobian(op) uses single row matrices (row-vectors) as range type, grad(op) uses single column matrices (column-vectors) as range type.

◆ gradient()

template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto Dune::Fufem::Forms::gradient ( const Op &  op)

Obtain the gradient of an operator.

Parameters
opThe operator to differentiate

This is a shortcut for transpose(jacobian(op)).

Notice that for a scalar function space, jacobian(op) uses single row matrices (row-vectors) as range type, gradient(op) uses single column matrices (column-vectors) as range type.

◆ jacobian() [1/2]

template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::jacobian ( const FEFunctionOperator< B, TP, argIndex > &  op)

Obtain the jacobian of an operator.

Parameters
opThe operator to differentiate

◆ jacobian() [2/2]

template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(jacobian(ops)...); }
auto Dune::Fufem::Forms::jacobian ( const SumOperator< Ops... > &  op)

Obtain the jacobian of a sum of operators.

Parameters
opThe operator to differentiate

◆ rot()

template<class Op >
requires requires {curl(op);}
auto Dune::Fufem::Forms::rot ( const Op &  op)

Obtain the curl of an operator.

Parameters
opThe operator to differentiate

This is implemented for 2d and 3d vector fields only.