|
constexpr auto | name () const |
| The name of the PathFollowing method. More...
|
|
| PathFollowing (const std::shared_ptr< NLS > &nls, int steps, double stepSize, PF pathFollowingType=ArcLength{}, ASS adaptiveStepSizing={}) |
| Constructor for PathFollowing. More...
|
|
ControlInformation | run () |
| Executes the PathFollowing routine. More...
|
|
NLS & | nonlinearSolver () |
|
void | subscribe (ControlMessages message, std::shared_ptr< IObserver< ControlMessages > > observer) |
| Subscribe an observer to receive notifications for a specific message type. More...
|
|
void | subscribeAll (std::shared_ptr< IObserver< ControlMessages > > observer) |
| Subscribe an observer to receive notifications for all message types. More...
|
|
void | subscribeAll (std::initializer_list< std::shared_ptr< IObserver< ControlMessages > > > observers) |
| Subscribe multiple observers to receive notifications for all message types. More...
|
|
void | unSubscribe (ControlMessages message, std::shared_ptr< IObserver< ControlMessages > > observer) |
| Unsubscribe an observer from receiving notifications for a specific message type. More...
|
|
void | unSubscribeAll (std::shared_ptr< IObserver< ControlMessages > > observer) |
| Unsubscribe an observer from receiving notifications for all message types. More...
|
|
void | notify (ControlMessages message) |
| Notify observers about a specific message type. More...
|
|
void | notify (ControlMessages message, ScalarType val) |
| Notify observers about a specific message type with a floating-point value. More...
|
|
void | notify (ControlMessages message, int val) |
| Notify observers about a specific message type with an integer value. More...
|
|
void | notify (ControlMessages message, const std::string &val) |
| Notify observers about a specific message type with a string value. More...
|
|
void | notify (ControlMessages message, int val1, double val2) |
| Notify observers about a specific message type with an integer and a double value. More...
|
|
void | notify (ControlMessages message, int val1, const std::string &val2) |
| Notify observers about a specific message type with an integer value and a string value. More...
|
|
void | notify (ControlMessages message, Eigen::VectorX< ScalarType > vec) |
| Notify observers about a specific message type with an Eigen::VectorX. More...
|
|
void | notify (MT message) |
|
void | notify (MT message, ScalarType val) |
|
void | notify (MT message, int val) |
|
void | notify (MT message, const std::string &val) |
|
void | notify (MT message, int val1, double val2) |
|
void | notify (MT message, int val1, const std::string &val2) |
|
void | notify (MT message, Eigen::VectorX< ScalarType > vec) |
|
template<typename NLS, typename PF = ArcLength, typename ASS = AdaptiveStepSizing::NoOp>
requires (Impl::checkPathFollowingTemplates<NLS, PF, ASS>())
class Ikarus::PathFollowing< NLS, PF, ASS >
This class represents the PathFollowing control routine, which utilizes a nonlinear solver, such as Newton's method with scalar subsidiary function, which has to be fulfilled for solving the system along a predefined path.
Consider a non-linear system of equations
\[\mathbf{R}: \require{cases}\begin{cases}\mathbb{R}^n \times \mathbb{R} &\rightarrow \mathbb{R}^n
\\ (\mathbf{D},\lambda)
&\mapsto \mathbf{R}(\mathbf{D},\lambda) \end{cases}.\]
Then in each step \(k+1\) of the path following algorithm, the following problem is solved
\[ \begin{align}
\mathbf{R}(\mathbf{D}_k+ \mathrm{D}\mathbf{D}, \lambda_k+ \mathrm{D} \lambda) &= \mathbf{0} \\
f(\mathrm{D}\mathbf{D}, \mathrm{D} \lambda) &= 0 \end{align} \]
where \(\mathrm{D}\mathbf{D}\) is the increment of the solution vector and \(\mathrm{D} \lambda\) is the load factor increment. The subsidiary function \(f\) is provided by the user and needs to fulfill the concept Concepts::PathFollowingStrategy. This subsidiary function makes the given problem well-posed.
Currently the following subsidiary functions are implemented LoadControlSubsidiaryFunction, ArcLength and DisplacementControl
- Template Parameters
-
NLS | Type of the nonlinear solver used in the control routine. |
PF | Type of the path-following strategy. |
ASS | Type of the adaptive step sizing strategy. |