回调
请勿将本文描述的回调与link:https://docs.sciml.ai/DiffEqCallbacks/stable/ 库 [DiffEqCallbacks.jl] 的回调混淆。有关使用它们的更多详情,请参阅此处。 |
回调(Callbacks)是针对模型中的某些事件自动调用的函数。回调 Engee 是在编程语言Julia 中创建的。
要打开回调,请进入设置窗口 ,然后点击 编辑源代码
:
在打开的菜单中,所有 Engee 回调都可用。它们默认为空,不包含任何代码:
所有 Engee 回调可大致分为 4 组:
打开模型 | 执行模型 | 保存模型 | 关闭模型 |
---|---|---|---|
预加载函数 后加载函数 |
初始化
暂停 继续 `StopFunc |
预保存 后保存 |
关闭 |
打开模型 |
||||
---|---|---|---|---|
用于配置模型打开前后的行为。 有关模型打开回调的更多信息_.*有用的回调:PreLoadFunc"(打开)和 "PostLoadFunc"(关闭)。 说明:
|
模型的执行 |
---|
在模拟过程中使用。 有关模型执行回调的更多信息_.*使用的回调:InitFunc`(初始化)、 当模型启动和仿真过程至少停止一次时,所有这些函数都将被触发。 *说明
|
保存模型 |
---|
用于保存模型。 有关保存模型回调的更多信息_.*使用的回调:PreSave"(保存前)、"PostSave"(保存后) 说明:
|
关闭模型 |
||
---|---|---|
关闭模型时使用。 有关模型关闭回调的更多信息_.*使用的回调:CloseFunc` (关闭) 描述:
|
操作示例
有关回调操作的示例,请访问链接。
您可以为 Engee 中的每个回调分配一个变量。例如,在 "PreLoadFunc "模型打开回调中,您可以使用以下代码:
#переменные открытия модели
PreL = 1 #выполняется до загрузки модели
PostL = 0 #выполняется после загрузки модели
# переменные выполнения модели
Init = 0 #выполняется после компиляции модели
Start = 0 #выполняется до первого шага симуляции
Pause = 0 #вызывается в случае паузы симуляции
Continue = 0 #выполняется на одном шаге при запуске модели после паузы
Stop = 0 #выполняется во время остановки симуляции
#переменные сохранения модели
PreS = 0 #выполняется перед сохранением модели
PostS = 0 #выполняется после сохранения модели
#переменные закрытия модели
Close = 0 #выполняется после закрытия модели
这段代码将变量初始化为空值。与模型打开相关联的 PreL
变量等于 1,因为其参数会在模型加载(始终执行)之前和之后加载。例如,在 StartFunc
模型执行回调中,可以设置 Start = 1
变量。如果回调成功执行,变量值将从 0
(未执行)变为 1
(已执行)。您可以使用变量窗口监控回调的执行情况:
每次触发回调时,都会更新变量,然后显示变量值,以便分析和调试仿真过程。