Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28454 Discussions

subroutine in ABAQUS read big data file

Wang__Jungao
Beginner
856 Views

Hi, all,

I have a subroutine in abaqus for which I want it to just read some data file and then pass is to the other subroutine 'DLOAD'. The data I am reading now is a array with the size of 169*12001. If I make the data file formated as ASCII, then it's working fine. Now I want to speed up for the reading, so I think of binary files. Then there is this error message like 'aborted with system error code 1073741571.' And it seems that it's related to memory overflow in ABAQUS. I tried to downsize the data file and it works. So I was trying to using multiple subroutines to read small binary files seperately. But the error come again when I call several subroutines.

I have tried to allocate memory for the array I read inside the subroutine, then it’s working, but the allocated memory is only existing inside of the subroutine and can’t pass data to other subroutine.

I also read the abaqus manual ‘http://50.16.225.63/v6.14/books/sub/default.htm?startat=ch02s01abu23.html’ But I don’t quite follow the explaining there.

I understand this is more a problem in ABAQUS instead of the compilier, but I put up the thread here hoping someone who have experiences with ABAQUS can also take a look and give comments.

Thanks!

Jungao

0 Kudos
1 Reply
Greg_T_
Valued Contributor I
856 Views

Hi Jungao,

I think the large fixed size array may be exceeding the available memory on the stack.  Would you want to try using a module that contains a subroutine to allocate the array, another subroutine to read the data file into the array, and another to use the array to assign the pressure value to return from DLOAD?  I think putting the allocatable array in a module could allow it to persist between calls to DLOAD.  You could test this with a main program and then from Abaqus.  You can write debugging output to the Abaqus *.msg message file using file unit 7.  Refer to the Abaqus Analysis User's Guide, section 3.7.1 Fortran Unit Numbers.

Does your DLOAD do calculations to assign the pressure to each element, such as by coordinate, or is the pressure value getting assigned directly from the data file?  If the value is being assigned without the need for calculations, you could also write the data file in Abaqus syntax and include it in the analysis with the external file *input option.

Would either of these approaches help?

Regards,

Greg T.

 

0 Kudos
Reply