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

#include <BlockThirdBodyGravity.hpp>

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

Public 成员函数

 BlockThirdBodyGravity (Point *thirdBody, GravityField &&gravityField, int degree, int order, Axes *gravityAxes, Frame *propagationFrame)
 
errc_t run (const SimTime &simTime) override
 
void setConsiderVariations (bool considerVariations)
 
- 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)
 

Protected 属性

Vector3d * posCBI {&vectorBuffer}
 
Vector3d * accThirdBody {&vectorBuffer}
 
Vector3d * velocityDerivative_ {&vectorBuffer}
 
Vector3d vectorBuffer {}
 
- Protected 属性 继承自 ast::BlockDerivative
std::vector< DataPortderivativePorts_
 
- Protected 属性 继承自 ast::FuncBlock
std::vector< DataPortinputPorts_
 
std::vector< DataPortoutputPorts_
 

额外继承的成员函数

- 静态 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)
 

详细描述

三体重力场函数块

计算第三天体的球谐展开重力场摄动加速度(直接引力与间接引力之差)。

工作流程:

  1. 获取第三天体在预报系下的位置 r₃
  2. 计算航天器相对于第三天体的位置: r_rel = r - r₃
  3. 将 r_rel 旋转变换到第三天体的重力场固连坐标系
  4. 调用 GravityCalculator 计算固连系下的总重力加速度(含中心项 + 摄动项)
  5. 将加速度逆变换回报系(得到直接项 a_direct)
  6. 计算间接项:-r₃ 变换到重力固连系,同样调用 GravityCalculator 计算总加速度再逆变换(得到 a_indirect)
  7. 总摄动: a_total = a_direct - a_indirect
  8. 累加到速度导数

方程: a = a_direct(r - r₃) - a_indirect(-r₃)

其中: a_direct(r - r₃) = GravityCalculator::calcTotalAcceleration(r - r₃) 航天器在第三天体引力场中的总加速度(含中心项与摄动项) a_indirect(-r₃) = GravityCalculator::calcTotalAcceleration(-r₃) 中心天体在第三天体引力场中的总加速度(含中心项与摄动项) 当 degree=0 时两项退化为点质量公式,与 BlockThirdBodyPointMass 结果一致。

输入端口:

  • "Pos":位置向量(3维,预报坐标系下,以中心天体为参考)

输出端口:

  • "AccThirdBody":三体引力加速度(3维)

导数端口:

  • "Vel":速度导数(3维),累加三体引力加速度
参见
BlockThirdBodyPointMass, BlockGravity

成员函数说明

◆ run()

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

计算函数块

参数
simTime仿真时间
返回
错误码

实现了 ast::FuncBlock.


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