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
00040
00041
00042 #ifndef LOCA_TURNINGPOINT_MOORESPENCE_PHIPPSBORDERING_H
00043 #define LOCA_TURNINGPOINT_MOORESPENCE_PHIPPSBORDERING_H
00044
00045 #include "LOCA_TurningPoint_MooreSpence_SolverStrategy.H"
00046 #include "NOX_Abstract_MultiVector.H"
00047
00048
00049 namespace LOCA {
00050 class GlobalData;
00051 namespace Parameter {
00052 class SublistParser;
00053 }
00054 namespace BorderedSolver {
00055 class AbstractStrategy;
00056 }
00057 }
00058
00059 namespace LOCA {
00060
00061 namespace TurningPoint {
00062
00063 namespace MooreSpence {
00064
00139 class PhippsBordering :
00140 public LOCA::TurningPoint::MooreSpence::SolverStrategy {
00141
00142 public:
00143
00145
00153 PhippsBordering(
00154 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00155 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00156 const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
00157
00159 virtual ~PhippsBordering();
00160
00162
00171 virtual void setBlocks(
00172 const Teuchos::RCP<LOCA::TurningPoint::MooreSpence::AbstractGroup>& group,
00173 const Teuchos::RCP<LOCA::TurningPoint::MooreSpence::ExtendedGroup>& tpGroup,
00174 const Teuchos::RCP<const NOX::Abstract::Vector>& nullVector,
00175 const Teuchos::RCP<const NOX::Abstract::Vector>& JnVector,
00176 const Teuchos::RCP<const NOX::Abstract::MultiVector>& dfdp,
00177 const Teuchos::RCP<const NOX::Abstract::MultiVector>& dJndp);
00178
00185 virtual NOX::Abstract::Group::ReturnType
00186 solve(
00187 Teuchos::ParameterList& params,
00188 const LOCA::TurningPoint::MooreSpence::ExtendedMultiVector& input,
00189 LOCA::TurningPoint::MooreSpence::ExtendedMultiVector& result) const;
00190
00191 protected:
00192
00194 NOX::Abstract::Group::ReturnType
00195 solveContiguous(
00196 Teuchos::ParameterList& params,
00197 const NOX::Abstract::MultiVector& input_x,
00198 const NOX::Abstract::MultiVector& input_null,
00199 const NOX::Abstract::MultiVector::DenseMatrix& input_param,
00200 NOX::Abstract::MultiVector& result_x,
00201 NOX::Abstract::MultiVector& result_null,
00202 NOX::Abstract::MultiVector::DenseMatrix& result_param) const;
00203
00204 private:
00205
00207 PhippsBordering(const PhippsBordering&);
00208
00210 PhippsBordering& operator = (const PhippsBordering&);
00211
00212 protected:
00213
00215 Teuchos::RCP<LOCA::GlobalData> globalData;
00216
00218 Teuchos::RCP<Teuchos::ParameterList> solverParams;
00219
00221 Teuchos::RCP<LOCA::TurningPoint::MooreSpence::AbstractGroup> group;
00222
00224 Teuchos::RCP<LOCA::TurningPoint::MooreSpence::ExtendedGroup> tpGroup;
00225
00227 Teuchos::RCP<const NOX::Abstract::Vector> nullVector;
00228
00230 Teuchos::RCP<const NOX::Abstract::Vector> JnVector;
00231
00233 Teuchos::RCP<const NOX::Abstract::MultiVector> dfdp;
00234
00236 Teuchos::RCP<const NOX::Abstract::MultiVector> dJndp;
00237
00239 Teuchos::RCP<LOCA::BorderedSolver::AbstractStrategy> borderedSolver;
00240
00242 Teuchos::RCP<NOX::Abstract::MultiVector> nullMultiVector;
00243
00245 Teuchos::RCP<NOX::Abstract::MultiVector> JnMultiVector;
00246
00248 double s;
00249
00250 };
00251
00252 }
00253
00254 }
00255
00256 }
00257
00258 #endif // LOCA_TURNINGPOINT_MOORESPENCE_PHIPPSBORDERING_H