求助fortran 在linux下编译
$ make FC=f77f77 -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: *** Error 1
这是我进行编译时发生的问题,由于计算的需要,我想要把a数组定义的大点(a数组定义最大
a(260000000))),但编译时就出现上述问题,这要怎么解决啊,请大家给点意见,谢谢~
回复 楼主 的帖子
超出了内存允许的最大数组范围吧? 一般不需要那么大数组的,建议定义个比较小的数组。 可以申请 动态数组我很讨厌 发言还有字节限制.
回复 3楼 的帖子
动态数组也可,不过若是单纯采用动态数组也是有内存限制的,和这个一样。还是应该用比较小的数组,根据需要也可以动态调整数组的大小。发言有字节限制是论坛限制的哪些“好,顶”之类无聊灌水而不得已采取的措施,还请体谅一下管理员的做法。 我用的就是动态数组,是因为我用来存储总刚、总质量矩阵的,存储方式是一维变带宽存储,对于为什么要需要这么大的数组,是因为我需要划分的单元比较多,从而满足我所需的计算精度。所以不知道还有什么方法可以解决这个问题? 优化 单元
改变存的方式
改变算法 谢谢,我试着改改看。 以前我的存储方式是一维变带宽存储,现在为了减小存储空间,想用非零存储。到合成总刚部分已经完成非零存储,现在最主要的问题是线型方程组的求解。查了相关资料,看到petsc有这样的功能,所以我想把这部分移植到自己的程序,但遇到了问难,petsc中的变量定义和fortran中的不同,如下:
Mat C; 矩阵定义
PetscInt N = 0;整型定义
Vec u,b,x; 向量定义
大家有没用过pestc的,这个问题怎么解决啊? 没有 用过...
我解方程都自己做程序用迭代的方法
这样就仍然可以用稀疏阵的性质 又不用耗费内存.
具体方法用好多种 可以和我讨论..我更倾向于 ICCG.
页:
[1]