🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
BlockSRP.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/BlockDerivative.hpp"
25#include "AstMath/Vector.hpp"
26#include "AstCore/ForceModel.hpp" // for ESunPosition
27#include "AstCore/EclipseCalculator.hpp"
28
29AST_NAMESPACE_BEGIN
30
31class CelestialBody;
32class Frame;
33class SimTime;
34
35
50
55
58
59
60
75class AST_CORE_API BlockSRP : public BlockDerivative
76{
77public:
78 BlockSRP();
79
80 BlockSRP(const BlockSRP&) = delete;
81 BlockSRP& operator=(const BlockSRP&) = delete;
82
88 BlockSRP(EclipseCalculator* eclipseCalculator, double cr, double srpArea, Frame* propagationFrame);
89
90 ~BlockSRP() override;
91
92 errc_t run(const SimTime& simTime) override;
93public:
94 void setSunPosition(ESunPosition sunPosition){sunPosition_ = sunPosition;}
95protected:
96 Vector3d* position_{&vectorBuffer_};
97 Vector3d* velocity_{&vectorBuffer_};
98 Vector3d* accSRP_{&vectorBuffer_};
99 Vector3d* velocityDerivative_{&vectorBuffer_};
100 double* mass_{&doubleBuffer_};
101 double doubleBuffer_{};
102 Vector3d vectorBuffer_{};
103
104protected:
105 EclipseCalculator* eclipseCalculator_{};
106 double cr_{1.0};
107 double srpArea_{20.0};
108 Frame* propagationFrame_{};
109 ESunPosition sunPosition_{ESunPosition::eTrue};
110};
111
112AST_NAMESPACE_END
导数函数块
定义 BlockDerivative.hpp:46
太阳辐射压力函数块
定义 BlockSRP.hpp:76
阴影光照计算器
定义 EclipseCalculator.hpp:37
坐标系抽象基类
定义 Frame.hpp:62
virtual errc_t run(const SimTime &simTime)=0
计算函数块
仿真时间
定义 SimTime.hpp:30
constexpr double kAU
天文单位 (IAU 1976)[m]
定义 Constants.h:64
constexpr double kSunLuminosity
太阳光度 [W] (Carrol & Ostlie, 2007) An Introduction to Modern Astrophysics
定义 Constants.h:156
constexpr double kSolarConstant
太阳常数(1AU处总太阳辐照度)[W/m²]
定义 Constants.h:157
constexpr double kPI
PI
定义 Constants.h:53
constexpr double kLightSpeed
光速 (IAU 1976 value) [m/s]
定义 Constants.h:65
constexpr double kSolarPressureAt1AU_FromLuminosity
1 AU处的太阳辐射压力 [N/m²],使用太阳光度计算得到
定义 BlockSRP.hpp:49
ESunPosition
太阳位置
定义 SunPosition.hpp:35
constexpr double kSolarPressureAt1AU
1 AU处的太阳辐射压力 [N/m²],目前使用光度计算的值,也可以切换为使用太阳常数计算的值
定义 BlockSRP.hpp:57
constexpr double kSolarPressureAt1AU_FromSolarConstant
1 AU处的太阳辐射压力 [N/m²],使用太阳常数计算得到
定义 BlockSRP.hpp:54