36 template <
typename NLS,
typename PF = ArcLength,
typename ASS>
37 consteval bool checkPathFollowingTemplates() {
38 return Concepts::PathFollowingStrategy<PF, typename NLS::NonLinearOperator, SubsidiaryArgs> and
39 Concepts::AdaptiveStepSizingStrategy<ASS, NonLinearSolverInformation, SubsidiaryArgs,
40 std::remove_cvref_t<typename NLS::NonLinearOperator>> and
41 Concepts::NonLinearSolverCheckForPathFollowing<NLS>;
75template <
typename NLS,
typename PF = ArcLength,
typename ASS = AdaptiveStepSizing::NoOp>
76requires(Impl::checkPathFollowingTemplates<NLS, PF, ASS>())
81 constexpr auto name()
const {
return std::string(
"Path following with " + pathFollowingType_.name()); }
92 PathFollowing(
const std::shared_ptr<NLS>& nonLinearSolver,
int steps,
double stepSize,
93 PF pathFollowingType =
ArcLength{}, ASS adaptiveStepSizing = {})
94 : nonLinearSolver_{nonLinearSolver},
97 pathFollowingType_{pathFollowingType},
98 adaptiveStepSizing_{adaptiveStepSizing} {}
105 ControlInformation run();
108 std::shared_ptr<NLS> nonLinearSolver_;
111 PF pathFollowingType_;
112 ASS adaptiveStepSizing_;
Implementation of the run function.
Defines structures and methods related to subsidiary functions for control routines.
Defines the ControlInformation structure for storing control results.
Contains the AdaptiveStepSizing namespace with strategies for adaptive step sizing.
Enums for observer messages.
Implementation of the observer design pattern.
Definition: simpleassemblers.hh:22
The PathFollowing control routine for path-following analysis.
Definition: pathfollowing.hh:78
constexpr auto name() const
The name of the PathFollowing method.
Definition: pathfollowing.hh:81
PathFollowing(const std::shared_ptr< NLS > &nonLinearSolver, int steps, double stepSize, PF pathFollowingType=ArcLength{}, ASS adaptiveStepSizing={})
Constructor for PathFollowing.
Definition: pathfollowing.hh:92
Structure representing the subsidiary function for the standard arc-length method.
Definition: pathfollowingfunctions.hh:67