1#ifndef PROJECTS_DPG_PRODUCT_ELEMENT_MATRIX_PROVIDER_BUILDER
2#define PROJECTS_DPG_PRODUCT_ELEMENT_MATRIX_PROVIDER_BUILDER
5#include "loc_comp_dpg.h"
6#include "product_element_matrix_provider.h"
31template <
typename SCALAR>
83 template <
typename DIFF_COEFF>
116 template <
typename CONVECTION_COEFF_1,
typename CONVECTION_COEFF_2>
119 CONVECTION_COEFF_1 beta_1, CONVECTION_COEFF_2 beta_2);
144 template <
typename REACTION_COEFF>
147 REACTION_COEFF gamma);
176 template <
typename DIFF_COEFF>
203 template <
typename COEFF>
211 std::shared_ptr<ProductElementMatrixProvider<SCALAR>>
Build();
223 std::vector<std::shared_ptr<SubElementMatrixProvider<SCALAR>>>
subproviders_;
226template <
typename SCALAR>
227template <
typename DIFF_COEFF>
231 subproviders_.push_back(
233 fe_space_trial_, fe_space_test_, trial_component, test_component,
239template <
typename SCALAR>
240template <
typename CONVECTION_COEFF_1,
typename CONVECTION_COEFF_2>
244 CONVECTION_COEFF_1 beta_1, CONVECTION_COEFF_2 beta_2) {
246 SCALAR, CONVECTION_COEFF_1, CONVECTION_COEFF_2>>(
247 fe_space_trial_, fe_space_test_, trial_component, test_component, beta_1,
252template <
typename SCALAR>
253template <
typename REACTION_COEFF>
257 subproviders_.push_back(
259 fe_space_trial_, fe_space_test_, trial_component, test_component,
264template <
typename SCALAR>
265template <
typename DIFF_COEFF>
269 subproviders_.push_back(
271 fe_space_trial_, fe_space_test_, trial_component, test_component,
276template <
typename SCALAR>
277template <
typename COEFF>
281 subproviders_.push_back(
283 fe_space_trial_, fe_space_test_, trial_component, test_component,
288template <
typename SCALAR>
289std::shared_ptr<ProductElementMatrixProvider<SCALAR>>
291 auto provider = std::make_shared<ProductElementMatrixProvider<SCALAR>>(
292 fe_space_trial_, fe_space_test_, subproviders_);
Class for local quadrature based computations sub element matrices corresponding to convection-like e...
Class for local quadrature based computations of sub element matrices corresponding to diffusion elem...
class for local quadrature based computations of sub element matrices corresponding to element matric...
Builder class to build a ProductElementMatrixProvider.
std::shared_ptr< ProductUniformFESpace< SCALAR > > fe_space_trial_
collection of specifications for the trial space
ProductElementMatrixProviderBuilder & AddReactionElementMatrixProvider(size_type trial_component, size_type test_component, REACTION_COEFF gamma)
std::shared_ptr< ProductElementMatrixProvider< SCALAR > > Build()
Build the ProdcutElementMatrixProvider for the bilinear form based on the provided bilinear forms .
ProductElementMatrixProviderBuilder & AddFluxElementMatrixProvider(size_type trial_component, size_type test_component, DIFF_COEFF alpha)
ProductElementMatrixProviderBuilder & AddConvectionElementMatrixProvider(size_type trial_component, size_type test_component, CONVECTION_COEFF_1 beta_1, CONVECTION_COEFF_2 beta_2)
ProductElementMatrixProviderBuilder(const ProductElementMatrixProviderBuilder &)=delete
standard constructor
ProductElementMatrixProviderBuilder & AddTraceElementMatrixProvider(size_type trial_component, size_type test_component, COEFF beta)
~ProductElementMatrixProviderBuilder()=default
virtual destructor
std::vector< std::shared_ptr< SubElementMatrixProvider< SCALAR > > > subproviders_
vector of Element Matrix Providers representing already added bilinear forms
ProductElementMatrixProviderBuilder & AddDiffusionElementMatrixProvider(size_type trial_component, size_type test_component, DIFF_COEFF alpha)
std::shared_ptr< ProductUniformFESpace< SCALAR > > fe_space_test_
collection of specifications for the test space
ProductElementMatrixProviderBuilder(ProductElementMatrixProviderBuilder &&) noexcept=delete
Class for local quadrature based computations of sub element matrices corresponding to reaction eleme...
Class for local quadrature based computations of sub element matrices corresponding to element matric...
Contains functionality for the implementation of DPG methods.
lf::uscalfe::size_type size_type
Type for vector length/matrix sizes.