在使用Python在Modelica中模拟它之前翻译模型

时间:2017-12-05 18:22:49

标签: python-2.7 dymola

我正在尝试使用Python运行Dymola,每次我更改参数的值时,通过许多“if elseif”使用不同的方程来激活和取消激活相应的方程式。

我正在使用此代码:

def simulateModel(model,startTime,stopTime,resultFile,initialNames,initialValues,finalNames):

output = dymola.simulateExtendedModel(model,
                                      startTime=startTime,
                                      stopTime=stopTime,
                                      numberOfIntervals=500,
                                      outputInterval=0.0,
                                      method="Dassl",
                                      tolerance=0.0001,
                                      fixedstepsize=0.0,
                                      resultFile=resultFile,
                                      initialNames=initialNames,
                                      initialValues=initialValues,
                                      finalNames=finalNames,
                                      autoLoad=False)

status = output[0]

if not status:
    print("Simulation failed.")
    log = dymola.getLastError()
    print(log)
    return

result = output[1]
return result

问题在于,当我为参数定义我的新值时,脚本会在模型中更改它们,但它会继续使用上次直接在Dymola上运行程序的同一组方程式,这不是案子, 该程序没有考虑到参数改变了要使用的方程组。

有什么建议吗? 此致

1 个答案:

答案 0 :(得分:1)

以下是我的表现方式:

dymola = DymolaInterface() 

## This sends the string right to Dymola, in this case to open a Model.
dymola.ExecuteCommand('DymolaCommands.SimulatorAPI.openModel("Path\To\your\file.mo", changeDirectory=false);')

## Now Translate the Model for every time you want to assign certain variables
ModelTranslate = "Dymola.Path.To.Your.Model(Dymola.Path.to.Variable=1000)"
dymola.translateModel(ModelTranslate)
output = dymola.simulateExtendedModel("", 0.0, 2678400, 0, 0.0, "Dassl", 0.0001, 0.0, Result, [], [], ["Path.To.Output" ], True)

但是,我只使用Python 3的界面,我依稀记得它在用户手册中说了一些关于只与Python 3兼容的东西。但你应该在其他编程环境下的用户手册2中找到它。