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