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

#include <BlockThirdBodyGravityPartial.hpp>

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

Public 成员函数

 BlockThirdBodyGravityPartial (const BlockThirdBodyGravityPartial &)=delete
 
BlockThirdBodyGravityPartialoperator= (const BlockThirdBodyGravityPartial &)=delete
 
 BlockThirdBodyGravityPartial (Point *thirdBody, GravityField &&gravityField, int degree, int order, Axes *gravityAxes, Frame *propagationFrame)
 
errc_t run (const SimTime &simTime) override
 
void setDegreeForPartial (int degree)
 
void setOrderForPartial (int order)
 
- Public 成员函数 继承自 ast::BlockThirdBodyGravity
 BlockThirdBodyGravity (const BlockThirdBodyGravity &)=delete
 
BlockThirdBodyGravityoperator= (const BlockThirdBodyGravity &)=delete
 
 BlockThirdBodyGravity (Point *thirdBody, GravityField &&gravityField, int degree, int order, Axes *gravityAxes, Frame *propagationFrame)
 
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)
 

额外继承的成员函数

- 静态 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::BlockThirdBodyGravity
errc_t prepare (const SimTime &simTime, Vector3d &thirdBodyPos, Rotation &rotation)
 
- Protected 属性 继承自 ast::BlockThirdBodyGravity
Vector3d * posCBI {&vectorBuffer}
 
Vector3d * accThirdBody {&vectorBuffer}
 
Vector3d * velocityDerivative_ {&vectorBuffer}
 
Vector3d vectorBuffer {}
 
PointthirdBody_ {}
 
HAxes gravityAxes_
 
HAxes propagationAxes_
 
FramepropagationFrame_ {}
 
GravityCalculatorDefault gravityCalculator_
 
bool considerVariations_ {false}
 
- Protected 属性 继承自 ast::BlockDerivative
std::vector< DataPortderivativePorts_ {}
 
- Protected 属性 继承自 ast::FuncBlock
std::vector< DataPortinputPorts_ {}
 
std::vector< DataPortoutputPorts_ {}
 

详细描述

三体球谐重力偏导数(梯度)函数块

继承 BlockThirdBodyGravity,在其基础上增加球谐重力梯度计算。 重写 run():在第三体固连系中调用 calcTotalAcceleration 的梯度版本, 通过相似变换将梯度张量变换回传播系, 将 ∂a_3body/∂r 累加到 A 矩阵的 bottom-left 3×3 位置。

三体球谐重力加速度: a_total = a_direct(r - r₃) - a_indirect(-r₃)

梯度(对航天器位置 r 的偏导数): 间接项梯度 = 0(-r₃ 与 r 无关) 直接项梯度:在第三体固连系中计算 H_grav = ∂a_direct/∂(r_rel), 然后通过相似变换 H_prop = Rᵀ · H_grav · R 变换到传播系

A 矩阵布局(6×6,行优先): ┌ ┐ │ 0 I │ rows 0-2: 位置运动学 │ ∂a/∂r 0 │ rows 3-5: 加速度偏导数 └ ┘ ↑ 本块写入 ∂a/∂r (rows 3-5, cols 0-2) 三体引力与速度无关,∂a/∂v = 0

输入端口(继承):

  • "Pos":位置向量(3维,继承自 BlockThirdBodyGravity)

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

  • "AccThirdBody":三体引力加速度(3维,继承自 BlockThirdBodyGravity)
  • "AMatrix":动力学雅可比矩阵 A(t)(36维,新增,本块累加 ∂a/∂r 分量)

导数端口(继承):

  • "Vel":速度导数(3维),累加三体引力加速度
注解
可替换 BlockThirdBodyGravity 使用,提供梯度计算的同时保持原有加速度输出。 与 BlockThirdBodyPointMassPartial 不同,本块采用完全重写 run() 的策略 (而非调基类后补梯度),以避免重复昂贵的球谐重力计算。
参见
BlockThirdBodyGravity, BlockGravityPartial, BlockStateTransitionMatrix

成员函数说明

◆ run()

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

计算函数块

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

重载 ast::BlockThirdBodyGravity .


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