微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于 Fortran 堆栈溢出有什么帮助吗?

如何解决关于 Fortran 堆栈溢出有什么帮助吗?

事实上,我正在使用 ABAQUS 和用 Fortran 编写的 UMAT 进行 FEM 分析。 UMAT 包含 I/O txt 文件以读取几个接近 500x500 的 realx8 数组,此外我还在 Fortran 程序中声明了几个相同大小的数组。当我将数组的大小减小到 10x10 之类的小数时,整个程序运行良好,没有错误。 但是当我想处理像 500*500 这样的大数组时,abaqus 显示如下

webapp

搜索了很多文档,都告诉我这个错误代码意味着Fortran 中的堆栈溢出。 据我所知,ABAQUS 使用 win86_64.env/abaqus_v6.env 来修改 Fortran 编译器。相关代码块像这样,

Error in job Job-1: The executable standard.exe aborted with system error code 1073741571.

一些文档说“堆数组”与堆栈/堆存储有关,

compile_fortran=['ifort','/qmkl:sequential','/c','/DABQ_WIN86_64','/extend-source','/fpp','/iface:cref','/recursive','/Qauto-scalar','/QxSSE3','/QaxAVX','/heap-arrays:1',# '/Od','/Ob0',# <-- Optimization Debugging
                 # '/Zi',# <-- Debugging
                 '/include:%I']

我尝试将 /heap-arrays:[size] 修改为不同的数字,但是,它总是显示相同的错误代码。 任何熟悉 ABAQUS/Fortran 的人都可以提供一些建议吗?我将感激不尽。

附注。链接选项是这样的,

This option puts automatic arrays and arrays created for temporary computations on the heap instead of the stack.
If heap-arrays is specified and size is omitted,all automatic and temporary arrays are put on the heap. If 10 is specified for size,all automatic and temporary arrays larger than 10 KB are put on the heap.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。