FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Assembly Namespace Reference

Assembly namespace. More...

Namespaces

namespace  Common
 Assembly Common namespace.
 

Classes

class  AnalyticCellProjector
 Analytic cell projector class. More...
 
struct  AnalyticFunctionIntegral
 Helper class to determine the FunctionIntegralInfo type for analytic functions. More...
 
class  AnalyticVertexProjector
 Analytic vertex projector class. More...
 
class  AsmTraits1
 Common single-space assembly traits class template. More...
 
class  AsmTraits2
 Common test-/trial-space assembly traits class template. More...
 
class  AsmTraits3
 Common test-/trial-/mult-space assembly traits class template. More...
 
class  BilinearOperator
 Base class for Bilinear Operators. More...
 
class  BilinearOperatorAssembler
 Bilinear Operator Assembler class template. More...
 
class  BurgersAssembler
 Burgers operator assembly class. More...
 
class  BurgersAssemblerCarreau
 Burgers operator assembly class. More...
 
class  BurgersAssemblyJobBase
 Base class for Burgers assembly jobs. More...
 
class  BurgersAssemblyTaskBase
 Base class for Burgers assembly tasks. More...
 
class  BurgersBlockedAssemblyTaskBase
 Base class for blocked Burgers assembly tasks. More...
 
class  BurgersBlockedMatrixAssemblyJob
 Burgers assembly job for block matrix. More...
 
class  BurgersBlockedVectorAssemblyJob
 Burgers assembly job for block right-hand-side vector. More...
 
class  BurgersCarreauAssemblyJobBase
 Base class for Burgers Careau assembly jobs. More...
 
class  BurgersCarreauAssemblyTaskBase
 Base class for Burgers assembly tasks. More...
 
class  BurgersCarreauBlockedAssemblyTaskBase
 Base class for blocked Burgers Carreau assembly tasks. More...
 
class  BurgersCarreauBlockedMatrixAssemblyJob
 Burgers Carreau assembly job for block matrix. More...
 
class  BurgersCarreauBlockedVectorAssemblyJob
 Burgers Carreau assembly job for block right-hand-side vector. More...
 
class  BurgersCarreauScalarAssemblyTaskBase
 Base class for scalar Burgers Carreau assembly tasks. More...
 
class  BurgersCarreauScalarMatrixAssemblyJob
 Burgers Carreau assembly job for scalar matrix. More...
 
class  BurgersCarreauScalarVectorAssemblyJob
 Burgers Carreau assembly job for scalar right-hand-side vector. More...
 
class  BurgersScalarAssemblyTaskBase
 Base class for scalar Burgers assembly tasks. More...
 
class  BurgersScalarMatrixAssemblyJob
 Burgers assembly job for scalar matrix. More...
 
class  BurgersScalarVectorAssemblyJob
 Burgers assembly job for scalar right-hand-side vector. More...
 
class  CellErrorFunctionIntegralJob
 Assembly job for the elementwise integration of a analytic vs discrete error function. More...
 
class  DiscreteCellProjector
 Discrete cell projector class. More...
 
class  DiscreteEvaluator
 Discrete function evaluator. More...
 
struct  DiscreteFunctionIntegral
 Helper class to determine the FunctionIntegralInfo type for discrete functions. More...
 
struct  DiscreteFunctionIntegral< LAFEM::DenseVector< DT_, IT_ >, Space_ >
 specialization for LAFEM::DenseVector coefficient vectors More...
 
struct  DiscreteFunctionIntegral< LAFEM::DenseVectorBlocked< DT_, IT_, bs_ >, Space_ >
 specialization for LAFEM::DenseVectorBlocked coefficient vectors More...
 
class  DiscreteVertexProjector
 Discrete vertex projector class. More...
 
class  DomainAssembler
 Domain Integral Assembler class template. More...
 
class  DomainAssemblyAnalyticFunctionIntegralJob
 Assembly job for the integration of an analytic function. More...
 
class  DomainAssemblyBasicMatrixTaskCRTP1
 Basic Matrix assembly task CRTP base-class for identical test-/trial-space. More...
 
class  DomainAssemblyBasicMatrixTaskCRTP2
 Basic Matrix assembly task CRTP base-class for (possibly different) test-/trial-spaces. More...
 
class  DomainAssemblyBasicVectorTaskCRTP
 Basic Vector assembly task CRTP base-class. More...
 
class  DomainAssemblyBilinearOperatorApplyVectorJob1
 Vector assembly job for BilinearOperator and identical test-/trial-spaces. More...
 
