T
- type of the field elements
public class FieldNumericalPropagator<T extends org.hipparchus.CalculusFieldElement<T>> extends FieldAbstractIntegratedPropagator<T>
轨道
。
数值传播比如 开普勒
或 埃克斯坦-赫克勒
等解析传播更加精确,但需要设置更多步骤才能正确使用。解析传播器仅通过它们的各种构造函数进行配置,并且在构造后可以立即使用,而数值传播器的配置涉及在构造时间和传播时间之间设置几个参数。
可以设置的配置参数包括:
setInitialState(FieldSpacecraftState)
)setMu(CalculusFieldElement)
)addForceModel(ForceModel)
, removeForceModels()
)类型
(setOrbitType(OrbitType)
)类型
(setPositionAngleType(PositionAngleType)
)额外导数提供者
与轨道状态一起 (FieldAbstractIntegratedPropagator.addAdditionalDerivativesProvider(org.orekit.propagation.integration.FieldAdditionalDerivativesProvider)
)FieldAbstractIntegratedPropagator.addEventDetector(FieldEventDetector)
, FieldAbstractIntegratedPropagator.clearEventsDetectors()
)FieldAbstractPropagator.getMultiplexer()
)从这些配置参数中,只有初始状态是必需的。默认传播设置为使用 赤道坐标
参数,真经度参数为 真
。如果未明确指定中心引力系数,则将使用用于定义初始轨道的中心引力系数。但是,仅指定初始状态和可能中心引力系数将意味着传播器仅使用开普勒力。在这种情况下,更简单的 KeplerianPropagator
类可能更有效。
构造函数中设置的基础数值积分器也可能有自己的配置参数。自适应步长积分器的典型配置参数包括最小、最大和可能的起始步长,以及绝对和/或相对误差阈值。
积分器看到的状态是一个简单的七元素双精度数组。前六个元素可以是:
赤道坐标轨道参数
(a, ex, ey, hx, hy, λM 或 λE 或 λv),单位为米和弧度开普勒轨道参数
(a, e, i, ω, Ω, M 或 E 或 v),单位为米和弧度圆形轨道参数
(a, ex, ey, i, Ω, αM 或 αE 或 αv),单位为米和弧度笛卡尔轨道参数
(x, y, z, vx, vy, vz),单位为米和米每秒以下代码片段显示了在赤道坐标参数和真经度参数中进行低地球轨道传播的典型设置:
final T zero = field.getZero(); final T dP = zero.add(0.001); final T minStep = zero.add(0.001); final T maxStep = zero.add(500); final T initStep = zero.add(60); final double[][] tolerance = FieldNumericalPropagator.tolerances(dP, orbit, OrbitType.EQUINOCTIAL); AdaptiveStepsizeFieldIntegrator<T> integrator = new DormandPrince853FieldIntegrator<>(field, minStep, maxStep, tolerance[0], tolerance[1]); integrator.setInitialStepSize(initStep); propagator = new FieldNumericalPropagator<>(field, integrator);
默认情况下,在传播结束时,传播器将初始状态重置为最终状态,从而允许从那里开始新的传播而无需重新计算已执行的部分。可以通过调用 FieldAbstractIntegratedPropagator.setResetAtEnd(boolean)
来更改此行为。
请注意,同一实例不能同时被不同线程使用,该类 不是 线程安全的。
FieldSpacecraftState
, ForceModel
, FieldOrekitStepHandler
, FieldOrekitFixedStepHandler
, FieldIntegratedEphemeris
, FieldTimeDerivativesEquations
FieldAbstractIntegratedPropagator.MainStateEquations<T extends org.hipparchus.CalculusFieldElement<T>>
DEFAULT_MASS
Constructor and Description |
---|
FieldNumericalPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator)
创建一个基于轨道定义 mu 的 NumericalPropagator 的新实例。
|
FieldNumericalPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, AttitudeProvider attitudeProvider)
创建一个基于轨道定义 mu 的 NumericalPropagator 的新实例。
|
Modifier and Type | Method and Description |
---|---|
void |
addForceModel(ForceModel model)
向全局摄动模型添加一个力模型。
|
protected FieldStateMapper<T> |
createMapper(FieldAbsoluteDate<T> referenceDate, T mu, OrbitType orbitType, PositionAngleType positionAngleType, AttitudeProvider attitudeProvider, Frame frame)
创建原始双精度分量和航天器状态之间的映射器。
|
List<ForceModel> |
getAllForceModels()
获取所有摄动力模型,包括扰动力和牛顿引力。
|
protected FieldAbstractIntegratedPropagator.MainStateEquations<T> |
getMainStateEquations(org.hipparchus.ode.FieldODEIntegrator<T> integrator)
获取要积分的微分方程(仅适用于主状态)。
|
OrbitType |
getOrbitType()
获取传播参数类型。
|
PositionAngleType |
getPositionAngleType()
获取传播参数类型。
|
TimeStampedFieldPVCoordinates<T> |
getPVCoordinates(FieldAbsoluteDate<T> date, Frame frame)
获取所选参考系中的物体的 FieldPVCoordinates 。
|
void |
removeForceModels()
从全局摄动模型中删除所有扰动力模型。
|
void |
resetInitialState(FieldSpacecraftState<T> state)
重置传播器的初始状态。
|
void |
setIgnoreCentralAttraction(boolean ignoreCentralAttraction)
设置是否忽略创建 NewtonianAttraction 。
|
void |
setInitialState(FieldSpacecraftState<T> initialState)
设置初始状态。
|
void |
setMu(T mu)
设置中心引力系数 μ。
|
void |
setOrbitType(OrbitType orbitType)
设置传播轨道类型。
|
void |
setPositionAngleType(PositionAngleType positionAngleType)
设置位置角类型。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
tolerances(T dP, FieldOrbit<T> orbit, OrbitType type)
为积分器估算容差向量。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
tolerances(T dP, T dV, FieldOrbit<T> orbit, OrbitType type)
在传播轨道时为积分器估算容差向量。
|
addAdditionalDerivativesProvider, addEventDetector, afterIntegration, beforeIntegration, clearEventsDetectors, getAdditionalDerivativesProviders, getBasicDimension, getCalls, getEphemerisGenerator, getEventsDetectors, getInitialIntegrationState, getIntegrator, getIntegratorName, getManagedAdditionalStates, getMu, getPropagationType, getResetAtEnd, initMapper, isAdditionalStateManaged, isMeanOrbit, propagate, propagate, setAttitudeProvider, setResetAtEnd, setUpEventDetector, setUpUserEventDetectors
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getFrame, getInitialState, getMultiplexer, getStartDate, initializeAdditionalStates, initializePropagation, setStartDate, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearStepHandlers, setStepHandler, setStepHandler
getPosition
@DefaultDataContext public FieldNumericalPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator)
addForceModel
,则集成轨道将仅遵循开普勒演化。默认值为 OrbitType.EQUINOCTIAL
用于 传播轨道类型
和 PositionAngleType.TRUE
用于 位置角类型
。
此构造函数使用 默认数据上下文
。
integrator
- 用于传播的数值积分器。
field
- 默认使用的字段
FieldNumericalPropagator(Field, FieldODEIntegrator, AttitudeProvider)
public FieldNumericalPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, AttitudeProvider attitudeProvider)
addForceModel
,则积分轨道将仅遵循开普勒演化。默认值为OrbitType.EQUINOCTIAL
用于传播轨道类型
和PositionAngleType.TRUE
用于位置角类型
。
field
- 默认使用的字段
integrator
- 用于传播的数值积分器。
attitudeProvider
- 要使用的姿态法则。
public void setIgnoreCentralAttraction(boolean ignoreCentralAttraction)
NewtonianAttraction
。
ignoreCentralAttraction
- 如果为true,则如果缺失,则不会自动添加NewtonianAttraction
public void setMu(T mu)
设置中心引力系数等效于添加
一个NewtonianAttraction
力模型。
setMu
在类中 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
mu
- 中心引力系数(m³/s²)
addForceModel(ForceModel)
,getAllForceModels()
public void addForceModel(ForceModel model)
如果根本没有调用此方法,则积分轨道将仅遵循开普勒演化。
model
- 要添加的扰动ForceModel
removeForceModels()
,setMu(CalculusFieldElement)
public void removeForceModels()
一旦所有扰动力被移除(并且没有添加新的力模型),积分轨道将仅遵循开普勒演化。
public List<ForceModel> getAllForceModels()
addForceModel(ForceModel)
,setMu(CalculusFieldElement)
public void setOrbitType(OrbitType orbitType)
setOrbitType
在类中 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
orbitType
- 用于传播的轨道类型
public OrbitType getOrbitType()
getOrbitType
在类中 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
public void setPositionAngleType(PositionAngleType positionAngleType)
setPositionAngleType
在类中 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
positionAngleType
- 用于传播的角度类型
public PositionAngleType getPositionAngleType()
getPositionAngleType
在类中 FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
public void setInitialState(FieldSpacecraftState<T> initialState)
initialState
- 初始状态
public void resetInitialState(FieldSpacecraftState<T> state)
resetInitialState
在接口 FieldPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
resetInitialState
在类 FieldAbstractPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
state
- 要考虑的新初始状态
public TimeStampedFieldPVCoordinates<T> getPVCoordinates(FieldAbsoluteDate<T> date, Frame frame)
FieldPVCoordinates
。
getPVCoordinates
在接口 FieldPVCoordinatesProvider<T 扩展 org.hipparchus.CalculusFieldElement<T>>
getPVCoordinates
在类 FieldAbstractPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
date
- 当前日期
frame
- 定义位置的参考系
protected FieldStateMapper<T> createMapper(FieldAbsoluteDate<T> referenceDate, T mu, OrbitType orbitType, PositionAngleType positionAngleType, AttitudeProvider attitudeProvider, Frame frame)
createMapper
在类 FieldAbstractIntegratedPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
referenceDate
- 参考日期
mu
- 中心引力系数(立方米/秒²)
orbitType
- 用于映射的轨道类型
positionAngleType
- 用于传播的角度类型
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, OrbitType type)
从用户指定的标量位置误差开始,从轨道的偏导数属性估算错误。考虑到能量守恒方程 V = sqrt(mu (2/r - 1/a)),我们在能量恒定(即在开普勒轨道上)时得到:
V r² |dV| = mu |dr|因此,我们推导出与位置误差一致的标量速度误差。从这里,我们应用轨道雅可比矩阵以获得轨道参数的一致误差。
这些容差仅是数量级,积分器容差仅是局部估计,而不是全局估计。因此,在使用这些容差时必须小心。将1毫米设置为位置误差并不意味着容差将在几个轨道积分后保证1毫米的位置误差。
T
- 元素类型
dP
- 用户指定的位置误差
orbit
- 参考轨道
type
- 用于容差向量元素含义的传播类型(可能与orbit.getType()
不同)
public static <T extends org.hipparchus.CalculusFieldElement<T>> double[][] tolerances(T dP, T dV, FieldOrbit<T> orbit, OrbitType type)
从用户指定的标量位置和速度误差开始,从轨道的偏导数属性估算错误。
这些容差仅是数量级,积分器容差仅是局部估计,而不是全局估计。因此,在使用这些容差时必须小心。将1毫米设置为位置误差并不意味着容差将在几个轨道积分后保证1毫米的位置误差。
T
- 元素类型
dP
- 用户指定的位置误差
dV
- 用户指定的速度误差
orbit
- 参考轨道
type
- 用于容差向量元素含义的传播类型(可能与orbit.getType()
不同)
Copyright © 2002-2023 CS GROUP. All rights reserved.