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_MINIMALLYAUGMENTED_CONSTRAINT_H
00043 #define LOCA_PITCHFORK_MINIMALLYAUGMENTED_CONSTRAINT_H
00044
00045 #include "LOCA_TurningPoint_MinimallyAugmented_Constraint.H"
00046
00047
00048 namespace LOCA {
00049 namespace Pitchfork {
00050 namespace MinimallyAugmented {
00051 class AbstractGroup;
00052 }
00053 }
00054 }
00055
00056 namespace LOCA {
00057
00058 namespace Pitchfork {
00059
00060 namespace MinimallyAugmented {
00061
00116 class Constraint :
00117 public LOCA::TurningPoint::MinimallyAugmented::Constraint {
00118
00119 public:
00120
00122 Constraint(
00123 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00124 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00125 const Teuchos::RCP<Teuchos::ParameterList>& pfParams,
00126 const Teuchos::RCP<LOCA::Pitchfork::MinimallyAugmented::AbstractGroup>& g,
00127 bool is_symmetric,
00128 const NOX::Abstract::Vector& a,
00129 const NOX::Abstract::Vector* b,
00130 const Teuchos::RCP<const NOX::Abstract::Vector>& psi,
00131 int bif_param);
00132
00134 Constraint(const Constraint& source,
00135 NOX::CopyType type = NOX::DeepCopy);
00136
00138 virtual ~Constraint();
00139
00141
00146 virtual void setGroup(const Teuchos::RCP<LOCA::TurningPoint::MinimallyAugmented::AbstractGroup>& g);
00147
00153
00155 virtual void
00156 copy(const LOCA::MultiContinuation::ConstraintInterface& source);
00157
00159 virtual
00160 Teuchos::RCP<LOCA::MultiContinuation::ConstraintInterface>
00161 clone(NOX::CopyType type = NOX::DeepCopy) const;
00162
00164 virtual int numConstraints() const;
00165
00167 virtual NOX::Abstract::Group::ReturnType
00168 computeConstraints();
00169
00171 virtual NOX::Abstract::Group::ReturnType
00172 computeDX();
00173
00175
00180 virtual NOX::Abstract::Group::ReturnType
00181 computeDP(const vector<int>& paramIDs,
00182 NOX::Abstract::MultiVector::DenseMatrix& dgdp,
00183 bool isValidG);
00184
00186 virtual const NOX::Abstract::MultiVector::DenseMatrix&
00187 getConstraints() const;
00188
00190 virtual const NOX::Abstract::MultiVector*
00191 getDX() const;
00192
00194
00195 private:
00196
00198 Constraint& operator=(const Constraint& source);
00199
00200 protected:
00201
00203 Teuchos::RCP<LOCA::Pitchfork::MinimallyAugmented::AbstractGroup> pf_grp;
00204
00206 Teuchos::RCP<const NOX::Abstract::Vector> psi_vector;
00207
00209 Teuchos::RCP<NOX::Abstract::MultiVector> dgdx;
00210
00212 NOX::Abstract::MultiVector::DenseMatrix pf_constraints;
00213
00214 };
00215
00216 }
00217
00218 }
00219
00220 }
00221
00222 #endif // LOCA_PITCHFORK_MINIMALLYAUGMENTED_CONSTRAINT_H