12 template <
typename _Type>
17 template <
typename _Type>
19 return ARCSTEP_MULTIPLIER;
22 template <
typename _Type>
27 template <
typename _Type>
32 template <
typename _Type>
34 return DESIRED_ARC_PROPORTION;
37 template <
typename _Type>
41 template <
typename _Type>
46 X_DERIV_S = (x - LAST_X) / DS;
47 PARAM_DERIV_S = (*p_PARAM - LAST_PARAM) / DS;
49 LAST_PARAM = *p_PARAM;
52 template <
typename _Type>
56 const double& max_length) {
63 LAST_PARAM = *p_PARAM;
80 template <
typename _Type>
82 return THETA * (x - LAST_X).two_norm() / x.
size()
83 + (1.0 - THETA) * std::pow(std::abs(*p_PARAM - LAST_PARAM), 2)
87 template <
typename _Type>
90 double Delta_p2 = std::pow(std::abs(*p_PARAM - LAST_PARAM), 2);
91 double Delta_x2 = (x - LAST_X).two_norm() / x.
size();
92 THETA = Delta_p2 * (DESIRED_ARC_PROPORTION - 1.0)
93 / (Delta_p2 * (DESIRED_ARC_PROPORTION - 1.0)
94 - DESIRED_ARC_PROPORTION * Delta_x2);
A base class for arclength-capable solvers.
void update_theta(const DenseVector< _Type > &x)
Automatically update the Keller THETA such that the proportion of the arclength obtained from the par...
virtual void solve(DenseVector< _Type > &x)=0
Compute a solution for that state & parameter variables that are an arc-length 'ds' from the current ...
void update(const DenseVector< _Type > &x)
A method called by arclength_solve and init_arc which stores the current converged state and paramete...
void init_arc(DenseVector< _Type > x, _Type *p, const double &length, const double &max_length)
Initialise the class ready for arc-length continuation.
bool & rescale_theta()
Handle to the RESCALE_THETA flag.
double & ds()
Return a handle to the arclength step.
double & theta()
Set the arclength theta parameter.
double arclength_residual(const DenseVector< _Type > &x) const
The extra constraint that is to be used to replace the unknown arc length.
double & arcstep_multiplier()
Used to set the multiplication constant used when increasing or decreasing the arclength step.
double & desired_arc_proportion()
Handle to the desired proportion of the parameter to be used in the arc length solver.
An DenseVector class – a dense vector object.
std::size_t size() const
A pass-thru definition to get the size of the vector.
A collection of OO numerical routines aimed at simple (typical) applied problems in continuum mechani...