From 7e54586a2792e9126012fb672d51be896a42cf05 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 10 Nov 2017 16:09:42 +0100 Subject: [PATCH] Philippe 10/11/2017: IO: use file structures for MODD_IO_NAM --- src/MNH/close_file_mnh.f90 | 30 +++++++++------------- src/MNH/mnhclose_namelist.f90 | 29 ++++++++------------- src/MNH/mnhopen_namelist.f90 | 48 +++++++++++++++-------------------- src/MNH/modd_io_nam.f90 | 5 ++-- src/MNH/open_file_mnh.f90 | 21 +++++---------- 5 files changed, 53 insertions(+), 80 deletions(-) diff --git a/src/MNH/close_file_mnh.f90 b/src/MNH/close_file_mnh.f90 index bc39e66af..59b5f2c27 100644 --- a/src/MNH/close_file_mnh.f90 +++ b/src/MNH/close_file_mnh.f90 @@ -57,15 +57,13 @@ END MODULE MODI_CLOSE_FILE_MNH !* 0. DECLARATIONS ! ------------ ! -USE MODD_CONF, ONLY : CPROGRAM -USE MODD_IO_ll, ONLY : TFILEDATA -USE MODD_IO_NAM, ONLY : CFILE -USE MODD_LUNIT, ONLY : CLUOUT0 +USE MODD_CONF, ONLY: CPROGRAM +USE MODD_IO_NAM, ONLY: TFILE +USE MODD_LUNIT, ONLY: CLUOUT0 ! -USE MODE_FM -USE MODE_IO_ll +USE MODE_FM, ONLY: FMLOOK_ll,IO_FILE_CLOSE_ll +USE MODE_IO_ll, ONLY: CLOSE_ll USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME -USE MODE_ll USE MODE_MSG ! IMPLICIT NONE @@ -82,11 +80,9 @@ INTEGER, INTENT(IN) :: KUNIT ! logical unit of file INTEGER :: IRESP ! IRESP : return-code if a problem appears ! at the open of the file in LFI routines ! -INTEGER :: INAM ! logical unit of namelist INTEGER :: IMI ! model index INTEGER :: ILUOUT ! output listing logical unit CHARACTER(LEN=16) :: YLUOUT ! output listing file name -TYPE(TFILEDATA),POINTER :: TZFILE !------------------------------------------------------------------------------- ! SELECT CASE(CPROGRAM) @@ -116,20 +112,18 @@ END IF !* 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 IO_FILE_FIND_BYNAME(TRIM(CFILE),TZFILE,IRESP) +CALL PRINT_MSG(NVERB_DEBUG,'IO','CLOSE_FILE_MNH','called for '//TRIM(TFILE%CNAME)) ! -CALL FMLOOK_ll(CFILE,YLUOUT,INAM,IRESP) -IF (INAM==KUNIT) THEN - CALL IO_FILE_CLOSE_ll(TZFILE) - CFILE = " " +IF (TFILE%NLU==KUNIT) THEN + CALL IO_FILE_CLOSE_ll(TFILE) + TFILE => NULL() ELSE 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 - CALL PRINT_MSG(NVERB_FATAL,'GEN','CLOSE_FILE_MNH','') + CALL PRINT_MSG(NVERB_FATAL,'IO','CLOSE_FILE_MNH','') END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/mnhclose_namelist.f90 b/src/MNH/mnhclose_namelist.f90 index e52b20924..d24d727b7 100644 --- a/src/MNH/mnhclose_namelist.f90 +++ b/src/MNH/mnhclose_namelist.f90 @@ -57,15 +57,12 @@ END MODULE MODI_MNHCLOSE_NAMELIST !* 0. DECLARATIONS ! ------------ ! -USE MODD_CONF, ONLY : CPROGRAM -USE MODD_IO_ll, ONLY : TFILEDATA -USE MODD_IO_NAM, ONLY : CNAM -USE MODD_LUNIT, ONLY : CLUOUT0 +USE MODD_CONF, ONLY: CPROGRAM +USE MODD_IO_NAM, ONLY: TNAM +USE MODD_LUNIT, ONLY: CLUOUT0 ! -USE MODE_FM -USE MODE_IO_ll +USE MODE_FM, ONLY: FMLOOK_ll,IO_FILE_CLOSE_ll USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME -USE MODE_ll USE MODE_MSG ! IMPLICIT NONE @@ -82,14 +79,14 @@ INTEGER, INTENT(IN) :: KLUNAM ! logical unit of namelist INTEGER :: IRESP ! IRESP : return-code if a problem appears ! at the open of the file in LFI routines ! -INTEGER :: INAM ! logical unit of namelist INTEGER :: IMI ! model index INTEGER :: ILUOUT ! output listing logical unit 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) CASE('REAL ','IDEAL ','DIAG ') @@ -104,17 +101,13 @@ END SELECT !* closes the namelist ! ------------------- ! -TZFILE => NULL() -CALL IO_FILE_FIND_BYNAME(TRIM(CNAM),TZFILE,IRESP) -! -CALL FMLOOK_ll(CNAM,YLUOUT,INAM,IRESP) -IF (INAM==KLUNAM) THEN - CALL IO_FILE_CLOSE_ll(TZFILE) - CNAM = " " +IF (TNAM%NLU==KLUNAM) THEN + CALL IO_FILE_CLOSE_ll(TNAM) + TNAM => NULL() ELSE CALL FMLOOK_ll(YLUOUT,YLUOUT,ILUOUT,IRESP) 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 CALL PRINT_MSG(NVERB_FATAL,'GEN','MNHCLOSE_NAMELIST','') END IF diff --git a/src/MNH/mnhopen_namelist.f90 b/src/MNH/mnhopen_namelist.f90 index fa2675d38..df39e9687 100644 --- a/src/MNH/mnhopen_namelist.f90 +++ b/src/MNH/mnhopen_namelist.f90 @@ -58,17 +58,12 @@ END MODULE MODI_MNHOPEN_NAMELIST !* 0. DECLARATIONS ! ------------ ! -USE MODD_CONF, ONLY : CPROGRAM -USE MODD_IO_ll, ONLY : TFILEDATA -USE MODD_IO_NAM, ONLY : CNAM -USE MODD_LUNIT, ONLY : CLUOUT0 -! -USE MODE_FM -USE MODE_IO_ll -USE MODE_ll -USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST +USE MODD_CONF, ONLY: CPROGRAM +USE MODD_IO_NAM, ONLY: TNAM +! +USE MODE_FM, ONLY: IO_FILE_OPEN_ll +USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST USE MODE_MSG -USE MODE_IO_MANAGE_STRUCT, ONLY : io_file_print_list ! IMPLICIT NONE ! @@ -86,49 +81,46 @@ INTEGER :: IRESP ! IRESP : return-code if a problem appears ! at the open of the file in LFI routines INTEGER :: IMI ! model index ! -TYPE(TFILEDATA),POINTER :: TZFILE -!------------------------------------------------------------------------------- -! -TZFILE => NULL() +CHARACTER(LEN=28) :: YNAM ! name of namelist !------------------------------------------------------------------------------- ! !* reading of namelist ! ------------------- ! IF (LEN_TRIM(HFILE)>0) THEN - CNAM = HFILE + YNAM = HFILE ELSE SELECT CASE(CPROGRAM) CASE('PGD ') - CNAM='PRE_PGD1.nam ' + YNAM='PRE_PGD1.nam ' CASE('REAL ') - CNAM='PRE_REAL1.nam' + YNAM='PRE_REAL1.nam' CASE('IDEAL ') - CNAM='PRE_IDEA1.nam' + YNAM='PRE_IDEA1.nam' CASE('MESONH') 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 ') - CNAM='DIAG1.nam ' + YNAM='DIAG1.nam ' CASE('SPAWN ') - CNAM='SPAWN1.nam ' + YNAM='SPAWN1.nam ' CASE('NESPGD') - CNAM='PRE_NEST_PGD1.nam' + YNAM='PRE_NEST_PGD1.nam' CASE('ZOOMPG') - CNAM='PRE_ZOOM1.nam' + YNAM='PRE_ZOOM1.nam' CASE('SPEC ') - CNAM='SPEC1.nam' + YNAM='SPEC1.nam' CASE DEFAULT CALL PRINT_MSG(NVERB_FATAL,'IO','MNHOPEN_NAMELIST','CPROGRAM '//TRIM(CPROGRAM)//' not allowed') END SELECT 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_OPEN_ll(TZFILE) +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(TNAM) ! -KLUNAM = TZFILE%NLU +KLUNAM = TNAM%NLU ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/modd_io_nam.f90 b/src/MNH/modd_io_nam.f90 index 0f07b006b..4bb99bc31 100644 --- a/src/MNH/modd_io_nam.f90 +++ b/src/MNH/modd_io_nam.f90 @@ -35,12 +35,13 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_IO_ll, ONLY: TFILEDATA ! IMPLICIT NONE !------------------------------------------------------------------------------ ! -CHARACTER(LEN=28), SAVE :: CNAM =" " ! name of namelist -CHARACTER(LEN=28), SAVE :: CFILE=" " ! name of file +TYPE(TFILEDATA),POINTER :: TNAM => NULL() ! namelist file +TYPE(TFILEDATA),POINTER :: TFILE => NULL() ! file ! !------------------------------------------------------------------------------ ! diff --git a/src/MNH/open_file_mnh.f90 b/src/MNH/open_file_mnh.f90 index d35e50203..072117ec3 100644 --- a/src/MNH/open_file_mnh.f90 +++ b/src/MNH/open_file_mnh.f90 @@ -61,12 +61,10 @@ END MODULE MODI_OPEN_FILE_MNH !* 0. DECLARATIONS ! ------------ ! -USE MODD_IO_ll, ONLY : TFILEDATA -USE MODD_IO_NAM, ONLY : CFILE +USE MODD_IO_NAM, ONLY: TFILE ! -USE MODE_FM, ONLY : IO_FILE_OPEN_ll -USE MODE_IO_ll -USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST +USE MODE_FM, ONLY: IO_FILE_OPEN_ll +USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST USE MODE_MSG ! IMPLICIT NONE @@ -85,22 +83,17 @@ INTEGER, INTENT(IN) :: KRECL ! record length ! ------------------------------- ! INTEGER :: IRESP -TYPE(TFILEDATA),POINTER :: TZFILE ! !------------------------------------------------------------------------------- ! CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_FILE_MNH','called for '//TRIM(HFILE)) ! -TZFILE => NULL() -! -CFILE = HFILE -! -CALL IO_FILE_ADD2LIST(TZFILE,TRIM(HFILE),'SURFACE_DATA',HACTION, & - HFORM=HFORM,HACCESS=HACCESS,KRECL=KRECL, & +CALL IO_FILE_ADD2LIST(TFILE,TRIM(HFILE),'SURFACE_DATA',HACTION, & + HFORM=HFORM,HACCESS=HACCESS,KRECL=KRECL, & 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 ! !------------------------------------------------------------------------------- ! -- GitLab