class  DomainAssemblyBilinearOperatorMatrixJob1
 Matrix assembly job for BilinearOperator and identical test-/trial-spaces. More...
 
class  DomainAssemblyBilinearOperatorMatrixJob2
 Matrix assembly job for BilinearOperator and (possibly different) test-/trial-spaces. More...
 
class  DomainAssemblyDiscreteFunctionIntegralJob
 Assembly job for the integration of a discrete finite element function. More...
 
class  DomainAssemblyErrorFunctionIntegralJob
 Assembly job for the integration of a analytic vs discrete error function. More...
 
class  DomainAssemblyForceFunctionalVectorJob
 Vector assembly job for a force functional represented by an analytic function. More...
 
class  DomainAssemblyJob
 Interface description of a domain assembly job. More...
 
class  DomainAssemblyLinearFunctionalVectorJob
 Vector assembly job for LinearFunctional implementations. More...
 
struct  FEInterpolator
 Interpolation operator between two finite element spaces. More...
 
struct  FEInterpolator< Space::Lagrange1::Element< Trafo_ >, Space::Lagrange2::Element< Trafo_ > >
 Interpolator class from Lagrange2 to Lagrange1. More...
 
struct  FEInterpolator< Space::Lagrange2::Element< Trafo_ >, Space::Lagrange1::Element< Trafo_ > >
 Interpolator class from Lagrange1 to Lagrange2. More...
 
struct  FEInterpolator< Space_, Space_ >
 Interpolator class for trivial interpolator between same class. More...
 
class  FunctionCellIntegralInfo
 Function cell integral info class. More...
 
class  FunctionIntegralInfo
 Function integral info class. More...
 
class  GradOperatorAssembler
 Assembles the gradient operator. More...
 
class  GradPresDivVeloAssembler
 Grad(P)/Div(V) assembler class. More...
 
class  GridTransfer
 Grid-Transfer assembly class template. More...
 
class  Interpolator
 Interpolator class template. More...
 
struct  Lagrange1To2DofAtEntity
 Helper class that recurses through shape dimensions and evaluates Lagrange2 DoF based on Lagrange1 DoF. More...
 
struct  Lagrange1To2DofAtEntity< Trafo_, 0 >
 End of helper class template recursion. More...
 
class  LinearFunctional
 Base class for Linear Functionals. More...
 
class  LinearFunctionalAssembler
 Linear Functional Assembly class template. More...
 
class  MatrixDiscreteEvalData
 Discrete evaluation data for matrix-valued functions. More...
 
class  MeanFilterAssembler
 Mean Filter assembler class. More...
 
class  MirrorAssembler
 Dof-Mirror assembler class template. More...
 
class  OldroydAssembler
 Oldroyd-B operator assembly class. More...
 
class  OuterNormalComputer
 Helper class that computes a weighted outer unit normal field. More...
 
class  RewProjector
 Restricted Element-Wise Projection operator. More...
 
class  ScalarDiscreteEvalData
 Discrete evaluation data for scalar functions. More...
 
class  ScalarErrorComputer
 Scalar H0/H1/H2-error computer class template. More...
 
struct  ScalarErrorInfo
 Scalar Error information structure. More...
 
class  SlipFilterAssembler
 Contains routines to assemble slip filters. More...
 
class  SpaceTransfer
 
class  StokesFBMAssembler
 Stokes Fictitious Boundary Method assembler class. More...
 
class  SymbolicAssembler
 Symbolic Matrix and Graph assembler class. More...
 
class  TraceAssembler
 Trace Integral Assembler class template. More...
 
class  TraceAssemblyAnalyticFunctionIntegralJob
 Assembly job for the trace integration of an analytic function. More...
 
class  TraceAssemblyBasicMatrixTaskCRTP1
 Basic Matrix trace assembly task CRTP base-class for identical test-/trial-space. More...
 
class  TraceAssemblyBasicMatrixTaskCRTP2
 Basic Matrix assembly task CRTP base-class for different test-/trial-space. More...
 
class  TraceAssemblyBasicTaskBase1
 Basic assembly task base class for a single finite element space without pairwise assembly support. More...
 
class  TraceAssemblyBasicTaskBase2
 
class  TraceAssemblyBasicVectorTaskCRTP
 Basic Vector trace assembly task CRTP base-class. More...
 
class  TraceAssemblyBilinearOperatorApplyVectorJob1
 Vector assembly job for BilinearOperator and identical test-/trial-spaces. More...
 
