00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef NOX_MULTIPHYSICS_SOLVER_LINESEARCHBASED_H
00040 #define NOX_MULTIPHYSICS_SOLVER_LINESEARCHBASED_H
00041
00042 #include "NOX_Multiphysics_Solver_Generic.H"
00043 #include "NOX_Multiphysics_Group.H"
00044 #include "NOX_Solver_PrePostOperator.H"
00045 #include "NOX_Utils.H"
00046 #include "Teuchos_RCP.hpp"
00047
00048
00049 namespace NOX {
00050 class GlobalData;
00051 namespace Direction {
00052 class Generic;
00053 }
00054 }
00055
00056 namespace NOX {
00057 namespace Multiphysics {
00058 namespace Solver {
00059
00112 class FixedPointBased : public NOX::Multiphysics::Solver::Generic
00113 {
00114
00115 public:
00116
00117 enum SOLVE_TYPE { JACOBI,
00118 SEIDEL };
00119
00121
00124 FixedPointBased(const Teuchos::RCP< vector<Teuchos::RCP<NOX::Solver::Generic> > >& solvers,
00125 const Teuchos::RCP<NOX::Multiphysics::DataExchange::Interface>& interface,
00126 const Teuchos::RCP<NOX::StatusTest::Generic>& tests,
00127 const Teuchos::RCP<Teuchos::ParameterList>& params);
00128
00130 virtual ~FixedPointBased();
00131
00132 virtual bool reset(const Teuchos::RCP<vector<Teuchos::RCP<NOX::Solver::Generic> > >& solvers,
00133 const Teuchos::RCP<NOX::Multiphysics::DataExchange::Interface>& interface,
00134 const Teuchos::RCP<NOX::StatusTest::Generic>& tests,
00135 const Teuchos::RCP<Teuchos::ParameterList>& params);
00136 virtual void reset(const NOX::Abstract::Vector& initialGuess,
00137 const Teuchos::RCP<NOX::StatusTest::Generic>& tests);
00138 virtual void reset(const NOX::Abstract::Vector& initialGuess);
00139 virtual NOX::StatusTest::StatusType getStatus();
00140 virtual NOX::StatusTest::StatusType step();
00141 virtual NOX::StatusTest::StatusType solve();
00142 virtual const NOX::Abstract::Group& getSolutionGroup() const;
00143 virtual const NOX::Abstract::Group& getPreviousSolutionGroup() const;
00144 virtual int getNumIterations() const;
00145 virtual const Teuchos::ParameterList& getList() const;
00146
00147 protected:
00148
00150 virtual void init();
00151
00153 virtual void printUpdate();
00154
00155 protected:
00156
00158 SOLVE_TYPE solveType;
00159
00161 Teuchos::RCP<vector<Teuchos::RCP<NOX::Solver::Generic> > > solversVecPtr;
00162
00164 Teuchos::RCP<NOX::Multiphysics::DataExchange::Interface> dataExInterface;
00165
00167 Teuchos::RCP<NOX::GlobalData> globalDataPtr;
00168
00170 Teuchos::RCP<NOX::Utils> utilsPtr;
00171
00173 Teuchos::RCP<NOX::Multiphysics::Group> solnPtr;
00174
00176 Teuchos::RCP<NOX::StatusTest::Generic> testPtr;
00177
00179 Teuchos::RCP<Teuchos::ParameterList> paramsPtr;
00180
00182 int nIter;
00183
00185 NOX::StatusTest::StatusType status;
00186
00188 NOX::StatusTest::CheckType checkType;
00189
00191 NOX::Solver::PrePostOperator prePostOperator;
00192
00193 };
00194 }
00195 }
00196 }
00197
00198 #endif
00199