85 template <
int DIM = -1>
88 template <
int DIM = -1>
91 template <
int DIM = -1>
94 template <
int DIM = -1>
97 template <
int DIM = -1>
100 template <
int DIM = -1>
103 template <
int DIM = -1>
106 template <
int DIM = -1>
109 template <
int DIM = -1>
119 template <
int DIM = -1>
129 template <
int DIM = -1>
139 template <
int DIM = -1>
149 template <
int DIM = -1>
158 template <
int DIM = -1>
168 template <
int DIM = -1>
178 template <
int DIM = -1>
188 template <
int DIM = -1>
198 template <
int DIM = -1>
291 boost::shared_ptr<FEMethod>
293 boost::shared_ptr<FEMethod>
295 boost::shared_ptr<FEMethod>
297 boost::shared_ptr<FEMethod>
299 boost::shared_ptr<FEMethod>
301 boost::shared_ptr<FEMethod>
304 boost::shared_ptr<FEMethod>
306 boost::shared_ptr<FEMethod>
309 boost::shared_ptr<FEMethod>
314 inline boost::shared_ptr<FEMethod> &
318 inline boost::shared_ptr<FEMethod> &
323 boost::shared_ptr<FEMethod> &
325 static_assert(DIM == 1 || DIM == 2 || DIM == 3,
"not implemented");
326 fe = boost::make_shared<FEMethod>();
331 inline boost::shared_ptr<FEMethod> &
332 PipelineManager::createDomainFEPipeline<3>(boost::shared_ptr<FEMethod> &fe) {
334 fe = boost::make_shared<VolEle>(
cOre);
339 inline boost::shared_ptr<FEMethod> &
340 PipelineManager::createDomainFEPipeline<2>(boost::shared_ptr<FEMethod> &fe) {
342 fe = boost::make_shared<FaceEle>(
cOre);
347 inline boost::shared_ptr<FEMethod> &
348 PipelineManager::createDomainFEPipeline<1>(boost::shared_ptr<FEMethod> &fe) {
350 fe = boost::make_shared<EdgeEle>(
cOre);
355 inline boost::shared_ptr<FEMethod> &
359 return createDomainFEPipeline<1>(fe);
361 return createDomainFEPipeline<2>(fe);
363 return createDomainFEPipeline<3>(fe);
370 boost::shared_ptr<FEMethod> &
372 static_assert(DIM == 1 || DIM == 2 || DIM == 3,
"not implemented");
373 fe = boost::make_shared<FEMethod>();
378 inline boost::shared_ptr<FEMethod> &
379 PipelineManager::createBoundaryFEPipeline<3>(boost::shared_ptr<FEMethod> &fe) {
381 fe = boost::make_shared<FaceElementForcesAndSourcesCore>(
cOre);
386 inline boost::shared_ptr<FEMethod> &
387 PipelineManager::createBoundaryFEPipeline<2>(boost::shared_ptr<FEMethod> &fe) {
389 fe = boost::make_shared<EdgeEle>(
cOre);
394 inline boost::shared_ptr<FEMethod> &
395 PipelineManager::createBoundaryFEPipeline<1>(boost::shared_ptr<FEMethod> &fe) {
397 fe = boost::make_shared<VertexElementForcesAndSourcesCore>(
cOre);
438 inline boost::shared_ptr<FEMethod> &
442 return createBoundaryFEPipeline<1>(fe);
444 return createBoundaryFEPipeline<2>(fe);
446 return createBoundaryFEPipeline<3>(fe);
453 return boost::dynamic_pointer_cast<T>(
458 return boost::dynamic_pointer_cast<T>(
463 return boost::dynamic_pointer_cast<T>(
467 template <
typename T,
int DIM>
469 return boost::dynamic_pointer_cast<T>(
473 template <
typename T,
int DIM>
475 return boost::dynamic_pointer_cast<T>(
480 return boost::dynamic_pointer_cast<T>(
484 template <
typename T,
int DIM>
486 return boost::dynamic_pointer_cast<T>(
490 template <
typename T,
int DIM>
492 return boost::dynamic_pointer_cast<T>(
496 template <
typename T,
int DIM>
498 return boost::dynamic_pointer_cast<T>(
506 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
508 ->getRuleHook = rule;
518 return setDomainLhsIntegrationRule<1>(rule);
520 return setDomainLhsIntegrationRule<2>(rule);
522 return setDomainLhsIntegrationRule<3>(rule);
533 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
535 ->getRuleHook = rule;
545 return setDomainRhsIntegrationRule<1>(rule);
547 return setDomainRhsIntegrationRule<2>(rule);
549 return setDomainRhsIntegrationRule<3>(rule);
560 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
562 ->getRuleHook = rule;
572 return setBoundaryLhsIntegrationRule<1>(rule);
574 return setBoundaryLhsIntegrationRule<2>(rule);
576 return setBoundaryLhsIntegrationRule<3>(rule);
587 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
589 ->getRuleHook = rule;
599 return setBoundaryRhsIntegrationRule<1>(rule);
601 return setBoundaryRhsIntegrationRule<2>(rule);
603 return setBoundaryRhsIntegrationRule<3>(rule);
614 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
616 ->getRuleHook = rule;
626 return setSkeletonLhsIntegrationRule<1>(rule);
628 return setSkeletonLhsIntegrationRule<2>(rule);
630 return setSkeletonLhsIntegrationRule<3>(rule);
641 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
643 ->getRuleHook = rule;
653 return setSkeletonRhsIntegrationRule<1>(rule);
655 return setSkeletonRhsIntegrationRule<2>(rule);
657 return setSkeletonRhsIntegrationRule<3>(rule);
668 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
670 ->getRuleHook = rule;
680 return setDomainExplicitRhsIntegrationRule<1>(rule);
682 return setDomainExplicitRhsIntegrationRule<2>(rule);
684 return setDomainExplicitRhsIntegrationRule<3>(rule);
695 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
697 ->getRuleHook = rule;
708 return setBoundaryExplicitRhsIntegrationRule<1>(rule);
710 return setBoundaryExplicitRhsIntegrationRule<2>(rule);
712 return setBoundaryExplicitRhsIntegrationRule<3>(rule);
723 boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
725 ->getRuleHook = rule;
736 return setSkeletonExplicitRhsIntegrationRule<1>(rule);
738 return setSkeletonExplicitRhsIntegrationRule<2>(rule);
740 return setSkeletonExplicitRhsIntegrationRule<3>(rule);
748 boost::ptr_deque<PipelineManager::UserDataOperator> &
750 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
756 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
760 return getOpDomainLhsPipeline<1>();
762 return getOpDomainLhsPipeline<2>();
768 return getOpDomainLhsPipeline<3>();
772 boost::ptr_deque<PipelineManager::UserDataOperator> &
774 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
780 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
784 return getOpDomainRhsPipeline<1>();
786 return getOpDomainRhsPipeline<2>();
792 return getOpDomainRhsPipeline<3>();
796 boost::ptr_deque<PipelineManager::UserDataOperator> &
798 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
804 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
808 return getOpBoundaryLhsPipeline<1>();
810 return getOpBoundaryLhsPipeline<2>();
816 return getOpBoundaryLhsPipeline<3>();
820 boost::ptr_deque<PipelineManager::UserDataOperator> &
822 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
828 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
832 return getOpBoundaryRhsPipeline<1>();
834 return getOpBoundaryRhsPipeline<2>();
840 return getOpBoundaryRhsPipeline<3>();
844 boost::ptr_deque<PipelineManager::UserDataOperator> &
846 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
852 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
856 return getOpSkeletonLhsPipeline<1>();
858 return getOpSkeletonLhsPipeline<2>();
864 return getOpSkeletonLhsPipeline<3>();
868 boost::ptr_deque<PipelineManager::UserDataOperator> &
870 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
876 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
880 return getOpSkeletonRhsPipeline<1>();
882 return getOpSkeletonRhsPipeline<2>();
888 return getOpSkeletonRhsPipeline<3>();
892 boost::ptr_deque<PipelineManager::UserDataOperator> &
894 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
900 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
904 return getOpDomainExplicitRhsPipeline<1>();
906 return getOpDomainExplicitRhsPipeline<2>();
912 return getOpDomainExplicitRhsPipeline<3>();
916 boost::ptr_deque<PipelineManager::UserDataOperator> &
918 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
924 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
928 return getOpBoundaryExplicitRhsPipeline<1>();
930 return getOpBoundaryExplicitRhsPipeline<2>();
936 return getOpBoundaryExplicitRhsPipeline<3>();
940 boost::ptr_deque<PipelineManager::UserDataOperator> &
942 return boost::dynamic_pointer_cast<ForcesAndSourcesCore>(
948 inline boost::ptr_deque<PipelineManager::UserDataOperator> &
952 return getOpSkeletonExplicitRhsPipeline<1>();
954 return getOpSkeletonExplicitRhsPipeline<2>();
960 return getOpSkeletonExplicitRhsPipeline<3>();
982 #endif // __BASIC_HPP__