class  TraceAssemblyBilinearOperatorMatrixJob1
 Matrix assembly job for BilinearOperator implementations and identical test-/trial-spaces. More...
 
class  TraceAssemblyBilinearOperatorMatrixJob2
 Matrix assembly job for BilinearOperator implementations and different test-/trial-spaces. More...
 
class  TraceAssemblyDiscreteFunctionIntegralJob
 Assembly job for the trace integration of a discrete finite element function. More...
 
class  TraceAssemblyErrorFunctionIntegralJob
 Assembly job for the trace integration of a analytic vs discrete error function. More...
 
class  TraceAssemblyJob
 Interface description of a trace assembly job. More...
 
class  TraceAssemblyJumpMassMatrixJob
 Matrix assembly job for the mass jump operator. More...
 
class  TraceAssemblyJumpMatrixTaskCRTP1
 Jump Matrix assembly task CRTP base-class for identical test-/trial-space. More...
 
class  TraceAssemblyJumpStabilizationMatrixJob
 Matrix assembly job for the edge-oriented jump stabilization operator. More...
 
class  TraceAssemblyJumpTaskBase1
 Basic assembly task base class for a single finite element space with pairwise assembly support. More...
 
class  TraceAssemblyLinearFunctionalVectorJob
 Vector trace assembly job for LinearFunctional implementations. More...
 
class  TraceAssemblyStokesBodyForceAssemblyJob
 Assembly job for the body forces computation of a Stokes solution vector. More...
 
class  TraceAssemblyStokesVectorAnalysisTaskCRTP
 Basic Stokes Vector analysis task CRTP base-class. More...
 
class  UnitFilterAssembler
 Unit-Filter assembly class template. More...
 
class  VectorDiscreteEvalData
 Discrete evaluation data for vector-valued functions. More...
 
class  VectorErrorComputer
 Vector H0/H1/H2-error computer class template. More...
 
struct  VectorErrorInfo
 Vector Error information structure. More...
 
class  VelocityAnalyser
 Velocity field analyser class. More...
 
struct  VelocityInfo
 Velocity field information structure. More...
 

Enumerations

enum class  ThreadingStrategy {
  automatic = 0 , single , layered , layered_sorted ,
  colored
}
 Threading Strategy for multi-threaded assembler. More...
 

Functions

template<typename Trafo_ , typename Vector_ , typename VectorSol_ , typename BilOp_ , typename Space_ >
void assemble_bilinear_operator_apply_vector_1 (DomainAssembler< Trafo_ > &dom_asm, Vector_ &vector, const VectorSol_ &vec_sol, const BilOp_ &bilinear_operator, const Space_ &space, const String &cubature, const typename Vector_::DataType alpha=typename Vector_::DataType(1))
 Assembles the application of a bilinear operator into a vector with identical test- and trial-spaces. More...
 
template<typename Trafo_ , typename Vector_ , typename VectorSol_ , typename BilOp_ , typename Space_ >
void assemble_bilinear_operator_apply_vector_1 (TraceAssembler< Trafo_ > &trace_asm, Vector_ &vector, const VectorSol_ &vec_sol, const BilOp_ &bilinear_operator, const Space_ &space, const String &cubature, const typename Vector_::DataType alpha=typename Vector_::DataType(1))
 Assembles the application of a bilinear operator into a vector with identical test- and trial-spaces. More...
 
template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename Space_ >
void assemble_bilinear_operator_matrix_1 (DomainAssembler< Trafo_ > &dom_asm, Matrix_ &matrix, const BilOp_ &bilinear_operator, const Space_ &space, const String &cubature, const typename Matrix_::DataType alpha=typename Matrix_::DataType(1))
 Assembles a bilinear operator into a matrix with identical test- and trial-spaces. More...
 
template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename Space_ >
void assemble_bilinear_operator_matrix_1 (TraceAssembler< Trafo_ > &trace_asm, Matrix_ &matrix, const BilOp_ &bilinear_operator, const Space_ &space, const String &cubature, const typename Matrix_::DataType alpha=typename Matrix_::DataType(1))
 Assembles a bilinear operator into a matrix with identical test- and trial-spaces. More...
 
template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename TestSpace_ , typename TrialSpace_ >
void assemble_bilinear_operator_matrix_2 (DomainAssembler< Trafo_ > &dom_asm, Matrix_ &matrix, const BilOp_ &bilinear_operator, const TestSpace_ &test_space, const TrialSpace_ &trial_space, const String &cubature, const typename Matrix_::DataType alpha=typename Matrix_::DataType(1))
 Assembles a bilinear operator into a matrix with different test- and trial-spaces. More...
 
