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_SALINGERBORDERING_H
00043 #define LOCA_PITCHFORK_MOORESPENCE_SALINGERBORDERING_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 }
00055
00056 namespace LOCA {
00057
00058 namespace Pitchfork {
00059
00060 namespace MooreSpence {
00061
00104 class SalingerBordering :
00105 public LOCA::Pitchfork::MooreSpence::SolverStrategy {
00106
00107 public:
00108
00110
00116 SalingerBordering(
00117 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00118 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00119 const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
00120
00122 virtual ~SalingerBordering();
00123
00125
00136 virtual void setBlocks(
00137 const Teuchos::RCP<LOCA::Pitchfork::MooreSpence::AbstractGroup>& group,
00138 const Teuchos::RCP<LOCA::Pitchfork::MooreSpence::ExtendedGroup>& pfGroup,
00139 const Teuchos::RCP<const NOX::Abstract::MultiVector>& asymMultiVector,
00140 const Teuchos::RCP<const NOX::Abstract::Vector>& nullVector,
00141 const Teuchos::RCP<const NOX::Abstract::Vector>& JnVector,
00142 const Teuchos::RCP<const NOX::Abstract::Vector>& dfdp,
00143 const Teuchos::RCP<const NOX::Abstract::Vector>& dJndp);
00144
00151 virtual NOX::Abstract::Group::ReturnType
00152 solve(
00153 Teuchos::ParameterList& params,
00154 const LOCA::Pitchfork::MooreSpence::ExtendedMultiVector& input,
00155 LOCA::Pitchfork::MooreSpence::ExtendedMultiVector& result) const;
00156
00157 protected:
00158
00160 NOX::Abstract::Group::ReturnType
00161 solveContiguous(
00162 Teuchos::ParameterList& params,
00163 const NOX::Abstract::MultiVector& input_x,
00164 const NOX::Abstract::MultiVector& input_null,
00165 const NOX::Abstract::MultiVector::DenseMatrix& input_slack,
00166 const NOX::Abstract::MultiVector::DenseMatrix& input_param,
00167 NOX::Abstract::MultiVector& result_x,
00168 NOX::Abstract::MultiVector& result_null,
00169 NOX::Abstract::MultiVector::DenseMatrix& result_slack,
00170 NOX::Abstract::MultiVector::DenseMatrix& result_param) const;
00171
00172 private:
00173
00175 SalingerBordering(const SalingerBordering&);
00176
00178 SalingerBordering& operator = (const SalingerBordering&);
00179
00180 protected:
00181
00183 Teuchos::RCP<LOCA::GlobalData> globalData;
00184
00186 Teuchos::RCP<Teuchos::ParameterList> solverParams;
00187
00189 Teuchos::RCP<LOCA::Pitchfork::MooreSpence::AbstractGroup> group;
00190
00192 Teuchos::RCP<LOCA::Pitchfork::MooreSpence::ExtendedGroup> pfGroup;
00193
00195 Teuchos::RCP<const NOX::Abstract::MultiVector> asymMultiVector;
00196
00198 Teuchos::RCP<const NOX::Abstract::Vector> asymVector;
00199
00201 Teuchos::RCP<const NOX::Abstract::Vector> nullVector;
00202
00204 Teuchos::RCP<const NOX::Abstract::Vector> JnVector;
00205
00207 Teuchos::RCP<const NOX::Abstract::Vector> dfdp;
00208
00210 Teuchos::RCP<const NOX::Abstract::Vector> dJndp;
00211
00212 };
00213
00214 }
00215
00216 }
00217
00218 }
00219
00220 #endif // LOCA_PITCHFORK_MOORESPENCE_SALINGERBORDERING_H