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_MINIMALLYAUGMENTED_MODIFIEDCONSTRAINT_H
00043 #define LOCA_TURNINGPOINT_MINIMALLYAUGMENTED_MODIFIEDCONSTRAINT_H
00044
00045 #include "LOCA_TurningPoint_MinimallyAugmented_Constraint.H"
00046
00047 namespace LOCA {
00048
00049 namespace TurningPoint {
00050
00051 namespace MinimallyAugmented {
00052
00101 class ModifiedConstraint : public Constraint {
00102
00103 public:
00104
00106 ModifiedConstraint(
00107 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00108 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00109 const Teuchos::RCP<Teuchos::ParameterList>& tpParams,
00110 const Teuchos::RCP<LOCA::TurningPoint::MinimallyAugmented::AbstractGroup>& g,
00111 bool is_symmetric,
00112 const NOX::Abstract::Vector& a,
00113 const NOX::Abstract::Vector* b,
00114 int bif_param);
00115
00117 ModifiedConstraint(const ModifiedConstraint& source,
00118 NOX::CopyType type = NOX::DeepCopy);
00119
00121 virtual ~ModifiedConstraint();
00122
00128
00130 virtual void
00131 copy(const LOCA::MultiContinuation::ConstraintInterface& source);
00132
00134 virtual
00135 Teuchos::RCP<LOCA::MultiContinuation::ConstraintInterface>
00136 clone(NOX::CopyType type = NOX::DeepCopy) const;
00137
00139 virtual NOX::Abstract::Group::ReturnType
00140 computeConstraints();
00141
00143
00148 virtual void
00149 preProcessContinuationStep(
00150 LOCA::Abstract::Iterator::StepStatus stepStatus);
00151
00153
00158 virtual void
00159 postProcessContinuationStep(
00160 LOCA::Abstract::Iterator::StepStatus stepStatus);
00161
00163
00165 void setNewtonUpdates(const NOX::Abstract::Vector& dx, double dp,
00166 double step);
00167
00168 private:
00169
00171 ModifiedConstraint& operator=(const ModifiedConstraint& source);
00172
00173 protected:
00174
00176 Teuchos::RCP<NOX::Abstract::MultiVector> w_vector_update;
00177
00179 Teuchos::RCP<NOX::Abstract::MultiVector> v_vector_update;
00180
00182 Teuchos::RCP<NOX::Abstract::MultiVector> w_residual;
00183
00185 Teuchos::RCP<NOX::Abstract::MultiVector> v_residual;
00186
00188 Teuchos::RCP<NOX::Abstract::MultiVector> deltaX;
00189
00191 NOX::Abstract::MultiVector::DenseMatrix sigma1;
00192
00194 NOX::Abstract::MultiVector::DenseMatrix sigma2;
00195
00197 double deltaP;
00198
00203 bool isFirstSolve;
00204
00206 bool includeNewtonTerms;
00207
00208
00209 };
00210
00211 }
00212
00213 }
00214
00215 }
00216
00217 #endif // LOCA_TURNINGPOINT_MINIMALLYAUGMENTED_MODIFIEDCONSTRAINT_H