Engee 文档

Engee物理建模语言的一般语法

变量和参数的形式和数据类型

默认情况下,变量和参数被视为实数(真实的),但如果需要,您可以为参数设置数据的类型和形式。 所以:

  • 对于参数(@参数@结构参数)任何打字都可用;

  • 公共变量(@变量 没有 事件=真)和中间表达式(@中间体)总是有一个类型 真实的;

  • 离散变量(@变量事件=真)可能有类型 真实的, Int型, 布尔.

打字可以让你:

  • 显式指定应使用哪种数据类型;

  • 控制接口中值的输入(例如,布尔值将是复选框,枚举将是下拉列表),

  • 设置数据结构(标量,矢量,矩阵),

  • 以增加模型的严谨性并消除即使在公告阶段的错误。

支持以下类型:

  • 真实的 -实数(如果未指定类型,则为默认值);

  • Int型 -整数;

  • 布尔 -逻辑值(真的 / 错误);

  • 数组([:] 对于向量, [:, :] 为矩阵);

  • 单独设置的枚举。

@参数/@变量/@中间体/@结构参数 您可以指定维度(标量,矢量,矩阵)。

@parameters begin
    a::Bool = true
    b = 1
    c[:] = [2, 3]         # 向量
    d[:, :] = [1 2; 3 4]  # 矩阵
end

向量和矩阵

声明数组时,重要的是要考虑规则:

  • a[:] -矢量(一维数组)。

  • b[:,:] -矩阵(二维数组)。

  • j[:,:,:] -三维阵列。

  • 如果参数声明没有 [:] 那么它总是一个标量。

  • 数组的大小可以使用结构参数设置。

例子::

@structural_parameters begin
    n1::Int = 5
    n2::Int = 3
end
@parameters begin
    a[:] = [0.1, 0.2, 0.3]     # 向量
    b[:]=零(n1)#长度n1的长度
    c[:,:] = ones(n1, n2)      # 矩阵 n1×n2
    j[:,:,:]=zeros(3,3,3)#三维数组
end
@variables begin
    x = 0
end
@equations begin
    x ~ a[1] + b[2] + c[3,2] + j[1,1,1]
end
声明数组及其大小的相同技术同样适用于 @变量, @中间体, @参数@结构参数.

让我们来看看这段代码的作用。:

  • 在建设 @结构参数 数组的大小已设置: n1=5, n2=3. 这些参数决定了向量和矩阵的形状。

  • 在建设 @参数:

    • 一个[:] = [0.1, 0.2, 0.3] -使用固定值创建长度为4的向量 [0.1, 0.2, 0.3].

    • b[:]=零(n1) -创建长度的向量 n1 (在这种情况下,5),填充零。

    • c[:,:]=一(n1,n2) -创建大小的矩阵 5×3,充满了单位。

    • j[:,:,:]=零(3,3,3) -创建大小的三维数组 3×3×3 充满了零。

  • 在建设 @变量 引入了一个变量 x,最初等于0。

  • 在建设 @方程 给出了一个方程,其中 x 用所有数组的元素表示:

    • a[1] -向量的第一个元素 a (值0.1)。

    • b[2] -向量的第二个元素 b (该值为0,因为向量用零填充)。

    • c[3,2] -矩阵的一个元素 c 在第3行和第2列(值为1,因为矩阵填充了单位)。

    • j[1,1,1] -三维数组的元素 j (值0)。

索引用于访问单个元素。

标量类型

声明不同类型的简单参数示例:

@parameters begin
    flag::Bool = true
    count::Int = 5
    增益::Real=1.25#默认使用Real类型
end

哪里:

  • 布尔 -布尔类型,只接受两个值: 真的 (真)或 错误 (错误)。 在界面中,此参数显示为可打开或关闭的复选框。

  • Int型 -没有小数部分的整数。 用于计数器、索引和数组大小很方便。

  • 真实的 -带有小数部分(实数)的数字。 它适用于任何物理量:质量,速度,电压等。

将值传递给子组件

如果将没有测量单位的数字传递给子组件,则使用其参数中指定的默认测量单位。 要明确设置测量单位,请使用 命名的,命名的. 例子::

@engeemodel A begin
    @parameters begin
        x = 1, [unit = "mV"]
    end
end

@engeemodel B begin
    @components begin
        a1=A(x=2)#解释为2mV→0.002V
        a2 = A(x = (value = 2, unit = "V"))
    end
end

这个例子表明:

  • a1 获取值 2 以毫伏为单位,因为它在组件中默认指定 A.

  • a2 得到2伏的值,因为我们明确地通过设置测量单位 命名的,命名的.

同样,如果参数是用度量单位声明的 "嘉",然后通过数字 0.8 将其解释为0.8ka(800A)。 要设置正好0.8安培,你需要写:

@components begin
    a = A(h = (value = 0.8, unit = "A"))
end

转帐

枚举允许您设置可接受的有限集合 参数值,并方便地与分支组合。 因此,组件可以在不同的模式下操作,这些模式由用户通过界面中的下拉列表进行选择。

有关枚举、语法和示例的详细分析,请参阅文章 Engee物理建模语言的枚举、分支、循环和模块