对于我的一个模型,需要读取所有变量的最终值并将其设置为下一次仿真的初始值。我真正的问题是由于OMShell中定义的类型。从OpenModelica的the scripting commands中可以看出,有String类型和“ VariableName”,“ TypeName”类型。要详细说明差异:

// The following loads the Standard Modelica Library
>> loadModel(Modelica)
true

// The following throws an error
>> loadModel("Modelica")


原因是loadModel函数不需要字符串变量。它需要模型的名称。返回我的问题,我尝试按以下方法使用val函数,以便可以将该值作为下一个模拟的初始值。

>> final_time := 200;
>> myVarValue := val(myVar, final_time);


可以通过使用for循环为每个变量完成此操作,我以为我有几个变量,因此我意识到了这个问题。

// Get the list of all variables
>> myVarList := readSimulationResultVars(currentSimulationResult);
>> size(myVarList)
{724}

// The problem is that this list contains strings
>> myVarList[1]
"mySubSystem.myComponent.myPin.v"

// Following throws an error as it doesn't expect a string
>> val(myVarList[1], final_time)


如何从OMShell返回给我的字符串中删除“”?我需要将“ myVar”转换为myVar,以便可以将其用作OMShell功能的输入。

最佳答案

您可以使用stringVariableName功能。

>>> vars:=OpenModelica.Scripting.readSimulationResultVars(currentSimulationResult)
{"r","time"}
>>> val(stringVariableName(vars[1]), 0.0)
1.0

关于modelica - OMShell返回字符串,但无法识别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45756551/

10-10 14:33