v0.13.1
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]

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, mixed_poisson.cpp, nonlinear_elastic.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, 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:1086

Member Function Documentation

◆ createBoundaryFEPipeline() [1/4]

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

Definition at line 329 of file PipelineManager.hpp.

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

◆ createBoundaryFEPipeline() [2/4]

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

Definition at line 329 of file PipelineManager.hpp.

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

◆ createBoundaryFEPipeline() [3/4]

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

Definition at line 329 of file PipelineManager.hpp.

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

◆ createBoundaryFEPipeline() [4/4]

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

Definition at line 329 of file PipelineManager.hpp.

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

◆ createDomainFEPipeline() [1/4]

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

Definition at line 297 of file PipelineManager.hpp.

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

◆ createDomainFEPipeline() [2/4]

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

Definition at line 297 of file PipelineManager.hpp.

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

◆ createDomainFEPipeline() [3/4]

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

Definition at line 297 of file PipelineManager.hpp.

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

◆ createDomainFEPipeline() [4/4]

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

Definition at line 297 of file PipelineManager.hpp.

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

◆ 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 173 of file PipelineManager.cpp.

174 {
175 switch (type) {
176 case EX:
177 return createTSEX(dm);
178 break;
179 case IM:
180 return createTSIM(dm);
181 break;
182 case IM2:
183 return createTSIM2(dm);
184 break;
185 case IMEX:
186 return createTSIMEX(dm);
187 break;
188 default:
190 "TS solver handling not implemented");
191 break;
192 }
193 return SmartPetscObj<TS>();
194}
#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)
Deprecated:
Use version with explicit TS solver type

Definition at line 232 of file PipelineManager.hpp.

232 {
233 return createTSIM(dm);
234 }

◆ createTS2()

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

Definition at line 248 of file PipelineManager.hpp.

248 {
249 return createTSIM2(dm);
250 }

◆ getBoundaryExplicitRhsFE()

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

Definition at line 387 of file PipelineManager.hpp.

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

◆ getBoundaryLhsFE()

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

Definition at line 367 of file PipelineManager.hpp.

367 {
368 return feBoundaryLhs;
369}
boost::shared_ptr< FEMethod > feBoundaryLhs
Element to assemble LHS side by integrating boundary.

◆ getBoundaryRhsFE()

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

Definition at line 371 of file PipelineManager.hpp.

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

◆ getDomainExplicitRhsFE()

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

Definition at line 383 of file PipelineManager.hpp.

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

◆ getDomainLhsFE()

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

◆ getDomainRhsFE()

boost::shared_ptr< FEMethod > & MoFEM::PipelineManager::getDomainRhsFE ( )
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 363 of file PipelineManager.hpp.

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

◆ getOpBoundaryExplicitRhsPipeline()

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

Definition at line 810 of file PipelineManager.hpp.

818 {
819 switch (cOre.getInterface<Simple>()->getDim()) {
820 case 1:
821 return getOpBoundaryExplicitRhsPipeline<1>();
822 case 2:
823 return getOpBoundaryExplicitRhsPipeline<2>();
824 case 3:
825 break;
826 default:
827 THROW_MESSAGE("Not implemented");
828 }
829 return getOpBoundaryExplicitRhsPipeline<3>();
830}
#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 ( )

Definition at line 690 of file PipelineManager.hpp.

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

◆ getOpBoundaryRhsPipeline()

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

Definition at line 714 of file PipelineManager.hpp.

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

◆ getOpDomainExplicitRhsPipeline()

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

Definition at line 786 of file PipelineManager.hpp.

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

◆ getOpDomainLhsPipeline()

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

Definition at line 642 of file PipelineManager.hpp.

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

◆ getOpDomainRhsPipeline()

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

Definition at line 666 of file PipelineManager.hpp.

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

◆ getOpSkeletonExplicitRhsPipeline()

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

Definition at line 834 of file PipelineManager.hpp.

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

◆ getOpSkeletonLhsPipeline()

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

Definition at line 738 of file PipelineManager.hpp.

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

◆ getOpSkeletonRhsPipeline()

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

Definition at line 762 of file PipelineManager.hpp.

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

