#include <LOCA_MultiContinuation_ArcLengthGroup.H>
Public Member Functions | |
ArcLengthGroup (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &continuationParams, const Teuchos::RCP< LOCA::MultiContinuation::AbstractGroup > &grp, const Teuchos::RCP< LOCA::MultiPredictor::AbstractStrategy > &pred, const vector< int > ¶mIDs) | |
Constructor. | |
ArcLengthGroup (const ArcLengthGroup &source, NOX::CopyType type=NOX::DeepCopy) | |
Copy constructor. | |
virtual | ~ArcLengthGroup () |
Destructor. | |
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. | |
Implementation of LOCA::MultiContinuation::AbstractStrategy virtual methods | |
virtual void | copy (const NOX::Abstract::Group &source) |
Copy. | |
virtual void | scaleTangent () |
Scales predictor. | |
virtual double | computeScaledDotProduct (const NOX::Abstract::Vector &x, const NOX::Abstract::Vector &y) const |
Computes a scaled dot product between two continuation vectors. | |
virtual void | recalculateScaleFactor (double dpds, double thetaOld, double &thetaNew) |
Calculates scale factors. | |
Protected Attributes | |
vector< double > | theta |
Stores scaling factor for each arclength equation. | |
bool | doArcLengthScaling |
Flag indicating whether to do arc-length scaling. | |
double | gGoal |
Goal value of dp/ds squared. | |
double | gMax |
Minimum value for dp/ds for which rescaling is applied. | |
double | thetaMin |
Maximum value of scale factor. | |
bool | isFirstRescale |
Flag indicating whether this is the first rescaling of predictor. | |
Private Member Functions | |
ArcLengthGroup & | operator= (const ArcLengthGroup &source) |
Prohibit generation and use of operator=(). |
Pseudo arc-length continuation corresponds to a continuation equation with
given by
where ,
are the solution and parameter components of the predictor direction
respectively. This corresponds geometrically to constraining the nonlinear solver steps used in calculating
to be orthogonal to the predictor direction
. The arclength constraint
is represented by a LOCA::MultiContinuation::ArcLengthConstraint object.
This class also reimplements the scaleTangent() and computeScaledDotProduct() methods to implement a scaling method that tries to ensure the solution and parameter contributions to the arc-length equation are of the same order. Specifically, the arc-length equation is replaced by
where is chosen so that
is equal to a target value, 0.5 by default. Parameters for this scaling method are passed through the
continuationParams
argument to the constructor and are:
Definition at line 95 of file LOCA_MultiContinuation_ArcLengthGroup.H.
LOCA::MultiContinuation::ArcLengthGroup::ArcLengthGroup | ( | const Teuchos::RCP< LOCA::GlobalData > & | global_data, | |
const Teuchos::RCP< LOCA::Parameter::SublistParser > & | topParams, | |||
const Teuchos::RCP< Teuchos::ParameterList > & | continuationParams, | |||
const Teuchos::RCP< LOCA::MultiContinuation::AbstractGroup > & | grp, | |||
const Teuchos::RCP< LOCA::MultiPredictor::AbstractStrategy > & | pred, | |||
const vector< int > & | paramIDs | |||
) |
Constructor.
global_data | [in] Global data object | |
topParams | [in] Parsed top-level parameter list. | |
continuationParams | [in] Continuation parameters as described above. | |
grp | [in] Group representing ![]() | |
pred | [in] Predictor strategy. | |
paramIDs | [in] Parameter IDs of continuation parameters. |
Definition at line 51 of file LOCA_MultiContinuation_ArcLengthGroup.C.
References doArcLengthScaling, gGoal, LOCA::MultiContinuation::ExtendedGroup::globalData, gMax, LOCA::MultiContinuation::ExtendedGroup::numParams, LOCA::MultiContinuation::ExtendedGroup::setConstraints(), theta, and thetaMin.
LOCA::MultiContinuation::ArcLengthGroup::ArcLengthGroup | ( | const ArcLengthGroup & | source, | |
NOX::CopyType | type = NOX::DeepCopy | |||
) |
Copy constructor.
Definition at line 89 of file LOCA_MultiContinuation_ArcLengthGroup.C.
References LOCA::MultiContinuation::ExtendedGroup::conGroup.
LOCA::MultiContinuation::ArcLengthGroup::~ArcLengthGroup | ( | ) | [virtual] |
NOX::Abstract::Group & LOCA::MultiContinuation::ArcLengthGroup::operator= | ( | const NOX::Abstract::Group & | source | ) | [virtual] |
Assignment operator.
Reimplemented from LOCA::MultiContinuation::ExtendedGroup.
Definition at line 109 of file LOCA_MultiContinuation_ArcLengthGroup.C.
References copy().
Teuchos::RCP< NOX::Abstract::Group > LOCA::MultiContinuation::ArcLengthGroup::clone | ( | NOX::CopyType | type = NOX::DeepCopy |
) | const [virtual] |
Clone function.
Reimplemented from LOCA::MultiContinuation::ExtendedGroup.
Definition at line 117 of file LOCA_MultiContinuation_ArcLengthGroup.C.
void LOCA::MultiContinuation::ArcLengthGroup::copy | ( | const NOX::Abstract::Group & | source | ) | [virtual] |
Copy.
Reimplemented from LOCA::MultiContinuation::ExtendedGroup.
Definition at line 124 of file LOCA_MultiContinuation_ArcLengthGroup.C.
References doArcLengthScaling, gGoal, gMax, isFirstRescale, theta, and thetaMin.
Referenced by operator=().
void LOCA::MultiContinuation::ArcLengthGroup::scaleTangent | ( | ) | [virtual] |
Scales predictor.
Reimplemented from LOCA::MultiContinuation::ExtendedGroup.
Definition at line 143 of file LOCA_MultiContinuation_ArcLengthGroup.C.
References doArcLengthScaling, LOCA::MultiContinuation::ExtendedGroup::getContinuationParameterName(), LOCA::Extended::Vector::getScalars(), LOCA::MultiContinuation::ExtendedVector::getXVec(), LOCA::MultiContinuation::ExtendedGroup::globalData, LOCA::MultiContinuation::ExtendedGroup::grpPtr, LOCA::Extended::Vector::innerProduct(), isFirstRescale, LOCA::MultiContinuation::ExtendedGroup::numParams, LOCA::MultiContinuation::ExtendedGroup::predictor, recalculateScaleFactor(), LOCA::Extended::Vector::scale(), LOCA::MultiContinuation::ExtendedGroup::scaledTangentMultiVec, NOX::Utils::StepperDetails, LOCA::MultiContinuation::ExtendedGroup::stepSizeScaleFactor, LOCA::MultiContinuation::ExtendedGroup::tangentMultiVec, and theta.
double LOCA::MultiContinuation::ArcLengthGroup::computeScaledDotProduct | ( | const NOX::Abstract::Vector & | x, | |
const NOX::Abstract::Vector & | y | |||
) | const [virtual] |
Computes a scaled dot product between two continuation vectors.
Reimplemented from LOCA::MultiContinuation::ExtendedGroup.
Definition at line 228 of file LOCA_MultiContinuation_ArcLengthGroup.C.
References LOCA::Extended::Vector::getScalar(), LOCA::MultiContinuation::ExtendedVector::getXVec(), LOCA::MultiContinuation::ExtendedGroup::grpPtr, LOCA::MultiContinuation::ExtendedGroup::numParams, and theta.
void LOCA::MultiContinuation::ArcLengthGroup::recalculateScaleFactor | ( | double | dpds, | |
double | thetaOld, | |||
double & | thetaNew | |||
) | [virtual] |
Calculates scale factors.
Definition at line 245 of file LOCA_MultiContinuation_ArcLengthGroup.C.
References gGoal, gMax, and thetaMin.
Referenced by scaleTangent().
ArcLengthGroup& LOCA::MultiContinuation::ArcLengthGroup::operator= | ( | const ArcLengthGroup & | source | ) | [private] |
Prohibit generation and use of operator=().
vector<double> LOCA::MultiContinuation::ArcLengthGroup::theta [protected] |
Stores scaling factor for each arclength equation.
Definition at line 170 of file LOCA_MultiContinuation_ArcLengthGroup.H.
Referenced by ArcLengthGroup(), computeScaledDotProduct(), copy(), and scaleTangent().
bool LOCA::MultiContinuation::ArcLengthGroup::doArcLengthScaling [protected] |
Flag indicating whether to do arc-length scaling.
Definition at line 173 of file LOCA_MultiContinuation_ArcLengthGroup.H.
Referenced by ArcLengthGroup(), copy(), and scaleTangent().
double LOCA::MultiContinuation::ArcLengthGroup::gGoal [protected] |
Goal value of dp/ds squared.
Definition at line 176 of file LOCA_MultiContinuation_ArcLengthGroup.H.
Referenced by ArcLengthGroup(), copy(), and recalculateScaleFactor().
double LOCA::MultiContinuation::ArcLengthGroup::gMax [protected] |
Minimum value for dp/ds for which rescaling is applied.
Definition at line 179 of file LOCA_MultiContinuation_ArcLengthGroup.H.
Referenced by ArcLengthGroup(), copy(), and recalculateScaleFactor().
double LOCA::MultiContinuation::ArcLengthGroup::thetaMin [protected] |
Maximum value of scale factor.
Definition at line 182 of file LOCA_MultiContinuation_ArcLengthGroup.H.
Referenced by ArcLengthGroup(), copy(), and recalculateScaleFactor().
bool LOCA::MultiContinuation::ArcLengthGroup::isFirstRescale [protected] |
Flag indicating whether this is the first rescaling of predictor.
Definition at line 185 of file LOCA_MultiContinuation_ArcLengthGroup.H.
Referenced by copy(), and scaleTangent().