如何解决Dymola中矢量化Modelica冷水机组模型性能曲线输入报错?
问题描述
我正尝试在Dymola中使用Modelica Buildings库对Buildings.Fluid.Chillers.ElectricEIR冷水机组模型进行矢量化,所有机组的输入与性能曲线均一致,具备矢量化条件。但检查模型时多次出现错误提示:
"Wrong number of indices in datChi[1]. There should be zero indices."(datChi[2]也存在相同索引数量错误)
当前性能曲线参数定义:
parameter Path.ElectricEIRChiller_York_YK_Q3QQK3_5663kW_6_79COP_Vanes datChi;
当前冷水机组定义:
Buildings.Fluid.Chillers.ElectricEIR Chi[numChi]( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, show_T=true, per=datChi, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, dp1_nominal=dpCon_nominal, dp2_nominal=dpEva_nominal) "Vectorized chiller model"
我已将冷水机组隔离为仅包含机组、源和汇的模型,错误仍存在。也曾尝试对性能曲线进行矢量化,修改后的参数定义如下:
parameter Path.ElectricEIRChiller_York_YK_Q3QQK3_5663kW_6_79COP_Vanes datChi;
但这会导致性能曲线相关参数定义出错,例如原语句mCon_flow_nominal = datChi.mCon_flow_nominal;出现“左侧为标量,右侧为向量”的错误,而我希望保留标称参数为标量。
解决方案
- 问题根源:矢量化的冷水机组模型
Chi期望per参数为同维度的参数数组,但传入的datChi是标量,Dymola自动扩展时触发索引解析错误。 - 无需将
datChi矢量化,利用Modelica参数数组自动映射特性,直接给数组实例传入标量性能参数即可:- 保持
datChi的标量定义不变:parameter Path.ElectricEIRChiller_York_YK_Q3QQK3_5663kW_6_79COP_Vanes datChi; - 若原机组定义仍报错,显式用数组构造器为每个机组实例绑定
datChi:Buildings.Fluid.Chillers.ElectricEIR Chi[numChi]( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, show_T=true, per={datChi for i in 1:numChi}, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, dp1_nominal=dpCon_nominal, dp2_nominal=dpEva_nominal) "Vectorized chiller model" - 标称参数的标量需求:只要
datChi是标量,datChi.mCon_flow_nominal就是标量,不会出现“左侧标量、右侧向量”的错误。之前的错误是误将datChi定义为向量导致的,保持其标量属性即可解决。
- 保持
内容的提问来源于stack exchange,提问作者Julia
相关产品推荐
相关产品推荐

