|
NOX
Development
|
Extended group representing a constrained nonlinear problem. More...
#include <LOCA_MultiContinuation_ConstrainedGroup.H>
Public Member Functions | |
| ConstrainedGroup (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &constraintParams, const Teuchos::RCP< LOCA::MultiContinuation::AbstractGroup > &grp, const Teuchos::RCP< LOCA::MultiContinuation::ConstraintInterface > &constraints, const std::vector< int > ¶mIDs, bool skip_dfdp=false) | |
| Constructor. | |
| ConstrainedGroup (const ConstrainedGroup &source, NOX::CopyType type=NOX::DeepCopy) | |
| Copy constructor. | |
| virtual | ~ConstrainedGroup () |
| Destructor. | |
| virtual void | setConstraintParameter (int i, double val) |
Set constraint parameter i to value val. | |
| virtual double | getConstraintParameter (int i) const |
Get constraint parameter i. | |
| virtual const std::vector< int > & | getConstraintParamIDs () const |
| Get constraint parameter IDs. | |
|
virtual Teuchos::RCP < LOCA::MultiContinuation::AbstractGroup > | getGroup () |
| Get group. | |
|
virtual Teuchos::RCP < LOCA::MultiContinuation::ConstraintInterface > | getConstraints () |
| Get constraints. | |
Implementation of NOX::Abstract::Group virtual methods | |
| virtual NOX::Abstract::Group & | operator= (const NOX::Abstract::Group &source) |
| Assignment operator. | |
|
virtual Teuchos::RCP < NOX::Abstract::Group > | clone (NOX::CopyType type=NOX::DeepCopy) const |
| Clone function. | |
| virtual void | setX (const NOX::Abstract::Vector &y) |
| Set the solution vector to y. | |
| virtual void | computeX (const NOX::Abstract::Group &g, const NOX::Abstract::Vector &d, double step) |
| Compute and return solution vector, x, where this.x = grp.x + step * d. | |
|
virtual NOX::Abstract::Group::ReturnType | computeF () |
| Compute extended continuation equations. | |
|
virtual NOX::Abstract::Group::ReturnType | computeJacobian () |
| Compute extended continuation jacobian. | |
|
virtual NOX::Abstract::Group::ReturnType | computeGradient () |
| Gradient is not defined for this system. | |
|
virtual NOX::Abstract::Group::ReturnType | computeNewton (Teuchos::ParameterList ¶ms) |
| Compute Newton direction for extended continuation system. | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobian (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const |
| Applies Jacobian for extended system. | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobianTranspose (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const |
| Jacobian transpose not defined for this system. | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobianInverse (Teuchos::ParameterList ¶ms, const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const |
| Applies Jacobian inverse for extended system. | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobianMultiVector (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const |
| Applies Jacobian for extended system. | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobianTransposeMultiVector (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const |
| Jacobian transpose not defined for this system. | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobianInverseMultiVector (Teuchos::ParameterList ¶ms, const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const |
| Applies Jacobian inverse for extended system. | |
| virtual bool | isF () const |
Return true if extended residual is valid. | |
| virtual bool | isJacobian () const |
Return true if the extended Jacobian is valid. | |
| virtual bool | isGradient () const |
| Always returns false. | |
| virtual bool | isNewton () const |
Return true if the extended Newton direction is valid. | |
|
virtual const NOX::Abstract::Vector & | getX () const |
| Return extended solution vector. | |
|
virtual const NOX::Abstract::Vector & | getF () const |
| Return extended residual. | |
| virtual double | getNormF () const |
| Return 2-norm of extended residual. | |
|
virtual const NOX::Abstract::Vector & | getGradient () const |
| Gradient is never valid. | |
|
virtual const NOX::Abstract::Vector & | getNewton () const |
| Return extended Newton direction. | |
|
virtual Teuchos::RCP< const NOX::Abstract::Vector > | getXPtr () const |
| Return RCP to extended solution vector. | |
|
virtual Teuchos::RCP< const NOX::Abstract::Vector > | getFPtr () const |
| Return RCP to extended residual. | |
|
virtual Teuchos::RCP< const NOX::Abstract::Vector > | getGradientPtr () const |
| Gradient is never valid. | |
|
virtual Teuchos::RCP< const NOX::Abstract::Vector > | getNewtonPtr () const |
| Return RCP to extended Newton direction. | |
| virtual double | getNormNewtonSolveResidual () const |
| Returns 2-norm of extended Newton solve residual. | |
Implementation of LOCA::Extended::MultiAbstractGroup | |
virtual methods | |
|
virtual Teuchos::RCP< const LOCA::MultiContinuation::AbstractGroup > | getUnderlyingGroup () const |
| Return underlying group. | |
|
virtual Teuchos::RCP < LOCA::MultiContinuation::AbstractGroup > | getUnderlyingGroup () |
| Return underlying group. | |
Implementation of LOCA::MultiContinuation::AbstractGroup | |
virtual methods | |
| virtual void | copy (const NOX::Abstract::Group &source) |
| Assignment operator. | |
| virtual void | setParamsMulti (const std::vector< int > ¶mIDs, const NOX::Abstract::MultiVector::DenseMatrix &vals) |
| Set parameters indexed by (integer) paramIDs. | |
| virtual void | setParams (const ParameterVector &p) |
| Set the parameter vector in the group to p (pVector = p). | |
| virtual void | setParam (int paramID, double val) |
| Set parameter indexed by (integer) paramID. | |
| virtual void | setParam (std::string paramID, double val) |
| Set parameter indexed by (std::string) paramID. | |
| virtual const ParameterVector & | getParams () const |
| Return a const reference to the ParameterVector owned by the group. | |
| virtual double | getParam (int paramID) const |
| Return copy of parameter indexed by (integer) paramID. | |
| virtual double | getParam (std::string paramID) const |
| Return copy of parameter indexed by (std::string) paramID. | |
| virtual NOX::Abstract::Group::ReturnType | computeDfDpMulti (const std::vector< int > ¶mIDs, NOX::Abstract::MultiVector &dfdp, bool isValidF) |
| virtual void | preProcessContinuationStep (LOCA::Abstract::Iterator::StepStatus stepStatus) |
| Perform any preprocessing before a continuation step starts. | |
| virtual void | postProcessContinuationStep (LOCA::Abstract::Iterator::StepStatus stepStatus) |
| Perform any postprocessing after a continuation step finishes. | |
| virtual void | projectToDraw (const NOX::Abstract::Vector &x, double *px) const |
| Projects solution to a few scalars for multiparameter continuation. | |
| virtual int | projectToDrawDimension () const |
| Returns the dimension of the project to draw array. | |
| virtual double | computeScaledDotProduct (const NOX::Abstract::Vector &a, const NOX::Abstract::Vector &b) const |
| Compute a scaled dot product. | |
| virtual void | printSolution (const double conParam) const |
| Function to print out solution and parameter after successful step. | |
| virtual void | printSolution (const NOX::Abstract::Vector &x, const double conParam) const |
| Function to print out a vector and parameter after successful step. | |
| virtual void | scaleVector (NOX::Abstract::Vector &x) const |
| Scales a vector using scaling vector. | |
Implementation of | |
LOCA::BorderedSystem::AbstractGroup virtual methods | |
| virtual int | getBorderedWidth () const |
| Return the total width of the bordered rows/columns. | |
|
virtual Teuchos::RCP< const NOX::Abstract::Group > | getUnborderedGroup () const |
| Get bottom-level unbordered group. | |
| virtual bool | isCombinedAZero () const |
| Indicates whether combined A block is zero. | |
| virtual bool | isCombinedBZero () const |
| Indicates whether combined B block is zero. | |
| virtual bool | isCombinedCZero () const |
| Indicates whether combined C block is zero. | |
| virtual void | extractSolutionComponent (const NOX::Abstract::MultiVector &v, NOX::Abstract::MultiVector &v_x) const |
| virtual void | extractParameterComponent (bool use_transpose, const NOX::Abstract::MultiVector &v, NOX::Abstract::MultiVector::DenseMatrix &v_p) const |
| virtual void | loadNestedComponents (const NOX::Abstract::MultiVector &v_x, const NOX::Abstract::MultiVector::DenseMatrix &v_p, NOX::Abstract::MultiVector &v) const |
| virtual void | fillA (NOX::Abstract::MultiVector &A) const |
| Fill the combined A block as described above. | |
| virtual void | fillB (NOX::Abstract::MultiVector &B) const |
| Fill the combined B block as described above. | |
| virtual void | fillC (NOX::Abstract::MultiVector::DenseMatrix &C) const |
| Fill the combined C block as described above. | |
Implementation of LOCA::Abstract::TransposeSolveGroup | |
virtual methods | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobianTransposeInverse (Teuchos::ParameterList ¶ms, const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const |
| Solve Jacobian-tranpose system. | |
|
virtual NOX::Abstract::Group::ReturnType | applyJacobianTransposeInverseMultiVector (Teuchos::ParameterList ¶ms, const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const |
| Solve Jacobian-tranpose system with multiple right-hand sides. | |
Protected Member Functions | |
| virtual void | resetIsValid () |
| Resets all isValid flags to false. | |
| virtual void | setupViews () |
| Sets up multivector views. | |
Protected Attributes | |
| Teuchos::RCP< LOCA::GlobalData > | globalData |
| Pointer LOCA global data object. | |
|
Teuchos::RCP < LOCA::Parameter::SublistParser > | parsedParams |
| Parsed top-level parameters. | |
|
Teuchos::RCP < Teuchos::ParameterList > | constraintParams |
| Constraint parameter list. | |
|
Teuchos::RCP < LOCA::MultiContinuation::AbstractGroup > | grpPtr |
Pointer to base group that defines . | |
|
Teuchos::RCP < LOCA::BorderedSystem::AbstractGroup > | bordered_grp |
| Pointer to base group as a bordered group. | |
|
Teuchos::RCP < LOCA::MultiContinuation::ConstraintInterface > | constraintsPtr |
| Pointer to constraint object. | |
| int | numParams |
| Number of parameters. | |
| LOCA::MultiContinuation::ExtendedMultiVector | xMultiVec |
| Stores the extended solution vector. | |
| LOCA::MultiContinuation::ExtendedMultiVector | fMultiVec |
| Stores the extended residual vector and df/dp. | |
| LOCA::MultiContinuation::ExtendedMultiVector | newtonMultiVec |
| Stores the extended Newton vector. | |
| LOCA::MultiContinuation::ExtendedMultiVector | gradientMultiVec |
| Stores the extended gradient vector. | |
|
Teuchos::RCP < LOCA::MultiContinuation::ExtendedVector > | xVec |
| Stores view of first column of xMultiVec. | |
|
Teuchos::RCP < LOCA::MultiContinuation::ExtendedVector > | fVec |
| Stores view of first column of fMultiVec. | |
|
Teuchos::RCP < LOCA::MultiContinuation::ExtendedMultiVector > | ffMultiVec |
| Stores view of first column of fMultiVec as a multivec. | |
|
Teuchos::RCP < LOCA::MultiContinuation::ExtendedMultiVector > | dfdpMultiVec |
| Stores view of df/dp columns of fMultiVec. | |
|
Teuchos::RCP < LOCA::MultiContinuation::ExtendedVector > | newtonVec |
| Stores view of first column of newtonMultiVec. | |
|
Teuchos::RCP < LOCA::MultiContinuation::ExtendedVector > | gradientVec |
| Stores view of first column of gradientMultiVec. | |
|
Teuchos::RCP < LOCA::BorderedSolver::JacobianOperator > | jacOp |
|
Teuchos::RCP < LOCA::BorderedSolver::AbstractStrategy > | borderedSolver |
| Stores bordered solver strategy. | |
| std::vector< int > | index_f |
| Stores indices for getting f part of fMultiVec. | |
| std::vector< int > | index_dfdp |
| Stores indices for getting df/dp part of fMultiVec. | |
| std::vector< int > | constraintParamIDs |
| integer id of constraint parameters | |
| bool | isValidF |
| Is residual vector valid. | |
| bool | isValidJacobian |
| Is Jacobian matrix valid. | |
| bool | isValidNewton |
| Is Newton vector valid. | |
| bool | isValidGradient |
| Is Gradient vector valid. | |
| bool | isBordered |
| Flag that indicates whether underlying group is a bordered group. | |
| bool | skipDfDp |
| Flag indicating whether to skip df/dp computations. | |
Extended group representing a constrained nonlinear problem.
This class represents a constrained system of nonlinear equations:
where
is the solution vector,
is a set of constraint parameters,
is represented by some LOCA::MultiContinuation::AbstractGroup, and
is a constraint represented by a LOCA::MultiContinuation::ConstraintInterface object. Newton steps for this system are computed via some LOCA::BorderedSolver::AbstractStrategy which is specified via the constraintParams argument to the constructor.
| LOCA::MultiContinuation::ConstrainedGroup::ConstrainedGroup | ( | const Teuchos::RCP< LOCA::GlobalData > & | global_data, |
| const Teuchos::RCP< LOCA::Parameter::SublistParser > & | topParams, | ||
| const Teuchos::RCP< Teuchos::ParameterList > & | constraintParams, | ||
| const Teuchos::RCP< LOCA::MultiContinuation::AbstractGroup > & | grp, | ||
| const Teuchos::RCP< LOCA::MultiContinuation::ConstraintInterface > & | constraints, | ||
| const std::vector< int > & | paramIDs, | ||
| bool | skip_dfdp = false |
||
| ) |
Constructor.
| global_data | [in] Global data object |
| topParams | [in] Parsed top-level parameter list. |
| constraintParams | [in] Parameter list determining the bordered solver method. |
| grp | [in] Group representing . |
| constraints | [in] Constraint object representing . |
| paramIDs | [in] Parameter IDs of the constraint parameters |
| skip_dfdp | [in] Whether to skip computation of df/dp when computing extended Jacobian. |
References bordered_grp, borderedSolver, constraintParamIDs, constraintParams, constraintsPtr, LOCA::Factory::createBorderedSolverStrategy(), LOCA::MultiContinuation::AbstractGroup::getParam(), LOCA::Extended::Vector::getScalar(), LOCA::Extended::Vector::getScalars(), LOCA::MultiContinuation::ExtendedVector::getXVec(), globalData, grpPtr, isBordered, LOCA::GlobalData::locaFactory, numParams, parsedParams, Teuchos::rcp(), LOCA::MultiContinuation::ConstraintInterface::setParams(), setupViews(), LOCA::MultiContinuation::ConstraintInterface::setX(), and xVec.
| NOX::Abstract::Group::ReturnType LOCA::MultiContinuation::ConstrainedGroup::computeDfDpMulti | ( | const std::vector< int > & | paramIDs, |
| NOX::Abstract::MultiVector & | dfdp, | ||
| bool | isValidF | ||
| ) | [virtual] |
Compute
for each parameter
indexed by paramIDs. The first column of dfdp holds F, which is valid if isValidF is true. Otherwise F must be computed.
Implements LOCA::MultiContinuation::AbstractGroup.
References LOCA::Extended::MultiVector::getScalars(), LOCA::MultiContinuation::ExtendedMultiVector::getXMultiVec(), and NOX::Abstract::Group::Ok.
| void LOCA::MultiContinuation::ConstrainedGroup::extractParameterComponent | ( | bool | use_transpose, |
| const NOX::Abstract::MultiVector & | v, | ||
| NOX::Abstract::MultiVector::DenseMatrix & | v_p | ||
| ) | const [virtual] |
Given the vector v, extract the parameter components of all of the nested subvectors in v down to the solution component for the unbordered group.
Implements LOCA::BorderedSystem::AbstractGroup.
References Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::assign(), LOCA::Extended::MultiVector::getScalars(), LOCA::MultiContinuation::ExtendedMultiVector::getXMultiVec(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::numCols(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::numRows(), and Teuchos::View.
| void LOCA::MultiContinuation::ConstrainedGroup::extractSolutionComponent | ( | const NOX::Abstract::MultiVector & | v, |
| NOX::Abstract::MultiVector & | v_x | ||
| ) | const [virtual] |
Given the vector v, extract the underlying solution component corresponding to the unbordered group.
Implements LOCA::BorderedSystem::AbstractGroup.
References LOCA::MultiContinuation::ExtendedMultiVector::getXMultiVec().
| void LOCA::MultiContinuation::ConstrainedGroup::loadNestedComponents | ( | const NOX::Abstract::MultiVector & | v_x, |
| const NOX::Abstract::MultiVector::DenseMatrix & | v_p, | ||
| NOX::Abstract::MultiVector & | v | ||
| ) | const [virtual] |
Given the solution component v_x and combined parameter components v_p, distribute these components through the nested sub-vectors in v.
Implements LOCA::BorderedSystem::AbstractGroup.
References Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::assign(), LOCA::Extended::MultiVector::getScalars(), LOCA::MultiContinuation::ExtendedMultiVector::getXMultiVec(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::numCols(), and Teuchos::View.
| void LOCA::MultiContinuation::ConstrainedGroup::postProcessContinuationStep | ( | LOCA::Abstract::Iterator::StepStatus | stepStatus | ) | [virtual] |
Perform any postprocessing after a continuation step finishes.
The stepStatus argument indicates whether the step was successful.
Reimplemented from LOCA::MultiContinuation::AbstractGroup.
| void LOCA::MultiContinuation::ConstrainedGroup::preProcessContinuationStep | ( | LOCA::Abstract::Iterator::StepStatus | stepStatus | ) | [virtual] |
Perform any preprocessing before a continuation step starts.
The stepStatus argument indicates whether the previous step was successful.
Reimplemented from LOCA::MultiContinuation::AbstractGroup.
1.7.6.1