我试图将模型(块)的参数定义为变量。例如:
Real WallThickness = 0.5;
Real WallConductance = 10*WallThickness;
Modelica.Thermal.HeatTransfer.Components.ThermalConductor TopPanelConductor(G=WallConductance);
我想定义" G"因此它在整个模拟过程中保持不变,但系数在模拟之前根据另一个变量" WallThickness"进行更新。定义ThermalConductor参数" G"作为模型中的变量,正在其他地方计算,我收到错误消息:
The variability of the definition equation:
TopPanelConductor.G = WallConductance;
is higher than the declared variability of the variables.
我想将模型的参数定义为变量。这允许我创建参数定义作为所有更改的几何。有没有办法让这个定义有效?
答案 0 :(得分:3)
您的意思是模拟过程中的几何变化?如果是这样,您将不得不重写ThermalConductor模型以使用变量 G
,因为无法将变量分配给参数。变量可能在模拟过程中发生变化。参数在模拟开始时是固定的,但可以在不重新编译模型的情况下从一次运行更改为运行,这样可以更快地进行迭代/设计工作。
请注意,您还可以根据自己定义的其他参数计算参数,例如:根据给定的壁厚(从模拟运行到模拟运行)计算传热系数。
答案 1 :(得分:3)
重写组件模型的另一种方法是在模拟模型之外进行参数研究/变化。至少有三种方法:
for
个循环,这些循环会改变每次迭代的参数值。请参阅示例http://www.jmodelica.org/assimulo_home/pyfmi_1.0/pyfmi.examples.html。这并不像听起来那么复杂。mos
文件)中创建参数变体循环。我对此没有多少经验。使用上述建议之一,您可以重复使用MSL中的所有组件。
祝你好运, Rene Just Nielsen
答案 2 :(得分:1)
varaibales /参数有一个heirachery限制他们的使用。如您所知,parameters
不允许在模拟中变化。因此,您会收到错误消息,指出您正在尝试使用变量值或parameter
变量定义input
。
如果您需要该功能,我建议复制ThermalConductor并更改变量类型:
parameter Modelica.SIunits.ThermalConductance G
"Constant thermal conductance of material";
到
input Modelica.SIunits.ThermalConductance G
"Constant thermal conductance of material" annotation (Dialog(group=”Input Variables”));
这就是它的全部。请注意input
变量上的附加注释。默认情况下,inputs
不会显示在参数GUI中。注释将允许它们像参数一样被看到(注意尽可能清楚地将它标记为输入变量与参数!)
正在进行的工作已经完全重做了Thermal库,但还没有发布,而且最简单的方法可能会尝试我所讨论的内容。