如何正确使用“setComponentModifierValue”命令在OpenModeli中设置双精度数组

2024-09-21 05:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

   **DICTIONARY CONTENTS CHANGE ORDER! WHY ?**

我指定的字典内容更改顺序! 我赋值Fc={0.25,0.4,0.1,0.001,0.0491,0.06},然后在python3.6.7 Shell中得到Fc='{0.25,0.4,0.1,0.06,0.0491,0.001}'。为什么会这样? 我的目的是使用setComponentModifierValue命令更改模拟的修饰符值。你知道吗

我只找到了一个变量b=0.5的例子omc.send表达式(“setComponentModifierValue(structure\u test\u final\u no\u payload,Fc,$Code(“+str(b)+)”),但是当有人想要更改数组时会发生什么。不

在OpenModelica中,Fc定义为: 参数Real Fc[6]={0.55,1.2,0.5,0.05,0.0491,0.08}

以及 omc.send表达式(“getComponentModifierValue(结构\测试\最终\无\有效负载,Fc)”) 是 '{0.55,1.2,0.5,0.05,0.0491,0.08}'

而不是{0.25,0.4,0.1,0.001,0.0491,0.06}

我得到{0.25,0.4,0.1,0.06,0.0491,0.001}


Tags: send内容dictionary字典顺序表达式contentsorder
1条回答
网友
1楼 · 发布于 2024-09-21 05:36:07

不要用大括号{。。。}在Python中,这些是没有顺序的集。改用列表。你知道吗

from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
x = omc.sendExpression("cd()")
print("Got:" + str(x) + "\n");  
loadFile = "loadFile(\"" + str(x) + "/m.mo\")"
print("loadFile: " + loadFile + "\n")
x = omc.sendExpression(loadFile)
print("Got:" + str(x) + "\n")
x = omc.sendExpression("getErrorString()")
print("Got:" + str(x) + "\n")
x = omc.sendExpression("getComponentModifierValue(structure_test_final_no_payload, Fc)")
print("Got:" + str(x) + "\n")

Fc= [0.25, 0.4, 0.1, 0.001, 0.0491, 0.06]
print("Fc: " + str(Fc) + "\n")
strFc = "{" + ",".join(map(str, Fc)) + "}"
print("strFc: " + strFc + "\n")
x = omc.sendExpression("setComponentModifierValue(structure_test_final_no_payload, Fc, $Code(="+strFc+"))")
print("Got:" + str(x) + "\n")
x = omc.sendExpression("getErrorString()")
print("Got:" + str(x) + "\n")
x = omc.sendExpression("getComponentModifierValue(structure_test_final_no_payload, Fc)")
print("Got:" + str(x) + "\n")
x = omc.sendExpression("list(structure_test_final_no_payload)")
print("Got:" + str(x) + "\n")

运行此操作的结果是:

$ /e/bin/python64/python test.py
2019-01-22 22:56:23,647 - OMPython - INFO - OMC Server is up and running at file:///c:/users/adrpo33/appdata/local/temp/openmodelica.port.558379ad46714b13bcd0c6aeb065c0a4 pid=22996
Got:C:/home/adrpo33/dev/OMTesting/python
loadFile: loadFile("C:/home/adrpo33/dev/OMTesting/python/m.mo")
Got:True
Got:
Got:{0.55, 1.2, 0.5, 0.05, 0.0491, 0.08}
Fc: [0.25, 0.4, 0.1, 0.001, 0.0491, 0.06]    
strFc: {0.25,0.4,0.1,0.001,0.0491,0.06}    
Got:Ok    
Got:    
Got:{0.25, 0.4, 0.1, 0.001, 0.0491, 0.06}
Got:model structure_test_final_no_payload
  parameter Real Fc[6] = {0.25, 0.4, 0.1, 0.001, 0.0491, 0.06};
end structure_test_final_no_payload;

文件m.mo包含:

model structure_test_final_no_payload
  parameter Real Fc[6] = {0.55, 1.2, 0.5, 0.05, 0.0491, 0.08};
end structure_test_final_no_payload;

相关问题 更多 >

    热门问题