55 using ThirdBodyList = std::vector<ThirdBodyForce>;
57 bool useCentralBodyAttraction()
const{
return useCentralBodyAttraction_;}
59 bool useDrag()
const{
return useDrag_;}
60 void useDrag(
bool useDrag){useDrag_ = useDrag;}
62 bool useSRP()
const{
return useSRP_;}
63 void useSRP(
bool useSRP){useSRP_ = useSRP;}
65 bool useRelativityCorrection()
const{
return useRelativityCorrection_;}
66 void useRelativityCorrection(
bool useRelativityCorrection){useRelativityCorrection_ = useRelativityCorrection;}
69 Body* centralBody()
const;
75 const DragForce& drag()
const {
return drag_;}
83 GravityForce& gravity();
87 PointMassForce& pointMass();
91 BodyAttraction& bodyAttraction();
94 const BodyAttraction& bodyAttraction()
const;
97 EBodyAttractionType bodyAttractionType()
const;
102 ThirdBodyForce* addThirdBody(StringView bodyName);
106 ThirdBodyForce* addThirdBody(Body* body);
109 ThirdBodyForce* addThirdBody(ThirdBodyForce& force);
113 ThirdBodyForce* getThirdBody(Body* body);
117 ThirdBodyForce* getThirdBody(StringView bodyName);
122 bool useDrag_{
false};
124 bool useRelativityCorrection_{
false};
125 bool useCentralBodyAttraction_{
true};
126 SharedPtr<Body> centralBody_;
128 SolarRadiationPressure srp_;
129 ThirdBodyList thirdBodies_;
130 ClonePtr<BodyAttraction> bodyAttraction_;
132 bool useMoonGravity_{
false};
135 bool useMoonGravity()
const{
return useMoonGravity_;}
136 void useMoonGravity(
bool useMoonGravity){useMoonGravity_ = useMoonGravity;}
137 double moonGravity()
const{
return moonGravity_;}
138 void setMoonGravity(
double moonGravity){moonGravity_ = moonGravity;}