|
🛰️航天仿真算法库 SpaceAST 0.0.1
|
#include <BlockDragPartial.hpp>
类 ast::BlockDragPartial 继承关系图:Public 成员函数 | |
| BlockDragPartial (const BlockDragPartial &)=delete | |
| BlockDragPartial & | operator= (const BlockDragPartial &)=delete |
| BlockDragPartial (Atmosphere *atmosphere, double dragCoefficient, double dragArea, Frame *propagationFrame) | |
| errc_t | run (const SimTime &simTime) override |
| void | setUseDragSensitivity (bool v) |
Public 成员函数 继承自 ast::BlockDrag | |
| BlockDrag (const BlockDrag &)=delete | |
| BlockDrag & | operator= (const BlockDrag &)=delete |
| BlockDrag (Atmosphere *atmosphere, double dragCoefficient, double dragArea, Frame *propagationFrame) | |
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::BlockDrag | |
| Vector3d * | position_ {&vectorBuffer_} |
| Vector3d * | velocity_ {&vectorBuffer_} |
| Vector3d * | accDrag_ {&vectorBuffer_} |
| Vector3d * | velocityDerivative_ {&vectorBuffer_} |
| double * | mass_ {&doubleBuffer_} |
| double | doubleBuffer_ {} |
| Vector3d | vectorBuffer_ {} |
| Atmosphere * | atmosphere_ {} |
| double | dragCoefficient_ {} |
| double | dragArea_ {} |
| Frame * | propagationFrame_ {} |
Protected 属性 继承自 ast::BlockDerivative | |
| std::vector< DataPort > | derivativePorts_ {} |
Protected 属性 继承自 ast::FuncBlock | |
| std::vector< DataPort > | inputPorts_ {} |
| std::vector< DataPort > | outputPorts_ {} |
大气阻力偏导数(梯度)函数块
继承 BlockDrag,在其基础上增加阻力加速度偏导数计算。 重写 run():计算阻力加速度的同时计算雅可比矩阵, 将 ∂a_drag/∂r 和 ∂a_drag/∂v 累加到 A 矩阵对应位置。
阻力加速度: a_drag = -½ · Cd · (A/m) · ρ · |v_rel| · v_rel
A 矩阵布局(6×6,行优先): ┌ ┐ │ 0 I │ rows 0-2: 位置运动学 │ ∂a/∂r ∂a/∂v │ rows 3-5: 加速度偏导数 └ ┘ ↑ ↑ 本块写入 ∂a/∂r 本块写入 ∂a/∂v
偏导数公式: 定义 D = v_rel·v_relᵀ/|v_rel| + |v_rel|·I, k = Cd·A/(2m) ∂a/∂v = -k·ρ·D (rows 3-5, cols 3-5) ∂a/∂r = k·ρ·D·[ω×] + 密度梯度项 (rows 3-5, cols 0-2)
[ω×] 为大气参考系相对预报系的角速度叉乘矩阵。 密度梯度项已预留接口(computeDensityGradientContribution),待 Atmosphere 接口扩展。
输入端口(继承):
输出端口(继承 + 新增):
导数端口(继承):
|
overridevirtual |