template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename TestSpace_ , typename TrialSpace_ >
void assemble_bilinear_operator_matrix_2 (TraceAssembler< Trafo_ > &trace_asm, Matrix_ &matrix, const BilOp_ &bilinear_operator, const TestSpace_ &test_space, const TrialSpace_ &trial_space, const String &cubature, const typename Matrix_::DataType alpha=typename Matrix_::DataType(1))
 Assembles a bilinear operator into a matrix with different test- and trial-spaces. More...
 
template<typename Trafo_ , typename Vector_ , typename Function_ , typename Space_ >
void assemble_force_function_vector (DomainAssembler< Trafo_ > &dom_asm, Vector_ &vector, const Function_ &function, const Space_ &space, const String &cubature, const typename Vector_::DataType alpha=typename Vector_::DataType(1))
 Assembles a force function into a vector. More...
 
template<typename Trafo_ , typename Matrix_ , typename Space_ >
void assemble_jump_mass_matrix (TraceAssembler< Trafo_ > &trace_asm, Matrix_ &matrix, const Space_ &space, const String &cubature, const typename Matrix_::DataType alpha=typename Matrix_::DataType(1))
 Assembles mass jump operator into a matrix. More...
 
template<typename Trafo_ , typename Matrix_ , typename Space_ >
void assemble_jump_stabilization_matrix (TraceAssembler< Trafo_ > &trace_asm, Matrix_ &matrix, const Space_ &space, const String &cubature, const typename Matrix_::DataType gamma=typename Matrix_::DataType(1), const typename Matrix_::DataType jacdet_scale=typename Matrix_::DataType(2), const typename Matrix_::DataType jacdet_power=typename Matrix_::DataType(2))
 Assembles edge-oriented jump stabilization operator into a matrix. More...
 
template<typename Trafo_ , typename Vector_ , typename LinFunc_ , typename Space_ >
void assemble_linear_functional_vector (DomainAssembler< Trafo_ > &dom_asm, Vector_ &vector, const LinFunc_ &linear_functional, const Space_ &space, const String &cubature, const typename Vector_::DataType alpha=typename Vector_::DataType(1))
 Assembles a linear functional into a vector. More...
 
template<typename Trafo_ , typename Vector_ , typename LinFunc_ , typename Space_ >
void assemble_linear_functional_vector (TraceAssembler< Trafo_ > &trace_asm, Vector_ &vector, const LinFunc_ &linear_functional, const Space_ &space, const String &cubature, const typename Vector_::DataType alpha=typename Vector_::DataType(1))
 Assembles a linear functional into a vector. More...
 
template<int max_der_, typename DataType_ , typename Trafo_ , typename Function_ >
AnalyticFunctionIntegral< DataType_, Function_ >::Type integrate_analytic_function (DomainAssembler< Trafo_ > &dom_asm, const Function_ &function, const String &cubature)
 Assembles the integral of an analytic function. More...
 
template<int max_der_, typename DataType_ , typename Function_ , typename Trafo_ >
AnalyticFunctionIntegral< DataType_, Function_ >::Type integrate_analytic_function (TraceAssembler< Trafo_ > &trace_asm, const Function_ &function, const String &cubature)
 Assembles the trace integral of an analytic function. More...
 
template<int max_der_, typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type integrate_discrete_function (DomainAssembler< Trafo_ > &dom_asm, const Vector_ &vector, const Space_ &space, const String &cubature)
 Assembles the integral of a discrete finite element function. More...
 
template<int max_der_, typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type integrate_discrete_function (TraceAssembler< Trafo_ > &trace_asm, const Vector_ &vector, const Space_ &space, const String &cubature)
 Assembles the integral of a discrete finite element function. More...
 
template<int max_der_, typename Function_ , typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type integrate_error_function (DomainAssembler< Trafo_ > &dom_asm, const Function_ &function, const Vector_ &vector, const Space_ &space, const String &cubature)
 Assembles the integral of an (analytic - discrete) error function. More...
 
template<int max_der_, typename Function_ , typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type integrate_error_function (TraceAssembler< Trafo_ > &trace_asm, const Function_ &function, const Vector_ &vector, const Space_ &space, const String &cubature)
 Assembles the trace integral of an (analytic - discrete) error function. More...
 

Detailed Description

Assembly namespace.

Enumeration Type Documentation

◆ ThreadingStrategy

Threading Strategy for multi-threaded assembler.

This enumeration defines the various threading strategies supported by the DomainAssembler class template.

Enumerator
automatic 

