- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When it comes to namelist, I certainly don't know what I am doing. But at least the compiler is with me in being confused.
PROGRAM p20151006_namelist
IMPLICIT NONE
TYPE :: t(len)
INTEGER, LEN :: len
REAL :: array(len)
END TYPE t
TYPE(t(:)), ALLOCATABLE :: a
NAMELIST /nml/ a
INTEGER, PARAMETER :: unit = 10
CHARACTER(*), PARAMETER :: len_fmt = "(I10)"
CHARACTER(*), PARAMETER :: filename = '2015-10-06 namelist.txt'
INTEGER :: l
ALLOCATE(t(5) :: a)
a%array = [(REAL(l), l = 1, a%len)]
PRINT "(I10,*(F4.1,:,1X))", a%len, a
OPEN(unit, FILE=filename, ACTION='WRITE', STATUS='REPLACE')
WRITE (unit, len_fmt) a%len
WRITE (unit, nml)
CLOSE(unit)
DEALLOCATE(a)
OPEN(unit, FILE=filename, ACTION='READ', STATUS='OLD', POSITION='REWIND')
READ(unit, len_fmt) l
ALLOCATE(t(l) :: a)
READ (unit, nml)
CLOSE(unit)
PRINT "(I10,*(F4.1,:,1X))", a%len, a
END PROGRAM p20151006_namelist
>ifort /check:all /warn:all /standard-semantics /stand:f08 "2015-10-06 namelist.f90" Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0 Build 20150815 Copyright (C) 1985-2015 Intel Corporation. All rights reserved. 0_1855 U:\projects\FortranMisc\2015\2015-10-06 namelist.f90(20): catastrophic error: **Internal compiler error: internal abort* * Please report this error along with the circumstances in which it occurred in a Software Problem Report. Note: File and line given may not be explicit cause of this error. compilation aborted for 2015-10-06 namelist.f90 (code 1)
This variant, where the value of the derived type parameter is set by specification, compiles, but I am suspicious of the namelist output (and the PRINT statement output to the console?) - there are entries for the length parameter, noting that length parameters are not components. Plus the array values in the namelist output are bonkers.
PROGRAM p20151006_namelist2
IMPLICIT NONE
TYPE :: t(len)
INTEGER, LEN :: len
REAL :: array(len)
END TYPE t
CALL execute
CONTAINS
SUBROUTINE execute
TYPE(t(:)), ALLOCATABLE :: a
INTEGER, PARAMETER :: unit = 10
CHARACTER(*), PARAMETER :: len_fmt = "(I10)"
CHARACTER(*), PARAMETER :: filename = '2015-10-06 namelist2.txt'
INTEGER :: l
ALLOCATE(t(5) :: a)
a%array = [(REAL(l), l = 1, a%len)]
PRINT "(I10,*(F4.1,:,1X))", a%len, a
OPEN(unit, FILE=filename, ACTION='WRITE', STATUS='REPLACE')
WRITE (unit, len_fmt) a%len
CALL write(unit, a%len, a)
CLOSE(unit)
DEALLOCATE(a)
! OPEN(unit, FILE=filename, ACTION='READ', STATUS='OLD', POSITION='REWIND')
! READ(unit, len_fmt) l
! ALLOCATE(t(l) :: a)
! CLOSE(unit)
! PRINT "(I10,*(F4.1,:,1X))", a%len, a
END SUBROUTINE execute
SUBROUTINE read(unit, l, a)
INTEGER, INTENT(IN) :: unit
INTEGER, INTENT(IN) :: l
TYPE(t(l)), INTENT(OUT) :: a
NAMELIST /nml/ a
READ (unit, nml)
END SUBROUTINE read
SUBROUTINE write(unit, l, a)
INTEGER, INTENT(IN) :: unit
INTEGER, INTENT(IN) :: l
TYPE(t(l)), INTENT(IN) :: a
NAMELIST /nml/ a
WRITE (unit, nml)
END SUBROUTINE write
END PROGRAM p20151006_namelist2
>ifort /check:all /warn:all /standard-semantics /stand:f08 "2015-10-06 namelist2.f90" && "2015-10-06 namelist2.exe" && type "2015-10-06 namelist2.txt"
Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0 Build 20150815
Copyright (C) 1985-2015 Intel Corporation. All rights reserved.
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
"-out:2015-10-06 namelist2.exe"
-subsystem:console
"2015-10-06 namelist2.obj"
5 1.0 2.0 3.0 4.0 5.0
5
&NML
A%LEN = 5,
A%ARRAY = 2.9511794E-39 , 0.000000 , 5.6051939E-45 , 2*0.000000
/
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you IanH for reporting the issues.
Updated 11/19/2015: Submitted to Development
(Internal tracking id: DPD200378942 - internal error w/Namelist and length type parameters)
(Internal tracking id: DPD200378943 - incorrect results w/Namelist and length type parameters)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page