v0.14.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MoFEM::PipelineManager Struct Reference

PipelineManager interface. More...

#include <src/interfaces/PipelineManager.hpp>

Inheritance diagram for MoFEM::PipelineManager:
[legend]
Collaboration diagram for MoFEM::PipelineManager:
[legend]

Classes

struct  ElementsAndOpsByDim
 
struct  ElementsAndOpsByDim< 2 >
 
struct  ElementsAndOpsByDim< 3 >
 

Public Types

enum  TSType { EX , IM , IM2 , IMEX }
 
using UserDataOperator = MoFEM::ForcesAndSourcesCore::UserDataOperator
 
using RuleHookFun = MoFEM::ForcesAndSourcesCore::RuleHookFun
 
using VolEle = MoFEM::VolumeElementForcesAndSourcesCore
 
using FaceEle = MoFEM::FaceElementForcesAndSourcesCore
 
using EdgeEle = MoFEM::EdgeElementForcesAndSourcesCore
 

Public Member Functions

MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 
 PipelineManager (const MoFEM::Core &core)
 
boost::shared_ptr< FEMethod > & getDomainLhsFE ()
 
boost::shared_ptr< FEMethod > & getDomainRhsFE ()
 
boost::shared_ptr< FEMethod > & getBoundaryLhsFE ()
 
boost::shared_ptr< FEMethod > & getBoundaryRhsFE ()
 
boost::shared_ptr< FEMethod > & getSkeletonLhsFE ()
 
boost::shared_ptr< FEMethod > & getSkeletonRhsFE ()
 
boost::shared_ptr< FEMethod > & getDomainExplicitRhsFE ()
 
boost::shared_ptr< FEMethod > & getBoundaryExplicitRhsFE ()
 
boost::shared_ptr< FEMethod > & getSkeletonExplicitRhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastDomainLhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastDomainRhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastBoundaryLhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastBoundaryRhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastSkeletonLhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastSkeletonRhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastDomainExplicitRhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastBoundaryExplicitRhsFE ()
 
template<typename T = ForcesAndSourcesCore, int DIM = -1>
auto getCastSkeletonExplicitRhsFE ()
 
template<int DIM = -1>
MoFEMErrorCode setDomainLhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setDomainRhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setBoundaryLhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setBoundaryRhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setSkeletonLhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setSkeletonRhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setDomainExplicitRhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setBoundaryExplicitRhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
MoFEMErrorCode setSkeletonExplicitRhsIntegrationRule (RuleHookFun rule)
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpDomainLhsPipeline ()
 Get the Op Domain Lhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpDomainRhsPipeline ()
 Get the Op Domain Rhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpBoundaryLhsPipeline ()
 Get the Op Boundary Lhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpBoundaryRhsPipeline ()
 Get the Op Boundary Rhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpSkeletonLhsPipeline ()
 Get the Op Skeleton Lhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpSkeletonRhsPipeline ()
 Get the Op Skeleton Rhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpDomainExplicitRhsPipeline ()
 Get the Op Domain Rhs Pipeline object for implicit-explicit G term. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpBoundaryExplicitRhsPipeline ()
 Get the Op Bondary Rhs Pipeline object for implicit-explicit G term. More...
 
template<int DIM = -1>
boost::ptr_deque< UserDataOperator > & getOpSkeletonExplicitRhsPipeline ()
 Get the Op Skeleton Rhs Pipeline object for implicit-explicit G term. More...
 
MoFEMErrorCode loopFiniteElements (SmartPetscObj< DM > dm=nullptr)
 Iterate finite elements. More...
 
SmartPetscObj< KSP > createKSP (SmartPetscObj< DM > dm=nullptr)
 Create KSP (linear) solver. More...
 
SmartPetscObj< SNES > createSNES (SmartPetscObj< DM > dm=nullptr)
 Create SNES (nonlinear) solver. More...
 
SmartPetscObj< TS > createTS (const TSType type, SmartPetscObj< DM > dm=nullptr)
 create TS (time) solver More...
 
SmartPetscObj< TS > createTSEX (SmartPetscObj< DM > dm=nullptr)
 Create TS (time) explit solver. More...
 
SmartPetscObj< TS > createTSIM (SmartPetscObj< DM > dm=nullptr)
 Create TS (time) implicit solver. More...
 
DEPRECATED auto createTS (SmartPetscObj< DM > dm=nullptr)
 
SmartPetscObj< TS > createTSIM2 (SmartPetscObj< DM > dm=nullptr)
 Create TS (time) solver for second order equation in time. More...
 