Automatic threading strategy.

This is the recommended default threading strategy.

This value specifies that the domain assembler should choose an appropriate threading strategy for the given number of maximum worker threads however it sees fit.

In its current implementation, the domain assembler will automatically choose the strategy based on the following criterions:

single 

Single-Threaded strategy.

This strategy corresponds to the single-threading approach, i.e. no multi-threading is performed.

layered 

Layered threading strategy.

This strategy performs a (reverse) Cuthill-McKee ordering of the mesh elements to obtain a sequence of element layers which can be processed in parallel. By construction of the Cuthill-McKee layers, race conditions can only appear within two adjacent element layers, so it is sufficient to ensure that no two threads process two adjacent layers at the same time.

Example:
Consider the following 5x5 square mesh, then the Cuthill-McKee algorithm could produce the following 5 element layers A, B, C, D and E.

+---+---+---+---+---+
| E | E | E | E | E |
+---+---+---+---+---+
| D | D | D | D | E |
+---+---+---+---+---+
| C | C | C | D | E |
+---+---+---+---+---+
| B | B | C | D | E |
+---+---+---+---+---+
| A | B | C | D | E |
+---+---+---+---+---+

In a two-threaded assembly, the first thread may process the layers E and D, where as the second thread may process the layers C, B, and A. The only critical section are the two adjacent layers D and C, which may not be processed at the same time by the two threads. To avoid race conditions here, the second thread will notify the first thread once it has finished processing its first layer C, so that the first thread may proceed to process its last layer D.

In the general case, each thread is assigned 2 or more adjacent Cuthill-McKee layers, so that the only required interaction between threads takes place at the adjacent layers of two adjacent threads. Just as in the simple example above, each thread notifies its preceding thread once it has finished processing its first layer and each thread has to wait for notification from its succeeding thread before its starts processing its last layer to avoid race conditions on adjacent layers.

layered_sorted 

Layered + sorted threading strategy.

This threading strategy is mostly identical to the (simple) layered strategy, where the only difference is that all entities in each layer are sorted by ascending degree, i.e. by the number of neighbor entities. This represents the 'classical' Cuthill-McKee ordering algorithms for simple graphs.

In practical experiments – especially when combined with mesh permutations – this layered+sorted strategy is often LESS efficient than the simple (unsorted) layered strategy, so therefore it is recommended to use the unsorted strategy. This sorted strategy is implemented primarily for benchmarking reasons.

colored 

Colored threading strategy.

This strategy performs a coloring of the mesh elements, so that any two adjacent elements have different colors. By construction, no race conditions can appear when elements of a single color are processed in parallel. Therefore, the assembly processes all colors sequentially, where all elements of a single color are processed in parallel by multiple threads.

Example:
Consider the following 5x5 square mesh, then the elements could be partitioned into the four colors R, G, B and W.

+---+---+---+---+---+
| R | G | R | G | R |
+---+---+---+---+---+
| B | W | B | W | B |
+---+---+---+---+---+
| R | G | R | G | R |
+---+---+---+---+---+
| B | W | B | W | B |
+---+---+---+---+---+
| R | G | R | G | R |
+---+---+---+---+---+

Although this strategy is the more prominent one in the literature, it is usually less efficient than the layered strategy due to higher synchronization costs and less favorable memory access patterns.

Definition at line 32 of file domain_assembler.hpp.

Function Documentation

◆ assemble_bilinear_operator_apply_vector_1() [1/2]

template<typename Trafo_ , typename Vector_ , typename VectorSol_ , typename BilOp_ , typename Space_ >
void FEAT::Assembly::assemble_bilinear_operator_apply_vector_1 ( DomainAssembler< Trafo_ > &  dom_asm,
Vector_ &  vector,
const VectorSol_ &  vec_sol,
const BilOp_ &  bilinear_operator,
const Space_ &  space,
const String cubature,
const typename Vector_::DataType  alpha = typename Vector_::DataType(1) 
)

Assembles the application of a bilinear operator into a vector with identical test- and trial-spaces.

Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in,out]vectorThe transient vector that is to be assembled.
[in]vector_solThe transient vector that is to be applied upon.
[in]bilinear_operatorA transient reference to the operator implementing the BilinearOperator interface to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test- and trial-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 1524 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_bilinear_operator_apply_vector_1() [2/2]

