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