问题:
写下面这段代码时,保存时没有出错,但执行时提示找不到initialState这个函数。
when time > redTime then
state1 := Modelica.Math.Random.Generators.Xorshift64star.initialState(localSeed1, globalSeed1);
(random1, state1) := Modelica.Math.Random.Generators.Xorshift64star.random(pre(state1));
end when;
解决方法:
在Libraries中查找时发现Math目录下没有Random(如图一所示),在安装目录下查找发现其实Math目录下是一个个mo文件(如图二所示),于是想试试从网上下载mo文件,然后添加进来能不能解决问题。
在https://github.com/modelica/ModelicaStandardLibrary这个网址下载了标准库,然后解压,把其中的***\ModelicaStandardLibrary-master\Modelica\MathRandom.mo(图三)复制粘贴到***\OpenModelica-v1.9.7\lib\omlibrary\Modelica 3.2.1\Math目录下,问题圆满解决。
图一
图二
图三
总结:
1.猜测是由于版本原因,旧版本可能没有某些库,本来担心会有版本兼容问题,但测试后发现能运行
2.安装版本是OpenModelica-v1.9.7,用的modelica标准库是3.2.1
3.在github上看到的modelica标准库当前release版本是3.2.2 Modelica Standard Library v3.2.2 (2016-04-03)