MAST
MAST::ArclengthContinuationSolver Class Reference

constraint equation is defined along the path $ s $ as

\[ g(X, p, ds) = (x-x0) dx/ds + (p-p0) dp/ds - ds = 0, \]

where, $ X $ is the solution, $ p $ is the load parameter, and $ ds $ is the chord length. More...

#include <arclength_continuation_solver.h>

Inheritance diagram for MAST::ArclengthContinuationSolver:
Collaboration diagram for MAST::ArclengthContinuationSolver:

Public Member Functions

 ArclengthContinuationSolver ()
 
virtual ~ArclengthContinuationSolver ()
 
virtual void initialize (Real dp)
 sets the arc length using a nonlinear solution using a step dp. More...
 
- Public Member Functions inherited from MAST::ContinuationSolverBase
 ContinuationSolverBase ()
 
virtual ~ContinuationSolverBase ()
 
void set_assembly_and_load_parameter (MAST::AssemblyElemOperations &elem_ops, MAST::AssemblyBase &assembly, MAST::Parameter &p)
 sets the assembly object for this solver More...
 
void clear_assembly_and_load_parameters ()
 clears the assembly object from this solver More...
 
virtual void solve ()
 solves for the next load step More...
 

Protected Member Functions

virtual void _solve_NR_iterate (libMesh::NumericVector< Real > &X, MAST::Parameter &p)
 
virtual void _dXdp (const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::NumericVector< Real > &dfdp, libMesh::NumericVector< Real > &dXdp)
 
virtual Real _g (const libMesh::NumericVector< Real > &X, const MAST::Parameter &p)
 

\[ g(X, p, ds) = X_{scale} * (X-X0) (dX/ds)_{scaled} + p_{scale} * (p-p0) (dp/ds)_{scaled} - ds_{scaled} = 0 \]

More...
 
void _g (const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::NumericVector< Real > &dfdp, libMesh::NumericVector< Real > &dXdp, Real &g, Real &dgdp, libMesh::NumericVector< Real > *dgdX)
 

\begin{eqnarray*} g(X, p, ds) & = & X_{scale} * (X-X0) (dX/ds)_{scaled} + p_{scale} * (p-p0) (dp/ds)_{scaled} - ds_{scaled} = 0 \\ dg/dp & = & p_{scale} * (dp/ds)_{scaled} \\ dg/dX & = & X_{scale} * (dX/ds)_{scaled} \end{eqnarray*}

More...
 
virtual void _save_iteration_data ()
 method saves any data for possible resuse if the solution step is restarted. More...
 
virtual void _reset_iterations ()
 method resets any data if a soltion step is restarted. More...
 
- Protected Member Functions inherited from MAST::ContinuationSolverBase
void _solve (const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::NumericVector< Real > &f, bool update_f, libMesh::NumericVector< Real > &dfdp, bool update_dfdp, const libMesh::NumericVector< Real > &dgdX, const Real dgdp, const Real g, libMesh::NumericVector< Real > &dX, Real &dp)
 solves for the linear system of equation as a monolithic system

\[ \left[ \begin{array}{cc} df/dx & df/dp \\ dg/dx & dg/dp \end{array}\right] \left\{ \begin{array}{c} dx \\ dp \end{array} \right\} = - \left\{ \begin{array}{c} f \\ g \end{array} \right\} \]

dX and dp are returned from the solution More...

 
void _solve_schur_factorization (const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::SparseMatrix< Real > &jac, bool update_jac, libMesh::NumericVector< Real > &f, bool update_f, libMesh::NumericVector< Real > &dfdp, bool update_dfdp, libMesh::NumericVector< Real > &dXdp, bool update_dXdp, const libMesh::NumericVector< Real > &dgdX, const Real dgdp, const Real g, libMesh::NumericVector< Real > &dX, Real &dp)
 solves for the linear system of equation using Schur factorization. More...
 
Real _res_norm (const libMesh::NumericVector< Real > &X, const MAST::Parameter &p)
 

Protected Attributes

Real _dpds_sign
 
- Protected Attributes inherited from MAST::ContinuationSolverBase
bool _initialized
 
MAST::AssemblyElemOperations_elem_ops
 
MAST::AssemblyBase_assembly
 
MAST::Parameter_p
 
Real _p0
 
Real _X_scale
 
Real _p_scale
 
std::unique_ptr< libMesh::NumericVector< Real > > _X0
 

Additional Inherited Members

- Public Attributes inherited from MAST::ContinuationSolverBase
unsigned int max_it
 Maximum number of Newton-Raphson iterations for the solver. More...
 
Real abs_tol
 Absolute tolerance for the solver. More...
 
Real rel_tol
 Relative tolerance for the solver. More...
 
Real arc_length
 arc length that the solver is required to satisfy for the update. More...
 
Real min_step
 minimum step size allowed with adaptivity More...
 
Real max_step
 maximum step size allowed with adaptivity More...
 
Real step_size_change_exponent
 exponent used in step size update. More...
 
unsigned int step_desired_iters
 desired N-R iterations per load-step. More...
 
bool schur_factorization
 flag to use Schur-factorizaiton (default) or monolithic solver More...
 

Detailed Description

constraint equation is defined along the path $ s $ as

\[ g(X, p, ds) = (x-x0) dx/ds + (p-p0) dp/ds - ds = 0, \]

where, $ X $ is the solution, $ p $ is the load parameter, and $ ds $ is the chord length.

Definition at line 35 of file arclength_continuation_solver.h.

Constructor & Destructor Documentation

MAST::ArclengthContinuationSolver::ArclengthContinuationSolver ( )

Definition at line 31 of file arclength_continuation_solver.cpp.

MAST::ArclengthContinuationSolver::~ArclengthContinuationSolver ( )
virtual

Definition at line 38 of file arclength_continuation_solver.cpp.

Member Function Documentation

void MAST::ArclengthContinuationSolver::_dXdp ( const libMesh::NumericVector< Real > &  X,
const MAST::Parameter p,
libMesh::NumericVector< Real > &  dfdp,
libMesh::NumericVector< Real > &  dXdp 
)
protectedvirtual

Definition at line 125 of file arclength_continuation_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Real MAST::ArclengthContinuationSolver::_g ( const libMesh::NumericVector< Real > &  X,
const MAST::Parameter p 
)
protectedvirtual

\[ g(X, p, ds) = X_{scale} * (X-X0) (dX/ds)_{scaled} + p_{scale} * (p-p0) (dp/ds)_{scaled} - ds_{scaled} = 0 \]

Implements MAST::ContinuationSolverBase.

Definition at line 176 of file arclength_continuation_solver.cpp.

Here is the caller graph for this function:

void MAST::ArclengthContinuationSolver::_g ( const libMesh::NumericVector< Real > &  X,
const MAST::Parameter p,
libMesh::NumericVector< Real > &  dfdp,
libMesh::NumericVector< Real > &  dXdp,
Real g,
Real dgdp,
libMesh::NumericVector< Real > *  dgdX 
)
protected

\begin{eqnarray*} g(X, p, ds) & = & X_{scale} * (X-X0) (dX/ds)_{scaled} + p_{scale} * (p-p0) (dp/ds)_{scaled} - ds_{scaled} = 0 \\ dg/dp & = & p_{scale} * (dp/ds)_{scaled} \\ dg/dX & = & X_{scale} * (dX/ds)_{scaled} \end{eqnarray*}

Definition at line 194 of file arclength_continuation_solver.cpp.

Here is the call graph for this function:

virtual void MAST::ArclengthContinuationSolver::_reset_iterations ( )
inlineprotectedvirtual

method resets any data if a soltion step is restarted.

Nothing to be done here.

Implements MAST::ContinuationSolverBase.

Definition at line 101 of file arclength_continuation_solver.h.

virtual void MAST::ArclengthContinuationSolver::_save_iteration_data ( )
inlineprotectedvirtual

method saves any data for possible resuse if the solution step is restarted.

Nothing to be done for this solver.

Implements MAST::ContinuationSolverBase.

Definition at line 95 of file arclength_continuation_solver.h.

void MAST::ArclengthContinuationSolver::_solve_NR_iterate ( libMesh::NumericVector< Real > &  X,
MAST::Parameter p 
)
protectedvirtual

Implements MAST::ContinuationSolverBase.

Definition at line 79 of file arclength_continuation_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::ArclengthContinuationSolver::initialize ( Real  dp)
virtual

sets the arc length using a nonlinear solution using a step dp.

Implements MAST::ContinuationSolverBase.

Definition at line 44 of file arclength_continuation_solver.cpp.

Here is the call graph for this function:

Member Data Documentation

Real MAST::ArclengthContinuationSolver::_dpds_sign
protected

Definition at line 104 of file arclength_continuation_solver.h.


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