T
- type of the field element
public abstract class FieldAbstractIntegratedPropagator<T extends org.hipparchus.CalculusFieldElement<T>> extends FieldAbstractPropagator<T>
FieldPropagator
方法,适用于数值和半解析传播器。
Modifier and Type | Class and Description |
---|---|
static interface |
FieldAbstractIntegratedPropagator.MainStateEquations<T extends org.hipparchus.CalculusFieldElement<T>>
主状态(轨道、姿态和质量)的微分方程。
|
DEFAULT_MASS
Modifier | Constructor and Description |
---|---|
protected |
FieldAbstractIntegratedPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, PropagationType propagationType)
构建一个新实例。
|
Modifier and Type | Method and Description |
---|---|
void |
addAdditionalDerivativesProvider(FieldAdditionalDerivativesProvider<T> provider)
添加一个提供者,用于集成轨道传播过程中用户指定的状态导数。
|
<D extends FieldEventDetector<T>> |
addEventDetector(D detector)
添加一个事件探测器。
|
protected void |
afterIntegration()
在集成后调用的方法。
|
protected void |
beforeIntegration(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> tEnd)
在集成前调用的方法。
|
void |
clearEventsDetectors()
移除所有事件探测器。
|
protected abstract FieldStateMapper<T> |
createMapper(FieldAbsoluteDate<T> referenceDate, T mu, OrbitType orbitType, PositionAngleType positionAngleType, AttitudeProvider attitudeProvider, Frame frame)
创建原始双精度分量和航天器状态之间的映射器。
|
List<FieldAdditionalDerivativesProvider<T>> |
getAdditionalDerivativesProviders()
获取附加导数提供者的不可修改列表。
|
int |
getBasicDimension()
获取没有附加参数的状态向量维度。
|
int |
getCalls()
获取微分方程计算方法的调用次数。
|
FieldEphemerisGenerator<T> |
getEphemerisGenerator()
设置一个星历生成器,用于监视传播过程,以便在完成后从中构建星历。
|
Collection<FieldEventDetector<T>> |
getEventsDetectors()
获取所有已添加的事件探测器。
|
protected FieldSpacecraftState<T> |
getInitialIntegrationState()
获取集成的初始状态。
|
protected org.hipparchus.ode.FieldODEIntegrator<T> |
getIntegrator()
获取传播器使用的积分器。
|
String |
getIntegratorName()
获取积分器的名称。
|
protected abstract FieldAbstractIntegratedPropagator.MainStateEquations<T> |
getMainStateEquations(org.hipparchus.ode.FieldODEIntegrator<T> integ)
获取要集成的微分方程(仅适用于主状态)。
|
String[] |
getManagedAdditionalStates()
获取所有管理状态的名称。
|
T |
getMu()
获取中心引力系数 μ。
|
protected OrbitType |
getOrbitType()
获取传播参数类型。
|
protected PositionAngleType |
getPositionAngleType()
获取传播参数类型。
|
PropagationType |
getPropagationType()
获取传播类型。
|
boolean |
getResetAtEnd()
获取关于初始状态重置标志的getter。
|
protected void |
initMapper(org.hipparchus.Field<T> field)
初始化映射器。
|
boolean |
isAdditionalStateManaged(String name)
检查是否管理了附加状态。
|
protected PropagationType |
isMeanOrbit()
检查在半解析传播中是否仅使用平均元素。
|
FieldSpacecraftState<T> |
propagate(FieldAbsoluteDate<T> target)
朝向目标日期传播。
|
FieldSpacecraftState<T> |
propagate(FieldAbsoluteDate<T> tStart, FieldAbsoluteDate<T> tEnd)
从起始日期朝向目标日期传播。
|
void |
setAttitudeProvider(AttitudeProvider attitudeProvider)
设置姿态提供者。
|
void |
setMu(T mu)
设置中心引力系数 μ。
|
protected void |
setOrbitType(OrbitType orbitType)
设置传播轨道类型。
|
protected void |
setPositionAngleType(PositionAngleType positionAngleType)
设置位置角类型。
|
void |
setResetAtEnd(boolean resetAtEnd)
允许/禁止在传播结束时重置初始状态。
|
protected void |
setUpEventDetector(org.hipparchus.ode.FieldODEIntegrator<T> integ, FieldEventDetector<T> detector)
包装一个Orekit事件探测器并将其注册到积分器。
|
protected void |
setUpUserEventDetectors()
设置所有用户定义的事件探测器。
|
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getFrame, getInitialState, getMultiplexer, getPVCoordinates, getStartDate, initializeAdditionalStates, initializePropagation, resetInitialState, setStartDate, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearStepHandlers, setStepHandler, setStepHandler
getPosition
protected FieldAbstractIntegratedPropagator(org.hipparchus.Field<T> field, org.hipparchus.ode.FieldODEIntegrator<T> integrator, PropagationType propagationType)
integrator
- 用于传播的数值积分器。
propagationType
- 要输出的轨道类型(平均或瞬时)。
field
- 默认使用的字段
public void setResetAtEnd(boolean resetAtEnd)
默认情况下,在传播结束时,传播器将初始状态重置为最终状态,从而允许从那里开始新的传播,而无需重新计算已执行的部分。调用此方法并将resetAtEnd
设置为false会阻止此类重置。
resetAtEnd
- 如果为true,则在每次传播结束时,初始状态
将重置为传播的最终状态,否则将保留初始状态
public boolean getResetAtEnd()
protected void initMapper(org.hipparchus.Field<T> field)
field
- 默认使用的字段
public String getIntegratorName()
public void setAttitudeProvider(AttitudeProvider attitudeProvider)
setAttitudeProvider
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
setAttitudeProvider
在类 FieldAbstractPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
attitudeProvider
- 姿态提供者
protected void setOrbitType(OrbitType orbitType)
orbitType
- 用于传播的轨道类型
protected OrbitType getOrbitType()
protected PropagationType isMeanOrbit()
MEAN
,如果还需要使用瞬时元素,则返回OSCULATING
。
public PropagationType getPropagationType()
protected void setPositionAngleType(PositionAngleType positionAngleType)
positionAngleType
- 用于传播的角度类型
protected PositionAngleType getPositionAngleType()
public void setMu(T mu)
mu
- 中心引力系数(m³/s²)
public T getMu()
setMu(CalculusFieldElement)
public int getCalls()
每次调用propagate(FieldAbsoluteDate)
方法时,调用次数都会重置。
public boolean isAdditionalStateManaged(String name)
已管理的状态是传播器知道如何计算其演变的状态。它们对应于通过调用addAdditionalStateProvider
方法注册的额外状态提供者。如果传播器是一个基于积分器的传播器
,则通过调用addAdditionalDerivativesProvider
方法注册了一组额外导数提供者
的状态也被计为已管理的额外状态。
在初始状态
中存在但没有注册演变方法的额外状态不被视为已管理状态。尽管如此,这些未管理的额外状态在传播过程中不会丢失。它们的值在状态重置之间是分段常数,如果某个事件处理器resetState
方法在事件发生时被调用并且恰好更改了未管理的额外状态,则这些值可能会发生变化。
isAdditionalStateManaged
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
isAdditionalStateManaged
在类 FieldAbstractPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
name
- 额外状态的名称
public String[] getManagedAdditionalStates()
getManagedAdditionalStates
在接口 FieldPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
getManagedAdditionalStates
在类 FieldAbstractPropagator<T extends org.hipparchus.CalculusFieldElement<T>>
public void addAdditionalDerivativesProvider(FieldAdditionalDerivativesProvider<T> provider)
provider
- 额外导数的提供者
FieldAbstractPropagator.addAdditionalStateProvider(org.orekit.propagation.FieldAdditionalStateProvider)
public List<FieldAdditionalDerivativesProvider<T>> getAdditionalDerivativesProviders()
public <D extends FieldEventDetector<T>> void addEventDetector(D detector)
D
- 泛型版本的类类型
detector
- 要添加的事件探测器
FieldPropagator.clearEventsDetectors()
, FieldPropagator.getEventsDetectors()
public Collection<FieldEventDetector<T>> getEventsDetectors()
FieldPropagator.addEventDetector(FieldEventDetector)
, FieldPropagator.clearEventsDetectors()
public void clearEventsDetectors()
protected void setUpUserEventDetectors()
protected void setUpEventDetector(org.hipparchus.ode.FieldODEIntegrator<T> integ, FieldEventDetector<T> detector)
integ
- 要注册事件探测器的积分器
detector
- 要包装的事件探测器
public FieldEphemerisGenerator<T> getEphemerisGenerator()
当用户需要在初始时间和目标时间之间的任何时间快速随机访问轨道状态时,可以使用此生成器。一个典型的例子是实现可能在找到结果之前在传播范围内向前和向后导航的搜索和迭代算法,即使所使用的传播器是基于积分的并且只从一个初始时间到一个目标时间。
请注意,当与基于积分的传播器一起使用时,生成器将存储所有中间结果。因此,在长时间积分范围和高精度/短时间步长的情况下,它会占用大量内存。当与解析传播器一起使用时,生成器仅存储开始/停止时间和对解析传播器本身的引用,以便根据需要调用它,因此它的内存占用较低。
返回的星历生成器最初为空,当随后调用propagate(target)
或propagate(start, target)
时,它将填充传播数据。因此,使用此方法的正确方式是:
FieldEphemerisGenerator<T> generator = propagator.getEphemerisGenerator(); propagator.propagate(target); FieldBoundedPropagator<T> ephemeris = generator.getGeneratedEphemeris();
protected abstract FieldStateMapper<T> createMapper(FieldAbsoluteDate<T> referenceDate, T mu, OrbitType orbitType, PositionAngleType positionAngleType, AttitudeProvider attitudeProvider, Frame frame)
referenceDate
- 参考日期
mu
- 中心吸引系数(m³/s²)
orbitType
- 用于映射的轨道类型
positionAngleType
- 用于传播的角度类型
attitudeProvider
- 姿态提供者
frame
- 惯性参考系
protected abstract FieldAbstractIntegratedPropagator.MainStateEquations<T> getMainStateEquations(org.hipparchus.ode.FieldODEIntegrator<T> integ)
integ
- 用于传播的数值积分器。
public FieldSpacecraftState<T> propagate(FieldAbsoluteDate<T> target)
简单的传播器只使用目标日期来计算传播状态。更丰富功能的传播器可以考虑其他信息,并提供不同的操作模式或G-stop功能以在发生特定事件时停止。在这些情况下,目标日期只是一个提示,而不是强制性目标。
propagate
在接口 FieldPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
propagate
在类 FieldAbstractPropagator<T 扩展 org.hipparchus.CalculusFieldElement<T>>
target
- 应传播轨道状态的目标日期
public FieldSpacecraftState<T> propagate(FieldAbsoluteDate<T> tStart, FieldAbsoluteDate<T> tEnd)
这些传播器使用开始日期和目标日期来计算传播状态。对于使用事件检测机制的传播器,如果提供的开始日期与初始状态日期不同,则首先执行简单的传播,而不处理任何事件计算。然后从开始日期到目标日期执行完整传播。
tStart
- 应传播轨道状态的开始日期
tEnd
- 应传播轨道状态的目标日期
protected FieldSpacecraftState<T> getInitialIntegrationState()
protected void beforeIntegration(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> tEnd)
默认实现不执行任何操作,可以在子类中进行特化。
initialState
- 初始状态
tEnd
- 应传播状态的目标日期
protected void afterIntegration()
默认实现不执行任何操作,可以在子类中进行特化。
public int getBasicDimension()
protected org.hipparchus.ode.FieldODEIntegrator<T> getIntegrator()
Copyright © 2002-2023 CS GROUP. All rights reserved.