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