v0.13.2
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<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_vector< UserDataOperator > & getOpDomainLhsPipeline ()
 Get the Op Domain Lhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_vector< UserDataOperator > & getOpDomainRhsPipeline ()
 Get the Op Domain Rhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_vector< UserDataOperator > & getOpBoundaryLhsPipeline ()
 Get the Op Boundary Lhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_vector< UserDataOperator > & getOpBoundaryRhsPipeline ()
 Get the Op Boundary Rhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_vector< UserDataOperator > & getOpSkeletonLhsPipeline ()
 Get the Op Skeleton Lhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_vector< UserDataOperator > & getOpSkeletonRhsPipeline ()
 Get the Op Skeleton Rhs Pipeline object. More...
 
template<int DIM = -1>
boost::ptr_vector< UserDataOperator > & getOpDomainExplicitRhsPipeline ()
 Get the Op Domain Rhs Pipeline object for implicit-explicit G term. More...
 
template<int DIM = -1>
boost::ptr_vector< UserDataOperator > & getOpBoundaryExplicitRhsPipeline ()
 Get the Op Bondary Rhs Pipeline object for implicit-explicit G term. More...
 
template<int DIM = -1>
boost::ptr_vector< 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_vector< PipelineManager::UserDataOperator > & getOpDomainLhsPipeline ()
 
template<>
boost::ptr_vector< PipelineManager::UserDataOperator > & getOpDomainRhsPipeline ()
 
template<>
boost::ptr_vector< PipelineManager::UserDataOperator > & getOpBoundaryLhsPipeline ()
 
template<>
boost::ptr_vector< PipelineManager::UserDataOperator > & getOpBoundaryRhsPipeline ()
 
template<>
boost::ptr_vector< PipelineManager::UserDataOperator > & getOpSkeletonLhsPipeline ()
 
template<>
boost::ptr_vector< PipelineManager::UserDataOperator > & getOpSkeletonRhsPipeline ()
 
template<>
boost::ptr_vector< PipelineManager::UserDataOperator > & getOpDomainExplicitRhsPipeline ()
 
template<>
boost::ptr_vector< PipelineManager::UserDataOperator > & getOpBoundaryExplicitRhsPipeline ()
 
template<>
boost::ptr_vector< 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 > & 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, contact.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, poisson_3d_homogeneous.cpp, scalar_check_approximation.cpp, shallow_wave.cpp, simple_l2_only.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/4]

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

Definition at line 331 of file PipelineManager.hpp.

331 {
332 static_assert(DIM == 1 || DIM == 2 || DIM == 3, "not implemented");
333 fe = boost::make_shared<FEMethod>();
334 return fe;
335}

◆ createBoundaryFEPipeline() [2/4]

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

Definition at line 331 of file PipelineManager.hpp.

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

◆ createBoundaryFEPipeline() [3/4]

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

Definition at line 331 of file PipelineManager.hpp.

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

◆ createBoundaryFEPipeline() [4/4]

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

Definition at line 331 of file PipelineManager.hpp.

355 {
356 if (!fe)
357 fe = boost::make_shared<VertexElementForcesAndSourcesCore>(cOre);
358 return fe;
359}

◆ createDomainFEPipeline() [1/4]

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

Definition at line 299 of file PipelineManager.hpp.

299 {
300 static_assert(DIM == 1 || DIM == 2 || DIM == 3, "not implemented");
301 fe = boost::make_shared<FEMethod>();
302 return fe;
303}

◆ createDomainFEPipeline() [2/4]

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

Definition at line 299 of file PipelineManager.hpp.

307 {
308 if (!fe)
309 fe = boost::make_shared<VolEle>(cOre);
310 return fe;
311}

◆ createDomainFEPipeline() [3/4]

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

Definition at line 299 of file PipelineManager.hpp.

315 {
316 if (!fe)
317 fe = boost::make_shared<FaceEle>(cOre);
318 return fe;
319}

◆ createDomainFEPipeline() [4/4]

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

Definition at line 299 of file PipelineManager.hpp.

323 {
324 if (!fe)
325 fe = boost::make_shared<EdgeEle>(cOre);
326 return fe;
327}

◆ 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 234 of file PipelineManager.hpp.

234 {
235 return createTSIM(dm);
236 }

◆ createTS2()

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

Definition at line 250 of file PipelineManager.hpp.

250 {
251 return createTSIM2(dm);
252 }

◆ getBoundaryExplicitRhsFE()

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

Definition at line 389 of file PipelineManager.hpp.

389 {
391}
boost::shared_ptr< FEMethod > feBoundaryExplicitRhs

