OMShell返回String但不识别它

时间:2017-08-18 12:22:34

标签: modelica openmodelica

对于我的一个模型,需要读取所有变量的最终值并将它们设置为下一个模拟的初始值。我真正的问题是由于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-loop 对每个变量进行此操作,我认为我有几个变量,此时我意识到了这个问题。

// 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功能的输入。

1 个答案:

答案 0 :(得分:3)

您可以使用stringVariableName功能。

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