void Ephemeris<Frame>::ComputeMasslessBodiesGravitationalAccelerations( Instant const& t, std::vector<Position<Frame>> const& positions, not_null<std::vector<Vector<Acceleration, Frame>>*> const accelerations, not_null<std::vector<typename ContinuousTrajectory<Frame>::Hint>*> const hints) const { CHECK_EQ(positions.size(), accelerations->size()); accelerations->assign(accelerations->size(), Vector<Acceleration, Frame>()); for (std::size_t b1 = 0; b1 < number_of_oblate_bodies_; ++b1) { MassiveBody const& body1 = *bodies_[b1]; ComputeGravitationalAccelerationByMassiveBodyOnMasslessBodies< /*body1_is_oblate=*/true>( t, body1, b1, positions, accelerations, &(*hints)[b1]); } for (std::size_t b1 = number_of_oblate_bodies_; b1 < number_of_oblate_bodies_ + number_of_spherical_bodies_; ++b1) { MassiveBody const& body1 = *bodies_[b1]; ComputeGravitationalAccelerationByMassiveBodyOnMasslessBodies< /*body1_is_oblate=*/false>( t, body1, b1, positions, accelerations, &(*hints)[b1]); } }
void Ephemeris<Frame>::ComputeMassiveBodiesGravitationalAccelerations( Instant const& t, std::vector<Position<Frame>> const& positions, not_null<std::vector<Vector<Acceleration, Frame>>*> const accelerations) const { accelerations->assign(accelerations->size(), Vector<Acceleration, Frame>()); for (std::size_t b1 = 0; b1 < number_of_oblate_bodies_; ++b1) { MassiveBody const& body1 = *bodies_[b1]; ComputeGravitationalAccelerationByMassiveBodyOnMassiveBodies< /*body1_is_oblate=*/true, /*body2_is_oblate=*/true>( body1, b1, /*bodies2=*/bodies_, /*b2_begin=*/b1 + 1, /*b2_end=*/number_of_oblate_bodies_, positions, accelerations); ComputeGravitationalAccelerationByMassiveBodyOnMassiveBodies< /*body1_is_oblate=*/true, /*body2_is_oblate=*/false>( body1, b1, /*bodies2=*/bodies_, /*b2_begin=*/number_of_oblate_bodies_, /*b2_end=*/number_of_oblate_bodies_ + number_of_spherical_bodies_, positions, accelerations); } for (std::size_t b1 = number_of_oblate_bodies_; b1 < number_of_oblate_bodies_ + number_of_spherical_bodies_; ++b1) { MassiveBody const& body1 = *bodies_[b1]; ComputeGravitationalAccelerationByMassiveBodyOnMassiveBodies< /*body1_is_oblate=*/false, /*body2_is_oblate=*/false>( body1, b1, /*bodies2=*/bodies_, /*b2_begin=*/b1 + 1, /*b2_end=*/number_of_oblate_bodies_ + number_of_spherical_bodies_, positions, accelerations); } }