◆ getSkeletonExplicitRhsFE()

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

Definition at line 391 of file PipelineManager.hpp.

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

◆ getSkeletonLhsFE()

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

Definition at line 375 of file PipelineManager.hpp.

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

◆ getSkeletonRhsFE()

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

Definition at line 379 of file PipelineManager.hpp.

379 {
380 return feSkeletonRhs;
381}
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)

Definition at line 595 of file PipelineManager.hpp.

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

Definition at line 585 of file PipelineManager.hpp.

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

◆ setBoundaryLhsIntegrationRule() [1/2]

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

Definition at line 460 of file PipelineManager.hpp.

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

◆ setBoundaryLhsIntegrationRule() [2/2]

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

Definition at line 450 of file PipelineManager.hpp.

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

◆ setBoundaryRhsIntegrationRule() [1/2]

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

Definition at line 487 of file PipelineManager.hpp.

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

◆ setBoundaryRhsIntegrationRule() [2/2]

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

Definition at line 477 of file PipelineManager.hpp.

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

◆ setDomainExplicitRhsIntegrationRule() [1/2]

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

Definition at line 568 of file PipelineManager.hpp.

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

◆ setDomainExplicitRhsIntegrationRule() [2/2]

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

Definition at line 558 of file PipelineManager.hpp.

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

◆ setDomainLhsIntegrationRule() [1/2]

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

Definition at line 406 of file PipelineManager.hpp.

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

◆ setDomainLhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setDomainLhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
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 396 of file PipelineManager.hpp.

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

◆ setDomainRhsIntegrationRule() [1/2]

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

Definition at line 433 of file PipelineManager.hpp.

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

◆ setDomainRhsIntegrationRule() [2/2]

template<int DIM>
MoFEMErrorCode MoFEM::PipelineManager::setDomainRhsIntegrationRule ( PipelineManager::RuleHookFun  rule)
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 423 of file PipelineManager.hpp.

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

◆ setSkeletonExplicitRhsIntegrationRule() [1/2]

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

Definition at line 623 of file PipelineManager.hpp.

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

◆ setSkeletonExplicitRhsIntegrationRule() [2/2]

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

Definition at line 613 of file PipelineManager.hpp.

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

◆ setSkeletonLhsIntegrationRule() [1/2]

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

Definition at line 514 of file PipelineManager.hpp.

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

◆ setSkeletonLhsIntegrationRule() [2/2]

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

Definition at line 504 of file PipelineManager.hpp.

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

◆ setSkeletonRhsIntegrationRule() [1/2]

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

Definition at line 541 of file PipelineManager.hpp.

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

◆ setSkeletonRhsIntegrationRule() [2/2]

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

Definition at line 531 of file PipelineManager.hpp.

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

Member Data Documentation

◆ cOre

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

Definition at line 262 of file PipelineManager.hpp.

◆ feBoundaryExplicitRhs

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

Element to assemble explict Rhs for IMEX solver

Definition at line 280 of file PipelineManager.hpp.

◆ feBoundaryLhs

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

Element to assemble LHS side by integrating boundary.

Definition at line 271 of file PipelineManager.hpp.

◆ feBoundaryRhs

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

Element to assemble RHS side by integrating boundary.

Definition at line 269 of file PipelineManager.hpp.

◆ feDomainExplicitRhs

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

Element to assemble explict Rhs for IMEX solver.

Definition at line 278 of file PipelineManager.hpp.

◆ feDomainLhs

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

Element to assemble LHS side by integrating domain.

Definition at line 267 of file PipelineManager.hpp.

◆ feDomainRhs

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

Element to assemble RHS side by integrating domain.

Definition at line 265 of file PipelineManager.hpp.

◆ feSkeletonExplicitRhs

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

Element to assemble explict Rhs for IMEX solver

Definition at line 283 of file PipelineManager.hpp.

◆ feSkeletonLhs

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

Element to assemble LHS side by integrating skeleton.

Definition at line 275 of file PipelineManager.hpp.

◆ feSkeletonRhs

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

Element to assemble RHS side by integrating skeleton.

Definition at line 273 of file PipelineManager.hpp.


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