You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OMPython的setParameters修改参数Nass报错的技术咨询

解决OMPython修改Modelica参数Nass的错误问题

根据错误提示,参数Nass属于结构性、final、protected类型,或者绑定了非常量表达式,无法用setParameters()直接修改。需要改用OpenModelica底层API设置参数,再重新构建模型,具体操作如下:

核心修正步骤

  • 用OMCSessionZMQ的sendExpression调用原生setParameterValue函数设置参数
  • 参数修改后必须重新调用buildModel()编译模型,确保参数生效

修正后的完整代码

from OMPython import ModelicaSystem
from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
modelpath="C:/work/code/modelica/"
Nom_fichier_mo="CyclicLoading.mo"
Nom_fich="CyclicLoading"
fich_res_Modelica_mat="Resultat_av_CyclicLoading.mat"
mod=ModelicaSystem(modelpath+Nom_fichier_mo,Nom_fich,["Modelica","CyclicLoading"])

# 先设置参数再构建模型
omc.sendExpression('setParameterValue(CyclicLoading, Nass, 12000)', parsed=False)
mod.buildModel()

Directory_cd=omc.sendExpression("cd()")
resultatSimluation=mod.simulate(resultfile=f"{fich_res_Modelica_mat}")
Solution_var=mod.getSolutions()

如果需要先构建模型再修改参数,可调整为:

from OMPython import ModelicaSystem
from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
modelpath="C:/work/code/modelica/"
Nom_fichier_mo="CyclicLoading.mo"
Nom_fich="CyclicLoading"
fich_res_Modelica_mat="Resultat_av_CyclicLoading.mat"
mod=ModelicaSystem(modelpath+Nom_fichier_mo,Nom_fich,["Modelica","CyclicLoading"])

mod.buildModel()
# 修改参数后重新编译模型
omc.sendExpression('setParameterValue(CyclicLoading, Nass, 12000)', parsed=False)
mod.buildModel()

Directory_cd=omc.sendExpression("cd()")
resultatSimluation=mod.simulate(resultfile=f"{fich_res_Modelica_mat}")
Solution_var=mod.getSolutions()

关键说明

  • setParameterValue(CyclicLoading, Nass, 12000)是OpenModelica原生函数,可处理setParameters()无法修改的特殊参数
  • parsed=False确保表达式按原始格式传递给OpenModelica解析
  • 重新调用buildModel()是必须步骤,否则参数修改不会生效

内容的提问来源于stack exchange,提问作者Faruk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:57:36