DEPRECATED auto createTS2 (SmartPetscObj< DM > dm=nullptr)
 
SmartPetscObj< TS > createTSIMEX (SmartPetscObj< DM > dm=nullptr)
 Create TS (time) implicit-explicit solver. More...
 
template<>
MoFEMErrorCode setDomainLhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setDomainRhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setBoundaryLhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setBoundaryRhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setSkeletonLhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setSkeletonRhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setDomainExplicitRhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setBoundaryExplicitRhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
MoFEMErrorCode setSkeletonExplicitRhsIntegrationRule (PipelineManager::RuleHookFun rule)
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpDomainLhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpDomainRhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpBoundaryLhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpBoundaryRhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpSkeletonLhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpSkeletonRhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpDomainExplicitRhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpBoundaryExplicitRhsPipeline ()
 
template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & getOpSkeletonExplicitRhsPipeline ()
 
- Public Member Functions inherited from MoFEM::UnknownInterface
virtual MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const =0
 
template<class IFACE >
MoFEMErrorCode registerInterface (bool error_if_registration_failed=true)
 Register interface. More...
 
template<class IFACE >
MoFEMErrorCode getInterface (IFACE *&iface) const
 Get interface refernce to pointer of interface. More...
 
template<class IFACE >
MoFEMErrorCode getInterface (IFACE **const iface) const
 Get interface pointer to pointer of interface. More...
 
template<class IFACE , typename boost::enable_if< boost::is_pointer< IFACE >, int >::type = 0>
IFACE getInterface () const
 Get interface pointer to pointer of interface. More...
 
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type = 0>
IFACE getInterface () const
 Get reference to interface. More...
 
template<class IFACE >
IFACE * getInterface () const
 Function returning pointer to interface. More...
 
virtual ~UnknownInterface ()=default
 

Private Member Functions

template<int DIM>
boost::shared_ptr< FEMethod > & createDomainFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<int DIM>
boost::shared_ptr< FEMethod > & createBoundaryFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createDomainFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createDomainFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createDomainFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createDomainFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createBoundaryFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createBoundaryFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createBoundaryFEPipeline (boost::shared_ptr< FEMethod > &fe)
 
template<>
boost::shared_ptr< FEMethod > & createBoundaryFEPipeline (boost::shared_ptr< FEMethod > &fe)
 

Private Attributes

MoFEM::CorecOre
 
boost::shared_ptr< FEMethodfeDomainRhs
 Element to assemble RHS side by integrating domain. More...
 
boost::shared_ptr< FEMethodfeDomainLhs
 Element to assemble LHS side by integrating domain. More...
 
boost::shared_ptr< FEMethodfeBoundaryRhs
 Element to assemble RHS side by integrating boundary. More...
 
boost::shared_ptr< FEMethodfeBoundaryLhs
 Element to assemble LHS side by integrating boundary. More...
 
boost::shared_ptr< FEMethodfeSkeletonRhs
 Element to assemble RHS side by integrating skeleton. More...
 
boost::shared_ptr< FEMethodfeSkeletonLhs
 Element to assemble LHS side by integrating skeleton. More...
 
boost::shared_ptr< FEMethodfeDomainExplicitRhs
 Element to assemble explict Rhs for IMEX solver. More...
 
boost::shared_ptr< FEMethodfeBoundaryExplicitRhs
 
boost::shared_ptr< FEMethodfeSkeletonExplicitRhs
 

Additional Inherited Members

- Static Public Member Functions inherited from MoFEM::UnknownInterface
static MoFEMErrorCode getLibVersion (Version &version)
 Get library version. More...
 
static MoFEMErrorCode getFileVersion (moab::Interface &moab, Version &version)
 Get database major version. More...
 
static MoFEMErrorCode setFileVersion (moab::Interface &moab, Version version=Version(MoFEM_VERSION_MAJOR, MoFEM_VERSION_MINOR, MoFEM_VERSION_BUILD))
 Get database major version. More...
 
static MoFEMErrorCode getInterfaceVersion (Version &version)
 Get database major version. More...
 

Detailed Description

PipelineManager interface.