◆ getBoundaryLhsFE()

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

Definition at line 369 of file PipelineManager.hpp.

369 {
370 return feBoundaryLhs;
371}
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 373 of file PipelineManager.hpp.

373 {
374 return feBoundaryRhs;
375}
boost::shared_ptr< FEMethod > feBoundaryRhs
Element to assemble RHS side by integrating boundary.

◆ getDomainExplicitRhsFE()

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

Definition at line 385 of file PipelineManager.hpp.

385 {
386 return feDomainExplicitRhs;
387}
boost::shared_ptr< FEMethod > feDomainExplicitRhs
Element to assemble explict Rhs for IMEX solver.

◆ getDomainLhsFE()

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

◆ getDomainRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getDomainRhsFE ( )
inline
Examples
child_and_parent.cpp, contact.cpp, hanging_node_approx.cpp, heat_method.cpp, helmholtz.cpp, higher_derivatives.cpp, mixed_poisson.cpp, phase.cpp, plot_base.cpp, and poisson_2d_dis_galerkin.cpp.

Definition at line 365 of file PipelineManager.hpp.

365 {
366 return feDomainRhs;
367}
boost::shared_ptr< FEMethod > feDomainRhs
Element to assemble RHS side by integrating domain.

◆ getOpBoundaryExplicitRhsPipeline()

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

Definition at line 812 of file PipelineManager.hpp.

820 {
821 switch (cOre.getInterface<Simple>()->getDim()) {
822 case 1:
823 return getOpBoundaryExplicitRhsPipeline<1>();
824 case 2:
825 return getOpBoundaryExplicitRhsPipeline<2>();
826 case 3:
827 break;
828 default:
829 THROW_MESSAGE("Not implemented");
830 }
831 return getOpBoundaryExplicitRhsPipeline<3>();
832}
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
Definition: definitions.h:561
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.

◆ getOpBoundaryLhsPipeline()

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

Definition at line 692 of file PipelineManager.hpp.

700 {
701 switch (cOre.getInterface<Simple>()->getDim()) {
702 case 1:
703 return getOpBoundaryLhsPipeline<1>();
704 case 2:
705 return getOpBoundaryLhsPipeline<2>();
706 case 3:
707 break;
708 default:
709 THROW_MESSAGE("Not implemented");
710 }
711 return getOpBoundaryLhsPipeline<3>();
712}

◆ getOpBoundaryRhsPipeline()

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

Definition at line 716 of file PipelineManager.hpp.

724 {
725 switch (cOre.getInterface<Simple>()->getDim()) {
726 case 1:
727 return getOpBoundaryRhsPipeline<1>();
728 case 2:
729 return getOpBoundaryRhsPipeline<2>();
730 case 3:
731 break;
732 default:
733 THROW_MESSAGE("Not implemented");
734 }
735 return getOpBoundaryRhsPipeline<3>();
736}

◆ getOpDomainExplicitRhsPipeline()

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

Definition at line 788 of file PipelineManager.hpp.

796 {
797 switch (cOre.getInterface<Simple>()->getDim()) {
798 case 1:
799 return getOpDomainExplicitRhsPipeline<1>();
800 case 2:
801 return getOpDomainExplicitRhsPipeline<2>();
802 case 3:
803 break;
804 default:
805 THROW_MESSAGE("Not implemented");
806 }
807 return getOpDomainExplicitRhsPipeline<3>();
808}

◆ getOpDomainLhsPipeline()

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

Definition at line 644 of file PipelineManager.hpp.

652 {
653 switch (cOre.getInterface<Simple>()->getDim()) {
654 case 1:
655 return getOpDomainLhsPipeline<1>();
656 case 2:
657 return getOpDomainLhsPipeline<2>();
658 case 3:
659 break;
660 default:
661 THROW_MESSAGE("Not implemented");
662 }
663 return getOpDomainLhsPipeline<3>();
664}

◆ getOpDomainRhsPipeline()

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

Definition at line 668 of file PipelineManager.hpp.

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

◆ getOpSkeletonExplicitRhsPipeline()

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

Definition at line 836 of file PipelineManager.hpp.

844 {
845 switch (cOre.getInterface<Simple>()->getDim()) {
846 case 1:
847 return getOpSkeletonExplicitRhsPipeline<1>();
848 case 2:
849 return getOpSkeletonExplicitRhsPipeline<2>();
850 case 3:
851 break;
852 default:
853 THROW_MESSAGE("Not implemented");
854 }
855 return getOpSkeletonExplicitRhsPipeline<3>();
856}

