Skip to content
Snippets Groups Projects
Commit 7e54586a authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 10/11/2017: IO: use file structures for MODD_IO_NAM

parent ba56a3ec
No related branches found
No related tags found
No related merge requests found
...@@ -57,15 +57,13 @@ END MODULE MODI_CLOSE_FILE_MNH ...@@ -57,15 +57,13 @@ END MODULE MODI_CLOSE_FILE_MNH
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE MODD_CONF, ONLY : CPROGRAM USE MODD_CONF, ONLY: CPROGRAM
USE MODD_IO_ll, ONLY : TFILEDATA USE MODD_IO_NAM, ONLY: TFILE
USE MODD_IO_NAM, ONLY : CFILE USE MODD_LUNIT, ONLY: CLUOUT0
USE MODD_LUNIT, ONLY : CLUOUT0
! !
USE MODE_FM USE MODE_FM, ONLY: FMLOOK_ll,IO_FILE_CLOSE_ll
USE MODE_IO_ll USE MODE_IO_ll, ONLY: CLOSE_ll
USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
USE MODE_ll
USE MODE_MSG USE MODE_MSG
! !
IMPLICIT NONE IMPLICIT NONE
...@@ -82,11 +80,9 @@ INTEGER, INTENT(IN) :: KUNIT ! logical unit of file ...@@ -82,11 +80,9 @@ INTEGER, INTENT(IN) :: KUNIT ! logical unit of file
INTEGER :: IRESP ! IRESP : return-code if a problem appears INTEGER :: IRESP ! IRESP : return-code if a problem appears
! at the open of the file in LFI routines ! at the open of the file in LFI routines
! !
INTEGER :: INAM ! logical unit of namelist
INTEGER :: IMI ! model index INTEGER :: IMI ! model index
INTEGER :: ILUOUT ! output listing logical unit INTEGER :: ILUOUT ! output listing logical unit
CHARACTER(LEN=16) :: YLUOUT ! output listing file name CHARACTER(LEN=16) :: YLUOUT ! output listing file name
TYPE(TFILEDATA),POINTER :: TZFILE
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
SELECT CASE(CPROGRAM) SELECT CASE(CPROGRAM)
...@@ -116,20 +112,18 @@ END IF ...@@ -116,20 +112,18 @@ END IF
!* closes the namelist !* closes the namelist
! ------------------- ! -------------------
! !
CALL PRINT_MSG(NVERB_DEBUG,'IO','CLOSE_FILE_MNH','called for '//TRIM(CFILE)) IF (.NOT.ASSOCIATED(TFILE)) CALL PRINT_MSG(NVERB_FATAL,'IO','CLOSE_FILE_MNH','TFILE not associated')
! !
TZFILE => NULL() CALL PRINT_MSG(NVERB_DEBUG,'IO','CLOSE_FILE_MNH','called for '//TRIM(TFILE%CNAME))
CALL IO_FILE_FIND_BYNAME(TRIM(CFILE),TZFILE,IRESP)
! !
CALL FMLOOK_ll(CFILE,YLUOUT,INAM,IRESP) IF (TFILE%NLU==KUNIT) THEN
IF (INAM==KUNIT) THEN CALL IO_FILE_CLOSE_ll(TFILE)
CALL IO_FILE_CLOSE_ll(TZFILE) TFILE => NULL()
CFILE = " "
ELSE ELSE
WRITE(ILUOUT,*) 'Error for closing a file: ' WRITE(ILUOUT,*) 'Error for closing a file: '
WRITE(ILUOUT,*) 'logical unit ',KUNIT,' does not correspond to file', CFILE WRITE(ILUOUT,*) 'logical unit ',KUNIT,' does not correspond to file', TFILE%CNAME
!callabortstop !callabortstop
CALL PRINT_MSG(NVERB_FATAL,'GEN','CLOSE_FILE_MNH','') CALL PRINT_MSG(NVERB_FATAL,'IO','CLOSE_FILE_MNH','')
END IF END IF
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
......
...@@ -57,15 +57,12 @@ END MODULE MODI_MNHCLOSE_NAMELIST ...@@ -57,15 +57,12 @@ END MODULE MODI_MNHCLOSE_NAMELIST
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE MODD_CONF, ONLY : CPROGRAM USE MODD_CONF, ONLY: CPROGRAM
USE MODD_IO_ll, ONLY : TFILEDATA USE MODD_IO_NAM, ONLY: TNAM
USE MODD_IO_NAM, ONLY : CNAM USE MODD_LUNIT, ONLY: CLUOUT0
USE MODD_LUNIT, ONLY : CLUOUT0
! !
USE MODE_FM USE MODE_FM, ONLY: FMLOOK_ll,IO_FILE_CLOSE_ll
USE MODE_IO_ll
USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
USE MODE_ll
USE MODE_MSG USE MODE_MSG
! !
IMPLICIT NONE IMPLICIT NONE
...@@ -82,14 +79,14 @@ INTEGER, INTENT(IN) :: KLUNAM ! logical unit of namelist ...@@ -82,14 +79,14 @@ INTEGER, INTENT(IN) :: KLUNAM ! logical unit of namelist
INTEGER :: IRESP ! IRESP : return-code if a problem appears INTEGER :: IRESP ! IRESP : return-code if a problem appears
! at the open of the file in LFI routines ! at the open of the file in LFI routines
! !
INTEGER :: INAM ! logical unit of namelist
INTEGER :: IMI ! model index INTEGER :: IMI ! model index
INTEGER :: ILUOUT ! output listing logical unit INTEGER :: ILUOUT ! output listing logical unit
CHARACTER(LEN=16) :: YLUOUT ! output listing file name CHARACTER(LEN=16) :: YLUOUT ! output listing file name
TYPE(TFILEDATA),POINTER :: TZFILE
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
CALL PRINT_MSG(NVERB_DEBUG,'IO','MNHCLOSE_NAMELIST','called for '//TRIM(CNAM)) IF (.NOT.ASSOCIATED(TNAM)) CALL PRINT_MSG(NVERB_FATAL,'IO','CLOSE_FILE_MNH','TNAM not associated')
!
CALL PRINT_MSG(NVERB_DEBUG,'IO','MNHCLOSE_NAMELIST','called for '//TRIM(TNAM%CNAME))
! !
SELECT CASE(CPROGRAM) SELECT CASE(CPROGRAM)
CASE('REAL ','IDEAL ','DIAG ') CASE('REAL ','IDEAL ','DIAG ')
...@@ -104,17 +101,13 @@ END SELECT ...@@ -104,17 +101,13 @@ END SELECT
!* closes the namelist !* closes the namelist
! ------------------- ! -------------------
! !
TZFILE => NULL() IF (TNAM%NLU==KLUNAM) THEN
CALL IO_FILE_FIND_BYNAME(TRIM(CNAM),TZFILE,IRESP) CALL IO_FILE_CLOSE_ll(TNAM)
! TNAM => NULL()
CALL FMLOOK_ll(CNAM,YLUOUT,INAM,IRESP)
IF (INAM==KLUNAM) THEN
CALL IO_FILE_CLOSE_ll(TZFILE)
CNAM = " "
ELSE ELSE
CALL FMLOOK_ll(YLUOUT,YLUOUT,ILUOUT,IRESP) CALL FMLOOK_ll(YLUOUT,YLUOUT,ILUOUT,IRESP)
WRITE(ILUOUT,*) 'Error for closing a namelist file: ' WRITE(ILUOUT,*) 'Error for closing a namelist file: '
WRITE(ILUOUT,*) 'logical unit ',KLUNAM,' does not correspond to namelist file', CNAM WRITE(ILUOUT,*) 'logical unit ',KLUNAM,' does not correspond to namelist file', TNAM%CNAME
!callabortstop !callabortstop
CALL PRINT_MSG(NVERB_FATAL,'GEN','MNHCLOSE_NAMELIST','') CALL PRINT_MSG(NVERB_FATAL,'GEN','MNHCLOSE_NAMELIST','')
END IF END IF
......
...@@ -58,17 +58,12 @@ END MODULE MODI_MNHOPEN_NAMELIST ...@@ -58,17 +58,12 @@ END MODULE MODI_MNHOPEN_NAMELIST
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE MODD_CONF, ONLY : CPROGRAM USE MODD_CONF, ONLY: CPROGRAM
USE MODD_IO_ll, ONLY : TFILEDATA USE MODD_IO_NAM, ONLY: TNAM
USE MODD_IO_NAM, ONLY : CNAM !
USE MODD_LUNIT, ONLY : CLUOUT0 USE MODE_FM, ONLY: IO_FILE_OPEN_ll
! USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST
USE MODE_FM
USE MODE_IO_ll
USE MODE_ll
USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST
USE MODE_MSG USE MODE_MSG
USE MODE_IO_MANAGE_STRUCT, ONLY : io_file_print_list
! !
IMPLICIT NONE IMPLICIT NONE
! !
...@@ -86,49 +81,46 @@ INTEGER :: IRESP ! IRESP : return-code if a problem appears ...@@ -86,49 +81,46 @@ INTEGER :: IRESP ! IRESP : return-code if a problem appears
! at the open of the file in LFI routines ! at the open of the file in LFI routines
INTEGER :: IMI ! model index INTEGER :: IMI ! model index
! !
TYPE(TFILEDATA),POINTER :: TZFILE CHARACTER(LEN=28) :: YNAM ! name of namelist
!-------------------------------------------------------------------------------
!
TZFILE => NULL()
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
!* reading of namelist !* reading of namelist
! ------------------- ! -------------------
! !
IF (LEN_TRIM(HFILE)>0) THEN IF (LEN_TRIM(HFILE)>0) THEN
CNAM = HFILE YNAM = HFILE
ELSE ELSE
SELECT CASE(CPROGRAM) SELECT CASE(CPROGRAM)
CASE('PGD ') CASE('PGD ')
CNAM='PRE_PGD1.nam ' YNAM='PRE_PGD1.nam '
CASE('REAL ') CASE('REAL ')
CNAM='PRE_REAL1.nam' YNAM='PRE_REAL1.nam'
CASE('IDEAL ') CASE('IDEAL ')
CNAM='PRE_IDEA1.nam' YNAM='PRE_IDEA1.nam'
CASE('MESONH') CASE('MESONH')
CALL GET_MODEL_NUMBER_ll(IMI) CALL GET_MODEL_NUMBER_ll(IMI)
WRITE(CNAM,FMT='(A5,I1,A22)') 'EXSEG',IMI,'.nam ' WRITE(YNAM,FMT='(A5,I1,A22)') 'EXSEG',IMI,'.nam '
CASE('DIAG ') CASE('DIAG ')
CNAM='DIAG1.nam ' YNAM='DIAG1.nam '
CASE('SPAWN ') CASE('SPAWN ')
CNAM='SPAWN1.nam ' YNAM='SPAWN1.nam '
CASE('NESPGD') CASE('NESPGD')
CNAM='PRE_NEST_PGD1.nam' YNAM='PRE_NEST_PGD1.nam'
CASE('ZOOMPG') CASE('ZOOMPG')
CNAM='PRE_ZOOM1.nam' YNAM='PRE_ZOOM1.nam'
CASE('SPEC ') CASE('SPEC ')
CNAM='SPEC1.nam' YNAM='SPEC1.nam'
CASE DEFAULT CASE DEFAULT
CALL PRINT_MSG(NVERB_FATAL,'IO','MNHOPEN_NAMELIST','CPROGRAM '//TRIM(CPROGRAM)//' not allowed') CALL PRINT_MSG(NVERB_FATAL,'IO','MNHOPEN_NAMELIST','CPROGRAM '//TRIM(CPROGRAM)//' not allowed')
END SELECT END SELECT
END IF END IF
! !
CALL PRINT_MSG(NVERB_DEBUG,'IO','MNHOPEN_NAMELIST','called for '//TRIM(CNAM)) CALL PRINT_MSG(NVERB_DEBUG,'IO','MNHOPEN_NAMELIST','called for '//TRIM(YNAM))
! !
CALL IO_FILE_ADD2LIST(TZFILE,TRIM(CNAM),'NML','READ',OOLD=.TRUE.) !OOLD=T because the file may already be in list CALL IO_FILE_ADD2LIST(TNAM,TRIM(YNAM),'NML','READ',OOLD=.TRUE.) !OOLD=T because the file may already be in list
CALL IO_FILE_OPEN_ll(TZFILE) CALL IO_FILE_OPEN_ll(TNAM)
! !
KLUNAM = TZFILE%NLU KLUNAM = TNAM%NLU
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
......
...@@ -35,12 +35,13 @@ ...@@ -35,12 +35,13 @@
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE MODD_IO_ll, ONLY: TFILEDATA
! !
IMPLICIT NONE IMPLICIT NONE
!------------------------------------------------------------------------------ !------------------------------------------------------------------------------
! !
CHARACTER(LEN=28), SAVE :: CNAM =" " ! name of namelist TYPE(TFILEDATA),POINTER :: TNAM => NULL() ! namelist file
CHARACTER(LEN=28), SAVE :: CFILE=" " ! name of file TYPE(TFILEDATA),POINTER :: TFILE => NULL() ! file
! !
!------------------------------------------------------------------------------ !------------------------------------------------------------------------------
! !
......
...@@ -61,12 +61,10 @@ END MODULE MODI_OPEN_FILE_MNH ...@@ -61,12 +61,10 @@ END MODULE MODI_OPEN_FILE_MNH
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE MODD_IO_ll, ONLY : TFILEDATA USE MODD_IO_NAM, ONLY: TFILE
USE MODD_IO_NAM, ONLY : CFILE
! !
USE MODE_FM, ONLY : IO_FILE_OPEN_ll USE MODE_FM, ONLY: IO_FILE_OPEN_ll
USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST
USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST
USE MODE_MSG USE MODE_MSG
! !
IMPLICIT NONE IMPLICIT NONE
...@@ -85,22 +83,17 @@ INTEGER, INTENT(IN) :: KRECL ! record length ...@@ -85,22 +83,17 @@ INTEGER, INTENT(IN) :: KRECL ! record length
! ------------------------------- ! -------------------------------
! !
INTEGER :: IRESP INTEGER :: IRESP
TYPE(TFILEDATA),POINTER :: TZFILE
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_FILE_MNH','called for '//TRIM(HFILE)) CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_FILE_MNH','called for '//TRIM(HFILE))
! !
TZFILE => NULL() CALL IO_FILE_ADD2LIST(TFILE,TRIM(HFILE),'SURFACE_DATA',HACTION, &
! HFORM=HFORM,HACCESS=HACCESS,KRECL=KRECL, &
CFILE = HFILE
!
CALL IO_FILE_ADD2LIST(TZFILE,TRIM(HFILE),'SURFACE_DATA',HACTION, &
HFORM=HFORM,HACCESS=HACCESS,KRECL=KRECL, &
OOLD=.TRUE.) !OOLD=T because the file may already be in list OOLD=.TRUE.) !OOLD=T because the file may already be in list
CALL IO_FILE_OPEN_ll(TZFILE) CALL IO_FILE_OPEN_ll(TFILE)
! !
KUNIT = TZFILE%NLU KUNIT = TFILE%NLU
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment