🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
DataGroupMagField.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstReport/DataGroupTimeVar.hpp"
25#include "AstCore/Point.hpp"
26#include "AstCore/CelestialBody.hpp"
27#include "AstCore/GeodeticPoint.hpp"
28#include "AstMath/Vector.hpp"
29#include "AstUtil/Span.hpp"
30
31AST_NAMESPACE_BEGIN
32
42class AST_REPORT_API DataGroupMagField : public DataGroupTimeVar
43{
44public:
45 struct Data
46 {
47 TimePoint time_{};
48
49 // -- NEZ 当地分量 [T] --
50 double totalIntensityF_{}; // F = 总强度
51 double northIntensityX_{}; // X = 北向分量
52 double eastIntensityY_{}; // Y = 东向分量
53 double verticalIntensityZ_{}; // Z = 垂直向下分量
54
55 // -- 推导标量 --
56 double horizontalIntensityH_{}; // H = √(X²+Y²) [T]
57 double declinationD_{}; // D = atan2(Y,X) [rad]
58 double inclinationI_{}; // I = atan2(Z,H) [rad] 向下为正
59
60 // -- L 壳参数 [无量纲] --
61 double dipoleL_{}; // Ldip = 偶极子 L
62 double mcIlwainL_{}; // Lm = McIlwain L
63 double absMcIlwainL_{}; // |Lm|
64
65 // -- 磁镜比 --
66 double bOverBeq_{}; // B/Beq [无量纲]
67 double beq_{}; // Beq [T] 赤道磁场强度
68
69 // -- ECF 矢量分量 [T] --
70 double ecfX_{};
71 double ecfY_{};
72 double ecfZ_{};
73
74 // -- ECI 矢量分量 [T] --
75 double eciX_{};
76 double eciY_{};
77 double eciZ_{};
78
79 // ---- getter ----
80 const TimePoint& getTime() const { return time_; }
81 double getTotalIntensityF() const { return totalIntensityF_; }
82 double getNorthIntensityX() const { return northIntensityX_; }
83 double getEastIntensityY() const { return eastIntensityY_; }
84 double getVerticalIntensityZ() const { return verticalIntensityZ_; }
85 double getHorizontalIntensityH() const { return horizontalIntensityH_; }
86 double getDeclinationD() const { return declinationD_; }
87 double getInclinationI() const { return inclinationI_; }
88 double getDipoleL() const { return dipoleL_; }
89 double getMcIlwainL() const { return mcIlwainL_; }
90 double getAbsMcIlwainL() const { return absMcIlwainL_; }
91 double getBOverBeq() const { return bOverBeq_; }
92 double getBeq() const { return beq_; }
93 double getEcfX() const { return ecfX_; }
94 double getEcfY() const { return ecfY_; }
95 double getEcfZ() const { return ecfZ_; }
96 double getEciX() const { return eciX_; }
97 double getEciY() const { return eciY_; }
98 double getEciZ() const { return eciZ_; }
99 };
100 static DataElements Elements();
101
103 ~DataGroupMagField() = default;
104public:
105 errc_t calculate(const TimeList& timeList, VariantVector& result) const override;
106 const DataElements& getElements() const override;
107public:
108 errc_t calculate(const TimeList& timeList, std::vector<Data>& result) const;
109 errc_t calculate(const TimeList& timeList, Span<Data> result) const;
110public:
111 Point* getPoint() const { return point_.get(); }
112 Body* getBody() const { return body_.get(); }
113 void setPoint(Point* p) { point_ = p; }
114 void setBody(Body* b) { body_ = b; }
115private:
116 WeakPtr<Point> point_{};
117 WeakPtr<Body> body_{};
118};
119
120
123AST_NAMESPACE_END
天体
定义 CelestialBody.hpp:72
数据元素容器
定义 DataElements.hpp:90
地磁场数据组
定义 DataGroupMagField.hpp:43
随时间变化的数据组
定义 DataGroupTimeVar.hpp:37
virtual errc_t calculate(const TimeList &timeList, VariantVector &result) const =0
计算数据组
点抽象基类
定义 Point.hpp:41
非拥有的连续对象序列视图
定义 Span.hpp:71
时间点列表
定义 TimeList.hpp:49
绝对时间点
定义 TimePoint.hpp:108
变类型向量容器
定义 VariantVector.hpp:59
定义 DataGroupMagField.hpp:46