OGS
ProcessLib::LocalAssemblerFactoryTaylorHood< MinShapeFctOrder, MinElementDim, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs > Class Template Referencefinal

Detailed Description

template<int MinShapeFctOrder, int MinElementDim, typename LocalAssemblerInterface, template< typename, typename, typename, int > class LocalAssemblerImplementation, int GlobalDim, typename... ConstructorArgs>
class ProcessLib::LocalAssemblerFactoryTaylorHood< MinShapeFctOrder, MinElementDim, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs >

Local assembler factory for Taylor-Hood elements.

Elements/shape functions must be of order greater than or equal to MinShapeFctOrder and of dimension greater than or equal to MinElementDim.

If MinShapeFctOrder is 1, local assemblers are instantiated also for linear mesh elements. In this case we don't have Taylor-Hood elements for linear mesh elements. Instead, on linear mesh elements all shape functions will have the same order (namely 1).

Definition at line 81 of file LocalAssemblerFactoryTaylorHood.h.

#include <LocalAssemblerFactoryTaylorHood.h>

Inheritance diagram for ProcessLib::LocalAssemblerFactoryTaylorHood< MinShapeFctOrder, MinElementDim, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs >:
[legend]
Collaboration diagram for ProcessLib::LocalAssemblerFactoryTaylorHood< MinShapeFctOrder, MinElementDim, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs >:
[legend]

Classes

struct  IsElementEnabled
 

Public Member Functions

 LocalAssemblerFactoryTaylorHood (NumLib::LocalToGlobalIndexMap const &dof_table)
 
- Public Member Functions inherited from ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, ConstructorArgs... >
LocAsmIntfPtr operator() (std::size_t const id, MeshLib::Element const &mesh_item, ConstructorArgs &&... args) const
 

Private Types

using Base = ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, ConstructorArgs... >
 
template<typename ShapeFunction , typename LowerOrderShapeFunction >
using LocAsmBuilderFactory = LocalAssemblerBuilderFactoryTaylorHood< ShapeFunction, LowerOrderShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs... >
 

Additional Inherited Members

- Public Types inherited from ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, ConstructorArgs... >
using LocAsmIntfPtr = std::unique_ptr< LocalAssemblerInterface >
 
using LocAsmBuilder = std::function< LocAsmIntfPtr(MeshLib::Element const &e, std::size_t const local_matrix_size, ConstructorArgs &&...)>
 
- Protected Member Functions inherited from ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, ConstructorArgs... >
 GenericLocalAssemblerFactory (NumLib::LocalToGlobalIndexMap const &dof_table)
 
- Protected Attributes inherited from ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, ConstructorArgs... >
std::unordered_map< std::type_index, LocAsmBuilder_builders
 Mapping of element types to local assembler builders. More...
 

Member Typedef Documentation

◆ Base

template<int MinShapeFctOrder, int MinElementDim, typename LocalAssemblerInterface , template< typename, typename, typename, int > class LocalAssemblerImplementation, int GlobalDim, typename... ConstructorArgs>
using ProcessLib::LocalAssemblerFactoryTaylorHood< MinShapeFctOrder, MinElementDim, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs >::Base = ProcessLib::GenericLocalAssemblerFactory<LocalAssemblerInterface, ConstructorArgs...>
private

Definition at line 85 of file LocalAssemblerFactoryTaylorHood.h.

◆ LocAsmBuilderFactory

template<int MinShapeFctOrder, int MinElementDim, typename LocalAssemblerInterface , template< typename, typename, typename, int > class LocalAssemblerImplementation, int GlobalDim, typename... ConstructorArgs>
template<typename ShapeFunction , typename LowerOrderShapeFunction >
using ProcessLib::LocalAssemblerFactoryTaylorHood< MinShapeFctOrder, MinElementDim, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs >::LocAsmBuilderFactory = LocalAssemblerBuilderFactoryTaylorHood<ShapeFunction, LowerOrderShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs...>
private

Definition at line 90 of file LocalAssemblerFactoryTaylorHood.h.

Constructor & Destructor Documentation

◆ LocalAssemblerFactoryTaylorHood()

template<int MinShapeFctOrder, int MinElementDim, typename LocalAssemblerInterface , template< typename, typename, typename, int > class LocalAssemblerImplementation, int GlobalDim, typename... ConstructorArgs>
ProcessLib::LocalAssemblerFactoryTaylorHood< MinShapeFctOrder, MinElementDim, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs >::LocalAssemblerFactoryTaylorHood ( NumLib::LocalToGlobalIndexMap const &  dof_table)
inlineexplicit

Definition at line 118 of file LocalAssemblerFactoryTaylorHood.h.

120 : Base(dof_table)
121 {
122 using EnabledElementTraits =
123 decltype(BaseLib::TMP::filter<EnabledElementTraitsLagrange>(
124 std::declval<IsElementEnabled>()));
125
126 BaseLib::TMP::foreach<EnabledElementTraits>(
127 [this]<typename ET>(ET*)
128 {
129 using MeshElement = typename ET::Element;
130 using ShapeFunction = typename ET::ShapeFunction;
131 using LowerOrderShapeFunction =
132 typename ET::LowerOrderShapeFunction;
133
134 Base::_builders[std::type_index(typeid(MeshElement))] =
135 LocAsmBuilderFactory<ShapeFunction,
136 LowerOrderShapeFunction>::create();
137 });
138 }
LocalAssemblerBuilderFactoryTaylorHood< ShapeFunction, LowerOrderShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs... > LocAsmBuilderFactory
ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, ConstructorArgs... > Base
std::unordered_map< std::type_index, LocAsmBuilder > _builders
Mapping of element types to local assembler builders.

The documentation for this class was generated from the following file: