use astrodyn_gravity::{GravityControl, GravityGradient};
use crate::recipes::{constants, earth, epoch, orbital_elements, vehicle};
use crate::vehicle_builder::VehicleBuilder;
use crate::SimulationBuilder;
use astrodyn_quantities::frame::{Earth, PlanetInertial};
use astrodyn_quantities::frame_descriptor::FrameUid;
pub fn geo() -> SimulationBuilder {
let mut sb = SimulationBuilder::new(epoch::j2000(), 300.0);
let _ = sb.add_source("Earth", earth::point_mass());
let vehicle = VehicleBuilder::new()
.vehicle_named("geo-sat")
.from_orbital_elements(orbital_elements::geostationary(), constants::mu_ggm05c())
.three_dof_point_mass(vehicle::unit_sphere_mass())
.rk4()
.gravity(GravityControl::new_spherical(
FrameUid::of::<PlanetInertial<Earth>>(),
GravityGradient::Skip,
))
.build();
sb.add_body(vehicle);
sb
}