Examples
approx_sphere.cpp, child_and_parent.cpp, dg_projection.cpp, dynamic_first_order_con_law.cpp, eigen_elastic.cpp, free_surface.cpp, hanging_node_approx.cpp, hcurl_check_approx_in_2d.cpp, hcurl_curl_operator.cpp, hdiv_divergence_operator.cpp, heat_equation.cpp, heat_method.cpp, hello_world.cpp, helmholtz.cpp, higher_derivatives.cpp, level_set.cpp, mixed_poisson.cpp, nonlinear_elastic.cpp, operators_tests.cpp, phase.cpp, photon_diffusion.cpp, plastic.cpp, plate.cpp, plot_base.cpp, poisson_2d_dis_galerkin.cpp, poisson_2d_homogeneous.cpp, scalar_check_approximation.cpp, shallow_wave.cpp, simple_l2_only.cpp, tensor_divergence_operator.cpp, thermo_elastic.cpp, and wave_equation.cpp.

Definition at line 24 of file PipelineManager.hpp.

Member Typedef Documentation

◆ EdgeEle

Definition at line 36 of file PipelineManager.hpp.

◆ FaceEle

Definition at line 35 of file PipelineManager.hpp.

◆ RuleHookFun

Definition at line 32 of file PipelineManager.hpp.

◆ UserDataOperator

Definition at line 31 of file PipelineManager.hpp.

◆ VolEle

Definition at line 34 of file PipelineManager.hpp.

Member Enumeration Documentation

◆ TSType

Constructor & Destructor Documentation

◆ PipelineManager()

MoFEM::PipelineManager::PipelineManager ( const MoFEM::Core core)

Definition at line 16 of file PipelineManager.cpp.

17 : cOre(const_cast<Core &>(core)) {}
CoreTmp< 0 > Core
Definition: Core.hpp:1094

Member Function Documentation

◆ createBoundaryFEPipeline() [1/5]

template<int DIM>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createBoundaryFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 371 of file PipelineManager.hpp.

371 {
372 static_assert(DIM == 1 || DIM == 2 || DIM == 3, "not implemented");
373 fe = boost::make_shared<FEMethod>();
374 return fe;
375}

