1
// $Id: LOCA_TurningPoint_MinimallyAugmented_Constraint.H,v 1.6 2007/06/21 16:22:52 rhoope Exp $
2
// $Source: /space/CVS/Trilinos/packages/nox/src-loca/src/LOCA_TurningPoint_MinimallyAugmented_Constraint.H,v $
5
5
// ************************************************************************
32
32
// Eric Phipps (etphipp@sandia.gov), Sandia National Laboratories.
33
33
// ************************************************************************
35
// $Source: /space/CVS/Trilinos/packages/nox/src-loca/src/LOCA_TurningPoint_MinimallyAugmented_Constraint.H,v $
37
// $Date: 2007/06/21 16:22:52 $
39
39
// ************************************************************************
119
122
* The class is intialized via the \c tpParams parameter list argument
120
123
* to the constructor. The parameters this class recognizes are:
125
* <li> "Symmetric Jacobian" -- [bool] (default: false) -
126
* Flag indicating whether Jacobian matrix \f$J\f$ is symmetric,
127
* in which case we force \f$a = b\f$ and therefore the second
128
* tranpose solve for \f$w\f$ is unnecessary
129
* <li> "Initial Null Vector Compuation" -- [string]
130
* (default: "User Provided") - Method to compute initial \f$a\f$
131
* and \f$b\f$ vectors. Valid choices are:
133
* <li> "User Provided" - Initial vectors are provided in the
134
* parameter list, in which case the following parameters
137
* <li> "Initial A Vector" --
138
* [Teuchos::RCP<NOX::Abstract::Vector>]
139
* (Must be supplied) -
140
* Vector storing initial value for \f$a\f$ vector
141
* <li> "Initial B Vector" --
142
* [Teuchos::RCP<NOX::Abstract::Vector>]
143
* (Must be supplied for nonsymmetric Jacobians) -
144
* Vector storing initial value for \f$b\f$ vector
146
* <li> "Solve df/dp" - Compute \f$a = J^{-T}df/dp\f$ and
147
* \f$b = J^{-1} df/dp\f$ where \f$p\f$ is the bifurcation
149
* <li> "Constant" - Entries of \f$a\f$ and \f$b\f$ are set to 1.0
151
* <li> "Null Vector Scaling" -- [string] (default: "Order N") -
152
* Method to scale \f$a\f$ and \f$b\f$. This determines the norm of
153
* these vectors and the scaling of \f$\sigma\f$. Valid choices are:
155
* <li> "None" -- Use initial scaling
156
* <li> "Order 1" -- Scale to unit norm
157
* <li> "Order N" -- Use vector length scaling
122
159
* <li> "Update Null Vectors Every Continuation Step" --
123
160
* [bool] (default: true) -
124
161
* Flag indicating whether to update \f$a\f$ and \f$b\f$ vectors via
127
164
* [bool] (default: false) -
128
165
* Flag indicating whether to update \f$a\f$ and \f$b\f$ vectors via
129
166
* \f$a = w\f$ and \f$b = v\f$ every nonlinear iteration
167
* <li> "Multiply Null Vectors by Mass Matrix" --
168
* [bool] (default: false) -
169
* Flag indicating whether to multiply \f$a\f$ and \f$b\f$ vectors by
170
* the mass matrix \f$M = \partial f/\partial\dot{x}\f$ at the strart
171
* of a turning point calculation, and each time \f$a\f$ and \f$b\f$
172
* are updated. This can improve the scaling of these vectors, and
173
* may orthogonalize them against structural null spaces (i.e.,
174
* pressure null space for incompressible Navier-Stokes).
132
177
class Constraint :
140
185
const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
141
186
const Teuchos::RCP<Teuchos::ParameterList>& tpParams,
142
187
const Teuchos::RCP<LOCA::TurningPoint::MinimallyAugmented::AbstractGroup>& g,
144
const NOX::Abstract::Vector& a,
145
const NOX::Abstract::Vector* b,
148
190
//! Copy constructor
306
//! Enumerated type determining type of scaling
307
enum NullVectorScaling {
308
NVS_None, //! No scaling
309
NVS_OrderOne, //! Scale to O(1)
310
NVS_OrderN //! Scale to O(N) when N is the vector length
313
//! Scale a & b vectors
314
virtual void scaleNullVectors(NOX::Abstract::Vector& a,
315
NOX::Abstract::Vector& b);
317
//! Get initial a & b vectors
318
virtual void getInitialVectors(NOX::Abstract::Vector& a,
319
NOX::Abstract::Vector& b);
256
323
//! Prohibit generation and use of operator=()
327
397
bool updateVectorsEveryIteration;
399
//! Null vector scaling method
400
NullVectorScaling nullVecScaling;
402
//! Multiply null vectors by mass matrix
405
//! Time dependent group interface for multiplying by mass matrix
406
Teuchos::RCP<LOCA::TimeDependent::AbstractGroup> tdGrp;
408
//! Temporary vector for mulplying null vectors by mass matrix
409
Teuchos::RCP<NOX::Abstract::Vector> tmp_mass;
329
411
}; // Class Constraint
331
413
} // namespace MinimallyAugmented