public class TimeSpanDragForce extends AbstractDragForceModel
这个类与DragForce
类密切相关。
不同之处在于它具有一个TimeSpanMap
,其中包含一系列DragSensitive
对象,而不是单个DragSensitive
对象。
这个模型的理念是允许用户设计一个阻力模型,该模型可以看到其物理参数(阻力系数和升力比)随时间变化,用户选择的日期发生在这些变化之时。
这是在操作轨道确定中寻求的行为。
实际上,太阳活动对当地大气密度有很大影响,从而影响阻力效应。
太阳活动是一个难以建模和预测的物理现象。
由此不完全建模引起的误差可以通过阻力系数来估计。
能够根据用户选择的日期以分段方式定义和估计阻力系数,可以更好地对太阳活动的不确定性进行建模。
一个典型的操作用例是每天获得国际组织(例如NOAA)提供的每三小时磁指数的太阳活动。
有了这个输入,用户可以定义一个分段阻力模型,其中包含每天或每三小时的阻力系数。
每个定时系数将吸收太阳活动中的一部分不确定性,并将允许更准确的轨道确定
addDragSensitiveValidAfter(DragSensitive, AbsoluteDate)
或addDragSensitiveValidBefore(DragSensitive, AbsoluteDate)
添加DragSensitive模型。TimeSpanMap
中的推荐相同,即:
ParameterDriver
(们)指定自定义名称。这将允许您跟踪模型的演变。DragSensitive.DRAG_COEFFICIENT
”;addDragSensitiveValidAfter(DragSensitive, AbsoluteDate)
:驱动器的默认名称为“DragSensitive.DRAG_COEFFICIENT
+ DATE_AFTER
+ date.toString()”addDragSensitiveValidBefore(DragSensitive, AbsoluteDate)
:驱动器的默认名称为“DragSensitive.DRAG_COEFFICIENT
+ DATE_BEFORE
+ date.toString()”atmosphere
:一个大气模型
;isotropicDrag0, 1和2
:三个IsotropicDrag
模型;date
:一个AbsoluteDate
。isotropicDrag0.getDragParametersDrivers()[0].setName = "Cd0";
isotropicDrag1.getDragParametersDrivers()[0].setName = "Cd1";
isotropicDrag2.getDragParametersDrivers()[0].setName = "Cd2";
TimeSpanDragForce force = new TimeSpanDragForce(atmosphere, isotropicDrag0);
force.addDragSensitiveValidAfter(isotropicDrag1, date.shiftedBy(Constants.JULIAN_DAY));
force.addDragSensitiveValidAfter(isotropicDrag2, date.shiftedBy(2 * Constants.JULIAN_DAY));
警告:
TimeSpanDragForce模型是多功能的,您可能会得到非物理建模。
例如,您可以添加具有不同面积的2个IsotropicDrag
模型,或一个IsotropicDrag
模型,然后一个BoxAndSolarArraySpacecraft
模型。
您需要确保您的模型彼此一致,Orekit不会对此执行任何检查。
Modifier and Type | Field and Description |
---|---|
static String |
DATE_AFTER
日期后缀在参数驱动器名称中的前缀。
|
static String |
DATE_BEFORE
日期前缀在参数驱动器名称中的前缀。
|
DATATION_ACCURACY
Constructor and Description |
---|
TimeSpanDragForce(Atmosphere atmosphere, DragSensitive spacecraft)
使用默认UTC时间刻度的构造函数,用于阻力参数驱动器的默认名称。
|
TimeSpanDragForce(Atmosphere atmosphere, DragSensitive spacecraft, TimeScale timeScale)
构造函数。
|
Modifier and Type | Method and Description |
---|---|
<T extends org.hipparchus.CalculusFieldElement<T>> |
acceleration(FieldSpacecraftState<T> s, T[] parameters)
计算加速度。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
acceleration(SpacecraftState s, double[] parameters)
计算加速度。
|
void |
addDragSensitiveValidAfter(DragSensitive dragSensitive, AbsoluteDate earliestValidityDate)
在限制日期之后添加一个DragSensitive条目。
使用 addDragSensitiveValidAfter(entry, t) 将使entry 在[t,+∞[中有效(请注意闭合括号)。
|
void |
addDragSensitiveValidBefore(DragSensitive dragSensitive, AbsoluteDate latestValidityDate)
在限制日期之前添加一个DragSensitive条目。
使用 addDragSensitiveValidBefore(entry, t) 将使entry 在]-∞,t[中有效(请注意开放括号)。
|
TimeSpanMap<DragSensitive> |
extractDragSensitiveRange(AbsoluteDate start, AbsoluteDate end)
提取 DragSensitive 映射的范围。
|
double[] |
extractParameters(double[] parameters, AbsoluteDate date)
从输入的数组中提取 acceleration 方法的正确参数驱动器值。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
extractParameters(T[] parameters, FieldAbsoluteDate<T> date)
从输入的数组中提取 acceleration 方法的正确参数驱动器值。
|
DragSensitive |
getDragSensitive(AbsoluteDate date)
获取在日期有效的 DragSensitive 模型。
|
TimeSpanMap.Span<DragSensitive> |
getDragSensitiveSpan(AbsoluteDate date)
获取包含指定日期的 DragSensitive TimeSpanMap.Span 。
|
Stream<EventDetector> |
getEventDetectors()
获取与模型相关的离散事件。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getFieldEventDetectors(org.hipparchus.Field<T> field)
获取与模型相关的离散事件。
|
TimeSpanMap.Span<DragSensitive> |
getFirstSpan()
获取阻力敏感时间跨度映射的第一个 时间跨度 。
|
List<ParameterDriver> |
getParametersDrivers()
获取参数的驱动器。
|
dependsOnPositionOnly, getDSDensityWrtStateUsingFiniteDifferences, getGradientDensityWrtStateUsingFiniteDifferences, isDSStateDerivative, isGradientStateDerivative, isVariable, isVariable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addContribution, addContribution, init, init
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
getEventDetectors, getFieldEventDetectors
@DefaultDataContext public TimeSpanDragForce(Atmosphere atmosphere, DragSensitive spacecraft)
atmosphere
- 大气模型
spacecraft
- 用于阻力参数驱动器的默认名称的时间刻度
public TimeSpanDragForce(Atmosphere atmosphere, DragSensitive spacecraft, TimeScale timeScale)
atmosphere
- 大气模型
spacecraft
- 初始对象的物理和几何信息
timeScale
- 用于阻力参数驱动器的默认名称的时间刻度
public void addDragSensitiveValidBefore(DragSensitive dragSensitive, AbsoluteDate latestValidityDate)
addDragSensitiveValidBefore(entry, t)
将使entry
在]-∞,t[中有效(请注意开放括号)。
dragSensitive
- DragSensitive条目
latestValidityDate
- 条目有效的日期(必须与已用于转换的所有日期不同)
public void addDragSensitiveValidAfter(DragSensitive dragSensitive, AbsoluteDate earliestValidityDate)
addDragSensitiveValidAfter(entry, t)
将使entry
在[t, +∞[范围内有效(请注意闭合括号)。
dragSensitive
- DragSensitive条目
earliestValidityDate
- 条目有效的日期(必须与已用于转换的所有日期不同)
public DragSensitive getDragSensitive(AbsoluteDate date)
DragSensitive
模型。
date
- 有效日期
public TimeSpanMap.Span<DragSensitive> getDragSensitiveSpan(AbsoluteDate date)
DragSensitive
TimeSpanMap.Span
。
date
- 属于所需时间跨度的日期
public TimeSpanMap<DragSensitive> extractDragSensitiveRange(AbsoluteDate start, AbsoluteDate end)
start
- 包含在范围内的最早转换日期(可以设置为AbsoluteDate.PAST_INFINITY
以保留所有早期转换)
end
- 包含在范围内的最晚转换日期(可以设置为AbsoluteDate.FUTURE_INFINITY
以保留所有晚期转换)
public TimeSpanMap.Span<DragSensitive> getFirstSpan()
时间跨度
。
时间跨度
public org.hipparchus.geometry.euclidean.threed.Vector3D acceleration(SpacecraftState s, double[] parameters)
s
- 当前状态信息:日期、运动学、姿态
parameters
- 状态日期处的力模型参数值,每个parameterDriver仅有1个值
public <T extends org.hipparchus.CalculusFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
T
- 元素的类型
s
- 当前状态信息:日期、运动学、姿态
parameters
- 状态日期处的力模型参数值,每个parameterDriver仅有1个值
public Stream<EventDetector> getEventDetectors()
此方法不应被多次调用,只能由一个传播器调用一次,因为每次调用都会重新构建事件检测器。
日期检测器用于干净地停止传播器并在转换日期重置状态导数。
public <T extends org.hipparchus.CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventDetectors(org.hipparchus.Field<T> field)
此方法不应被多次调用,只能由一个传播器调用一次,因为每次调用都会重新构建事件检测器。
日期检测器用于干净地停止传播器并在转换日期重置状态导数。
T
- 扩展CalculusFieldElement<T>的类型
field
- 状态所属的域
public List<ParameterDriver> getParametersDrivers()
返回所有DragSensitive模型的所有参数驱动程序的数组。模型按时间顺序排序。
public double[] extractParameters(double[] parameters, AbsoluteDate date)
acceleration
方法的正确参数驱动程序值。根据输入日期过滤参数。
parameters
- 输入参数数组
date
- 日期
public <T extends org.hipparchus.CalculusFieldElement<T>> T[] extractParameters(T[] parameters, FieldAbsoluteDate<T> date)
acceleration
方法的正确参数驱动程序值。根据输入日期过滤参数。
T
- 扩展CalculusFieldElement的类型
parameters
- 输入参数数组
date
- 日期
Copyright © 2002-2023 CS GROUP. All rights reserved.