我有一个大型整数参数数组(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 个数字、符号、逗号),延续&
在符合标准的自由格式行(132 个字符)上为 10 个整数留出空间. 在 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