Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
MinPrecProblem_decl.hpp
1#ifndef MinPrecProblem_DECL_hpp
2#define MinPrecProblem_DECL_hpp
3
4#include "feddlib/core/General/DefaultTypeDefs.hpp"
5#include "feddlib/problems/abstract/Problem.hpp"
6
18
19
20namespace FEDD {
21template <class SC , class LO , class GO , class NO >
22class Problem;
23template <class SC , class LO , class GO , class NO >
24class Preconditioner;
25
26template <class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
27class MinPrecProblem : public Problem<SC,LO,GO,NO> {
28
29public:
30 typedef Problem<SC,LO,GO,NO> Problem_Type;
31 typedef typename Problem_Type::Domain_Type Domain_Type;
32 typedef typename Problem_Type::DomainConstPtr_Type DomainConstPtr_Type;
33 typedef typename Problem_Type::DomainConstPtr_vec_Type DomainConstPtr_vec_Type;
34
35 typedef typename Problem_Type::BlockMatrix_Type BlockMatrix_Type;
36 typedef typename Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type;
37
38 typedef typename Problem_Type::Comm_Type Comm_Type;
39 typedef typename Problem_Type::CommConstPtr_Type CommConstPtr_Type;
40
41 typedef typename Problem_Type::PreconditionerPtr_Type PreconditionerPtr_Type;
42
43 typedef typename Problem_Type::LinSolverBuilderPtr_Type LinSolverBuilderPtr_Type;
44
45 // hasSourceTerm and boolLinearProblem should be irrelevant, as this class should be only used when constructing a precondtioner
46 MinPrecProblem(ParameterListPtr_Type pl, CommConstPtr_Type comm);
47
48 MinPrecProblem(ParameterListPtr_Type pl, CommConstPtr_Type comm, PreconditionerPtr_Type prec);
49
50 ~MinPrecProblem();
51
52 void initializeSystem(BlockMatrixPtr_Type system);
53
54 void initializeDomains(DomainConstPtr_vec_Type& domainPtr_vec);
55
56 void initializeLinSolverBuilder(LinSolverBuilderPtr_Type linearSolverBuilder);
57
58 virtual void info(){
59 if ( this->comm_->getRank() )
60 std::cout<< "Minimal implementation of Problem. This object has sufficient information for the setup of FROSch." << std::endl;
61 }
62
63 virtual void assemble( std::string type="" )const {}
64
65 virtual void getValuesOfInterest( vec_dbl_Type& values ){}
66
67 virtual void computeValuesOfInterestAndExport() {}
68
69// virtual void assembleExternal( std::string type ){}
70
71protected:
72
73private:
74
75};
76}
77#endif
Definition Preconditioner_decl.hpp:35
Definition Problem_decl.hpp:42
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement_decl.hpp:36