◆ createBoundaryFEPipeline() [2/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createBoundaryFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 371 of file PipelineManager.hpp.

387 {
388 if (!fe)
389 fe = boost::make_shared<EdgeEle>(cOre);
390 return fe;
391}

◆ createBoundaryFEPipeline() [3/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createBoundaryFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 371 of file PipelineManager.hpp.

379 {
380 if (!fe)
381 fe = boost::make_shared<FaceElementForcesAndSourcesCore>(cOre);
382 return fe;
383}

◆ createBoundaryFEPipeline() [4/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createBoundaryFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 371 of file PipelineManager.hpp.

395 {
396 if (!fe)
397 fe = boost::make_shared<VertexElementForcesAndSourcesCore>(cOre);
398 return fe;
399}

◆ createBoundaryFEPipeline() [5/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createBoundaryFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 433 of file PipelineManager.hpp.

439 {
440 switch (cOre.getInterface<Simple>()->getDim()) {
441 case 1:
442 return createBoundaryFEPipeline<1>(fe);
443 case 2:
444 return createBoundaryFEPipeline<2>(fe);
445 case 3:
446 return createBoundaryFEPipeline<3>(fe);
447 default:
448 THROW_MESSAGE("Not implemented");
449 }
450}
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
Definition: definitions.h:561
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.

◆ createDomainFEPipeline() [1/5]

template<int DIM>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createDomainFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 324 of file PipelineManager.hpp.

324 {
325 static_assert(DIM == 1 || DIM == 2 || DIM == 3, "not implemented");
326 fe = boost::make_shared<FEMethod>();
327 return fe;
328}

◆ createDomainFEPipeline() [2/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createDomainFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 324 of file PipelineManager.hpp.

332 {
333 if (!fe)
334 fe = boost::make_shared<VolEle>(cOre);
335 return fe;
336}

◆ createDomainFEPipeline() [3/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createDomainFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 324 of file PipelineManager.hpp.

356 {
357 switch (cOre.getInterface<Simple>()->getDim()) {
358 case 1:
359 return createDomainFEPipeline<1>(fe);
360 case 2:
361 return createDomainFEPipeline<2>(fe);
362 case 3:
363 return createDomainFEPipeline<3>(fe);
364 default:
365 THROW_MESSAGE("Not implemented");
366 }
367}

◆ createDomainFEPipeline() [4/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createDomainFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 324 of file PipelineManager.hpp.

340 {
341 if (!fe)
342 fe = boost::make_shared<FaceEle>(cOre);
343 return fe;
344}

◆ createDomainFEPipeline() [5/5]

template<>
boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::createDomainFEPipeline ( boost::shared_ptr< FEMethod > &  fe)
inlineprivate

Definition at line 324 of file PipelineManager.hpp.

348 {
349 if (!fe)
350 fe = boost::make_shared<EdgeEle>(cOre);
351 return fe;
352}

◆ createTS() [1/2]

SmartPetscObj< TS > MoFEM::PipelineManager::createTS ( const TSType  type,
SmartPetscObj< DM >  dm = nullptr 
)

create TS (time) solver

Parameters
typeType of time solver PipelineManager:EX/IM/IM2/IMEX
dm
Returns
SmartPetscObj<TS>

Definition at line 169 of file PipelineManager.cpp.

170 {
171 switch (type) {
172 case EX:
173 return createTSEX(dm);
174 break;
175 case IM:
176 return createTSIM(dm);
177 break;
178 case IM2:
179 return createTSIM2(dm);
180 break;
181 case IMEX:
182 return createTSIMEX(dm);
183 break;
184 default:
186 "TS solver handling not implemented");
187 break;
188 }
189 return SmartPetscObj<TS>();
190}
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
Definition: definitions.h:595
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
SmartPetscObj< TS > createTSIM(SmartPetscObj< DM > dm=nullptr)
Create TS (time) implicit solver.
SmartPetscObj< TS > createTSIM2(SmartPetscObj< DM > dm=nullptr)
Create TS (time) solver for second order equation in time.
SmartPetscObj< TS > createTSIMEX(SmartPetscObj< DM > dm=nullptr)
Create TS (time) implicit-explicit solver.
SmartPetscObj< TS > createTSEX(SmartPetscObj< DM > dm=nullptr)
Create TS (time) explit solver.

◆ createTS() [2/2]

DEPRECATED auto MoFEM::PipelineManager::createTS ( SmartPetscObj< DM >  dm = nullptr)
inline
Deprecated:
Use version with explicit TS solver type

Definition at line 259 of file PipelineManager.hpp.

259 {
260 return createTSIM(dm);
261 }

◆ createTS2()

DEPRECATED auto MoFEM::PipelineManager::createTS2 ( SmartPetscObj< DM >  dm = nullptr)
inline
Deprecated:
Change name. Use createTSIM2 instead.

Definition at line 275 of file PipelineManager.hpp.

275 {
276 return createTSIM2(dm);
277 }

◆ getBoundaryExplicitRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getBoundaryExplicitRhsFE ( )
inline

Definition at line 429 of file PipelineManager.hpp.

429 {
431}
boost::shared_ptr< FEMethod > feBoundaryExplicitRhs

◆ getBoundaryLhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getBoundaryLhsFE ( )
inline
Examples
helmholtz.cpp.

Definition at line 409 of file PipelineManager.hpp.

409 {
410 return feBoundaryLhs;
411}
boost::shared_ptr< FEMethod > feBoundaryLhs
Element to assemble LHS side by integrating boundary.

◆ getBoundaryRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getBoundaryRhsFE ( )
inline
Examples
child_and_parent.cpp, hanging_node_approx.cpp, heat_equation.cpp, helmholtz.cpp, phase.cpp, and wave_equation.cpp.

Definition at line 413 of file PipelineManager.hpp.

413 {
414 return feBoundaryRhs;
415}
boost::shared_ptr< FEMethod > feBoundaryRhs
Element to assemble RHS side by integrating boundary.

◆ getCastBoundaryExplicitRhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastBoundaryExplicitRhsFE
inline

Definition at line 491 of file PipelineManager.hpp.

491 {
492 return boost::dynamic_pointer_cast<T>(
493 createBoundaryFEPipeline<DIM>(feBoundaryExplicitRhs));
494}

◆ getCastBoundaryLhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastBoundaryLhsFE
inline

Definition at line 462 of file PipelineManager.hpp.

462 {
463 return boost::dynamic_pointer_cast<T>(
464 createBoundaryFEPipeline<DIM>(feBoundaryLhs));
465}

◆ getCastBoundaryRhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastBoundaryRhsFE
inline

Definition at line 468 of file PipelineManager.hpp.

468 {
469 return boost::dynamic_pointer_cast<T>(
470 createBoundaryFEPipeline<DIM>(feBoundaryRhs));
471}

◆ getCastDomainExplicitRhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastDomainExplicitRhsFE
inline

Definition at line 485 of file PipelineManager.hpp.

485 {
486 return boost::dynamic_pointer_cast<T>(
487 createDomainFEPipeline<DIM>(feDomainExplicitRhs));
488}
boost::shared_ptr< FEMethod > feDomainExplicitRhs
Element to assemble explict Rhs for IMEX solver.

◆ getCastDomainLhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastDomainLhsFE
inline

Definition at line 452 of file PipelineManager.hpp.

452 {
453 return boost::dynamic_pointer_cast<T>(
454 createDomainFEPipeline<DIM>(feDomainLhs));
455}
boost::shared_ptr< FEMethod > feDomainLhs
Element to assemble LHS side by integrating domain.

◆ getCastDomainRhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastDomainRhsFE
inline

Definition at line 457 of file PipelineManager.hpp.

457 {
458 return boost::dynamic_pointer_cast<T>(
459 createDomainFEPipeline<DIM>(feDomainRhs));
460}
boost::shared_ptr< FEMethod > feDomainRhs
Element to assemble RHS side by integrating domain.

◆ getCastSkeletonExplicitRhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastSkeletonExplicitRhsFE
inline

Definition at line 497 of file PipelineManager.hpp.

497 {
498 return boost::dynamic_pointer_cast<T>(
499 createBoundaryFEPipeline<DIM>(feSkeletonExplicitRhs));
500}
boost::shared_ptr< FEMethod > feSkeletonExplicitRhs

◆ getCastSkeletonLhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastSkeletonLhsFE
inline

Definition at line 474 of file PipelineManager.hpp.

474 {
475 return boost::dynamic_pointer_cast<T>(
476 createBoundaryFEPipeline<DIM>(feSkeletonLhs));
477}
boost::shared_ptr< FEMethod > feSkeletonLhs
Element to assemble LHS side by integrating skeleton.

◆ getCastSkeletonRhsFE()

template<typename T , int DIM>
auto MoFEM::PipelineManager::getCastSkeletonRhsFE
inline

Definition at line 479 of file PipelineManager.hpp.

479 {
480 return boost::dynamic_pointer_cast<T>(
481 createBoundaryFEPipeline<DIM>(feSkeletonRhs));
482}
boost::shared_ptr< FEMethod > feSkeletonRhs
Element to assemble RHS side by integrating skeleton.

◆ getDomainExplicitRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getDomainExplicitRhsFE ( )
inline

Definition at line 425 of file PipelineManager.hpp.

425 {
426 return feDomainExplicitRhs;
427}

◆ getDomainLhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getDomainLhsFE ( )
inline

◆ getDomainRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getDomainRhsFE ( )
inline

◆ getOpBoundaryExplicitRhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpBoundaryExplicitRhsPipeline ( )
inline

Definition at line 917 of file PipelineManager.hpp.

925 {
926 switch (cOre.getInterface<Simple>()->getDim()) {
927 case 1:
928 return getOpBoundaryExplicitRhsPipeline<1>();
929 case 2:
930 return getOpBoundaryExplicitRhsPipeline<2>();
931 case 3:
932 break;
933 default:
934 THROW_MESSAGE("Not implemented");
935 }
936 return getOpBoundaryExplicitRhsPipeline<3>();
937}

◆ getOpBoundaryLhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpBoundaryLhsPipeline ( )
inline

Definition at line 797 of file PipelineManager.hpp.

805 {
806 switch (cOre.getInterface<Simple>()->getDim()) {
807 case 1:
808 return getOpBoundaryLhsPipeline<1>();
809 case 2:
810 return getOpBoundaryLhsPipeline<2>();
811 case 3:
812 break;
813 default:
814 THROW_MESSAGE("Not implemented");
815 }
816 return getOpBoundaryLhsPipeline<3>();
817}

◆ getOpBoundaryRhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpBoundaryRhsPipeline ( )
inline

Definition at line 821 of file PipelineManager.hpp.

829 {
830 switch (cOre.getInterface<Simple>()->getDim()) {
831 case 1:
832 return getOpBoundaryRhsPipeline<1>();
833 case 2:
834 return getOpBoundaryRhsPipeline<2>();
835 case 3:
836 break;
837 default:
838 THROW_MESSAGE("Not implemented");
839 }
840 return getOpBoundaryRhsPipeline<3>();
841}

◆ getOpDomainExplicitRhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpDomainExplicitRhsPipeline ( )
inline

Definition at line 893 of file PipelineManager.hpp.

901 {
902 switch (cOre.getInterface<Simple>()->getDim()) {
903 case 1:
904 return getOpDomainExplicitRhsPipeline<1>();
905 case 2:
906 return getOpDomainExplicitRhsPipeline<2>();
907 case 3:
908 break;
909 default:
910 THROW_MESSAGE("Not implemented");
911 }
912 return getOpDomainExplicitRhsPipeline<3>();
913}

◆ getOpDomainLhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpDomainLhsPipeline ( )
inline

Definition at line 749 of file PipelineManager.hpp.

757 {
758 switch (cOre.getInterface<Simple>()->getDim()) {
759 case 1:
760 return getOpDomainLhsPipeline<1>();
761 case 2:
762 return getOpDomainLhsPipeline<2>();
763 case 3:
764 break;
765 default:
766 THROW_MESSAGE("Not implemented");
767 }
768 return getOpDomainLhsPipeline<3>();
769}

◆ getOpDomainRhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpDomainRhsPipeline ( )
inline

Definition at line 773 of file PipelineManager.hpp.

781 {
782 switch (cOre.getInterface<Simple>()->getDim()) {
783 case 1:
784 return getOpDomainRhsPipeline<1>();
785 case 2:
786 return getOpDomainRhsPipeline<2>();
787 case 3:
788 break;
789 default:
790 THROW_MESSAGE("Not implemented");
791 }
792 return getOpDomainRhsPipeline<3>();
793}

◆ getOpSkeletonExplicitRhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpSkeletonExplicitRhsPipeline ( )
inline

Definition at line 941 of file PipelineManager.hpp.

949 {
950 switch (cOre.getInterface<Simple>()->getDim()) {
951 case 1:
952 return getOpSkeletonExplicitRhsPipeline<1>();
953 case 2:
954 return getOpSkeletonExplicitRhsPipeline<2>();
955 case 3:
956 break;
957 default:
958 THROW_MESSAGE("Not implemented");
959 }
960 return getOpSkeletonExplicitRhsPipeline<3>();
961}

◆ getOpSkeletonLhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpSkeletonLhsPipeline ( )
inline

Definition at line 845 of file PipelineManager.hpp.

853 {
854 switch (cOre.getInterface<Simple>()->getDim()) {
855 case 1:
856 return getOpSkeletonLhsPipeline<1>();
857 case 2:
858 return getOpSkeletonLhsPipeline<2>();
859 case 3:
860 break;
861 default:
862 THROW_MESSAGE("Not implemented");
863 }
864 return getOpSkeletonLhsPipeline<3>();
865}

◆ getOpSkeletonRhsPipeline()

template<>
boost::ptr_deque< PipelineManager::UserDataOperator > & MoFEM::PipelineManager::getOpSkeletonRhsPipeline ( )
inline

Definition at line 869 of file PipelineManager.hpp.

877 {
878 switch (cOre.getInterface<Simple>()->getDim()) {
879 case 1:
880 return getOpSkeletonRhsPipeline<1>();
881 case 2:
882 return getOpSkeletonRhsPipeline<2>();
883 case 3:
884 break;
885 default:
886 THROW_MESSAGE("Not implemented");
887 }
888 return getOpSkeletonRhsPipeline<3>();
889}

◆ getSkeletonExplicitRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getSkeletonExplicitRhsFE ( )
inline

Definition at line 433 of file PipelineManager.hpp.

433 {
435}

◆ getSkeletonLhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getSkeletonLhsFE ( )
inline

Definition at line 417 of file PipelineManager.hpp.

417 {
418 return feSkeletonLhs;
419}

◆ getSkeletonRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getSkeletonRhsFE ( )
inline

Definition at line 421 of file PipelineManager.hpp.

421 {
422 return feSkeletonRhs;
423}

◆ query_interface()

MoFEMErrorCode MoFEM::PipelineManager::query_interface ( boost::typeindex::type_index  type_index,
UnknownInterface **  iface 
) const
virtual

Implements MoFEM::UnknownInterface.

Definition at line 10 of file PipelineManager.cpp.

11 {
12 *iface = const_cast<PipelineManager *>(this);
13 return 0;
14}
PipelineManager(const MoFEM::Core &core)

◆ setBoundaryExplicitRhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setBoundaryExplicitRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 702 of file PipelineManager.hpp.

704 {
706 switch (cOre.getInterface<Simple>()->getDim()) {
707 case 1:
708 return setBoundaryExplicitRhsIntegrationRule<1>(rule);
709 case 2:
710 return setBoundaryExplicitRhsIntegrationRule<2>(rule);
711 case 3:
712 return setBoundaryExplicitRhsIntegrationRule<3>(rule);
713 default:
714 THROW_MESSAGE("Not implemented");
715 }
717}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416

◆ setBoundaryExplicitRhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setBoundaryExplicitRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 692 of file PipelineManager.hpp.

693 {
695 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
696 createBoundaryFEPipeline<DIM>(feBoundaryExplicitRhs))
697 ->getRuleHook = rule;
699}

◆ setBoundaryLhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setBoundaryLhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 567 of file PipelineManager.hpp.

568 {
570 switch (cOre.getInterface<Simple>()->getDim()) {
571 case 1:
572 return setBoundaryLhsIntegrationRule<1>(rule);
573 case 2:
574 return setBoundaryLhsIntegrationRule<2>(rule);
575 case 3:
576 return setBoundaryLhsIntegrationRule<3>(rule);
577 default:
578 THROW_MESSAGE("Not implemented");
579 }
581}

◆ setBoundaryLhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setBoundaryLhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline
Examples
helmholtz.cpp.

Definition at line 557 of file PipelineManager.hpp.

558 {
560 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
561 createBoundaryFEPipeline<DIM>(feBoundaryLhs))
562 ->getRuleHook = rule;
564}

◆ setBoundaryRhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setBoundaryRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 594 of file PipelineManager.hpp.

595 {
597 switch (cOre.getInterface<Simple>()->getDim()) {
598 case 1:
599 return setBoundaryRhsIntegrationRule<1>(rule);
600 case 2:
601 return setBoundaryRhsIntegrationRule<2>(rule);
602 case 3:
603 return setBoundaryRhsIntegrationRule<3>(rule);
604 default:
605 THROW_MESSAGE("Not implemented");
606 }
608}

◆ setBoundaryRhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setBoundaryRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline
Examples
child_and_parent.cpp, hanging_node_approx.cpp, and helmholtz.cpp.

Definition at line 584 of file PipelineManager.hpp.

585 {
587 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
588 createBoundaryFEPipeline<DIM>(feBoundaryRhs))
589 ->getRuleHook = rule;
591}

◆ setDomainExplicitRhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setDomainExplicitRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 675 of file PipelineManager.hpp.

676 {
678 switch (cOre.getInterface<Simple>()->getDim()) {
679 case 1:
680 return setDomainExplicitRhsIntegrationRule<1>(rule);
681 case 2:
682 return setDomainExplicitRhsIntegrationRule<2>(rule);
683 case 3:
684 return setDomainExplicitRhsIntegrationRule<3>(rule);
685 default:
686 THROW_MESSAGE("Not implemented");
687 }
689}

◆ setDomainExplicitRhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setDomainExplicitRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 665 of file PipelineManager.hpp.

666 {
668 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
669 createDomainFEPipeline<DIM>(feDomainExplicitRhs))
670 ->getRuleHook = rule;
672}

◆ setDomainLhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setDomainLhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 513 of file PipelineManager.hpp.

514 {
516 switch (cOre.getInterface<Simple>()->getDim()) {
517 case 1:
518 return setDomainLhsIntegrationRule<1>(rule);
519 case 2:
520 return setDomainLhsIntegrationRule<2>(rule);
521 case 3:
522 return setDomainLhsIntegrationRule<3>(rule);
523 default:
524 THROW_MESSAGE("Not implemented");
525 }
527}

◆ setDomainLhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setDomainLhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline
Examples
approx_sphere.cpp, child_and_parent.cpp, dg_projection.cpp, hanging_node_approx.cpp, heat_method.cpp, helmholtz.cpp, higher_derivatives.cpp, and mixed_poisson.cpp.

Definition at line 503 of file PipelineManager.hpp.

504 {
506 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
507 createDomainFEPipeline<DIM>(feDomainLhs))
508 ->getRuleHook = rule;
510}

◆ setDomainRhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setDomainRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 540 of file PipelineManager.hpp.

541 {
543 switch (cOre.getInterface<Simple>()->getDim()) {
544 case 1:
545 return setDomainRhsIntegrationRule<1>(rule);
546 case 2:
547 return setDomainRhsIntegrationRule<2>(rule);
548 case 3:
549 return setDomainRhsIntegrationRule<3>(rule);
550 default:
551 THROW_MESSAGE("Not implemented");
552 }
554}

◆ setDomainRhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setDomainRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline
Examples
approx_sphere.cpp, child_and_parent.cpp, dg_projection.cpp, hanging_node_approx.cpp, heat_method.cpp, higher_derivatives.cpp, and mixed_poisson.cpp.

Definition at line 530 of file PipelineManager.hpp.

531 {
533 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
534 createDomainFEPipeline<DIM>(feDomainRhs))
535 ->getRuleHook = rule;
537}

◆ setSkeletonExplicitRhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setSkeletonExplicitRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 730 of file PipelineManager.hpp.

732 {
734 switch (cOre.getInterface<Simple>()->getDim()) {
735 case 1:
736 return setSkeletonExplicitRhsIntegrationRule<1>(rule);
737 case 2:
738 return setSkeletonExplicitRhsIntegrationRule<2>(rule);
739 case 3:
740 return setSkeletonExplicitRhsIntegrationRule<3>(rule);
741 default:
742 THROW_MESSAGE("Not implemented");
743 }
745}

◆ setSkeletonExplicitRhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setSkeletonExplicitRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 720 of file PipelineManager.hpp.

721 {
723 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
724 createBoundaryFEPipeline<DIM>(feSkeletonExplicitRhs))
725 ->getRuleHook = rule;
727}

◆ setSkeletonLhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setSkeletonLhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 621 of file PipelineManager.hpp.

622 {
624 switch (cOre.getInterface<Simple>()->getDim()) {
625 case 1:
626 return setSkeletonLhsIntegrationRule<1>(rule);
627 case 2:
628 return setSkeletonLhsIntegrationRule<2>(rule);
629 case 3:
630 return setSkeletonLhsIntegrationRule<3>(rule);
631 default:
632 THROW_MESSAGE("Not implemented");
633 }
635}

