diff --git a/src/MNH/close_file_mnh.f90 b/src/MNH/close_file_mnh.f90 index bc39e66afb614f1a93c426d724f2d6011fbd2279..59b5f2c277b0e187fb157c85956311394359b362 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 e52b209242d0159530f9b496ac11b9a082635784..d24d727b7b60daa940dd0436c5b3ea5bccb24d17 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 fa2675d38ddce0f74219330f805a9eae98ac7b9f..df39e9687dd9a115b6aa01be665128a39e1f7921 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 0f07b006b5e2b118931407ec58fd050ef881cdd0..4bb99bc31493ddb05336ac18f0b57aabf3573ba9 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 d35e50203a73add16ec868130b34b48a2e71b568..072117ec309ad36070d9aa59370d396ba01f9715 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 ! !------------------------------------------------------------------------------- !