OGS
ProcessLib::BoundaryConditionAndSourceTerm Namespace Reference

Namespaces

 detail
 

Classes

class  LocalDataInitializer
 

Functions

template<template< typename, typename, int > class LocalAssemblerImplementation, typename LocalAssemblerInterface , typename... ExtraCtorArgs>
void createLocalAssemblers (const unsigned dimension, std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, const unsigned shapefunction_order, std::vector< std::unique_ptr< LocalAssemblerInterface >> &local_assemblers, ExtraCtorArgs &&... extra_ctor_args)
 

Function Documentation

◆ createLocalAssemblers()

template<template< typename, typename, int > class LocalAssemblerImplementation, typename LocalAssemblerInterface , typename... ExtraCtorArgs>
void ProcessLib::BoundaryConditionAndSourceTerm::createLocalAssemblers ( const unsigned  dimension,
std::vector< MeshLib::Element * > const &  mesh_elements,
NumLib::LocalToGlobalIndexMap const &  dof_table,
const unsigned  shapefunction_order,
std::vector< std::unique_ptr< LocalAssemblerInterface >> &  local_assemblers,
ExtraCtorArgs &&...  extra_ctor_args 
)

Creates local assemblers for each element of the given mesh.

Template Parameters
LocalAssemblerImplementationthe individual local assembler type
LocalAssemblerInterfacethe general local assembler interface
ExtraCtorArgstypes of additional constructor arguments. Those arguments will be passed to the constructor of LocalAssemblerImplementation.

The first two template parameters cannot be deduced from the arguments. Therefore they always have to be provided manually.

Definition at line 68 of file CreateLocalAssemblers.h.

75 {
76  DBUG("Create local assemblers.");
77 
78  switch (dimension)
79  {
80  case 1:
81  detail::createLocalAssemblers<1, LocalAssemblerImplementation>(
82  dof_table, shapefunction_order, mesh_elements, local_assemblers,
83  std::forward<ExtraCtorArgs>(extra_ctor_args)...);
84  break;
85  case 2:
86  detail::createLocalAssemblers<2, LocalAssemblerImplementation>(
87  dof_table, shapefunction_order, mesh_elements, local_assemblers,
88  std::forward<ExtraCtorArgs>(extra_ctor_args)...);
89  break;
90  case 3:
91  detail::createLocalAssemblers<3, LocalAssemblerImplementation>(
92  dof_table, shapefunction_order, mesh_elements, local_assemblers,
93  std::forward<ExtraCtorArgs>(extra_ctor_args)...);
94  break;
95  default:
96  OGS_FATAL(
97  "Meshes with dimension greater than three are not supported.");
98  }
99 }
#define OGS_FATAL(...)
Definition: Error.h:26
void DBUG(char const *fmt, Args const &... args)
Definition: Logging.h:27

References DBUG(), and OGS_FATAL.

Referenced by ProcessLib::ConstraintDirichletBoundaryCondition::ConstraintDirichletBoundaryCondition(), ProcessLib::GenericNaturalBoundaryCondition< BoundaryConditionData, LocalAssemblerImplementation >::GenericNaturalBoundaryCondition(), ProcessLib::PythonBoundaryCondition::PythonBoundaryCondition(), ProcessLib::SourceTerms::Python::PythonSourceTerm::PythonSourceTerm(), and ProcessLib::VolumetricSourceTerm::VolumetricSourceTerm().