◆ setSkeletonLhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setSkeletonLhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 611 of file PipelineManager.hpp.

612 {
614 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
615 createBoundaryFEPipeline<DIM>(feSkeletonLhs))
616 ->getRuleHook = rule;
618}

◆ setSkeletonRhsIntegrationRule() [1/2]

template<>
MoFEMErrorCode MoFEM::PipelineManager::setSkeletonRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 648 of file PipelineManager.hpp.

649 {
651 switch (cOre.getInterface<Simple>()->getDim()) {
652 case 1:
653 return setSkeletonRhsIntegrationRule<1>(rule);
654 case 2:
655 return setSkeletonRhsIntegrationRule<2>(rule);
656 case 3:
657 return setSkeletonRhsIntegrationRule<3>(rule);
658 default:
659 THROW_MESSAGE("Not implemented");
660 }
662}

◆ setSkeletonRhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setSkeletonRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
inline

Definition at line 638 of file PipelineManager.hpp.

639 {
641 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
642 createBoundaryFEPipeline<DIM>(feSkeletonRhs))
643 ->getRuleHook = rule;
645}

Member Data Documentation

◆ cOre

MoFEM::Core& MoFEM::PipelineManager::cOre
private

Definition at line 289 of file PipelineManager.hpp.

◆ feBoundaryExplicitRhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feBoundaryExplicitRhs
private