◆ getOpSkeletonLhsPipeline()

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

Definition at line 740 of file PipelineManager.hpp.

748 {
749 switch (cOre.getInterface<Simple>()->getDim()) {
750 case 1:
751 return getOpSkeletonLhsPipeline<1>();
752 case 2:
753 return getOpSkeletonLhsPipeline<2>();
754 case 3:
755 break;
756 default:
757 THROW_MESSAGE("Not implemented");
758 }
759 return getOpSkeletonLhsPipeline<3>();
760}

◆ getOpSkeletonRhsPipeline()

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

Definition at line 764 of file PipelineManager.hpp.

772 {
773 switch (cOre.getInterface<Simple>()->getDim()) {
774 case 1:
775 return getOpSkeletonRhsPipeline<1>();
776 case 2:
777 return getOpSkeletonRhsPipeline<2>();
778 case 3:
779 break;
780 default:
781 THROW_MESSAGE("Not implemented");
782 }
783 return getOpSkeletonRhsPipeline<3>();
784}

◆ getSkeletonExplicitRhsFE()

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

Definition at line 393 of file PipelineManager.hpp.

393 {
395}
boost::shared_ptr< FEMethod > feSkeletonExplicitRhs

◆ getSkeletonLhsFE()

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

Definition at line 377 of file PipelineManager.hpp.

377 {
378 return feSkeletonLhs;
379}
boost::shared_ptr< FEMethod > feSkeletonLhs
Element to assemble LHS side by integrating skeleton.

◆ getSkeletonRhsFE()

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

Definition at line 381 of file PipelineManager.hpp.

381 {
382 return feSkeletonRhs;
383}
boost::shared_ptr< FEMethod > feSkeletonRhs
Element to assemble RHS side by integrating skeleton.

◆ 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 597 of file PipelineManager.hpp.

599 {
601 switch (cOre.getInterface<Simple>()->getDim()) {
602 case 1:
603 return setBoundaryExplicitRhsIntegrationRule<1>(rule);
604 case 2:
605 return setBoundaryExplicitRhsIntegrationRule<2>(rule);
606 case 3:
607 return setBoundaryExplicitRhsIntegrationRule<3>(rule);
608 default:
609 THROW_MESSAGE("Not implemented");
610 }
612}
#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 587 of file PipelineManager.hpp.

588 {
590 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
591 createBoundaryFEPipeline<DIM>(feBoundaryExplicitRhs))
592 ->getRuleHook = rule;
594}

◆ setBoundaryLhsIntegrationRule() [1/2]

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

Definition at line 462 of file PipelineManager.hpp.

463 {
465 switch (cOre.getInterface<Simple>()->getDim()) {
466 case 1:
467 return setBoundaryLhsIntegrationRule<1>(rule);
468 case 2:
469 return setBoundaryLhsIntegrationRule<2>(rule);
470 case 3:
471 return setBoundaryLhsIntegrationRule<3>(rule);
472 default:
473 THROW_MESSAGE("Not implemented");
474 }
476}

◆ setBoundaryLhsIntegrationRule() [2/2]

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

Definition at line 452 of file PipelineManager.hpp.

453 {
455 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
456 createBoundaryFEPipeline<DIM>(feBoundaryLhs))
457 ->getRuleHook = rule;
459}

◆ setBoundaryRhsIntegrationRule() [1/2]

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

Definition at line 489 of file PipelineManager.hpp.

490 {
492 switch (cOre.getInterface<Simple>()->getDim()) {
493 case 1:
494 return setBoundaryRhsIntegrationRule<1>(rule);
495 case 2:
496 return setBoundaryRhsIntegrationRule<2>(rule);
497 case 3:
498 return setBoundaryRhsIntegrationRule<3>(rule);
499 default:
500 THROW_MESSAGE("Not implemented");
501 }
503}

◆ setBoundaryRhsIntegrationRule() [2/2]

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

Definition at line 479 of file PipelineManager.hpp.

480 {
482 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
483 createBoundaryFEPipeline<DIM>(feBoundaryRhs))
484 ->getRuleHook = rule;
486}

◆ setDomainExplicitRhsIntegrationRule() [1/2]

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

Definition at line 570 of file PipelineManager.hpp.

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

◆ setDomainExplicitRhsIntegrationRule() [2/2]

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

Definition at line 560 of file PipelineManager.hpp.

561 {
563 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
564 createDomainFEPipeline<DIM>(feDomainExplicitRhs))
565 ->getRuleHook = rule;
567}

◆ setDomainLhsIntegrationRule() [1/2]

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

