- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Intel community,
I am running a simple simulation with KPP processor and after the 9th output .dat file (out of 150) the simulation terminates with the following error message:
forrtl: severe (66): output statement overflows record, unit -5, file Internal Formatted Write
Compiler used: Intel Fortran Compiler 2022.2.1 .
This might be the part of the Fortran code involved:
OPEN( unit=10, file="dyno_"//ex_no(1)//ex_no(2)//ex_no(3)//".dat")
...... ......
INTEGER i
WRITE(10,999) (TIME-TSTART)/3600.D0, &
(C(LOOKAT(i))/CFACTOR, i=1,NLOOKAT)
999 FORMAT(E24.16,100(1X,E24.16))*
I hope you can help with that.
Thank you in advance.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear mecej4 and Markus, thanks a lot for your help. The compilation went successfully and the simulation is now running.
I apologize for this very simple question, I will dig into your answers to learn more as I am a beginner in Fortran scripting.
Cheers, Giorgio.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I do not think that you are reporting the error correctly. The error message is about an internal write, with unit number -5. The WRITE statement that you display, on the other hand, is for an external write to unit number +10.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Refer to https://www.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top/compiler-reference/error-handling/run-time-errors/list-of-run-time-error-messages.html for more details about runtime errors.
Please, build your application with -g and -traceback to get more information about where exactly crash happens. I would recommend disabling optimizations using -O0 as well to make sure the issue is still reproducible with unoptimized code.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear mecej4,
you are right sorry. The following is the relevant part of the .f90 that I believe should be important and the key of the problem:
SUBROUTINE InitSaveData (j)
USE dynho_Parameters
INTEGER :: j
CHARACTER :: ex_no(3)
ex_no(1:2) = '000'
IF(j.lt.10) then
WRITE(ex_no(3),4) j
4 FORMAT(i1)
ELSEIF (j.ge.10.and.j.lt.100) then
WRITE(ex_no(2:3),5) j
5 FORMAT(i2)
ELSE
WRITE(ex_no(:),6) j
6 FORMAT(i3)
END IF
OPEN( unit=10, file="dynho_"//ex_no(1)//ex_no(2)//ex_no(3)//".dat")
! open(10, file='dynho.dat')
END SUBROUTINE InitSaveData
Something is wrong with WRITE(ex_no(2:3),5) I guess!
Thank you very much for your help!!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Your declaration of the character variable has a mistake: ex_no is an array of three elements, each being a single character. You probably mean:
character(len=3) :: ex_no
and you can achieve this more easily with:
write( ex_no, '(i3.3)' ) j
then the zeroes are added automatically :).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Markus,
thanks a lot for your help. I modified the subroutine this way:
SUBROUTINE InitSaveData (j)
USE dynho_Parameters
INTEGER :: j
CHARACTER(len=3) :: ex_no
WRITE(ex_no,'(i3.3)') j
OPEN( unit=10, file="dynho_"//ex_no(1)//ex_no(2)//ex_no(3)//".dat")
END SUBROUTINE InitSaveData
but I get a compilation error:
dynho_Util.f90(73): error #6410: This name has not been declared as an array or a function. [EX_NO]
OPEN( unit=10, file="dynho_"//ex_no(1)//ex_no(2)//ex_no(3)//".dat")
------------------------------------^
dynho_Util.f90(73): error #6054: A CHARACTER data type is required in this context. [EX_NO]
OPEN( unit=10, file="dynho_"//ex_no(1)//ex_no(2)//ex_no(3)//".dat")
------------------------------------^
dynho_Util.f90(73): error #6054: A CHARACTER data type is required in this context. [EX_NO]
OPEN( unit=10, file="dynho_"//ex_no(1)//ex_no(2)//ex_no(3)//".dat")
----------------------------------------------^
dynho_Util.f90(73): error #6054: A CHARACTER data type is required in this context. [EX_NO]
OPEN( unit=10, file="dynho_"//ex_no(1)//ex_no(2)//ex_no(3)//".dat")
-------
I guess because ex_no(1), ex_no(2), ex_no(3) are not arrays anymore, right?
Thanks a lot.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
To match the change in the declaration of the variable ex_no (from an array of single characters to a scalar character variable of length 3), replace the expression ex_no(1)//ex_no(2)//ex_no(3) by ex_no .
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear mecej4 and Markus, thanks a lot for your help. The compilation went successfully and the simulation is now running.
I apologize for this very simple question, I will dig into your answers to learn more as I am a beginner in Fortran scripting.
Cheers, Giorgio.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Giorgio,
>>I am a beginner in Fortran scripting.
For future reference, you can subscript a character variable that has a length larger than 1.
use VariableName(FirstIndex:LastIndex) = value
For example, the 2nd character of your ex_no variable is referenced with ex_no(2:2).
The 2nd and 3rd characters by ex_no(2:3), etc...
You can apply this information to other situations where you need to manipulate text. Also consult TRIM, ADJUSTL and ADJUSTR.
Jim Dempsey
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page