OGS
ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs > Class Template Reference

Detailed Description

template<typename ShapeFunction, typename LocalAssemblerInterface, template< typename, int > class LocalAssemblerImplementation, NumLib::IntegrationMethodProvider IntegrationMethodProvider, int GlobalDim, typename... ConstructorArgs>
class ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs >

Definition at line 100 of file GenericLocalAssemblerFactory.h.

#include <GenericLocalAssemblerFactory.h>

Static Public Member Functions

template<typename MeshElement >
static LocAsmBuilder create ()
 

Private Types

using GLAF
 
using LocAsmIntfPtr = typename GLAF::LocAsmIntfPtr
 
using LocAsmBuilder = typename GLAF::LocAsmBuilder
 
using LocAsmImpl = LocalAssemblerImplementation<ShapeFunction, GlobalDim>
 

Private Member Functions

 LocalAssemblerBuilderFactory ()=delete
 

Member Typedef Documentation

◆ GLAF

template<typename ShapeFunction , typename LocalAssemblerInterface , template< typename, int > class LocalAssemblerImplementation, NumLib::IntegrationMethodProvider IntegrationMethodProvider, int GlobalDim, typename... ConstructorArgs>
using ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs >::GLAF
private
Initial value:
GenericLocalAssemblerFactory<
LocalAssemblerInterface, IntegrationMethodProvider, ConstructorArgs...>

Definition at line 102 of file GenericLocalAssemblerFactory.h.

◆ LocAsmBuilder

template<typename ShapeFunction , typename LocalAssemblerInterface , template< typename, int > class LocalAssemblerImplementation, NumLib::IntegrationMethodProvider IntegrationMethodProvider, int GlobalDim, typename... ConstructorArgs>
using ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs >::LocAsmBuilder = typename GLAF::LocAsmBuilder
private

Definition at line 105 of file GenericLocalAssemblerFactory.h.

◆ LocAsmImpl

template<typename ShapeFunction , typename LocalAssemblerInterface , template< typename, int > class LocalAssemblerImplementation, NumLib::IntegrationMethodProvider IntegrationMethodProvider, int GlobalDim, typename... ConstructorArgs>
using ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs >::LocAsmImpl = LocalAssemblerImplementation<ShapeFunction, GlobalDim>
private

Definition at line 107 of file GenericLocalAssemblerFactory.h.

◆ LocAsmIntfPtr

template<typename ShapeFunction , typename LocalAssemblerInterface , template< typename, int > class LocalAssemblerImplementation, NumLib::IntegrationMethodProvider IntegrationMethodProvider, int GlobalDim, typename... ConstructorArgs>
using ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs >::LocAsmIntfPtr = typename GLAF::LocAsmIntfPtr
private

Definition at line 104 of file GenericLocalAssemblerFactory.h.

Constructor & Destructor Documentation

◆ LocalAssemblerBuilderFactory()

template<typename ShapeFunction , typename LocalAssemblerInterface , template< typename, int > class LocalAssemblerImplementation, NumLib::IntegrationMethodProvider IntegrationMethodProvider, int GlobalDim, typename... ConstructorArgs>
ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs >::LocalAssemblerBuilderFactory ( )
privatedelete

Member Function Documentation

◆ create()

template<typename ShapeFunction , typename LocalAssemblerInterface , template< typename, int > class LocalAssemblerImplementation, NumLib::IntegrationMethodProvider IntegrationMethodProvider, int GlobalDim, typename... ConstructorArgs>
template<typename MeshElement >
static LocAsmBuilder ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs >::create ( )
inlinestatic

Generates a function that creates a new local assembler of type LocAsmImpl.

Definition at line 115 of file GenericLocalAssemblerFactory.h.

116 {
117 return [](MeshLib::Element const& e,
118 std::size_t const local_matrix_size,
119 IntegrationMethodProvider const& integration_method_provider,
120 ConstructorArgs&&... args)
121 {
122 auto const& integration_method =
123 integration_method_provider
124 .template getIntegrationMethod<MeshElement>(e);
125
126 static_assert(!std::is_abstract_v<LocAsmImpl>,
127 "The given local assembler implementation is an "
128 "abstract class, which cannot be instantiated. Make "
129 "sure to implement all virtual methods!");
130
131 static_assert(
132 std::is_constructible_v<
133 LocAsmImpl, MeshLib::Element const&, std::size_t,
134 decltype(integration_method), ConstructorArgs&&...>,
135 "The given local assembler implementation is not "
136 "constructible from the provided arguments.");
137
138 return std::make_unique<LocAsmImpl>(
139 e, local_matrix_size, integration_method,
140 std::forward<ConstructorArgs>(args)...);
141 };
142 }
LocalAssemblerImplementation< ShapeFunction, GlobalDim > LocAsmImpl

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