Definition at line 408 of file PipelineManager.hpp.

409 {
411 switch (cOre.getInterface<Simple>()->getDim()) {
412 case 1:
413 return setDomainLhsIntegrationRule<1>(rule);
414 case 2:
415 return setDomainLhsIntegrationRule<2>(rule);
416 case 3:
417 return setDomainLhsIntegrationRule<3>(rule);
418 default:
419 THROW_MESSAGE("Not implemented");
420 }
422}

◆ setDomainLhsIntegrationRule() [2/2]

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

Definition at line 398 of file PipelineManager.hpp.

399 {
401 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
402 createDomainFEPipeline<DIM>(feDomainLhs))
403 ->getRuleHook = rule;
405}

◆ setDomainRhsIntegrationRule() [1/2]

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

Definition at line 435 of file PipelineManager.hpp.

436 {
438 switch (cOre.getInterface<Simple>()->getDim()) {
439 case 1:
440 return setDomainRhsIntegrationRule<1>(rule);
441 case 2:
442 return setDomainRhsIntegrationRule<2>(rule);
443 case 3:
444 return setDomainRhsIntegrationRule<3>(rule);
445 default:
446 THROW_MESSAGE("Not implemented");
447 }
449}

◆ setDomainRhsIntegrationRule() [2/2]

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

Definition at line 425 of file PipelineManager.hpp.

426 {
428 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
429 createDomainFEPipeline<DIM>(feDomainRhs))
430 ->getRuleHook = rule;
432}

◆ setSkeletonExplicitRhsIntegrationRule() [1/2]

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

Definition at line 625 of file PipelineManager.hpp.

627 {
629 switch (cOre.getInterface<Simple>()->getDim()) {
630 case 1:
631 return setSkeletonExplicitRhsIntegrationRule<1>(rule);
632 case 2:
633 return setSkeletonExplicitRhsIntegrationRule<2>(rule);
634 case 3:
635 return setSkeletonExplicitRhsIntegrationRule<3>(rule);
636 default:
637 THROW_MESSAGE("Not implemented");
638 }
640}

◆ setSkeletonExplicitRhsIntegrationRule() [2/2]

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

Definition at line 615 of file PipelineManager.hpp.

616 {
618 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
619 createBoundaryFEPipeline<DIM>(feSkeletonExplicitRhs))
620 ->getRuleHook = rule;
622}

◆ setSkeletonLhsIntegrationRule() [1/2]

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

Definition at line 516 of file PipelineManager.hpp.

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

◆ setSkeletonLhsIntegrationRule() [2/2]

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

Definition at line 506 of file PipelineManager.hpp.

507 {
509 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
510 createBoundaryFEPipeline<DIM>(feSkeletonLhs))
511 ->getRuleHook = rule;
513}

◆ setSkeletonRhsIntegrationRule() [1/2]

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

Definition at line 543 of file PipelineManager.hpp.

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

◆ setSkeletonRhsIntegrationRule() [2/2]

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

Definition at line 533 of file PipelineManager.hpp.

534 {
536 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
537 createBoundaryFEPipeline<DIM>(feSkeletonRhs))
538 ->getRuleHook = rule;
540}

Member Data Documentation

◆ cOre

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

Definition at line 264 of file PipelineManager.hpp.

◆ feBoundaryExplicitRhs

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

Element to assemble explict Rhs for IMEX solver

Definition at line 282 of file PipelineManager.hpp.

◆ feBoundaryLhs

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

Element to assemble LHS side by integrating boundary.

Definition at line 273 of file PipelineManager.hpp.

◆ feBoundaryRhs

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

Element to assemble RHS side by integrating boundary.

Definition at line 271 of file PipelineManager.hpp.

◆ feDomainExplicitRhs

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

Element to assemble explict Rhs for IMEX solver.

Definition at line 280 of file PipelineManager.hpp.

◆ feDomainLhs

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

Element to assemble LHS side by integrating domain.

Definition at line 269 of file PipelineManager.hpp.

◆ feDomainRhs

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

Element to assemble RHS side by integrating domain.

Definition at line 267 of file PipelineManager.hpp.

◆ feSkeletonExplicitRhs

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

Element to assemble explict Rhs for IMEX solver

Definition at line 285 of file PipelineManager.hpp.

◆ feSkeletonLhs

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

Element to assemble LHS side by integrating skeleton.

Definition at line 277 of file PipelineManager.hpp.

◆ feSkeletonRhs

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

Element to assemble RHS side by integrating skeleton.

Definition at line 275 of file PipelineManager.hpp.


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