如何使用先前的模拟解决方案初始化模型?

Sco*_*t G 5 modelica openmodelica dymola

再次用尽想法后,我转向您。

我确定必须先回答这个问题,尽管在我生命中我找不到明确的描述。

场景:

您需要努力工作,以通过初始猜测等方式建立所有模型,然后求解模型中所有参数的“真实”稳态(SS)条件。从这个解决方案中,我想研究事件对系统的影响。

为了执行与SS分析的偏差,最好能够简单地将Dymola已经生成的所有模型参数加载到SS solution .mat文件中。加载此解决方案不需要在执行与SS研究的偏差之前首先模拟模型以实现SS解决方案的任何需求。我可以认为,可能发生的步骤是在模拟的“初始化”阶段。

考虑到这似乎是一个重要的概念,我想应该从Modelica / Dymola开发的早期阶段就考虑这个想法。鉴于这些模型的尺寸很快变得非常大,手动提取每个参数似乎不合适。

题:

  1. 是否可以求解模型(.mat文件)的状态,然后将该模拟作为所有变量的“初始”值加载?(这将覆盖/替换系统中先前的初始猜测)
  2. 如果可能,如何实现?(运行一些脚本,一些隐藏的菜单选项,在模型/模拟中添加某种导入命令?)

非常感谢您的帮助。我正在使用Dymola 2016。

Sco*_*t G 5

我在上面发布的我自己的问题中找到了以下答案。

编辑:matth 还指出了以下有关该主题的有用参考: http : //claytex.com/blog/how-to-restart-a-simulation

这些是Dymola 的说明。我无法验证它们是否适用于其他基于 Modelica 的程序。我还在 Dymola 用户手册第 1 卷第 5.3.3 节模拟 > 继续 > 导入初始/继续中找到了一些文档。

1) 是的,可以从生成的 .mat 文件启动模型。您也可以从 dsfinal.txt 文件继续它。

2) 以下是使用 GUI 的步骤:

  • 备份“YOUR_MODEL.mat”文件(例如YOUR_MODEL_orig.txt)。运行模拟后,将创建一个新的 .mat 文件,您可能不想意外覆盖它。
  • 翻译您的模型。
  • 在功能区中,转到 Simulation > Continue > Import Initial。选择要继续模拟的 .mat 文件。
  • 将生成一个提示,要求输入具有指定范围的时间输入。这允许您在 .mat 模拟结果中的任何时间点继续模拟。
  • 转到仿真设置并选择新的仿真参数。如果您希望解决方案将开始时间注册为 0 而不是一些与初始 SS 模拟相关联的大数字,则将“开始时间”更新为 0。这不会影响用于来自 Model_Sim.mat 文件的参数数据的初始时间.
  • 现在模拟模型。将从您指定的点开始生成一个新的 .mat 文件。

替代方法:(虽然使用这种方法很奇怪,但似乎没有生成或更新 .mat 文件。)

  • 备份“dsfinal.txt”文件(例如dsfinal_orig.txt)。运行模拟后,将创建一个新的 dsfinal.txt 文件,您可能不想意外覆盖它。
  • 翻译您的模型。
  • 在功能区中,转到“模拟”>“继续”>“继续”。一旦按下此选项,模拟将开始使用路径上的任何 dsfinal.txt 文件。
  • 模拟现在将从生成 dsfinal.txt 文件的模拟的最终条件继续。
  • 如果希望在时间 0 开始,则可以修改 dsfinal.txt 文件(对我来说是第 9、10 和 12 行),它对应于模拟开始 (9)、停止 (10) 和时间步数 (12) . 这似乎可以解决问题。