Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
NonLinTPM_decl.hpp
1#ifndef NonLinTPM_decl_hpp
2#define NonLinTPM_decl_hpp
3#include "feddlib/problems/abstract/Problem.hpp"
12namespace FEDD {
13template <class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
14class NonLinTPM : public NonLinearProblem<SC,LO,GO,NO> {
15
16public:
17
18
19 typedef Problem<SC,LO,GO,NO> Problem_Type;
20 typedef typename Problem_Type::Matrix_Type Matrix_Type;
21 typedef typename Problem_Type::MatrixPtr_Type MatrixPtr_Type;
22 typedef typename Problem_Type::Map_Type Map_Type;
23 typedef typename Problem_Type::MapPtr_Type MapPtr_Type;
24 typedef typename Problem_Type::MapConstPtr_Type MapConstPtr_Type;
25
26 typedef typename Problem_Type::BlockMatrix_Type BlockMatrix_Type;
27 typedef typename Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type;
28
29 typedef typename Problem_Type::MultiVector_Type MultiVector_Type;
30 typedef typename Problem_Type::MultiVectorPtr_Type MultiVectorPtr_Type;
31 typedef typename Problem_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type;
32
33 typedef typename Problem_Type::BlockMultiVectorPtr_Type BlockMultiVectorPtr_Type;
34
35 typedef typename Problem_Type::DomainConstPtr_Type DomainConstPtr_Type;
36 typedef typename Problem_Type::CommConstPtr_Type CommConstPtr_Type;
37
38 typedef NonLinearProblem<SC,LO,GO,NO> NonLinearProblem_Type;
39 typedef typename NonLinearProblem_Type::BlockMultiVectorPtrArray_Type BlockMultiVectorPtrArray_Type;
40
41 NonLinTPM( const DomainConstPtr_Type &domainVelocity, std::string FETypeVelocity, const DomainConstPtr_Type &domainPressure, std::string FETypePressure, ParameterListPtr_Type parameterList );
42
43 ~NonLinTPM();
44
45 virtual void info();
46
47 virtual void assemble(std::string type = "") const;
48
49 virtual void reAssemble( BlockMultiVectorPtr_Type previousSolution ) const;
50
51 virtual void reAssemble( MatrixPtr_Type& massmatrix, std::string type ) const;// not needed
52
53 virtual void reAssembleExtrapolation(BlockMultiVectorPtrArray_Type previousSolutions);// not needed
54
55 virtual void calculateNonLinResidualVec(std::string type, double time=0.) const;
56
57 virtual void getValuesOfInterest( vec_dbl_Type& values ){};
58
59 virtual void computeValuesOfInterestAndExport() {};
60
61// Teuchos::RCP< Thyra::LinearOpBase<SC> > create_W_op() const;// not needed
62
63// Teuchos::RCP<Thyra::PreconditionerBase<SC> > create_W_prec() const;// not needed
64
65// virtual void assembleExternal( std::string type ) {};
66
67 Teuchos::RCP< Thyra::LinearOpBase<SC> > create_W_op() const;
68
69 Teuchos::RCP<Thyra::PreconditionerBase<SC> > create_W_prec() const;
70
71private:
72
73 virtual void evalModelImpl(
74 const ::Thyra::ModelEvaluatorBase::InArgs<SC> &inArgs,
75 const ::Thyra::ModelEvaluatorBase::OutArgs<SC> &outArgs
76 ) const;
77
78 mutable MultiVectorPtr_Type u_repNewton_;
79 mutable MultiVectorPtr_Type p_repNewton_;
80 mutable MultiVectorPtr_Type u_repTime_;
81 mutable MultiVectorPtr_Type p_repTime_;
82 /*####################*/
83
84};
85}
86#endif
Definition Problem_decl.hpp:38
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5