Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
NonLinearSolver_decl.hpp
1#ifndef NONLINEARSOLVER_DECL_hpp
2#define NONLINEARSOLVER_DECL_hpp
3#include "feddlib/problems/problems_config.h"
4#include "feddlib/problems/abstract/NonLinearProblem.hpp"
5#include "feddlib/problems/abstract/TimeProblem.hpp"
6#ifdef FEDD_HAVE_NOX
7#include <NOX.H>
8#include <NOX_Thyra.H>
9#include <NOX_SolverStats.hpp>
10#endif
19
20namespace FEDD{
21template <class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
22class NonLinearSolver {
23
24public:
25
26 typedef Problem<SC,LO,NO,GO> Problem_Type;
27 typedef Teuchos::RCP<Problem_Type> ProblemPtr_Type;
28
29 typedef TimeProblem<SC,LO,GO,NO> TimeProblem_Type;
30 typedef NonLinearProblem<SC,LO,GO,NO> NonLinearProblem_Type;
31
32 typedef typename Problem_Type::Matrix_Type Matrix_Type;
33 typedef typename Problem_Type::MatrixPtr_Type MatrixPtr_Type;
34
35 typedef Teuchos::RCP<ExporterTxt> ExporterTxtPtr_Type;
36
37 NonLinearSolver();
38
39 NonLinearSolver(std::string type);
40
41 ~NonLinearSolver();
42
43 void solve(NonLinearProblem_Type& problem);
44
45 void solve(TimeProblem_Type& problem, double time=0., vec_dbl_ptr_Type valuesForExport = Teuchos::null );
46
47 int getNonLinIts() {return nonLinearIts_;};
48private:
49#ifdef FEDD_HAVE_NOX
50 void solveNOX(NonLinearProblem_Type& problem);
51
52 void solveNOX( TimeProblem_Type& problem, vec_dbl_ptr_Type valuesForExport = Teuchos::null );
53
54#endif
55 void solveFixedPoint(NonLinearProblem_Type& problem);
56
57 void solveNewton(NonLinearProblem_Type& problem);
58
59 void solveFixedPoint(TimeProblem_Type& problem, double time);
60
61 void solveNewton(TimeProblem_Type& problem, double time, vec_dbl_ptr_Type valuesForExport = Teuchos::null );
62
63 void solveExtrapolation(TimeProblem_Type& problem, double time);
64
65 std::string type_;
66
67 int nonLinearIts_ =0;
68
69
70};
71}
72#endif
Definition NonLinearProblem_decl.hpp:24
Definition Problem_decl.hpp:38
Definition TimeProblem_decl.hpp:33
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5