我想在模型中设置默认变量名称T(= xx) - 将该模型拖动到新模型中并在那里定义变量xx。 我收到错误消息:使用未声明的变量xx。
这是子模型
model test
parameter Real T = xx;
Real f;
equation
f = T + time;
end test;
这是完整的模型
model fullmodel
parameter Real xx = 12;
Test Test1;
end fullmodel;
我的问题:你如何在Modelica中做到这一点?我需要我的模型100相同的模型,我想设置一些参数(diamter,lenghts等)默认为变量名称,然后定义这个变量。我知道我可以传播变量 - 但是如果我只需要拖动模型然后定义参数就会很好。谢谢你的帮助!
答案 0 :(得分:3)
您应该可以执行以下操作:
model test
parameter Real T;
Real f;
equation
f = T + time;
end test;
model fullmodel
parameter Real xx = 12;
Test Test1(T = xx);
end fullmodel;
答案 1 :(得分:2)
或者你可以使用inner / outer:
来做到这一点model Test
outer parameter Real xx;
parameter Real T = xx;
Real f;
equation
f = T + time;
end Test;
model fullmodel
inner parameter Real xx = 12;
Test test1;
end fullmodel;
答案 2 :(得分:2)
如果您有多个相同型号的实例并且您不想重复修改,则另一种可能性是执行以下操作:
model test
parameter Real T;
parameter Real S=1;
Real f;
equation
f = S*(T + time);
end test;
model fullmodel
parameter Real xx = 12;
// Create an "alias" model using a short class definition that
// includes a modification (for all instances of PreConfig).
model PreConfig = Test1(T=xx);
// Now create instances (potentially with their own unique values
// for some parameters
PreConfig pc1(S=1), pc2(S=2), pc3(S=3);
end fullmodel;
正如我在上面的评论中提到的,使用数组的fullmodel
的另一个实现将如下所示:
model fullmodel
parameter Integer n = 100;
parameter Real xx = 12;
// Create 100 instances of Test1. Each on has the same
// value for T, but they each have different values for
// S
Test1 tarray[n](each T=xx, S=linspace(0, 1, n));
end fullmodel;