LOCA::MultiContinuation::ArcLengthGroup Class Reference

Specialization of LOCA::MultiContinuation::ExtendedGroup to pseudo-arclength continuation. More...

#include <LOCA_MultiContinuation_ArcLengthGroup.H>

Inheritance diagram for LOCA::MultiContinuation::ArcLengthGroup:

Inheritance graph
[legend]
Collaboration diagram for LOCA::MultiContinuation::ArcLengthGroup:

Collaboration graph
[legend]

List of all members.

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 > &paramIDs)
 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::Groupoperator= (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

ArcLengthGroupoperator= (const ArcLengthGroup &source)
 Prohibit generation and use of operator=().


Detailed Description

Specialization of LOCA::MultiContinuation::ExtendedGroup to pseudo-arclength continuation.

Pseudo arc-length continuation corresponds to a continuation equation $g(x,p,x_0,p_0,x^\ast,p^\ast,v,\Delta s)=0$ with $g$ given by

\[ g(x,p,x_0,p_0,x^\ast,p^\ast,v,\Delta s)= (x-x^\ast)^Tv_x + (p-p^\ast) v_p - \Delta s \]

where $v_x$, $v_p$ are the solution and parameter components of the predictor direction $v$ respectively. This corresponds geometrically to constraining the nonlinear solver steps used in calculating $F(x,p)=0$ to be orthogonal to the predictor direction $v$. The arclength constraint $g$ 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

\[ (x-x^\ast)^Tv_x + \theta^2(p-p^\ast) v_p - \Delta s = 0 \]

where $\theta$ is chosen so that $\theta^2 v_p$ 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:

Whether this scaling method is used is determined by the "Enable Arc Length Scaling", and the initial value for $\theta$ is given by "Initial Scale Factor". A new value of $\theta$ is chosen only if $\theta^2 v_p$ is larger than the value given by "Max Arc Length Parameter Contribution" and "Min Scale Factor" provides a minimum value for $\theta$.

Definition at line 95 of file LOCA_MultiContinuation_ArcLengthGroup.H.


Constructor & Destructor Documentation

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.

Parameters:
global_data [in] Global data object
topParams [in] Parsed top-level parameter list.
continuationParams [in] Continuation parameters as described above.
grp [in] Group representing $F$.
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]

Destructor.

Definition at line 104 of file LOCA_MultiContinuation_ArcLengthGroup.C.


Member Function Documentation

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]

double LOCA::MultiContinuation::ArcLengthGroup::computeScaledDotProduct ( const NOX::Abstract::Vector x,
const NOX::Abstract::Vector y 
) const [virtual]

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=().


Member Data Documentation

Stores scaling factor for each arclength equation.

Definition at line 170 of file LOCA_MultiContinuation_ArcLengthGroup.H.

Referenced by ArcLengthGroup(), computeScaledDotProduct(), copy(), and scaleTangent().

Flag indicating whether to do arc-length scaling.

Definition at line 173 of file LOCA_MultiContinuation_ArcLengthGroup.H.

Referenced by ArcLengthGroup(), copy(), and scaleTangent().

Goal value of dp/ds squared.

Definition at line 176 of file LOCA_MultiContinuation_ArcLengthGroup.H.

Referenced by ArcLengthGroup(), copy(), and recalculateScaleFactor().

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().

Maximum value of scale factor.

Definition at line 182 of file LOCA_MultiContinuation_ArcLengthGroup.H.

Referenced by ArcLengthGroup(), copy(), and recalculateScaleFactor().

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().


The documentation for this class was generated from the following files:

Generated on Wed Oct 21 14:28:36 2009 for Nonlinear Solver Project by  doxygen 1.5.9