2.6.1 数组声明
Modelica类型系统包含标量、向量、矩阵以及大于2维的数组。表2-6展示了各种数组的声明方式。
表2-6 数组声明方式
在数组声明中,其维度信息可以在类型之后(变量之前),也可以在变量之后。形式1的声明方式能够清晰地展示数组的类型,形式2则是类似于Fortran、C等语言的传统声明方式。
方括号中逗号分隔的元素列表用来描述各个维度的大小,元素可以是整型子类型,也可以是冒号“:”,还可以是布尔类型或枚举类型。
冒号“:”表示不定长维度的数组。这种数组声明可以提高模型的灵活性,适应不同规模问题的求解。当数组被绑定到确切值时,冒号“:”所代表的维度的长度被推导出来,例如数组赋初值时:
下面是一些数组声明的例子。
特别地,布尔和枚举下标的数组声明方式如下:
2.6.1.1 数组下标的下界和上界
当整型、布尔类型或枚举类型作为下标时,其下界和上界分别定义如下:
(1)整型作下标时,下标下界是1,上界是该维的维度大小。
(2)布尔类型作下标时,下标下界是false,上界是true。
(3)枚举类型作下标时,例如type E=enumeration(e1,e2,…,en),下标下界是E.e1,上界是E.en。
2.6.1.2 数组类型和类型检查
用户可以定义数组类型,例如类型ColorPixel定义为实型数组类型,包含三个元素,可用于表示三基色像素。可用ColorPixel声明数组变量image,如下:
变量image表示512×512的像素矩阵,每个像素均为三基色。以数组类型声明的变量在计算时会被展开,展开时变量维数排在类型维数之前。例如变量image展开后的最终类型是Real[512,512,3]。变量类型展开后,基本类型是内置类型或用户定义的非数组类型。
变量之间的赋值合法性检查要求类型匹配,包括维数匹配。两个数组变量,只要求其最终展开类型相等,即类型匹配。根据变量类型展开规则,下面的变量声明是合法的: