Engee 文档

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=修改).