LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
Builder class to build a ProductElementMatrixProvider. More...
#include </home/nico/bildung/SemVI/thesis/lehrfempp/projects/dpg/product_element_matrix_provider_builder.h>
Public Member Functions | |
ProductElementMatrixProviderBuilder (const ProductElementMatrixProviderBuilder &)=delete | |
standard constructor More... | |
ProductElementMatrixProviderBuilder (ProductElementMatrixProviderBuilder &&) noexcept=delete | |
ProductElementMatrixProviderBuilder & | operator= (const ProductElementMatrixProviderBuilder &)=delete |
ProductElementMatrixProviderBuilder & | operator= (ProductElementMatrixProviderBuilder &&)=delete |
ProductElementMatrixProviderBuilder (std::shared_ptr< ProductUniformFESpace< SCALAR > > fe_space_trial, std::shared_ptr< ProductUniformFESpace< SCALAR > > fe_space_test) | |
main constructor, constructs a new builder More... | |
template<typename DIFF_COEFF > | |
ProductElementMatrixProviderBuilder & | AddDiffusionElementMatrixProvider (size_type trial_component, size_type test_component, DIFF_COEFF alpha) |
template<typename CONVECTION_COEFF_1 , typename CONVECTION_COEFF_2 > | |
ProductElementMatrixProviderBuilder & | AddConvectionElementMatrixProvider (size_type trial_component, size_type test_component, CONVECTION_COEFF_1 beta_1, CONVECTION_COEFF_2 beta_2) |
template<typename REACTION_COEFF > | |
ProductElementMatrixProviderBuilder & | AddReactionElementMatrixProvider (size_type trial_component, size_type test_component, REACTION_COEFF gamma) |
template<typename DIFF_COEFF > | |
ProductElementMatrixProviderBuilder & | AddFluxElementMatrixProvider (size_type trial_component, size_type test_component, DIFF_COEFF alpha) |
template<typename COEFF > | |
ProductElementMatrixProviderBuilder & | AddTraceElementMatrixProvider (size_type trial_component, size_type test_component, COEFF beta) |
std::shared_ptr< ProductElementMatrixProvider< SCALAR > > | Build () |
Build the ProdcutElementMatrixProvider for the bilinear form \( b\) based on the provided bilinear forms \( b_k \). More... | |
~ProductElementMatrixProviderBuilder ()=default | |
virtual destructor More... | |
template<typename DIFF_COEFF > | |
ProductElementMatrixProviderBuilder< SCALAR > & | AddDiffusionElementMatrixProvider (size_type trial_component, size_type test_component, DIFF_COEFF alpha) |
template<typename CONVECTION_COEFF_1 , typename CONVECTION_COEFF_2 > | |
ProductElementMatrixProviderBuilder< SCALAR > & | AddConvectionElementMatrixProvider (size_type trial_component, size_type test_component, CONVECTION_COEFF_1 beta_1, CONVECTION_COEFF_2 beta_2) |
template<typename REACTION_COEFF > | |
ProductElementMatrixProviderBuilder< SCALAR > & | AddReactionElementMatrixProvider (size_type trial_component, size_type test_component, REACTION_COEFF gamma) |
template<typename DIFF_COEFF > | |
ProductElementMatrixProviderBuilder< SCALAR > & | AddFluxElementMatrixProvider (size_type trial_component, size_type test_component, DIFF_COEFF alpha) |
template<typename COEFF > | |
ProductElementMatrixProviderBuilder< SCALAR > & | AddTraceElementMatrixProvider (size_type trial_component, size_type test_component, COEFF beta) |
Private Attributes | |
std::shared_ptr< ProductUniformFESpace< SCALAR > > | fe_space_trial_ |
collection of specifications for the trial space More... | |
std::shared_ptr< ProductUniformFESpace< SCALAR > > | fe_space_test_ |
collection of specifications for the test space More... | |
std::vector< std::shared_ptr< SubElementMatrixProvider< SCALAR > > > | subproviders_ |
vector of Element Matrix Providers representing already added bilinear forms More... | |
Builder class to build a ProductElementMatrixProvider.
SCALAR | type of entries of the element matrics. Field type such as double |
This class can be used to construct a ProductElementMatrixProvider between two product spaces
\[ U = U_0 \times U_1 \times \dots \times U_{n-1} \]
\[ V = V_0 \times V_1 \times \dots \times V_{m-1} \]
passed in the constructor. Methods are provided to add several bilinear forms
\[ b_k : U_{i_k} \times V_{j_k} \rightarrow \mathbb{R} \]
between two specified components of the spaces to the bilinear form.
The constructed ProductElementMatrixProvider evaluates element matrices of the bilinear form \( b: U \times V \rightarrow \mathbb{R} \) given by
\[ b((u_1, \dots, u_{n-1}),(v_1, \dots v_{m-1})) = \sum_{k} b_k(u_{i_k},v_{j_k}) \]
Definition at line 32 of file product_element_matrix_provider_builder.h.
|
delete |
standard constructor
|
deletenoexcept |
|
inline |
main constructor, constructs a new builder
fe_space_trial | collection of specifications about the (product) trial space \( U \) |
fe_space_test | collection of specifications about the (product) test space \( V \) |
Definition at line 51 of file product_element_matrix_provider_builder.h.
|
default |
virtual destructor
ProductElementMatrixProviderBuilder & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddConvectionElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
CONVECTION_COEFF_1 | beta_1, | ||
CONVECTION_COEFF_2 | beta_2 | ||
) |
@brief Adds a bilinear form \f$ b_k \f$ to \f$ b \f$ representing a
convection-like term.
trial_component | index of the trial component \( u \) of \( b_k \) |
test_component | index of the test component \( v \) of \( b_k \) |
beta_1 | mesh function for the "first" vector valued convection coefficient \( \beta_1 \) |
beta_2 | mesh function for the "second" vector valued convection coefficient \( \beta_2 \) |
CONVECTION_COEFF_1 | and CONVECTION_COEFF_2 see the type requirements of the template paramters CONVECTION_COEFF_1 and CONVECTION_COEFF_2 in the ConvectionElementMatrixProvider class. |
The (local) added bilinear form \( b_k\) is
\[ (u,v) \mapsto\int\limits_{K} \mathbf{grad}\,v \cdot \boldsymbol{\beta_1}(\mathbf{x})u + \mathbf{grad}\,u \cdot \boldsymbol{\beta_2}(\mathbf{x})v \mathrm{d}\mathbf{x} \;, \]
For further information about the added bilinear form \( b_k \) see the documentation of ConvectionElementMatrixProvider
Referenced by projects::dpg::test::TestConververgencePrimalDPGAdaptedNormConvectionDiffusionDirichletBVP(), and projects::dpg::test::TestConververgencePrimalDPGConvectionDiffusionDirichletBVP().
ProductElementMatrixProviderBuilder< SCALAR > & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddConvectionElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
CONVECTION_COEFF_1 | beta_1, | ||
CONVECTION_COEFF_2 | beta_2 | ||
) |
Definition at line 242 of file product_element_matrix_provider_builder.h.
ProductElementMatrixProviderBuilder & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddDiffusionElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
DIFF_COEFF | alpha | ||
) |
@brief Adds a bilinear form \f$ b_k \f$ to \f$ b \f$ representing a
diffusion term.
trial_component | index of the trial component \( u \) of \( b_k \) |
test_component | index of the test component \( v \) of \( b_k \) |
alpha | mesh function of the matrix or scalar valued diffusion coefficient \( \alpha \) |
DIFF_COEFF | see the type requirements of the template parameter DIFF_COEFF in the DiffusionElementMatrixProvider class. |
The (local) added bilinear form \( b_k\) is
\[ (u,v) \mapsto\int\limits_{K}\mathbf{grad}\,u \cdot \boldsymbol{\alpha}(\mathbf{x})\mathbf{grad}\,v \mathrm{d}\mathbf{x} \;, \]
For further information about the added bilinear form \( b_k \) see documentation of the class DiffusionElementMatrixProvider
Referenced by projects::dpg::test::TestConververgencePrimalDPGAdaptedNormConvectionDiffusionDirichletBVP(), and projects::dpg::test::TestConververgencePrimalDPGConvectionDiffusionDirichletBVP().
ProductElementMatrixProviderBuilder< SCALAR > & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddDiffusionElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
DIFF_COEFF | alpha | ||
) |
Definition at line 229 of file product_element_matrix_provider_builder.h.
ProductElementMatrixProviderBuilder & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddFluxElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
DIFF_COEFF | alpha | ||
) |
@brief Adds a bilinear form \f$ b_k \f$ to \f$ b \f$ representing a term
that involves a fulx component in the trial space.
trial_component | index of the trial component \( \hat{q}_n \) of \( b_k \). This component should represent a flux. |
test_component | index of the test component \( v \) of \( b_k \) |
alpha | mesh function for the scalar valued coefficient \( \alpha \) |
DIFF_COEFF | see the type requeirements for the template parameter DIFF_COEFF in the FluxElementMatrixProvider class. |
The (local) added bilinear form \( b_k\) is
\[ (\hat{q}_n,v) \mapsto\int\limits_{\partial K} \hat{q}_n \mathrm{sgn}_K(\mathbf{x}) \alpha(\mathbf{x}) v \mathrm{d}\mathbf{x} \;, \]
For further information about the added bilinear form \( b_k \) see the documentation of FluxElementMatrixProvider.
Referenced by projects::dpg::test::TestConververgencePrimalDPGAdaptedNormConvectionDiffusionDirichletBVP(), and projects::dpg::test::TestConververgencePrimalDPGConvectionDiffusionDirichletBVP().
ProductElementMatrixProviderBuilder< SCALAR > & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddFluxElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
DIFF_COEFF | alpha | ||
) |
Definition at line 267 of file product_element_matrix_provider_builder.h.
ProductElementMatrixProviderBuilder & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddReactionElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
REACTION_COEFF | gamma | ||
) |
@brief Adds a bilinear form \f$ b_k \f$ to \f$ b \f$ representing a
reaction term.
trial_component | index of the trial component \( u \) of \( b_k \) |
test_component | index of the test component \( v \) of \( b_k \) |
gamma | mesh function for the scalar valued reaction coefficient \( \gamma \). @tparam REACTION_COEFF see the type requirements for the template parameterREACTION_COEFF in the ReactionElementMatrixProvider class. |
The (local) added bilinear form \( b_k\) is
\[ (u,v) \mapsto\int\limits_{K} \gamma(\mathbf{x})u\,v\,\mathrm{d}\mathbf{x} \;, \]
For further information about the added bilinear form \( b_k \) see the documentation of ReactionElementMatrixProvider.
Referenced by projects::dpg::test::TestConververgencePrimalDPGConvectionDiffusionDirichletBVP().
ProductElementMatrixProviderBuilder< SCALAR > & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddReactionElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
REACTION_COEFF | gamma | ||
) |
Definition at line 255 of file product_element_matrix_provider_builder.h.
ProductElementMatrixProviderBuilder & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddTraceElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
COEFF | beta | ||
) |
@brief Adds a bilinear form \f$ b_k \f$ to \f$ b \f$ representing a term
that involves a trace component in the trial space.
trial_component | index of the trial component \( \hat{u} \) of \( b_k \). This component should represent a trace. |
test_component | index of the test component \( v \) of \( b_k \) |
beta | mesh function for the vector valued coefficient \( \beta \) |
COEFF | see the type requirements for the template parameter COEFF in the TraceElementMAtrixProvider class. |
The (local) added bilinear form \( b_k\) is
\[ (\hat u,v) \mapsto\int\limits_{\partial K} \hat u \mathbf{n}_K \cdot \boldsymbol{\beta}(\mathbf{x}) v\mathrm{d}\mathbf{x} \;, \]
For further information about the added bilinear form \( b_k \) see the documentation of TraceElementMatrixProvider.
ProductElementMatrixProviderBuilder< SCALAR > & projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::AddTraceElementMatrixProvider | ( | size_type | trial_component, |
size_type | test_component, | ||
COEFF | beta | ||
) |
Definition at line 279 of file product_element_matrix_provider_builder.h.
std::shared_ptr< ProductElementMatrixProvider< SCALAR > > projects::dpg::ProductElementMatrixProviderBuilder< SCALAR >::Build |
Build the ProdcutElementMatrixProvider for the bilinear form \( b\) based on the provided bilinear forms \( b_k \).
Definition at line 290 of file product_element_matrix_provider_builder.h.
Referenced by projects::dpg::test::TestConververgencePrimalDPGAdaptedNormConvectionDiffusionDirichletBVP(), and projects::dpg::test::TestConververgencePrimalDPGConvectionDiffusionDirichletBVP().
|
delete |
|
delete |
|
private |
collection of specifications for the test space
Definition at line 220 of file product_element_matrix_provider_builder.h.
|
private |
collection of specifications for the trial space
Definition at line 218 of file product_element_matrix_provider_builder.h.
|
private |
vector of Element Matrix Providers representing already added bilinear forms
Definition at line 223 of file product_element_matrix_provider_builder.h.