36 template <
typename NonLinearSolver,
typename PathFollowingType = ArcLength,
typename AdaptiveStepSizing>
37 consteval bool checkPathFollowingTemplates() {
38 return ((Concepts::PathFollowingStrategy<
39 PathFollowingType,
typename NonLinearSolver::NonLinearOperator,
40 SubsidiaryArgs>)and(Concepts::
41 AdaptiveStepSizingStrategy<
42 AdaptiveStepSizing, NonLinearSolverInformation, SubsidiaryArgs,
43 std::remove_cvref_t<typename NonLinearSolver::NonLinearOperator>>)
44 and (Concepts::NonLinearSolverCheckForPathFollowing<NonLinearSolver>));
78 template <
typename NonLinearSolver,
typename PathFollowingType = ArcLength,
79 typename AdaptiveStepSizing = AdaptiveStepSizing::NoOp>
81 Impl::checkPathFollowingTemplates<NonLinearSolver, PathFollowingType, AdaptiveStepSizing>())
class PathFollowing
85 constexpr auto name()
const {
return std::string(
"Path following with " + pathFollowingType_.name()); }
96 PathFollowing(
const std::shared_ptr<NonLinearSolver>& p_nonLinearSolver,
int steps,
double stepSize,
97 PathFollowingType p_pathFollowingType =
ArcLength{}, AdaptiveStepSizing p_adaptiveStepSizing = {})
98 : nonLinearSolver{p_nonLinearSolver},
101 pathFollowingType_{p_pathFollowingType},
102 adaptiveStepSizing{p_adaptiveStepSizing} {}
109 ControlInformation run();
112 std::shared_ptr<NonLinearSolver> nonLinearSolver;
115 PathFollowingType pathFollowingType_;
116 AdaptiveStepSizing adaptiveStepSizing;
Enums for observer messages.
Implementation of the observer design pattern.
Contains the AdaptiveStepSizing namespace with strategies for adaptive step sizing.
Implementation of the run function.
Defines structures and methods related to subsidiary functions for control routines.
Defines the ControlInformation structure for storing control results.
Definition: simpleassemblers.hh:21
The PathFollowing control routine for path-following analysis.
Definition: pathfollowing.hh:82
constexpr auto name() const
The name of the PathFollowing method.
Definition: pathfollowing.hh:85
PathFollowing(const std::shared_ptr< NonLinearSolver > &p_nonLinearSolver, int steps, double stepSize, PathFollowingType p_pathFollowingType=ArcLength{}, AdaptiveStepSizing p_adaptiveStepSizing={})
Constructor for PathFollowing.
Definition: pathfollowing.hh:96
Structure representing the subsidiary function for the standard arc-length method.
Definition: pathfollowingfunctions.hh:65