55 using ThirdBodyList = std::vector<ThirdBodyForce>;
57 bool useCentralBodyAttraction()
const{
return useCentralBodyAttraction_;}
61 void useDrag(
bool useDrag){useDrag_ = useDrag;}
65 void useSRP(
bool useSRP){useSRP_ = useSRP;}
69 void useRelativityCorrection(
bool useRelativityCorrection){useRelativityCorrection_ = useRelativityCorrection;}
73 void useSTM(
bool useSTM){useSTM_ = useSTM;}
77 void useDragSensitivity(
bool v){useDragSensitivity_ = v;}
81 void useSRPSensitivity(
bool v){useSRPSensitivity_ = v;}
84 Body* centralBody()
const;
90 const DragForce& drag()
const {
return drag_;}
98 GravityForce& gravity();
102 PointMassForce& pointMass();
106 BodyAttraction& bodyAttraction();
109 const BodyAttraction& bodyAttraction()
const;
112 EBodyAttractionType bodyAttractionType()
const;
117 ThirdBodyForce* addThirdBody(StringView bodyName);
121 ThirdBodyForce* addThirdBody(Body* body);
124 ThirdBodyForce* addThirdBody(ThirdBodyForce& force);
128 ThirdBodyForce* getThirdBody(Body* body);
132 ThirdBodyForce* getThirdBody(StringView bodyName);
137 bool useDrag_{
false};
139 bool useRelativityCorrection_{
false};
140 bool useCentralBodyAttraction_{
true};
142 bool useDragSensitivity_{
false};
143 bool useSRPSensitivity_{
false};
144 SharedPtr<Body> centralBody_{};
146 SolarRadiationPressure srp_{};
147 ThirdBodyList thirdBodies_{};
148 ClonePtr<BodyAttraction> bodyAttraction_{};
150 bool useMoonGravity_{
false};
153 bool useMoonGravity()
const{
return useMoonGravity_;}
154 void useMoonGravity(
bool useMoonGravity){useMoonGravity_ = useMoonGravity;}
155 double moonGravity()
const{
return moonGravity_;}
156 void setMoonGravity(
double moonGravity){moonGravity_ = moonGravity;}