39 double pathLimit = std::numeric_limits<double>::max();
60 template <
typename propagator_state_t,
typename stepper_t,
64 if (navigator.targetReached(state.navigation)) {
69 std::abs(
internalLimit) - std::abs(state.stepping.pathAccumulated);
70 double tolerance = state.options.targetTolerance;
71 bool limitReached = (std::abs(distance) < std::abs(tolerance));
74 <<
"Path limit reached at distance " << distance);
76 navigator.targetReached(state.navigation,
true);
82 <<
"Target stepSize (path limit) updated to "
83 << stepper.outputStepSize(state.stepping));
106 template <
typename propagator_state_t,
typename stepper_t,
107 typename navigator_t>
111 *navigator.targetSurface(state.navigation),
logger);
125 template <
typename propagator_state_t,
typename stepper_t,
126 typename navigator_t>
130 if (navigator.targetReached(state.navigation)) {
136 if ((navigator.currentSurface(state.navigation) &&
137 navigator.currentSurface(state.navigation) == &targetSurface)) {
139 <<
"Target surface reached.");
141 navigator.targetReached(state.navigation,
true);
148 const double tolerance = state.options.targetTolerance;
150 const auto sIntersection = targetSurface.
intersect(
151 state.geoContext, stepper.position(state.stepping),
152 state.options.direction * stepper.direction(state.stepping),
true,
154 const auto closest = sIntersection.closest();
157 if (
closest.status() == Intersection3D::Status::onSurface) {
160 <<
"Target surface reached at distance (tolerance) "
161 << distance <<
" (" << tolerance <<
")");
164 navigator.currentSurface(state.navigation, &targetSurface);
166 <<
"Current surface set to target surface "
167 << navigator.currentSurface(state.navigation)->geometryId());
170 navigator.targetReached(state.navigation,
true);
175 const double pLimit =
179 const double oLimit =
180 overstepLimit.value_or(stepper.overstepLimit(state.stepping));
182 for (
const auto& intersection : sIntersection.split()) {
186 stepper.setStepSize(state.stepping, intersection.pathLength(),
193 <<
"Target stepSize (surface) updated to "
194 << stepper.outputStepSize(state.stepping));
212 template <
typename propagator_state_t,
typename stepper_t,
213 typename navigator_t>
217 bool endOfWorld = navigator.endOfWorldReached(state.navigation);
218 navigator.targetReached(state.navigation, endOfWorld);