我有一个很大的整数参数数组(6024三元组,在3x6024数组中总共有9000个元素),可以作为其他功能的数据放置在模块中。参数定义:
Integer, Parameter :: nj = 6024
Integer, Parameter :: abc(1:3,1:nj) = &
& RESHAPE( (/ a1 , b1 , c1, & !j = 1
& a2 , b2 , c2, & !j = 2
!... like 6000 more lines ...
& aj , bj , cj /), & !j = nj
& SHAPE=(/3,nj/),ORDER=(/2,1/) )
其中aj
,bj
和cj
是任意整数常量。
我更喜欢这种格式(使用连字符将三连音保持在一起)以提高可读性,但是对于较长的数组,它引入了太多的连字符以不符合标准Fortran(Fortran 2003及更高版本允许最多255个连字符) 。这些参数不是可预测地分布的,因此隐式定义循环不是一个选择。
我可以在一行上放置更多的三元组,但是4字节整数每个占用12个字符(10个数字,符号,逗号),而延续&
则为符合标准的10个整数留出了空间自由格式的行(132个字符)。在255个连续行中,这为数组参数定义列出了〜2550个元素(此类型)的实际限制。
是否有办法在符合Fortran 2008标准的代码中进行此参数定义?可以在段中定义参数数组吗?例如
Integer, Parameter :: nj = 6024
Integer, Parameter :: abc(1:3,1:nj)
Integer, Parameter :: abc(:,1) = (/ a1 , b1 , c1 /) !j = 1
Integer, Parameter :: abc(:,2) = (/ a2 , b2 , c2 /) !j = 2
!... like 6000 more lines ...
Integer, Parameter :: abc(:,nj) = (/ aj , bj , cj /) !j = nj