38 template <
typename NLS,
typename PF = ArcLength,
typename ASS>
39 consteval bool checkPathFollowingTemplates() {
40 return Concepts::PathFollowingStrategy<PF, typename NLS::NonLinearOperator, SubsidiaryArgs> and
41 Concepts::AdaptiveStepSizingStrategy<ASS, NonLinearSolverInformation, SubsidiaryArgs,
42 std::remove_cvref_t<typename NLS::NonLinearOperator>> and
43 Concepts::NonLinearSolverCheckForPathFollowing<NLS>;
77template <
typename NLS,
typename PF = ArcLength,
typename ASS = AdaptiveStepSizing::NoOp>
78requires(Impl::checkPathFollowingTemplates<NLS, PF, ASS>())
83 constexpr auto name()
const {
return std::string(
"Path following with " + pathFollowingType_.name()); }
94 ASS adaptiveStepSizing = {})
95 : nonLinearSolver_{nls},
98 pathFollowingType_{pathFollowingType},
99 adaptiveStepSizing_{adaptiveStepSizing} {}
106 ControlInformation run();
112 std::shared_ptr<NLS> nonLinearSolver_;
116 PF pathFollowingType_;
117 ASS adaptiveStepSizing_;
Contains the generic NonLinearOperatorFactory class.
Implementation of the run function.
Defines structures and methods related to subsidiary functions for control routines.
Contains the AdaptiveStepSizing namespace with strategies for adaptive step sizing.
Defines the ControlInformation structure for storing control results.
Enums for observer messages.
Implementation of the observer design pattern.
Contains the generic NonlinearSolverFactory class.
Definition: assemblermanipulatorbuildingblocks.hh:22
The PathFollowing control routine for path-following analysis.
Definition: pathfollowing.hh:80
NLS & nonlinearSolver()
Definition: pathfollowing.hh:109
constexpr auto name() const
The name of the PathFollowing method.
Definition: pathfollowing.hh:83
PathFollowing(const std::shared_ptr< NLS > &nls, int steps, double stepSize, PF pathFollowingType=ArcLength{}, ASS adaptiveStepSizing={})
Constructor for PathFollowing.
Definition: pathfollowing.hh:93
Structure representing the subsidiary function for the standard arc-length method.
Definition: pathfollowingfunctions.hh:67