arrays - 如何定义具有有限续行的大尺寸数组参数?
问题描述
我有一个大型整数参数数组(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
解决方案
推荐阅读
- ios - 无法识别的选择器发送到实例 0x7fb8bf50b3c0' (Swift/Xcode)
- django - Django 2.2 + DetailView 带过滤的多个模型
- java - 有什么方法可以强制执行 Java 枚举值的合规性?
- node.js - 如何对使用 JWT 的 node.js API 进行速率限制?
- angular - 如何从角度 2 中的函数返回订阅的数据?
- office365 - Microsoft Graph API:如何跟踪已删除的日历事件发生?
- excel - 通过 VBA DOM 选择表单文本框
- python - seaborn import as sns -> ImportError: DLL load failed: 找不到指定的模块
- javascript - 使用 Selenium 进行 Safari 网络驱动程序测试
- svg - Safari 以不同的字体呈现 SVG 中的文本