Modelica propagation/default 变量名
Modelica propagation/default variable name
我想在模型中设置默认变量名称 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 个相同的模型,我想将一些参数(直径、长度等)默认设置为一个变量名,然后只定义这个变量。我知道我可以传播变量——但如果我只需要拖动模型然后定义参数就更好了。感谢您的帮助!
您应该可以执行以下操作:
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;
或者您可以使用 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;
如果您有同一模型的多个实例并且不想重复修改,另一种可能性是执行如下操作:
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;
我想在模型中设置默认变量名称 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 个相同的模型,我想将一些参数(直径、长度等)默认设置为一个变量名,然后只定义这个变量。我知道我可以传播变量——但如果我只需要拖动模型然后定义参数就更好了。感谢您的帮助!
您应该可以执行以下操作:
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;
或者您可以使用 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;
如果您有同一模型的多个实例并且不想重复修改,另一种可能性是执行如下操作:
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;