25#include "AstUtil/StringView.hpp"
51AST_CORE_API
void aPointMassField(
const Vector3d& position,
double GM, Vector3d& acceleration, Matrix3d& hessian);
53class GravityCalculator1;
54class GravityCalculator2;
55class GravityCalculator3;
57#ifdef _AST_USE_GRAVITY_CALCULATOR_1
58 #define _AST_ENABLE_GRAVITY_CALCULATOR_1
59 using GravityCalculatorDefault = GravityCalculator1;
61 using GravityCalculatorDefault = GravityCalculator3;
100 GravityField& getGravityField() {
return gravityField_; }
111 void setDegreeForPartial(
unsigned int degree);
114 void setOrderForPartial(
unsigned int order);
134 void calcTotalAcceleration (
const Vector3d &positionCBF, Vector3d &accelerationCBF);
136 void initDegreeOrder(
int degree,
int order);
139 unsigned int degree_{0};
140 unsigned int order_{0};
141 unsigned int degreeForPartial_{0};
142 unsigned int orderForPartial_{0};
145#ifdef _AST_ENABLE_GRAVITY_CALCULATOR_1
148class AST_CORE_API GravityCalculator1 final:
public GravityCalculator
151 GravityCalculator1();
152 GravityCalculator1(
const GravityField &gravityField,
int degree,
int order);
153 ~GravityCalculator1();
155 void calcPertAcceleration (
const Vector3d &positionCBF, Vector3d &accelerationCBF)
final;
159 std::unique_ptr<Impl> impl_;
172 void calcPertAcceleration (
const Vector3d &positionCBF, Vector3d &accelerationCBF)
final;
176 void initializeRecursionCoefficients();
179 void computeGradient(
const Vector3d &position, Vector3d &gradient);
182 int computeTesseral(
int m,
int degree,
int index,
double t,
double u,
double tOu);
186 std::vector<double> gnmOj_{};
189 std::vector<double> hnmOj_{};
192 std::vector<double> enm_{};
195 std::vector<double> sectorial_{};
197 std::vector<double> pnm0Plus2{};
198 std::vector<double> pnm0Plus1{};
199 std::vector<double> pnm0{};
200 std::vector<double> pnm1{};
202 std::vector<double> aOrN{};
203 std::vector<double> cosLambdaN{};
204 std::vector<double> sinLambdaN{};
222 void calcPertAcceleration(
const Vector3d &positionCBF, Vector3d &accelerationCBF)
final;
223 void calcPertAcceleration(
const Vector3d &positionCBF, Vector3d &accelerationCBF,
Matrix3d &gradient);
224 template<
bool fillgradient>
225 void calcPertAcceleration(
const Vector3d &positionCBF, Vector3d &accelerationCBF,
Matrix3d *gradient);
226 using GravityCalculator::calcTotalAcceleration;
227 void calcTotalAcceleration (
const Vector3d &positionCBF, Vector3d &accelerationCBF,
Matrix3d &gradient);
252 using GravityCalculator::GravityCalculator;
254 void calcPertAcceleration (
const Vector3d &positionCBF, Vector3d &accelerationCBF)
final;
261 using GravityCalculator::GravityCalculator;
263 void calcPertAcceleration (
const Vector3d &positionCBF, Vector3d &accelerationCBF)
final;
270AST_DECL_TYPE_ALIAS(GravityCalculator1)
重力加速度计算类2 - Holmes-Featherstone算法
定义 GravityCalculator.hpp:167
重力加速度计算类3
定义 GravityCalculator.hpp:211
定义 GravityCalculator.hpp:250
定义 GravityCalculator.hpp:259
重力加速度计算类
定义 GravityCalculator.hpp:66
int getDegree() const
获取计算阶数
定义 GravityCalculator.hpp:104
virtual void calcPertAcceleration(const Vector3d &positionCBF, Vector3d &accelerationCBF)=0
计算摄动加速度
const GravityField & getGravityField() const
获取重力场系数
定义 GravityCalculator.hpp:85
GravityField gravityField_
重力场系数
定义 GravityCalculator.hpp:138
int getOrder() const
获取计算次数
定义 GravityCalculator.hpp:108
int getDegreeForPartial() const
获取计算偏导数时使用的阶数
定义 GravityCalculator.hpp:118
void updateVariations(const TimePoint &tp)
更新重力场系数变化
定义 GravityCalculator.hpp:89
int getOrderForPartial() const
获取计算偏导数时使用的次数
定义 GravityCalculator.hpp:122
重力场系数
定义 GravityField.hpp:88
绝对时间点
定义 TimePoint.hpp:108
void aPointMassField(const Vector3d &position, double GM, Vector3d &acceleration, Matrix3d &hessian)
计算质点引力场(加速度及 Hessian)
定义 GravityCalculator.cpp:29