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_PITCHFORK_MOORESPENCE_PHIPPSBORDERING_H
00043 #define LOCA_PITCHFORK_MOORESPENCE_PHIPPSBORDERING_H
00044
00045 #include "LOCA_Pitchfork_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 Pitchfork {
00062
00063 namespace MooreSpence {
00064
00145 class PhippsBordering :
00146 public LOCA::Pitchfork::MooreSpence::SolverStrategy {
00147
00148 public:
00149
00151
00159 PhippsBordering(
00160 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00161 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00162 const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
00163
00165 virtual ~PhippsBordering();
00166
00168
00179 virtual void setBlocks(
00180 const Teuchos::RCP<LOCA::Pitchfork::MooreSpence::AbstractGroup>& group,
00181 const Teuchos::RCP<LOCA::Pitchfork::MooreSpence::ExtendedGroup>& pfGroup,
00182 const Teuchos::RCP<const NOX::Abstract::MultiVector>& asymMultiVector,
00183 const Teuchos::RCP<const NOX::Abstract::Vector>& nullVector,
00184 const Teuchos::RCP<const NOX::Abstract::Vector>& JnVector,
00185 const Teuchos::RCP<const NOX::Abstract::Vector>& dfdp,
00186 const Teuchos::RCP<const NOX::Abstract::Vector>& dJndp);
00187
00194 virtual NOX::Abstract::Group::ReturnType
00195 solve(
00196 Teuchos::ParameterList& params,
00197 const LOCA::Pitchfork::MooreSpence::ExtendedMultiVector& input,
00198 LOCA::Pitchfork::MooreSpence::ExtendedMultiVector& result) const;
00199
00200 protected:
00201
00203 NOX::Abstract::Group::ReturnType
00204 solveContiguous(
00205 Teuchos::ParameterList& params,
00206 const NOX::Abstract::MultiVector& input_x,
00207 const NOX::Abstract::MultiVector& input_null,
00208 const NOX::Abstract::MultiVector::DenseMatrix& input_slack,
00209 const NOX::Abstract::MultiVector::DenseMatrix& input_param,
00210 NOX::Abstract::MultiVector& result_x,
00211 NOX::Abstract::MultiVector& result_null,
00212 NOX::Abstract::MultiVector::DenseMatrix& result_slack,
00213 NOX::Abstract::MultiVector::DenseMatrix& result_param) const;
00214
00215 private:
00216
00218 PhippsBordering(const PhippsBordering&);
00219
00221 PhippsBordering& operator = (const PhippsBordering&);
00222
00223 protected:
00224
00226 Teuchos::RCP<LOCA::GlobalData> globalData;
00227
00229 Teuchos::RCP<Teuchos::ParameterList> solverParams;
00230
00232 Teuchos::RCP<LOCA::Pitchfork::MooreSpence::AbstractGroup> group;
00233
00235 Teuchos::RCP<LOCA::Pitchfork::MooreSpence::ExtendedGroup> pfGroup;
00236
00238 Teuchos::RCP<const NOX::Abstract::MultiVector> asymMultiVector;
00239
00241 Teuchos::RCP<const NOX::Abstract::Vector> asymVector;
00242
00244 Teuchos::RCP<const NOX::Abstract::Vector> nullVector;
00245
00247 Teuchos::RCP<const NOX::Abstract::Vector> JnVector;
00248
00250 Teuchos::RCP<const NOX::Abstract::Vector> dfdp;
00251
00253 Teuchos::RCP<const NOX::Abstract::Vector> dJndp;
00254
00256 Teuchos::RCP<LOCA::BorderedSolver::AbstractStrategy> borderedSolver;
00257
00259 Teuchos::RCP<NOX::Abstract::MultiVector> nullMultiVector;
00260
00262 Teuchos::RCP<NOX::Abstract::MultiVector> JnMultiVector;
00263
00265 double sigma;
00266
00267 };
00268
00269 }
00270
00271 }
00272
00273 }
00274
00275 #endif // LOCA_PITCHFORK_MOORESPENCE_PHIPPSBORDERING_H