🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ast::BlockSRPPartial类 参考

#include <BlockSRPPartial.hpp>

+ 类 ast::BlockSRPPartial 继承关系图:

Public 成员函数

 BlockSRPPartial (EclipseCalculator *eclipseCalculator, double cr, double srpArea, Frame *propagationFrame)
 
 BlockSRPPartial (const BlockSRPPartial &)=delete
 
BlockSRPPartialoperator= (const BlockSRPPartial &)=delete
 
errc_t run (const SimTime &simTime) override
 
void setUseSRPSensitivity (bool v)
 
- Public 成员函数 继承自 ast::BlockSRP
 BlockSRP (const BlockSRP &)=delete
 
BlockSRPoperator= (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
 
DataPortgetInputPort (StringView portName)
 
DataPortgetOutputPort (StringView portName)
 
DataPortgetInputPort (size_t portIndex)
 
DataPortgetOutputPort (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_ {}
 
EclipseCalculatoreclipseCalculator_ {}
 
double cr_ {1.0}
 
double srpArea_ {20.0}
 
FramepropagationFrame_ {}
 
ESunPosition sunPosition_ {ESunPosition::eTrue}
 
- Protected 属性 继承自 ast::BlockDerivative
std::vector< DataPortderivativePorts_ {}
 
- Protected 属性 继承自 ast::FuncBlock
std::vector< DataPortinputPorts_ {}
 
std::vector< DataPortoutputPorts_ {}
 

详细描述

太阳辐射压力偏导数(梯度)函数块

继承 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

输入端口(继承):

  • "Pos":位置向量(3维,继承自 BlockSRP)
  • "Vel":速度向量(3维,继承自 BlockSRP)
  • "Mass":航天器质量(标量,继承自 BlockSRP)

输出端口(继承 + 新增):

  • "AccSRP":太阳辐射压力加速度(3维,继承自 BlockSRP)
  • "AMatrix":动力学雅可比矩阵 A(t)(36维,新增,本块累加 ∂a_srp/∂r 分量)

导数端口(继承):

  • "Vel":速度导数(3维),累加 SRP 加速度
注解
可替换 BlockSRP 使用,提供偏导数计算的同时保持原有加速度输出
参见
BlockSRP, BlockStateTransitionMatrix

成员函数说明

◆ run()

errc_t ast::BlockSRPPartial::run ( const SimTime & simTime)
overridevirtual

计算函数块

参数
simTime仿真时间
返回
错误码
待办事项
目前总是使用真太阳位置进行计算,是否需要考虑使用视太阳位置进行计算?

重载 ast::BlockSRP .


该类的文档由以下文件生成: