-
基于方程
modelica基于方程可以建立一个完整的模型。模型的建立需要编写微分或者积分方程。在modelica中不需要定义方程是如何求解的,这也是modelica高级的地方。 -
基于组件的方法
基于组件的方法是从一个单独的领域自己从头建立相应的模块,进行连接,好处是可重用程度高,坏处是创建模块的人有后续重用模块的必要,不然还是用第一种方法。
组件的创建步骤:
1、建立连接器
连接器是保证模型之间可连接的必要条件。创建格式:
connector Model5
Modelica.SIunits.Length l;//确定组件两头的物理量
flow Modelica.SIunits.Angle o;//确定连接器中流过的物理量
end Model5;
连接器中流的概念是非常重要的,比如电压方程的建立建立在一个节点流入的电流之和等于0;
2、建立组件
model R;
Model5 A,B;//调用连接器,A,B
equation
R*o=A.l-B.l;//
A.0+B.0=0;
end R
建立了一个R组件,在连接器model5的基础上。
3、建立完整的模型
首先调用组件,调用格式为R r1;
然后连接自己对应的组件,连接格式为connector(r1.n,r2.p)//n 与p分别对应一个组件的两头.
4、块(block)的概念
块都显性标记为输入或者输出,给定义的块需要提供一个输入或者输出的方程式。定义一个sin函数输出块。
connector signal//先定义一个connector
Real val;
end signal;
block sinsignal
output signal sin;//输出一个命名为sin的connector
equation
sin.val=2*sin(10*time+30);
end sinsignal
- 组件重用
- 函数
函数格式
function ansys
input
output
algorithm
…
end ansys
(1)protect
受保护的部分,包含所有局部变量的说明。
(2):=
表示赋值
(3)while
while i<5 loop
…
end while;
(4)size
size(A,1);提取A的行个数
size(A,2);提取A的列个数
(5)assert
对后面的而表达式进行验证
assert(y<>-1,“program is failed”);验证y是否等于1,不是的话就输出program is failed
(6)for
for i <5 loop
…
end for;
对i每必要进行申明
(7)1:n
1:n表示在1:n之间循环
n?1每次减一循环
(8)record
record有点像c里面的类的概念,record可以将所有的自变量进行集成,方面使用。
格式:
record data
integer num;
real a[num];
Modelica.SIunits.Length l;
end data;
使用函数时对data进行调用:input data M;
使用里面的参数时调用:data.num;
(9)调用外部子程序
external “c” ansys(a,b,c);调用外部命名为ansys的c程序
如何访问子程序,需要进一步学习。
(10)if
if i>0 then
x=8;
elseif i<-2 then
x=5;
end if;
(10)内置函数
求绝对值abs,符号判别sign,求平方根sqrt,求最小整数ceil,求小于x的最大整数floor,取整interger。
说出来可能不信,Modelica里面没有高级的函数,和matlab相比真的是…