Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何定义具有有限连续线的大型数组参数?_Arrays_Fortran_Fortran2008 - Fatal编程技术网

Arrays 如何定义具有有限连续线的大型数组参数?

Arrays 如何定义具有有限连续线的大型数组参数?,arrays,fortran,fortran2008,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

我有一个大的整数参数数组(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标准的代码中,是否有方法定义此参数?参数数组可以在段中定义吗?e、 g

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

我已经审查了两个有帮助的潜在重复项,但我不太满意。建议的答案对每种情况都相当具体。我更感兴趣的是一种处理任意长度任意形状参数的方法。如果你能解释(在你的问题中)为什么,“将其组装在源代码可管理的块中——可能是逐列组装。”不能完全满足你的需要,那么这将帮助我们提供另一种方法/重新打开此方法。重塑以数组为参数,您可以通过组合其他数组来创建数组,如
arr=[arr1,arr2,arr3]
。将数组与每一行标注相关联。此外,数据语句可以在块中定义数组。你甚至可以为它单独设置一个数据文件。有什么理由不从文件中读取它吗?我个人认为,这将比6000行长的参数语句更具可读性。将其放入一个带有初始化例程的模块中,为安全起见加入一个受保护的属性,您应该被分类。