Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
PointMass.hpp
Go to the documentation of this file.
1// Vulcan Point Mass Gravity Model
2// Simple inverse-square gravitational acceleration
3#pragma once
4
5#include <janus/janus.hpp>
8
10
23template <typename Scalar>
24Vec3<Scalar> acceleration(const Vec3<Scalar> &r_ecef,
25 double mu = constants::earth::mu) {
26 const Scalar r_mag = janus::norm(r_ecef);
27 const Scalar r_cubed = r_mag * r_mag * r_mag;
28
29 // g = -μ/r³ · r
30 return -mu / r_cubed * r_ecef;
31}
32
43template <typename Scalar>
44Scalar potential(const Vec3<Scalar> &r_ecef, double mu = constants::earth::mu) {
45 const Scalar r_mag = janus::norm(r_ecef);
46 return -mu / r_mag;
47}
48
61template <typename Scalar>
62Scalar acceleration_magnitude(const Scalar &r_mag,
63 double mu = constants::earth::mu) {
64 return mu / (r_mag * r_mag);
65}
66
67} // namespace vulcan::gravity::point_mass
constexpr double mu
Gravitational parameter (GM) [m^3/s^2].
Definition Constants.hpp:13
Definition PointMass.hpp:9
Scalar potential(const Vec3< Scalar > &r_ecef, double mu=constants::earth::mu)
Point mass gravitational potential.
Definition PointMass.hpp:44
Vec3< Scalar > acceleration(const Vec3< Scalar > &r_ecef, double mu=constants::earth::mu)
Point mass gravitational acceleration.
Definition PointMass.hpp:24
Scalar acceleration_magnitude(const Scalar &r_mag, double mu=constants::earth::mu)
Gravitational acceleration magnitude at distance r.
Definition PointMass.hpp:62