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物理建模语言的枚举、分支、循环和模块