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);
136 ThirdBodyList& thirdBodies(){
return thirdBodies_;}
138 bool useDrag_{
false};
140 bool useRelativityCorrection_{
false};
141 bool useCentralBodyAttraction_{
true};
143 bool useDragSensitivity_{
false};
144 bool useSRPSensitivity_{
false};
145 SharedPtr<Body> centralBody_{};
147 SolarRadiationPressure srp_{};
148 ThirdBodyList thirdBodies_{};
149 ClonePtr<BodyAttraction> bodyAttraction_{};
151 bool useMoonGravity_{
false};
154 bool useMoonGravity()
const{
return useMoonGravity_;}
155 void useMoonGravity(
bool useMoonGravity){useMoonGravity_ = useMoonGravity;}
156 double moonGravity()
const{
return moonGravity_;}
157 void setMoonGravity(
double moonGravity){moonGravity_ = moonGravity;}