Element to assemble explict Rhs for IMEX solver

Definition at line 307 of file PipelineManager.hpp.

◆ feBoundaryLhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feBoundaryLhs
private

Element to assemble LHS side by integrating boundary.

Definition at line 298 of file PipelineManager.hpp.

◆ feBoundaryRhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feBoundaryRhs
private

Element to assemble RHS side by integrating boundary.

Definition at line 296 of file PipelineManager.hpp.

◆ feDomainExplicitRhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feDomainExplicitRhs
private

Element to assemble explict Rhs for IMEX solver.

Definition at line 305 of file PipelineManager.hpp.

◆ feDomainLhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feDomainLhs
private

Element to assemble LHS side by integrating domain.

Definition at line 294 of file PipelineManager.hpp.

◆ feDomainRhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feDomainRhs
private

Element to assemble RHS side by integrating domain.

Definition at line 292 of file PipelineManager.hpp.

◆ feSkeletonExplicitRhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feSkeletonExplicitRhs
private

Element to assemble explict Rhs for IMEX solver

Definition at line 310 of file PipelineManager.hpp.

◆ feSkeletonLhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feSkeletonLhs
private

Element to assemble LHS side by integrating skeleton.

Definition at line 302 of file PipelineManager.hpp.

◆ feSkeletonRhs

boost::shared_ptr<FEMethod> MoFEM::PipelineManager::feSkeletonRhs
private

Element to assemble RHS side by integrating skeleton.

Definition at line 300 of file PipelineManager.hpp.


The documentation for this struct was generated from the following files: