声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2533|回复: 8

[Fortran] 求助fortran 在linux下编译

[复制链接]
发表于 2008-4-26 11:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
[wangyu@node1 2bandzzzz]$ make FC=f77
f77   -c -o femxr.o femxr.f
femxr.f: In program `femxr':
femxr.f:54:
         common/real8/a(maxa), ae(maxe)
                      ^
Array `a' at (^) is too large to handle
femxr.f: Outside of any program unit:
In file included from femxr.f:85:
In file included from femxr.f:295:
femxr.f:54: error: size of variable 'real8_' is too large
make: *** [femxr.o] Error 1

这是我进行编译时发生的问题,由于计算的需要,我想要把a数组定义的大点(a数组定义最大
a(260000000))),但编译时就出现上述问题,这要怎么解决啊,请大家给点意见,谢谢~
回复
分享到:

使用道具 举报

发表于 2008-4-26 13:20 | 显示全部楼层

回复 楼主 的帖子

超出了内存允许的最大数组范围吧? 一般不需要那么大数组的,建议定义个比较小的数组。
发表于 2008-4-26 15:12 | 显示全部楼层
可以申请 动态数组
我很讨厌 发言还有字节限制.
发表于 2008-4-26 17:09 | 显示全部楼层

回复 3楼 的帖子

动态数组也可,不过若是单纯采用动态数组也是有内存限制的,和这个一样。还是应该用比较小的数组,根据需要也可以动态调整数组的大小。
发言有字节限制是论坛限制的哪些“好,顶”之类无聊灌水而不得已采取的措施,还请体谅一下管理员的做法。

评分

1

查看全部评分

 楼主| 发表于 2008-4-26 20:30 | 显示全部楼层
我用的就是动态数组,是因为我用来存储总刚、总质量矩阵的,存储方式是一维变带宽存储,对于为什么要需要这么大的数组,是因为我需要划分的单元比较多,从而满足我所需的计算精度。所以不知道还有什么方法可以解决这个问题?
发表于 2008-4-26 20:52 | 显示全部楼层
优化 单元
改变存的方式
改变算法

评分

1

查看全部评分

 楼主| 发表于 2008-4-29 08:43 | 显示全部楼层
谢谢,我试着改改看。
 楼主| 发表于 2008-5-4 16:33 | 显示全部楼层
以前我的存储方式是一维变带宽存储,现在为了减小存储空间,想用非零存储。到合成总刚部分已经完成非零存储,现在最主要的问题是线型方程组的求解。查了相关资料,看到petsc有这样的功能,所以我想把这部分移植到自己的程序,但遇到了问难,petsc中的变量定义和fortran中的不同,如下:

                        Mat            C;    矩阵定义
                        PetscInt       N = 0;  整型定义
                        Vec            u,b,x;    向量定义

大家有没用过pestc的,这个问题怎么解决啊?
发表于 2008-5-5 12:56 | 显示全部楼层
没有 用过...
我解方程都自己做程序用迭代的方法
这样就仍然可以用稀疏阵的性质 又不用耗费内存.
具体方法用好多种 可以和我讨论..我更倾向于 ICCG.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-3 01:16 , Processed in 0.058684 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表