public interface AdditionalDerivativesProvider
在某些情况下,用户可能需要将一些特定于问题的方程与经典的航天器运动方程一起积分。一个例子是低推力下的最优控制,其中必须积分与最小化哈密顿量相关联的伴随参数。另一个例子是编队飞行或交会飞行,它使用克洛赫西-维尔特谢方程来描述相对运动。
此接口允许用户将这些方程添加到numerical propagator
或DSST propagator
中。用户将方程作为此接口的实现提供,并通过其AbstractIntegratedPropagator.addAdditionalDerivativesProvider(AdditionalDerivativesProvider)
方法将其注册到传播器中。每个数值传播器可以注册多个这样的对象,但建议将可以相互影响的参数集合收集到同一个对象中。
此接口是AdditionalStateProvider
接口的数值(尚未集成)对应物。它允许将各种额外状态参数附加到任何numerical propagator
或DSST propagator
中。
AbstractIntegratedPropagator
Modifier and Type | Method and Description |
---|---|
CombinedDerivatives |
combinedDerivatives(SpacecraftState s)
计算与额外状态相关的导数(以及可选的主状态增量)。
|
int |
getDimension()
获取生成导数的维数。
|
String |
getName()
获取额外导数的名称(一旦集成,它们将成为状态)。
|
default void |
init(SpacecraftState initialState, AbsoluteDate target)
在传播开始时初始化生成器。
|
default boolean |
yields(SpacecraftState state)
检查此提供程序是否应该放弃,以便另一个提供程序有机会添加缺失的部分。
|
String getName()
int getDimension()
default void init(SpacecraftState initialState, AbsoluteDate target)
initialState
- 传播开始时的初始状态信息
target
- 传播的日期
default boolean yields(SpacecraftState state)
放弃的决定通常基于提供的state
中是否已经有额外状态(但理论上也可能取决于额外状态导数是否已经可用,或任何其他标准)。例如,如果提供程序需要状态转移矩阵,则可以将此方法实现为:
public boolean yields(final SpacecraftState state) {
return !state.getAdditionalStates().containsKey("STM");
}
默认实现返回false
,这意味着导数数据可以立即计算
。
state
- 要处理的状态
CombinedDerivatives combinedDerivatives(SpacecraftState s)
s
- 当前状态信息:日期、运动学、姿态以及此方程依赖的额外状态(根据yields
方法)
Copyright © 2002-2023 CS GROUP. All rights reserved.