T
- type of the field elements
public abstract class FieldAbstractAnalyticalPropagator<T extends org.hipparchus.CalculusFieldElement<T>> extends FieldAbstractPropagator<T> implements ParameterDriversProvider
FieldPropagator
方法的常见处理。
这个抽象类允许轻松提供完整的FieldPropagator
方法集,包括所有传播模式支持和任何简单传播方法的离散事件支持。派生类只需实现两个方法:propagateOrbit(FieldAbsoluteDate, CalculusFieldElement[])
和getMass(FieldAbsoluteDate)
。第一个方法应该从某个内部存储的初始状态开始直接传播,直到指定的目标日期。
DEFAULT_MASS
Modifier | Constructor and Description |
---|---|
protected |
FieldAbstractAnalyticalPropagator(org.hipparchus.Field<T> field, AttitudeProvider attitudeProvider)
构建一个新实例。
|
Modifier and Type | Method and Description |
---|---|
protected FieldSpacecraftState<T> |
acceptStep(org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator.FieldBasicStepInterpolator interpolator, FieldAbsoluteDate<T> target)
接受一个步长,触发事件和步长处理程序。
|
<D extends FieldEventDetector<T>> |
addEventDetector(D detector)
添加一个事件探测器。
|
protected FieldSpacecraftState<T> |
basicPropagate(FieldAbsoluteDate<T> date)
在没有任何花哨功能的情况下传播轨道。
|
void |
clearEventsDetectors()
移除所有事件探测器。
|
FieldEphemerisGenerator<T> |
getEphemerisGenerator()
设置一个星历生成器,它将监视传播过程,一旦完成就从中构建星历。
|
Collection<FieldEventDetector<T>> |
getEventsDetectors()
获取已添加的所有事件探测器。
|
protected abstract T |
getMass(FieldAbsoluteDate<T> date)
获取质量。
|
FieldPVCoordinatesProvider<T> |
getPvProvider()
获取PV坐标提供程序。
|
FieldSpacecraftState<T> |
propagate(FieldAbsoluteDate<T> start, FieldAbsoluteDate<T> target)
从开始日期向目标日期传播。
|
protected abstract FieldOrbit<T> |
propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
将轨道推算到特定的目标日期。
|
protected abstract void |
resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
重置中间状态。
|
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getFrame, getInitialState, getManagedAdditionalStates, getMultiplexer, getPVCoordinates, getStartDate, initializeAdditionalStates, initializePropagation, isAdditionalStateManaged, propagate, resetInitialState, setAttitudeProvider, setStartDate, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, getParametersDrivers, isSupported
clearStepHandlers, setStepHandler, setStepHandler
getPosition
protected FieldAbstractAnalyticalPropagator(org.hipparchus.Field<T> field, AttitudeProvider attitudeProvider)
attitudeProvider
- 姿态计算提供程序
field
- 默认使用的字段
public FieldEphemerisGenerator<T> getEphemerisGenerator()
当用户需要在初始时间和目标时间之间的任何时间快速随机访问轨道状态时,可以使用此生成器。一个典型的例子是实现搜索和迭代算法,这些算法可能在找到结果之前在传播范围内向前和向后导航,即使所使用的传播器是基于积分的,并且只从一个初始时间到一个目标时间。
请注意,当与基于积分的传播器一起使用时,生成器将存储所有中间结果。因此,在长时间积分范围和高精度/短时间步长的情况下,它会占用大量内存。当与解析器一起使用时,生成器仅存储开始/停止时间和对解析器本身的引用,以在需要时调用它,因此它的内存占用较少。
返回的星历生成器最初将为空,当随后调用propagate(target)
或propagate(start, target)
时,它将填充传播数据。因此,使用此方法的正确方式是:
FieldEphemerisGenerator<T> generator = propagator.getEphemerisGenerator(); propagator.propagate(target); FieldBoundedPropagator<T> ephemeris = generator.getGeneratedEphemeris();
getEphemerisGenerator
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
public <D extends FieldEventDetector<T>> void addEventDetector(D detector)
addEventDetector
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
D
- 通用版本的类类型
detector
- 要添加的事件探测器
FieldPropagator.clearEventsDetectors()
, FieldPropagator.getEventsDetectors()
public Collection<FieldEventDetector<T>> getEventsDetectors()
getEventsDetectors
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
FieldPropagator.addEventDetector(FieldEventDetector)
, FieldPropagator.clearEventsDetectors()
public void clearEventsDetectors()
clearEventsDetectors
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
FieldPropagator.addEventDetector(FieldEventDetector)
, FieldPropagator.getEventsDetectors()
public FieldSpacecraftState<T> propagate(FieldAbsoluteDate<T> start, FieldAbsoluteDate<T> target)
这些传播器使用开始日期和目标日期来计算传播状态。对于使用事件检测机制的传播器,如果提供的开始日期与初始状态日期不同,则会执行第一次简单传播,而不处理任何事件计算。然后从开始日期到目标日期执行完整传播。
propagate
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
start
- 应传播轨道状态的开始日期
target
- 应传播轨道状态的目标日期
protected FieldSpacecraftState<T> acceptStep(org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator.FieldBasicStepInterpolator interpolator, FieldAbsoluteDate<T> target) throws org.hipparchus.exception.MathRuntimeException
interpolator
- 当前步长的插值器
target
- 最终传播时间
org.hipparchus.exception.MathRuntimeException
- 如果无法定位事件
protected abstract T getMass(FieldAbsoluteDate<T> date)
date
- 轨道的目标日期
public FieldPVCoordinatesProvider<T> getPvProvider()
protected abstract void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
state
- 要考虑的新中间状态
forward
- 如果为true,则中间状态对于其后的传播是有效的
protected abstract FieldOrbit<T> propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
date
- 轨道的目标日期
parameters
- 模型参数
protected FieldSpacecraftState<T> basicPropagate(FieldAbsoluteDate<T> date)
这种方法在精神上类似于propagate(org.orekit.time.FieldAbsoluteDate<T>, org.orekit.time.FieldAbsoluteDate<T>)
方法,不过它在传播过程中不会调用任何处理程序,也不会处理任何离散事件或额外状态。它总是在指定的日期准确停止。
date
- 传播的目标日期
Copyright © 2002-2023 CS GROUP. All rights reserved.