接口 ODEStepEndHandler
public interface ODEStepEndHandler
此接口表示在每个步骤结束时触发的离散事件处理程序。
- 从以下版本开始:
- 3.0
- 另请参阅:
-
方法概要
修饰符和类型方法说明default void
init
(ODEStateAndDerivative initialState, double finalTime) 在ODE积分开始时初始化步骤结束处理程序。default ODEState
resetState
(ODEStateAndDerivative state) 在继续积分之前重置状态。stepEndOccurred
(ODEStateAndDerivative state, boolean forward) 处理事件并选择下一步操作。
-
方法详细资料
-
init
在ODE积分开始时初始化步骤结束处理程序。此方法在积分开始时调用一次。如果需要,步骤结束处理程序可以用来初始化一些内部数据。
默认实现不执行任何操作
- 参数:
-
initialState
- 初始时间、状态向量和导数 -
finalTime
- 积分的目标时间
-
stepEndOccurred
处理事件并选择下一步操作。当积分器接受在步骤结束时触发的事件时,此方法被调用(在步骤处理程序本身被调用之后)。它允许用户更新内部数据以确认事件已被处理(例如,在出现不连续性时,在
微分方程
中设置一个标志以切换导数计算),或者指示积分器停止或继续积分,可能需要重置状态或导数。- 如果返回
Action.STOP
,积分将停止, - 如果返回
Action.RESET_STATE
,一旦步骤处理程序完成其任务,将调用resetState
方法,并且积分器还将重新计算导数, - 如果返回
Action.RESET_DERIVATIVES
,积分器将重新计算导数, - 如果返回
Action.RESET_EVENTS
,积分器将重新检查所有事件处理程序, - 如果返回
Action.CONTINUE
,将不会采取特定操作(除了调用此方法),积分将继续。
此方法与
ODEStepHandler
方法handleStep(interpolator)
之间的调度是先调用handleStep
,然后调用此方法。这种调度允许此方法调用的用户代码和步骤处理程序调用的用户代码获取与积分方向一致的独立时间变量的值。- 参数:
-
state
- 步骤结束时独立时间变量、状态向量和导数的当前值 -
forward
- 如果为true,则传播是向前的 - 返回:
-
指示积分器应该下一步执行的操作,此值必须是
Action.STOP
、Action.RESET_STATE
、Action.RESET_DERIVATIVES
、Action.RESET_EVENTS
或Action.CONTINUE
之一
- 如果返回
-
resetState
在继续积分之前重置状态。此方法在步骤处理程序返回后且下一步开始之前调用,但仅当
ODEEventHandler.eventOccurred(ODEStateAndDerivative, ODEEventDetector, boolean)
本身返回Action.RESET_STATE
指示时。它允许用户重置下一步的状态向量,而不干扰完成步骤的步骤处理程序。默认实现返回其参数。
- 参数:
-
state
- 步骤结束时独立时间变量、状态向量和导数的当前值 - 返回:
- 重置状态(请注意,它不包括导数,导数将由积分器自动添加)
-