T
- type of the field elements
public class FieldDSSTPropagator<T extends org.hipparchus.CalculusFieldElement<T>> extends FieldAbstractIntegratedPropagator<T>
轨道
。
而分析传播器仅通过其各种构造函数进行配置,并且可以在构造后立即使用,这种半解析传播器配置涉及在构造时间和传播时间之间设置多个参数,就像数值传播器一样。
可以设置的配置参数包括:
setInitialState(FieldSpacecraftState)
)addForceModel(DSSTForceModel)
,removeForceModels()
)FieldAbstractIntegratedPropagator.addEventDetector(org.orekit.propagation.events.FieldEventDetector)
,FieldAbstractIntegratedPropagator.clearEventsDetectors()
)FieldAbstractPropagator.getMultiplexer()
)从这些配置参数中,只有初始状态是必需的。默认传播设置为使用赤道
参数,带有真
经度参数。用于定义初始轨道的中心引力系数将被使用。但是,仅指定初始状态将意味着传播器将仅使用开普勒力。在这种情况下,更简单的KeplerianPropagator
类将更有效。
构造函数中设置的基础数值积分器也可能具有自己的配置参数。自适应步长积分器的典型配置参数包括最小、最大和可能的起始步长,以及绝对和/或相对误差阈值。
积分器看到的状态是一个简单的六元素双精度数组。这六个元素是:
赤道轨道参数
(a,ex,ey,hx,hy,λm)以米和弧度为单位,默认情况下,在传播结束时,传播器将初始状态重置为最终状态,从而允许从那里开始新的传播而无需重新计算已执行的部分。可以通过调用FieldAbstractIntegratedPropagator.setResetAtEnd(boolean)
来更改此行为。
请注意,同一实例不能同时被不同线程使用,该类不是线程安全的。
FieldSpacecraftState
, DSSTForceModel
FieldAbstractIntegratedPropagator.MainStateEquations<T extends org.hipparchus.CalculusFieldElement<T>>
DEFAULT_MASS
Constructor and Description |
---|
FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator)
创建一个新的DSSTPropagator实例。
|
FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, AttitudeProvider attitudeProvider)
创建一个新的DSSTPropagator实例。
|
FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, PropagationType propagationType)
创建一个新的DSSTPropagator实例。
|
FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, PropagationType propagationType, AttitudeProvider attitudeProvider)
创建一个新的DSSTPropagator实例。
|
Modifier and Type | Method and Description |
---|---|
void |
addForceModel(DSSTForceModel force)
向全局摄动模型添加一个力模型。
|
protected void |
afterIntegration()
在积分后调用的方法。
|
protected void |
beforeIntegration(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> tEnd)
在积分前调用的方法。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
computeMeanState(FieldSpacecraftState<T> osculating, AttitudeProvider attitudeProvider, Collection<DSSTForceModel> forceModel)
从摄动到平均轨道的转换。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
computeMeanState(FieldSpacecraftState<T> osculating, AttitudeProvider attitudeProvider, Collection<DSSTForceModel> forceModel, double epsilon, int maxIterations)
从摄动到平均轨道的转换。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
computeOsculatingState(FieldSpacecraftState<T> mean, AttitudeProvider attitudeProvider, Collection<DSSTForceModel> forces)
从平均到摄动轨道的转换。
|
protected FieldStateMapper<T> |
createMapper(FieldAbsoluteDate<T> referenceDate, T mu, OrbitType ignoredOrbitType, PositionAngleType ignoredPositionAngleType, AttitudeProvider attitudeProvider, Frame frame)
创建原始双精度分量与航天器状态之间的映射器。
|
List<DSSTForceModel> |
getAllForceModels()
获取所有力模型,包括摄动力和牛顿引力。
|
protected FieldSpacecraftState<T> |
getInitialIntegrationState()
获取积分的初始状态。
|
protected FieldAbstractIntegratedPropagator.MainStateEquations<T> |
getMainStateEquations(org.hipparchus.ode.FieldODEIntegrator<T> integrator)
获取要积分的微分方程(仅适用于主状态)。
|
OrbitType |
getOrbitType()
获取传播参数类型。
|
PositionAngleType |
getPositionAngleType()
获取传播参数类型。
|
int |
getSatelliteRevolution()
获取用于将摄动元素转换为平均元素的卫星公转数。
|
Set<String> |
getSelectedCoefficients()
获取必须存储为附加状态的所选短周期系数。
|
boolean |
initialIsOsculating()
检查初始状态是否以摄动元素提供。
|
void |
removeForceModels()
从全局摄动模型中删除所有摄动力模型(除了中心引力)。
|
void |
resetInitialState(FieldSpacecraftState<T> state)
重置初始状态。
|
void |
setAttitudeProvider(AttitudeProvider attitudeProvider)
设置姿态提供者。
|
void |
setInitialState(FieldSpacecraftState<T> initialState)
使用摄动轨道元素设置初始状态。
|
void |
setInitialState(FieldSpacecraftState<T> initialState, PropagationType stateType)
设置初始状态。
|
void |
setInterpolationGridToFixedNumberOfPoints(int interpolationPoints)
设置插值网格生成器。
|
void |
setInterpolationGridToMaxTimeGap(T maxGap)
设置插值网格生成器。
|
void |
setMu(T mu)
设置中心引力系数 μ。
|
void |
setSatelliteRevolution(int satelliteRevolution)
覆盖参数的默认值。
|
void |
setSelectedCoefficients(Set<String> selectedCoefficients)
设置必须存储为附加状态的所选短周期系数。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
tolerances(T dP, FieldOrbit<T> orbit)
为AdaptativeStepsizeIntegrator估算容差向量。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
tolerances(T dP, T dV, FieldOrbit<T> orbit)
为AdaptativeStepsizeIntegrator估算容差向量。
|
addAdditionalDerivativesProvider, addEventDetector, clearEventsDetectors, getAdditionalDerivativesProviders, getBasicDimension, getCalls, getEphemerisGenerator, getEventsDetectors, getIntegrator, getIntegratorName, getManagedAdditionalStates, getMu, getPropagationType, getResetAtEnd, initMapper, isAdditionalStateManaged, isMeanOrbit, propagate, propagate, setOrbitType, setPositionAngleType, setResetAtEnd, setUpEventDetector, setUpUserEventDetectors
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getFrame, getInitialState, getMultiplexer, getPVCoordinates, getStartDate, initializeAdditionalStates, initializePropagation, setStartDate, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearStepHandlers, setStepHandler, setStepHandler
getPosition
@DefaultDataContext public FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, PropagationType propagationType)
创建后,根本没有任何摄动力。这意味着如果在创建后未调用addForceModel
,则积分轨道将仅遵循开普勒演化。
此构造函数使用默认数据上下文
。
field
- 默认使用的字段
integrator
- 用于传播的数值积分器。
propagationType
- 输出的轨道类型(平均或摄动)。
FieldDSSTPropagator(Field, FieldODEIntegrator, PropagationType, AttitudeProvider)
public FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, PropagationType propagationType, AttitudeProvider attitudeProvider)
创建后,根本没有任何摄动力。这意味着如果在创建后未调用addForceModel
,则积分轨道将仅遵循开普勒演化。
field
- 默认使用的字段
integrator
- 用于传播的数值积分器。
propagationType
- 输出的轨道类型(平均或摄动)。
attitudeProvider
- 使用的姿态规律。
@DefaultDataContext public FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator)
创建后,根本没有任何摄动力。这意味着如果在创建后未调用addForceModel
,则积分轨道将仅遵循开普勒演化。仅生成平均轨道。
此构造函数使用默认数据上下文
。
field
- 默认使用的字段
integrator
- 用于传播的数值积分器。
FieldDSSTPropagator(Field, FieldODEIntegrator, AttitudeProvider)
public FieldDSSTPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, AttitudeProvider attitudeProvider)
创建后,根本没有任何摄动力。这意味着如果在创建后未调用addForceModel
,则积分轨道将仅遵循开普勒演化。仅生成平均轨道。
field
- 默认使用的字段
integrator
- 用于传播的数值积分器。
attitudeProvider
- 使用的姿态规律。
public void setMu(T mu)
设置中心引力系数等同于添加
一个DSSTNewtonianAttraction
力模型。
setMu
在类 FieldAbstractIntegratedPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
mu
- 中心引力系数 (m³/s²)
addForceModel(DSSTForceModel)
, getAllForceModels()
public void setInitialState(FieldSpacecraftState<T> initialState)
initialState
- 初始状态 (使用轨道要素定义)
public void setInitialState(FieldSpacecraftState<T> initialState, PropagationType stateType)
initialState
- 初始状态
stateType
- 定义轨道状态是使用轨道要素还是平均要素定义的
public void resetInitialState(FieldSpacecraftState<T> state)
resetInitialState
在接口 FieldPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
resetInitialState
在类 FieldAbstractPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
state
- 新的初始状态
public void setSelectedCoefficients(Set<String> selectedCoefficients)
selectedCoefficients
- 必须作为附加状态存储的短周期系数 (null表示未选择任何系数,空集表示选择所有系数)
public Set<String> getSelectedCoefficients()
public boolean initialIsOsculating()
public void setInterpolationGridToFixedNumberOfPoints(int interpolationPoints)
生成器将为每个平均要素积分步长创建一个具有固定点数的插值网格。
如果既未调用setInterpolationGridToFixedNumberOfPoints(int)
也未调用setInterpolationGridToMaxTimeGap(CalculusFieldElement)
,则默认情况下,传播器设置为每步3个插值点。
interpolationPoints
- 每个积分步长的插值点数
setInterpolationGridToMaxTimeGap(CalculusFieldElement)
public void setInterpolationGridToMaxTimeGap(T maxGap)
生成器将创建一个最大时间间隔的插值网格。
如果既未调用setInterpolationGridToFixedNumberOfPoints(int)
也未调用setInterpolationGridToMaxTimeGap(CalculusFieldElement)
,则默认情况下,传播器设置为每步3个插值点。
maxGap
- 插值点之间的最大时间间隔 (秒)
setInterpolationGridToFixedNumberOfPoints(int)
public void addForceModel(DSSTForceModel force)
如果根本没有调用此方法,则集成轨道将仅遵循开普勒演化。
force
- 要添加的扰动force
removeForceModels()
, setMu(CalculusFieldElement)
public void removeForceModels()
一旦所有扰动力被移除 (并且没有添加新的力模型),集成轨道将仅遵循开普勒演化。
public List<DSSTForceModel> getAllForceModels()
addForceModel(DSSTForceModel)
, setMu(CalculusFieldElement)
public OrbitType getOrbitType()
getOrbitType
在类 FieldAbstractIntegratedPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
public PositionAngleType getPositionAngleType()
getPositionAngleType
在类 FieldAbstractIntegratedPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
public static <T extends org.hipparchus.CalculusFieldElement<T>> FieldSpacecraftState<T> computeOsculatingState(FieldSpacecraftState<T> mean, AttitudeProvider attitudeProvider, Collection<DSSTForceModel> forces)
计算在 DSST 意义上对应于输入平均 SpacecraftState 的轨道要素状态,并根据考虑的力模型进行计算。
由于轨道要素状态是通过添加每个力模型的短周期变化获得的,因此生成的输出将取决于输入中参数化的力模型。
T
- 元素的类型
mean
- 要转换的平均状态
forces
- 要考虑的力
attitudeProvider
- 姿态提供器(如果没有高斯力模型,如大气阻力、辐射压力或特定用户定义的模型,则可以为null)
public static <T extends org.hipparchus.CalculusFieldElement<T>> FieldSpacecraftState<T> computeMeanState(FieldSpacecraftState<T> osculating, AttitudeProvider attitudeProvider, Collection<DSSTForceModel> forceModel)
计算平均状态在DSST意义上,对应于输入的瞬时SpacecraftState,并根据考虑的力模型进行计算。
由于瞬时状态是通过计算每个力模型的短周期变化获得的,因此最终输出将取决于输入中参数化的力模型。
计算是通过一个固定点迭代过程完成的。
T
- 元素的类型
osculating
- 要转换的瞬时状态
attitudeProvider
- 姿态提供器(如果没有高斯力模型,如大气阻力、辐射压力或特定用户定义的模型,则可以为null)
forceModel
- 要考虑的力
public static <T extends org.hipparchus.CalculusFieldElement<T>> FieldSpacecraftState<T> computeMeanState(FieldSpacecraftState<T> osculating, AttitudeProvider attitudeProvider, Collection<DSSTForceModel> forceModel, double epsilon, int maxIterations)
计算平均状态在DSST意义上,对应于输入的瞬时SpacecraftState,并根据考虑的力模型进行计算。
由于瞬时状态是通过计算每个力模型的短周期变化获得的,因此最终输出将取决于输入中参数化的力模型。
计算是通过一个固定点迭代过程完成的。
T
- 元素的类型
osculating
- 要转换的瞬时状态
attitudeProvider
- 姿态提供器(如果没有高斯力模型,如大气阻力、辐射压力或特定用户定义的模型,则可以为null)
forceModel
- 要考虑的力
epsilon
- 平均参数转换的收敛阈值
maxIterations
- 平均参数转换的最大迭代次数
public void setSatelliteRevolution(int satelliteRevolution)
默认情况下,如果初始轨道被定义为瞬时的,则将其平均化为2个卫星公转。可以通过使用此方法进行更改。
satelliteRevolution
- 用于将瞬时转换为平均元素的卫星公转数
public int getSatelliteRevolution()
public void setAttitudeProvider(AttitudeProvider attitudeProvider)
setAttitudeProvider
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
setAttitudeProvider
在类 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
attitudeProvider
- 姿态提供器
protected void beforeIntegration(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> tEnd)
默认实现不执行任何操作,可以在子类中进行特化。
beforeIntegration
在类 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
initialState
- 初始状态
tEnd
- 应该传播状态的目标日期
protected void afterIntegration()
默认实现不执行任何操作,可以在子类中进行特化。
afterIntegration
在类 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
protected FieldSpacecraftState<T> getInitialIntegrationState()
getInitialIntegrationState
在类 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
protected FieldStateMapper<T> createMapper(FieldAbsoluteDate<T> referenceDate, T mu, OrbitType ignoredOrbitType, PositionAngleType ignoredPositionAngleType, AttitudeProvider attitudeProvider, Frame frame)
只有在传播轨道类型
支持时,位置参数类型才有意义。例如,对于在笛卡尔
参数中进行传播,这是没有意义的。
请注意,对于DSST,轨道类型被硬编码为OrbitType.EQUINOCTIAL
,位置角类型被硬编码为PositionAngleType.MEAN
,因此相应的参数将被忽略。
createMapper
在类 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
referenceDate
- 参考日期
mu
- 中心吸引系数(m³/s²)
ignoredOrbitType
- 用于映射的轨道类型
ignoredPositionAngleType
- 用于传播的角度类型
attitudeProvider
- 姿态提供器
frame
- 惯性参考系
protected FieldAbstractIntegratedPropagator.MainStateEquations<T> getMainStateEquations(org.hipparchus.ode.FieldODEIntegrator<T> integrator)
getMainStateEquations
在类 FieldAbstractIntegratedPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
integrator
- 用于传播的数值积分器。
public static <T extends org.hipparchus.CalculusFieldElement<T>> double[][] tolerances(T dP, FieldOrbit<T> orbit)
错误是从轨道的偏导数属性中估计的,从用户指定的标量位置误差开始。考虑能量守恒方程V = sqrt(mu (2/r - 1/a)), 我们在能量恒定的情况下(即在开普勒轨道上)得到:
V r² |dV| = mu |dr|
因此,我们推导出与位置误差一致的标量速度误差。从这里,我们应用轨道雅可比矩阵以获得轨道参数的一致误差。
这些容差仅仅是数量级,积分器的容差仅仅是局部估计,而不是全局估计。因此,在使用这些容差时必须小心。将1mm设置为位置误差并不意味着容差将在几个轨道积分后保证1mm的位置误差。
T
- 元素类型
dP
- 用户指定的位置误差(米)
orbit
- 参考轨道
public static <T extends org.hipparchus.CalculusFieldElement<T>> double[][] tolerances(T dP, T dV, FieldOrbit<T> orbit)
错误是从轨道的偏导数属性中估计的,从用户指定的标量位置和速度误差开始。
这些容差仅仅是数量级,积分器的容差仅仅是局部估计,而不是全局估计。因此,在使用这些容差时必须小心。将1mm设置为位置误差并不意味着容差将在几个轨道积分后保证1mm的位置误差。
T
- 元素类型
dP
- 用户指定的位置误差(米)
dV
- 用户指定的速度误差(米/秒)
orbit
- 参考轨道
Copyright © 2002-2023 CS GROUP. All rights reserved.