如何用有限的连续行定义大尺寸数组参数?

时间:2018-07-20 15:12:59

标签: arrays fortran fortran2008

我有一个很大的整数参数数组(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/) )

其中ajbjcj是任意整数常量。

我更喜欢这种格式(使用连字符将三连音保持在一起)以提高可读性,但是对于较长的数组,它引入了太多的连字符以不符合标准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

0 个答案:

没有答案