template<typename Trafo_ , typename Vector_ , typename VectorSol_ , typename BilOp_ , typename Space_ >
void FEAT::Assembly::assemble_bilinear_operator_apply_vector_1 ( TraceAssembler< Trafo_ > &  trace_asm,
Vector_ &  vector,
const VectorSol_ &  vec_sol,
const BilOp_ &  bilinear_operator,
const Space_ &  space,
const String cubature,
const typename Vector_::DataType  alpha = typename Vector_::DataType(1) 
)

Assembles the application of a bilinear operator into a vector with identical test- and trial-spaces.

Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in,out]vectorThe transient vector that is to be assembled.
[in]vector_solThe transient vector that is to be applied upon.
[in]bilinear_operatorA transient reference to the operator implementing the BilinearOperator interface to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test- and trial-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 1562 of file trace_assembler_basic_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_bilinear_operator_matrix_1() [1/2]

template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename Space_ >
void FEAT::Assembly::assemble_bilinear_operator_matrix_1 ( DomainAssembler< Trafo_ > &  dom_asm,
Matrix_ &  matrix,
const BilOp_ &  bilinear_operator,
const Space_ &  space,
const String cubature,
const typename Matrix_::DataType  alpha = typename Matrix_::DataType(1) 
)

Assembles a bilinear operator into a matrix with identical test- and trial-spaces.

Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in,out]matrixThe transient matrix that is to be assembled.
[in]bilinear_operatorA transient reference to the operator implementing the BilinearOperator interface to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test- and trial-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 1137 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_bilinear_operator_matrix_1() [2/2]

template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename Space_ >
void FEAT::Assembly::assemble_bilinear_operator_matrix_1 ( TraceAssembler< Trafo_ > &  trace_asm,
Matrix_ &  matrix,
const BilOp_ &  bilinear_operator,
const Space_ &  space,
const String cubature,
const typename Matrix_::DataType  alpha = typename Matrix_::DataType(1) 
)

Assembles a bilinear operator into a matrix with identical test- and trial-spaces.

Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in,out]matrixThe transient matrix that is to be assembled.
[in]bilinear_operatorA transient reference to the operator implementing the BilinearOperator interface to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test- and trial-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 1179 of file trace_assembler_basic_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_bilinear_operator_matrix_2() [1/2]

template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename TestSpace_ , typename TrialSpace_ >
void FEAT::Assembly::assemble_bilinear_operator_matrix_2 ( DomainAssembler< Trafo_ > &  dom_asm,
Matrix_ &  matrix,
const BilOp_ &  bilinear_operator,
const TestSpace_ &  test_space,
const TrialSpace_ &  trial_space,
const String cubature,
const typename Matrix_::DataType  alpha = typename Matrix_::DataType(1) 
)

Assembles a bilinear operator into a matrix with different test- and trial-spaces.

Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in,out]matrixThe transient matrix that is to be assembled.
[in]bilinear_operatorA transient reference to the operator implementing the BilinearOperator interface to be assembled.
[in]test_spaceA transient reference to the finite-element test-space to be used.
[in]trial_spaceA transient reference to the finite-element trial-space to be used.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 1299 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and XASSERTM.

Referenced by FEAT::Control::StokesPowerSystemLevel< dim_, DataType_, IndexType_, ScalarMatrix_, TransferMatrix_ >::assemble_grad_div_matrices().

◆ assemble_bilinear_operator_matrix_2() [2/2]

template<typename Trafo_ , typename Matrix_ , typename BilOp_ , typename TestSpace_ , typename TrialSpace_ >
void FEAT::Assembly::assemble_bilinear_operator_matrix_2 ( TraceAssembler< Trafo_ > &  trace_asm,
Matrix_ &  matrix,
const BilOp_ &  bilinear_operator,
const TestSpace_ &  test_space,
const TrialSpace_ &  trial_space,
const String cubature,
const typename Matrix_::DataType  alpha = typename Matrix_::DataType(1) 
)

Assembles a bilinear operator into a matrix with different test- and trial-spaces.

Parameters
[in,out]trace_asmA transient reference to the domain assembler that is to be used for the assembly.
[in,out]matrixThe transient matrix that is to be assembled.
[in]bilinear_operatorA transient reference to the operator implementing the BilinearOperator interface to be assembled.
[in]test_spaceA transient reference to the finite-element test-space to be used.
[in]trial_spaceA transient reference to the finite-element trial-space to be used.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 1340 of file trace_assembler_basic_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_force_function_vector()

template<typename Trafo_ , typename Vector_ , typename Function_ , typename Space_ >
void FEAT::Assembly::assemble_force_function_vector ( DomainAssembler< Trafo_ > &  dom_asm,
Vector_ &  vector,
const Function_ &  function,
const Space_ &  space,
const String cubature,
const typename Vector_::DataType  alpha = typename Vector_::DataType(1) 
)

Assembles a force function into a vector.

Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in,out]vectorThe transient vector that is to be assembled.
[in]functionA transient reference to the force function implementing the Analytic::Function interface to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 990 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_jump_mass_matrix()

template<typename Trafo_ , typename Matrix_ , typename Space_ >
void FEAT::Assembly::assemble_jump_mass_matrix ( TraceAssembler< Trafo_ > &  trace_asm,
Matrix_ &  matrix,
const Space_ &  space,
const String cubature,
const typename Matrix_::DataType  alpha = typename Matrix_::DataType(1) 
)

Assembles mass jump operator into a matrix.

Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in,out]matrixThe transient matrix that is to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test- and trial-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 807 of file trace_assembler_jump_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_jump_stabilization_matrix()

template<typename Trafo_ , typename Matrix_ , typename Space_ >
void FEAT::Assembly::assemble_jump_stabilization_matrix ( TraceAssembler< Trafo_ > &  trace_asm,
Matrix_ &  matrix,
const Space_ &  space,
const String cubature,
const typename Matrix_::DataType  gamma = typename Matrix_::DataType(1),
const typename Matrix_::DataType  jacdet_scale = typename Matrix_::DataType(2),
const typename Matrix_::DataType  jacdet_power = typename Matrix_::DataType(2) 
)

Assembles edge-oriented jump stabilization operator into a matrix.

Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in,out]matrixThe transient matrix that is to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test- and trial-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]gammaThe scaling factor for the entire operator.
[in]jacdet_scaleThe scaling factor for the Jacobian determinant factor, defaults to 2.
[in]jacdet_powerThe exponential power for the Jacobian determinant factor, defaults to 2.

Definition at line 689 of file trace_assembler_jump_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_linear_functional_vector() [1/2]

template<typename Trafo_ , typename Vector_ , typename LinFunc_ , typename Space_ >
void FEAT::Assembly::assemble_linear_functional_vector ( DomainAssembler< Trafo_ > &  dom_asm,
Vector_ &  vector,
const LinFunc_ &  linear_functional,
const Space_ &  space,
const String cubature,
const typename Vector_::DataType  alpha = typename Vector_::DataType(1) 
)

Assembles a linear functional into a vector.

Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in,out]vectorThe transient vector that is to be assembled.
[in]linear_functionalA transient reference to the functional implementing the Assembly::LinearFunctional interface to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 849 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ assemble_linear_functional_vector() [2/2]

template<typename Trafo_ , typename Vector_ , typename LinFunc_ , typename Space_ >
void FEAT::Assembly::assemble_linear_functional_vector ( TraceAssembler< Trafo_ > &  trace_asm,
Vector_ &  vector,
const LinFunc_ &  linear_functional,
const Space_ &  space,
const String cubature,
const typename Vector_::DataType  alpha = typename Vector_::DataType(1) 
)

Assembles a linear functional into a vector.

Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in,out]vectorThe transient vector that is to be assembled.
[in]linear_functionalA transient reference to the functional implementing the Assembly::LinearFunctional interface to be assembled.
[in]spaceA transient reference to the finite-element to be used as the test-space.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
[in]alphaThe scaling factor for the assembly.

Definition at line 670 of file trace_assembler_basic_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ integrate_analytic_function() [1/2]

template<int max_der_, typename DataType_ , typename Trafo_ , typename Function_ >
AnalyticFunctionIntegral< DataType_, Function_ >::Type FEAT::Assembly::integrate_analytic_function ( DomainAssembler< Trafo_ > &  dom_asm,
const Function_ &  function,
const String cubature 
)

Assembles the integral of an analytic function.

Template Parameters
DataType_The (scalar) datatype in which the assembly is to be performed. Must always be given.
Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in]functionA transient reference to the analytic function that is to be integrated.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
Returns
The integrals of the input function stored in an Assembly::FunctionIntegralInfo instance, whose exact type is determined by the Assembly::AnalyticFunctionIntegral helper class.

Definition at line 1706 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and FEAT::Assembly::DomainAssemblyAnalyticFunctionIntegralJob< DataType_, Function_, Trafo_, max_der_ >::result().

◆ integrate_analytic_function() [2/2]

template<int max_der_, typename DataType_ , typename Function_ , typename Trafo_ >
AnalyticFunctionIntegral< DataType_, Function_ >::Type FEAT::Assembly::integrate_analytic_function ( TraceAssembler< Trafo_ > &  trace_asm,
const Function_ &  function,
const String cubature 
)

Assembles the trace integral of an analytic function.

Template Parameters
max_der_The maximum derivative of the function that is to be integrated.
DataType_The (scalar) data type in which the assembly is to be performed. Must always be given.
Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in]functionA transient reference to the analytic function that is to be integrated.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
Returns
The integrals of the analytic function stored in an Assembly::FunctionIntegralInfo instance, whose exact type is determined by the Assembly::AnalyticFunctionIntegral helper class.

Definition at line 1745 of file trace_assembler_basic_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), and FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo().

◆ integrate_discrete_function() [1/2]

template<int max_der_, typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type FEAT::Assembly::integrate_discrete_function ( DomainAssembler< Trafo_ > &  dom_asm,
const Vector_ &  vector,
const Space_ &  space,
const String cubature 
)

Assembles the integral of a discrete finite element function.

Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in]vectorA transient reference to the coefficient vector of the finite element function that is to be integrated.
[in]spaceA transient reference to the finite element space that the coefficient vector belongs to.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
Returns
The integrals of the input function stored in an Assembly::FunctionIntegralInfo instance, whose exact type is determined by the Assembly::DiscreteFunctionIntegral helper class.

Definition at line 1915 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ integrate_discrete_function() [2/2]

template<int max_der_, typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type FEAT::Assembly::integrate_discrete_function ( TraceAssembler< Trafo_ > &  trace_asm,
const Vector_ &  vector,
const Space_ &  space,
const String cubature 
)

Assembles the integral of a discrete finite element function.

Template Parameters
max_der_The maximum derivative of the function that is to be integrated.
Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in]vectorA transient reference to the coefficient vector of the finite element function that is to be integrated.
[in]spaceA transient reference to the finite element space that the coefficient vector belongs to.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
Returns
The integrals of the input function stored in an Assembly::FunctionIntegralInfo instance, whose exact type is determined by the Assembly::DiscreteFunctionIntegral helper class.

Definition at line 1927 of file trace_assembler_basic_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ integrate_error_function() [1/2]

template<int max_der_, typename Function_ , typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type FEAT::Assembly::integrate_error_function ( DomainAssembler< Trafo_ > &  dom_asm,
const Function_ &  function,
const Vector_ &  vector,
const Space_ &  space,
const String cubature 
)

Assembles the integral of an (analytic - discrete) error function.

Parameters
[in,out]dom_asmA transient reference to the domain assembler that is to be used for the assembly.
[in]functionA transient reference to the analytic function that is to be integrated.
[in]vectorA transient reference to the coefficient vector of the finite element function that is to be integrated.
[in]spaceA transient reference to the finite element space that the coefficient vector belongs to.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
Returns
The integrals of the error function stored in an Assembly::FunctionIntegralInfo instance, whose exact type is determined by the Assembly::DiscreteFunctionIntegral helper class.

Definition at line 2153 of file domain_assembler_basic_jobs.hpp.

References FEAT::Assembly::DomainAssembler< Trafo_ >::assemble(), FEAT::Assembly::DomainAssembler< Trafo_ >::get_trafo(), and XASSERTM.

◆ integrate_error_function() [2/2]

template<int max_der_, typename Function_ , typename Vector_ , typename Trafo_ , typename Space_ >
DiscreteFunctionIntegral< Vector_, Space_ >::Type FEAT::Assembly::integrate_error_function ( TraceAssembler< Trafo_ > &  trace_asm,
const Function_ &  function,
const Vector_ &  vector,
const Space_ &  space,
const String cubature 
)

Assembles the trace integral of an (analytic - discrete) error function.

Template Parameters
max_der_The maximum derivative of the error function that is to be integrated.
Parameters
[in,out]trace_asmA transient reference to the trace assembler that is to be used for the assembly.
[in]functionA transient reference to the analytic function that is to be integrated.
[in]vectorA transient reference to the coefficient vector of the finite element function that is to be integrated.
[in]spaceA transient reference to the finite element space that the coefficient vector belongs to.
[in]cubatureThe name of the cubature rule that is to be used for the assembly.
Returns
The integrals of the error function stored in an Assembly::FunctionIntegralInfo instance, whose exact type is determined by the Assembly::DiscreteFunctionIntegral helper class.

Definition at line 2140 of file trace_assembler_basic_jobs.hpp.

References FEAT::Assembly::TraceAssembler< Trafo_ >::assemble(), FEAT::Assembly::TraceAssembler< Trafo_ >::get_trafo(), and XASSERTM.