|
🛰️航天仿真算法库 SpaceAST 0.0.1
|
#include <BlockThirdBodyGravityPartial.hpp>
类 ast::BlockThirdBodyGravityPartial 继承关系图:Public 成员函数 | |
| BlockThirdBodyGravityPartial (const BlockThirdBodyGravityPartial &)=delete | |
| BlockThirdBodyGravityPartial & | operator= (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 | |
| BlockThirdBodyGravity & | operator= (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 |
| 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::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 {} |
| Point * | thirdBody_ {} |
| HAxes | gravityAxes_ |
| HAxes | propagationAxes_ |
| Frame * | propagationFrame_ {} |
| GravityCalculatorDefault | gravityCalculator_ |
| bool | considerVariations_ {false} |
Protected 属性 继承自 ast::BlockDerivative | |
| std::vector< DataPort > | derivativePorts_ {} |
Protected 属性 继承自 ast::FuncBlock | |
| std::vector< DataPort > | inputPorts_ {} |
| std::vector< DataPort > | outputPorts_ {} |
三体球谐重力偏导数(梯度)函数块
继承 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
输入端口(继承):
输出端口(继承 + 新增):
导数端口(继承):
|
overridevirtual |