![发贴心情](skins/Default/topicface/face1.gif)
Questions about fortran error "allocatable array or pointer is not allocated"
linux fortran
When I tried to run a huge fortran code (the code is compiled using intel compiler version 13.1.3.192), it gave me error message like this:
...
Info[FDFI_Setup]: HPDF code version number is 1.00246
forrtl: severe (153): allocatable array or pointer is not allocated
Image PC Routine Line Source arts 0000000002AD96BE Unknown Unknown Unknown arts 0000000002AD8156 Unknown Unknown Unknown arts 0000000002A87532 Unknown Unknown Unknown ...
Nonetheless, if I insert a small write-statement (which is just to check the code, not to disturb the original purpose of the code) in one of the subroutines as the following (I couldn't put all the codes since they are too huge):
... endif
call GetInputLine(Unit,line,eof,err)
enddo if(err) return
! - [elfsummer] 20140815 Checkpoint 23 open(unit = 1, file = '/bin/monitor/log_checkpoint',status='old',position='append')
write(1,*) "BEFORE checking required keys: so far so good!"
close(1)
!check required keys !
!for modes = 2,3, P and T are the required keys if(StrmDat%ModeCI==2.or.StrmDat%ModeCI==3) then ...
then suddenly, the error message shown above disappears and the code can run correctly! I also tried to insert such write statements in other locations in the source code but the above error message still exists.
According tohttps://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/fortran/lin/bldaps_for/common/bldaps_rterrs.htm:
severe (153): Allocatable array or pointer is not allocated FOR$IOS_INVDEALLOC. A Fortran 90 allocatable array or pointer must already be allocated when you attempt to deallocate it. You must allocate the array or pointer before it can again be deallocated. Note: This error can be returned by STAT in a DEALLOCATE statement.
However, I couldn't see any relations between the error and the "write statements" I added to the code. There is no such "allocate" command in the location I add the write statements.
So I am quite confused. Does anybody know the reasons? Any help is greatly appreciated!!
linux fortran
When I tried to run a huge fortran code (the code is compiled using intel compiler version 13.1.3.192), it gave me error message like this:
...
Info[FDFI_Setup]: HPDF code version number is 1.00246
forrtl: severe (153): allocatable array or pointer is not allocated
Image PC Routine Line Source arts 0000000002AD96BE Unknown Unknown Unknown arts 0000000002AD8156 Unknown Unknown Unknown arts 0000000002A87532 Unknown Unknown Unknown ...
Nonetheless, if I insert a small write-statement (which is just to check the code, not to disturb the original purpose of the code) in one of the subroutines as the following (I couldn't put all the codes since they are too huge):
... endif
call GetInputLine(Unit,line,eof,err)
enddo if(err) return
! - [elfsummer] 20140815 Checkpoint 23 open(unit = 1, file = '/bin/monitor/log_checkpoint',status='old',position='append')
write(1,*) "BEFORE checking required keys: so far so good!"
close(1)
!check required keys !
!for modes = 2,3, P and T are the required keys if(StrmDat%ModeCI==2.or.StrmDat%ModeCI==3) then ...
then suddenly, the error message shown above disappears and the code can run correctly! I also tried to insert such write statements in other locations in the source code but the above error message still exists.
According tohttps://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/fortran/lin/bldaps_for/common/bldaps_rterrs.htm:
severe (153): Allocatable array or pointer is not allocated FOR$IOS_INVDEALLOC. A Fortran 90 allocatable array or pointer must already be allocated when you attempt to deallocate it. You must allocate the array or pointer before it can again be deallocated. Note: This error can be returned by STAT in a DEALLOCATE statement.
However, I couldn't see any relations between the error and the "write statements" I added to the code. There is no such "allocate" command in the location I add the write statements.
So I am quite confused. Does anybody know the reasons? Any help is greatly appreciated!!