Modelica:初始打印时只打印一次

Modelica: when initial print only once

我有以下 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。 有人可以澄清发生了什么吗?文件存在性检查似乎不可靠!?

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

根据之前的回答和评论,以下似乎可行:

parameter fileName = "world.log"
protected 
Modelica.SIunits.Time startTime;

equation  
  when initial() then
    startTime := time;
  end when; 
  when time >= startTime then
    if not Modelica.Utilities.Files.exist(fileName) then
      Streams.print("Hello World", fileName);
    end if;
  end when;