Source code for astrodynx.events.radius
from jax import numpy as jnp
from jaxtyping import ArrayLike, DTypeLike, PyTree, Array
from typing import Any
"""Events for propagating orbits."""
[docs]
def radius_islow(
t: DTypeLike, x: ArrayLike, args: PyTree[Any] = {"rmin": 0.0}, **kwargs: Any
) -> Array:
r"""Returns the difference between the radius and the minimum radius.
Args:
t: The time.
x: (N,) The state vector, where the first 3 elements are the position vector.
args: Static arguments, which must contain a key "rmin" with the minimum radius.
kwargs: Any additional arguments.
Returns:
The difference between the radius and the minimum radius.
The propagation will stop when this value is negative.
Notes:
The difference between the radius and the minimum radius is calculated using the following equation:
$$
r - r_{min}
$$
where $r$ is the radius and $r_{min}$ is the minimum radius.
This event can be used to terminate the propagation of an orbit when the radius falls below a certain threshold.
"""
rmin = args["rmin"]
return jnp.linalg.vector_norm(x[:3]) - rmin