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;
25template <class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
26class MinPrecProblem : public Problem<SC,LO,GO,NO> {
27
28public:
29 typedef Problem<SC,LO,GO,NO> Problem_Type;
30 typedef typename Problem_Type::Domain_Type Domain_Type;
31 typedef typename Problem_Type::DomainConstPtr_Type DomainConstPtr_Type;
32 typedef typename Problem_Type::DomainConstPtr_vec_Type DomainConstPtr_vec_Type;
33
34 typedef typename Problem_Type::BlockMatrix_Type BlockMatrix_Type;
35 typedef typename Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type;
36
37 typedef typename Problem_Type::Comm_Type Comm_Type;
38 typedef typename Problem_Type::CommConstPtr_Type CommConstPtr_Type;
39
40 typedef typename Problem_Type::LinSolverBuilderPtr_Type LinSolverBuilderPtr_Type;
41
42 // hasSourceTerm and boolLinearProblem should be irrelevant, as this class should be only used when constructing a precondtioner
43 MinPrecProblem(ParameterListPtr_Type pl, CommConstPtr_Type comm);
44
45 ~MinPrecProblem();
46
47 void initializeSystem(BlockMatrixPtr_Type system);
48
49 void initializeDomains(DomainConstPtr_vec_Type& domainPtr_vec);
50
51 void initializeLinSolverBuilder(LinSolverBuilderPtr_Type linearSolverBuilder);
52
53 virtual void info(){
54 if ( this->comm_->getRank() )
55 std::cout<< "Minimal implementation of Problem. This object has sufficient information for the setup of FROSch." << std::endl;
56 };
57
58 virtual void assemble( std::string type="" )const {};
59
60 virtual void getValuesOfInterest( vec_dbl_Type& values ){};
61
62 virtual void computeValuesOfInterestAndExport() {};
63
64// virtual void assembleExternal( std::string type ){};
65
66protected:
67
68private:
69
70};
71}
72#endif
Definition Preconditioner_decl.hpp:41
Definition Problem_decl.hpp:38
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5