Engee物理建模语言的构造
|
页面进行中。 |
在物理建模语言*Engee* 组件由一组块结构的形式描述 @… 开始…结束. 构造定义参数、变量、方程、端口、分支、注释和未来组件的其他结构。 下面是主要语言结构及其中使用的关键方法的概述。
基本结构
| 建筑工程 | 委任事宜 | 例子: |
|---|---|---|
|
启动前设置的组件参数。 |
@parameters begin
R = 1.0, [unit = "Ohm"]
end
|
|
模拟期间计算的变量。 |
@variables begin
v = 0.0, [unit = "V"]
end
|
|
描述行为的方程。 |
@equations begin
v ~ R * i
end
|
|
物理域的连接端口。 |
@nodes begin
p = EngeePhysicalFoundation.Electrical.Pin
n = EngeePhysicalFoundation.Electrical.Pin
end
|
|
将多个端口的流绑定到一个公共变量。 |
@branches begin
i:(p.i, n.i)
end
|
|
子组件(模型内的层次结构)。 |
@components begin
cap = EngeePhysicalFoundation.Electrical.Elements.Capacitor()
end
|
|
非符号参数。 它们通常用于数组的索引和维度。 |
@structural_parameters begin
N::Int = 3
end
|
|
简化方程表达式的中间变量。 |
@intermediates begin
power = v*i
end
|
|
输入变量。 |
@inputs begin
u_in = 0.0
end
|
|
输出变量。 |
@outputs begin
y_out = 0.0
end
|
|
更改参数、变量、端口和子组件的元数据。 |
@annotations begin
(v, i), [gui = None]
end
|
|
块图标的外观。 |
@icon begin
"icon.svg"
end
|
|
从现有组件继承。 |
@engeemodel MyResistor begin
@extend Resistor
end
|
元数据
元数据可用于设置度量单位、组、优先级、界面中的可见性等。 有关详细信息,请参阅文章 Engee物理建模语言的元数据.
具有方程的构造的特殊函数
-
assert(condition[,message[,action]])-支票。@equations begin assert(R >= 0.0) end -
连接(a,b,。..)-端口和子组件的连接。connect(R1.p, R2.n) -
domain_connect(a,b)-同一组件内端口之间环境参数的同步(端口变量未连接)。@equations begin domain_connect(n, p) end
结构的操作规则
-
所有的结构都以
@名称开始。.. 结束. -
物理组件内部结构的顺序(在后面的代码中
@engeemodel)没关系-语言是声明性的。例如,变量甚至在显式声明之前就可以在方程中使用。:
@engeemodel Example begin @equations begin y~x^2+1#我们使用x,尽管它在下面声明 end @variables begin x = 0 y = 0 end end -
在一个物理组件中可能有几个相同类型的结构(例如,几个块
@方程). -
构造可以提供元数据(例如,
组="参数"),适用于此构造中声明的所有对象。 例如:@parameters [group = "Electrical Parameters"] begin R = 1.0, [unit = "Ohm", description = "Resistance"] v_nom = 230.0, [unit = "V", description = "Nominal voltage"] end在此示例中,两个参数都将显示在组中。
"电气参数". -
参数、变量、端口和子组件的可见性可以根据使用块的条件内的参数值进行更改
@注释. 例如:@parameters begin a::Bool = true b = 1, [gui = None] end if a @annotations begin b, [gui = Modify] end end在此示例中,元数据行为取决于参数值。
a:-
如果
a=错误,则参数b隐藏在界面中(gui=无), -
如果
a=真,则参数b显示(gui=修改).
-