|
🛰️航天仿真算法库 SpaceAST 0.0.1
|
#include <BlockSRPPartial.hpp>
类 ast::BlockSRPPartial 继承关系图:Public 成员函数 | |
| BlockSRPPartial (EclipseCalculator *eclipseCalculator, double cr, double srpArea, Frame *propagationFrame) | |
| BlockSRPPartial (const BlockSRPPartial &)=delete | |
| BlockSRPPartial & | operator= (const BlockSRPPartial &)=delete |
| errc_t | run (const SimTime &simTime) override |
| void | setUseSRPSensitivity (bool v) |
Public 成员函数 继承自 ast::BlockSRP | |
| BlockSRP (const BlockSRP &)=delete | |
| BlockSRP & | operator= (const BlockSRP &)=delete |
| BlockSRP (EclipseCalculator *eclipseCalculator, double cr, double srpArea, Frame *propagationFrame) | |
| void | setSunPosition (ESunPosition sunPosition) |
Public 成员函数 继承自 ast::BlockDerivative | |
| ~BlockDerivative () override=default | |
| const std::vector< DataPort > & | getDerivativePorts () const |
| std::vector< DataPort > & | getDerivativePorts () |
Public 成员函数 继承自 ast::FuncBlock | |
| const std::vector< DataPort > & | getInputPorts () const |
| std::vector< DataPort > & | getInputPorts () |
| const std::vector< DataPort > & | getOutputPorts () const |
| std::vector< DataPort > & | getOutputPorts () |
| size_t | getNumInputPorts () const |
| size_t | getNumOutputPorts () const |
| DataPort * | getInputPort (StringView portName) |
| DataPort * | getOutputPort (StringView portName) |
| DataPort * | getInputPort (size_t portIndex) |
| DataPort * | getOutputPort (size_t portIndex) |
| DataPort::EValueType | getInputPortDataType (size_t portIndex) |
| DataPort::EValueType | getOutputPortDataType (size_t portIndex) |
| void * | getInputPortSignal (size_t portIndex) |
| void * | getOutputPortSignal (size_t portIndex) |
| double * | getInputPortRealSignal (size_t portIndex) |
| double * | getOutputPortRealSignal (size_t portIndex) |
| int | getInputPortWidth (size_t portIndex) |
| int | getOutputPortWidth (size_t portIndex) |
额外继承的成员函数 | |
静态 Public 成员函数 继承自 ast::FuncBlock | |
| static errc_t | connect (FuncBlock *src, StringView srcPortName, FuncBlock *dst, StringView dstPortName) |
| static errc_t | connect (FuncBlock *src, size_t srcPortIndex, FuncBlock *dst, size_t dstPortIndex) |
Protected 属性 继承自 ast::BlockSRP | |
| Vector3d * | position_ {&vectorBuffer_} |
| Vector3d * | velocity_ {&vectorBuffer_} |
| Vector3d * | accSRP_ {&vectorBuffer_} |
| Vector3d * | velocityDerivative_ {&vectorBuffer_} |
| double * | mass_ {&doubleBuffer_} |
| double | doubleBuffer_ {} |
| Vector3d | vectorBuffer_ {} |
| EclipseCalculator * | eclipseCalculator_ {} |
| double | cr_ {1.0} |
| double | srpArea_ {20.0} |
| Frame * | propagationFrame_ {} |
| ESunPosition | sunPosition_ {ESunPosition::eTrue} |
Protected 属性 继承自 ast::BlockDerivative | |
| std::vector< DataPort > | derivativePorts_ {} |
Protected 属性 继承自 ast::FuncBlock | |
| std::vector< DataPort > | inputPorts_ {} |
| std::vector< DataPort > | outputPorts_ {} |
太阳辐射压力偏导数(梯度)函数块
继承 BlockSRP,在其基础上增加 SRP 加速度偏导数计算。 重写 run():计算 SRP 加速度的同时计算雅可比矩阵, 将 ∂a_srp/∂r 累加到 A 矩阵对应位置。
SRP 加速度: a_srp = -ν · Cr · (A/m) · P_1AU · (AU/r)² · u_sun2sc = β/r³ · scToSun 其中 β = -ν · Cr · A/m · P_1AU · AU²
偏导数: ∂a_srp/∂r = factor · (3·scToSun·scToSunᵀ/r² − I₃) ∂a_srp/∂v = 0 其中 factor = β/r³(即 run() 中已计算的标量因子)
A 矩阵布局(6×6,行优先): ┌ ┐ │ 0 I │ rows 0-2: 位置运动学 │ ∂a/∂r 0 │ rows 3-5: 加速度偏导数 └ ┘ ↑ 本块写入 ∂a_srp/∂r (rows 3-5, cols 0-2) SRP 与速度无关,∂a_srp/∂v = 0
输入端口(继承):
输出端口(继承 + 新增):
导数端口(继承):
|
overridevirtual |