类 FieldDetectorBasedEventState<T extends CalculusFieldElement<T>>
java.lang.Object
org.hipparchus.ode.events.FieldDetectorBasedEventState<T>
- 类型参数:
-
T
- 字段元素的类型
- 所有已实现的接口:
-
FieldEventState<T>
public class FieldDetectorBasedEventState<T extends CalculusFieldElement<T>> extends Object implements FieldEventState<T>
此类在积分步骤期间处理一个
事件处理器
的状态。
每当积分器提出一步时,应检查事件处理器切换函数。此类在一次积分步骤中处理一个处理程序的状态,其中包含对前一步结束时的状态的引用。此信息用于决定处理程序是否应在建议的步骤中触发事件。
-
构造器概要
-
方法概要
修饰符和类型方法说明doEvent
(FieldODEStateAndDerivative<T> state) 通知用户的监听器事件。boolean
evaluateStep
(FieldODEStateInterpolator<T> interpolator) 评估建议步骤对事件处理程序的影响。获取基础事件探测器。获取当前步骤中触发的事件的发生时间。void
init
(FieldODEStateAndDerivative<T> s0, T t) 在积分开始时初始化事件处理程序。void
reinitializeBegin
(FieldODEStateInterpolator<T> interpolator) 重新初始化步骤的开始。boolean
tryAdvance
(FieldODEStateAndDerivative<T> state, FieldODEStateInterpolator<T> interpolator) 尝试接受到给定时间的当前历史记录。
-
构造器详细资料
-
FieldDetectorBasedEventState
简单构造函数。- 参数:
-
detector
- 事件探测器 - 从以下版本开始:
- 3.0
-
-
方法详细资料
-
getEventDetector
获取基础事件探测器。- 返回:
- 基础事件探测器
- 从以下版本开始:
- 3.0
-
init
在积分开始时初始化事件处理程序。此方法在积分开始时调用一次。如果需要,事件处理程序可以使用此方法初始化一些内部数据。
- 指定者:
-
init
在接口中FieldEventState<T extends CalculusFieldElement<T>>
- 参数:
-
s0
- 初始状态 -
t
- 积分的目标时间
-
reinitializeBegin
public void reinitializeBegin(FieldODEStateInterpolator<T> interpolator) throws MathIllegalStateException 重新初始化步骤的开始。- 参数:
-
interpolator
- 适用于当前步骤 - 抛出:
-
MathIllegalStateException
- 如果插值器因函数评估次数超过而抛出异常
-
evaluateStep
public boolean evaluateStep(FieldODEStateInterpolator<T> interpolator) throws MathIllegalArgumentException, MathIllegalStateException 评估建议步骤对事件处理程序的影响。- 指定者:
-
evaluateStep
在接口中FieldEventState<T extends CalculusFieldElement<T>>
- 参数:
-
interpolator
- 建议步骤的插值器 - 返回:
- 如果事件处理程序在建议步骤结束之前触发事件,则为true
- 抛出:
-
MathIllegalStateException
- 如果插值器因函数评估次数超过而抛出异常 -
MathIllegalArgumentException
- 如果无法找到事件的区间
-
tryAdvance
public boolean tryAdvance(FieldODEStateAndDerivative<T> state, FieldODEStateInterpolator<T> interpolator) 尝试接受到给定时间的当前历史记录。在调用
doEvent(FieldODEStateAndDerivative)
之前不需要调用此方法,与相同状态调用doEvent(FieldODEStateAndDerivative)
是必要的。在调用其他事件探测器的doEvent(FieldODEStateAndDerivative)
之前需要调用此方法。- 参数:
-
state
- 要尝试接受的状态 -
interpolator
- 用于查找新根(如果有)的插值器 - 返回:
-
如果事件探测器有一个事件在与
state
相同时间或之前触发的事件。换句话说,false
表示继续,而true
表示停止并首先处理我的事件。
-
doEvent
通知用户的监听器事件。事件完全在此方法调用中发生,包括必要时调用FieldODEEventHandler.resetState(FieldODEEventDetector, FieldODEStateAndDerivative)
。- 指定者:
-
doEvent
在接口中FieldEventState<T extends CalculusFieldElement<T>>
- 参数:
-
state
- 事件发生时的状态。这必须与getEventTime()
的当前值相同。 - 返回:
-
用户请求的操作和新状态(如果操作是
Action.RESET_STATE
)。否则新状态为state
。停止时间指示如果操作是Action.STOP
,则积分应该停止的时间。这保证了积分将在或之后停止根,以便可以安全地重新启动积分。
-
getEventTime
获取当前步骤中触发的事件的发生时间。- 指定者:
-
getEventTime
在接口中FieldEventState<T extends CalculusFieldElement<T>>
- 返回:
- 当前步骤中触发的事件的发生时间,如果没有触发事件则为无穷大
-