首页 > 解决方案 > Modelica:初始打印时只打印一次

问题描述

我在系统模型中多次使用的组件内有以下 Modelica 代码:

parameter fileName = "world.log"
equation  
  when initial() then
    if not Modelica.Utilities.Files.exist(fileName) then
      Streams.print("Hello World", fileName);
    end if;
  end when;

我希望在创建的文件中准确找到一行代码,但通常会打印 5 行或更多行,但有时它似乎按预期工作。在 Windows 10 上使用 Dymola 2019。有人可以澄清发生了什么吗?文件存在性检查似乎不可靠!?

标签: initializationmodelicadymolautilities

解决方案


when initial()根本与事件无关。它被转换为一个初始方程,因此可以执行多次。当只执行一次方程时,外部对象要可靠得多。


推荐阅读