diff --git a/src/MNH/mnhget_desfmn.f90 b/src/MNH/mnhget_desfmn.f90 index 189bbb76259fe05ebcfc8987ca415da48ab083a5..c99de259c5fa59a4e3537fcfc43c0c2b6573e48f 100644 --- a/src/MNH/mnhget_desfmn.f90 +++ b/src/MNH/mnhget_desfmn.f90 @@ -59,13 +59,8 @@ END MODULE MODI_MNHGET_DESFM_n ! ! USE MODD_CONF, ONLY : CPROGRAM -USE MODD_LUNIT_n, ONLY : CINIFILE -USE MODD_LUNIT, ONLY : CLUOUT0, CPGDFILE, TOUTDATAFILE -! -USE MODE_FM -USE MODE_ll -USE MODE_MODELN_HANDLER -! +USE MODD_LUNIT_n, ONLY : TINIFILE +USE MODD_LUNIT, ONLY : TPGDFILE,TOUTDATAFILE ! IMPLICIT NONE ! @@ -73,45 +68,24 @@ IMPLICIT NONE ! ------------------------- ! CHARACTER(LEN=5), INTENT(IN) :: HACTION ! 'READ ', 'WRITE' -INTEGER, INTENT(OUT) :: KLUDES ! logical unit of .des file +INTEGER, INTENT(OUT) :: KLUDES ! logical unit of .des file ! !* 0.2 Declarations of local variables ! ------------------------------- ! -INTEGER :: IRESP ! IRESP : return-code if a problem appears - ! at the open of the file in LFI routines -INTEGER :: IMI ! model index -! -CHARACTER(LEN=16) :: YLUOUT ! output listing file name -CHARACTER(LEN=32) :: YDESFM ! .des file name -! +!NONE !------------------------------------------------------------------------------- ! +!* 1. Return logical unit of .des files ! -!* 1. initialisation of logical unit of output listing -! -SELECT CASE(CPROGRAM) - CASE('REAL ','IDEAL ','DIAG ','PGD ') - YLUOUT = CLUOUT0 - CASE('MESONH','SPAWN ') - IMI = GET_CURRENT_MODEL_INDEX() - WRITE(YLUOUT,FMT='(A14,I1,A1)') 'OUTPUT_LISTING',IMI,' ' - CASE DEFAULT - YLUOUT = '' -END SELECT -! -!* 2. initialisation of logical units of .des files -! -YDESFM =' ' KLUDES=0 +! IF (HACTION=='READ ') THEN SELECT CASE(CPROGRAM) CASE('MESONH','DIAG ') - YDESFM=ADJUSTL(ADJUSTR(CINIFILE)//'.des') - CALL FMLOOK_ll(YDESFM,YLUOUT,KLUDES,IRESP) + KLUDES = TINIFILE%TDESFILE%NLU CASE('REAL ') - YDESFM=ADJUSTL(ADJUSTR(CPGDFILE)//'.des') - CALL FMLOOK_ll(YDESFM,YLUOUT,KLUDES,IRESP) + KLUDES = TPGDFILE%TDESFILE%NLU CASE('IDEAL ') KLUDES = 0 END SELECT diff --git a/src/MNH/mnhinit_io_surfn.f90 b/src/MNH/mnhinit_io_surfn.f90 index 7b8bd695424a434fac01deafebc105def5790882..22829442a2bf9f3351113428e49c8a9f9ac7fb1f 100644 --- a/src/MNH/mnhinit_io_surfn.f90 +++ b/src/MNH/mnhinit_io_surfn.f90 @@ -65,7 +65,7 @@ USE MODD_IO_SURF_MNH, ONLY: TOUT, TPINFILE, COUTFILE, NMASK, CMASK, NIU, NJU, NIB, NJB, NIE, NJE, CACTION, & NMASK_ALL, NIU_ALL, NJU_ALL, NIB_ALL, NJB_ALL, & NIE_ALL, NJE_ALL, NHALO -USE MODD_LUNIT, ONLY: CLUOUT0, CPGDFILE, TLUOUT0, TOUTDATAFILE +USE MODD_LUNIT, ONLY: CLUOUT0, TPGDFILE, TLUOUT0, TOUTDATAFILE USE MODD_LUNIT_n, ONLY: CINIFILE,CINIFILEPGD,CMASK_SURFEX, TLUOUT USE MODD_MNH_SURFEX_n USE MODD_PARAMETERS, ONLY: JPHEXT @@ -127,7 +127,7 @@ IF (HACTION=='READ ') THEN CALL IO_FILE_FIND_BYNAME(TRIM(CINIFILE),TPINFILE,IRESP) ENDIF CASE('REAL ','IDEAL ','NESPGD','SPAWN ','ZOOMPG') - CALL IO_FILE_FIND_BYNAME(TRIM(CPGDFILE),TPINFILE,IRESP) + TPINFILE => TPGDFILE END SELECT ELSE IF (HACTION=='WRITE') THEN IF (ASSOCIATED(TOUTDATAFILE)) THEN diff --git a/src/MNH/mnhopen_aux_io_surf.f90 b/src/MNH/mnhopen_aux_io_surf.f90 index bfb22b75ff7280bed8c92799eb58554628597f7e..92c2b2b318e894c42deab87fb7ee433e57b470ec 100644 --- a/src/MNH/mnhopen_aux_io_surf.f90 +++ b/src/MNH/mnhopen_aux_io_surf.f90 @@ -61,7 +61,7 @@ USE MODD_CONF, ONLY: CPROGRAM USE MODD_IO_SURF_MNH, ONLY: TOUT, TPINFILE, COUTFILE, NMASK_ALL, CMASK, NIU_ALL, & NJU_ALL, NIB_ALL, NJB_ALL, NIE_ALL, NJE_ALL, CACTION, & NMASK, NIU, NJU, NIB, NJB, NIE, NJE -USE MODD_LUNIT, ONLY: CLUOUT0, CPGDFILE, TLUOUT0, TOUTDATAFILE +USE MODD_LUNIT, ONLY: CLUOUT0, TPGDFILE, TLUOUT0, TOUTDATAFILE USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_PARAMETERS, ONLY: JPHEXT ! @@ -92,7 +92,7 @@ INTEGER :: IIMAX ! number of points in X direction INTEGER :: IJMAX ! number of points in Y direction ! ! -CHARACTER(LEN=28) :: YFILE ! file name +CHARACTER(LEN=28) :: YFILE,YPGDFILE ! file names INTEGER :: ILU ! 1D physical dimension of XCOVER INTEGER :: ILUOUT REAL, DIMENSION(:), ALLOCATABLE :: ZFULL ! total cover @@ -129,7 +129,13 @@ ELSE YFILE = TOUTDATAFILE%CNAME END IF ! -IF (HFILE/=YFILE .AND. HFILE/=CPGDFILE) THEN +IF (.NOT.ASSOCIATED(TPGDFILE)) THEN + YPGDFILE = '' +ELSE + YPGDFILE = TPGDFILE%CNAME +END IF +! +IF (HFILE/=YFILE .AND. HFILE/=YPGDFILE) THEN CALL IO_FILE_ADD2LIST(TPINFILE,TRIM(HFILE),'UNKNOWN','READ',KLFITYPE=2,KLFIVERB=5,OOLD=.TRUE.) CALL IO_FILE_OPEN_ll(TPINFILE,KRESP=IRESP,OPARALLELIO=.FALSE.) ! diff --git a/src/MNH/modd_lunit.f90 b/src/MNH/modd_lunit.f90 index fee3c3d189fbeb3922aecd1f2e2fdaacfcdbd870..cea78617addf29df545e369c2409de65161d825f 100644 --- a/src/MNH/modd_lunit.f90 +++ b/src/MNH/modd_lunit.f90 @@ -48,6 +48,6 @@ IMPLICIT NONE CHARACTER(LEN=16),SAVE :: CLUOUT0 ! Name of output_listing file TYPE(TFILEDATA),POINTER :: TLUOUT0 => NULL() ! output_listing file TYPE(TFILEDATA),POINTER :: TOUTDATAFILE => NULL() ! output data file being written -CHARACTER(LEN=28),SAVE :: CPGDFILE ! name of the PGD file for PREP_REAL_CASE +TYPE(TFILEDATA),POINTER :: TPGDFILE => NULL() ! PGD file ! END MODULE MODD_LUNIT diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index ecdab0b266dc4142be3b0095df2bc0073b82674a..831891e54ea373eff3983a08d8ddfbd647e308ce 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -1775,13 +1775,13 @@ IF (CSURF =='EXTE') THEN !* definition of physiographic fields ! computed ... IF (LEN_TRIM(CPGD_FILE)==0 .OR. .NOT. LREAD_GROUND_PARAM) THEN - CPGDFILE = TINIFILE%CNAME + TPGDFILE => TINIFILE CALL PGD_GRID_SURF_ATM(YSURF_CUR%UG, YSURF_CUR%U,YSURF_CUR%GCP,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.) CALL PGD_SURF_ATM (YSURF_CUR,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.) - CPGDFILE = CINIFILEPGD + TPGDFILE => TINIFILEPGD ELSE ! ... or read from file. - CPGDFILE = CPGD_FILE + TPGDFILE => TZPGDFILE CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PGD', & ' ',' ',& TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, & diff --git a/src/MNH/prep_nest_pgd.f90 b/src/MNH/prep_nest_pgd.f90 index 5429524f0835a26edd11c0548b0e92a7b9687c5a..c23ec43fa2a5b2e670a2368b25823675a9686809 100644 --- a/src/MNH/prep_nest_pgd.f90 +++ b/src/MNH/prep_nest_pgd.f90 @@ -105,7 +105,7 @@ USE MODD_CST USE MODD_DIM_n USE MODD_IO_ll, ONLY: NIO_VERB, NVERB_DEBUG, TFILE_SURFEX, TPTR2FILE USE MODD_GRID_n, ONLY: XZSMT -USE MODD_LUNIT, ONLY: CPGDFILE,TLUOUT0,TOUTDATAFILE +USE MODD_LUNIT, ONLY: TPGDFILE,TLUOUT0,TOUTDATAFILE USE MODD_MNH_SURFEX_n USE MODD_NESTING USE MODD_PARAMETERS @@ -305,7 +305,7 @@ END DO DO JPGD=1,NMODEL IF (LEN_TRIM(TZFILEPGD(JPGD)%TZFILE%CNAME)>0) THEN CALL GO_TOMODEL_ll(JPGD,IINFO_ll) - CPGDFILE = TZFILEPGD(JPGD)%TZFILE%CNAME + TPGDFILE => TZFILEPGD(JPGD)%TZFILE CALL GOTO_MODEL(JPGD) CALL GOTO_SURFEX(JPGD) CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PGD', & @@ -333,7 +333,7 @@ END DO ! DO JPGD=1,NMODEL CALL GO_TOMODEL_ll(JPGD,IINFO_ll) - CPGDFILE = TZFILEPGD(JPGD)%TZFILE%CNAME + TPGDFILE => TZFILEPGD(JPGD)%TZFILE TOUTDATAFILE => TZFILENESTPGD(JPGD)%TZFILE CALL GOTO_MODEL(JPGD) CALL GOTO_SURFEX(JPGD) diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 792b9404bc9cbbc85ef064f93a8fe11156482238..c848fac7bf1d1971c1d4d4edc6076838960db015 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -405,7 +405,7 @@ USE MODD_HURR_CONF USE MODD_IO_ll, ONLY: GSMONOPROC,TFILEDATA,LIOCDF4,LLFIOUT,NIO_VERB,NVERB_DEBUG,TFILE_SURFEX USE MODD_LBC_n USE MODD_LSFIELD_n -USE MODD_LUNIT, ONLY: CLUOUT0,CPGDFILE,TLUOUT0,TOUTDATAFILE +USE MODD_LUNIT, ONLY: CLUOUT0,TPGDFILE,TLUOUT0,TOUTDATAFILE USE MODD_LUNIT_n, ONLY: CINIFILE,TINIFILE,TLUOUT USE MODD_METRICS_n USE MODD_MNH_SURFEX_n @@ -579,7 +579,7 @@ CALL OPEN_PRC_FILES(TZPRE_REAL1FILE,YATMFILE, YATMFILETYPE,TZATMFILE & ILUOUT0 = TLUOUT0%NLU TLUOUT => TLUOUT0 ! -CPGDFILE = YPGDFILE +TPGDFILE => TZPGDFILE ! CALL IO_FILE_ADD2LIST(TINIFILE,CINIFILE,'PREPREALCASE','WRITE',KLFITYPE=1,KLFIVERB=NVERB) ! diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90 index 8fb535c4690f6e998af09c40b8c4d8a604e5bf1f..e3ab44721b445a5f5153e14e2a8d135eb69ddb1a 100644 --- a/src/MNH/prep_surfex.f90 +++ b/src/MNH/prep_surfex.f90 @@ -39,7 +39,7 @@ USE MODD_CONF, ONLY : CPROGRAM,NMASDEV,NBUGFIX,CBIBUSER,& L1D, L2D, LPACK USE MODD_CONF_n, ONLY : CSTORAGE_TYPE USE MODD_IO_ll, ONLY : TFILEDATA, LIOCDF4, LLFIOUT, NIO_VERB, NVERB_DEBUG, TFILE_SURFEX -USE MODD_LUNIT, ONLY : CLUOUT0, CPGDFILE, TLUOUT0 +USE MODD_LUNIT, ONLY : CLUOUT0, TPGDFILE, TLUOUT0 USE MODD_LUNIT_n, ONLY : CINIFILE USE MODD_MNH_SURFEX_n USE MODD_PARAMETERS, ONLY : JPMODELMAX,JPHEXT,JPVEXT, NUNDEF, XUNDEF @@ -114,7 +114,7 @@ CALL OPEN_PRC_FILES(TZPRE_REAL1FILE,YATMFILE, YATMFILETYPE,TZATMFILE & ,YPGDFILE,TZPGDFILE) ILUOUT0 = TLUOUT0%NLU ! -CPGDFILE = YPGDFILE +TPGDFILE => TZPGDFILE ! CALL IO_FILE_ADD2LIST(TZFILE,TRIM(CINIFILE),'PREPSURFEX','WRITE',KLFITYPE=1,KLFIVERB=1) ! diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90 index 8562c486c8dd4f6cbafbdb9acef08be50eb25862..638fdabd2205166e4ef492dc31e3c9b145792b9e 100644 --- a/src/MNH/read_surf_mnh.f90 +++ b/src/MNH/read_surf_mnh.f90 @@ -1292,7 +1292,7 @@ USE MODE_POS ! USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE USE MODD_CONF, ONLY : LCARTESIAN, CPROGRAM -USE MODD_LUNIT, ONLY : CPGDFILE +USE MODD_LUNIT, ONLY : TPGDFILE ! ! IMPLICIT NONE @@ -1339,8 +1339,8 @@ ELSE IF (HREC=='SNOW_ROOF_TYPE'.AND.IMASDEV<46) THEN ELSE IF (HREC=='PHOTO'.AND.IMASDEV<46) THEN HFIELD='NON' ELSE IF ( HREC=='GRID_TYPE'.AND. (IMASDEV<46 .OR. & - (CPROGRAM=='IDEAL ' .AND. CPGDFILE/=TOUT%CNAME) .OR. & - (CPROGRAM=='SPAWN ' .AND. CPGDFILE/=TOUT%CNAME) .OR. & + (CPROGRAM=='IDEAL ' .AND. .NOT.ASSOCIATED(TPGDFILE,TOUT)) .OR. & + (CPROGRAM=='SPAWN ' .AND. .NOT.ASSOCIATED(TPGDFILE,TOUT)) .OR. & CPROGRAM=='ZOOMPG' )) THEN IF (LCARTESIAN) THEN HFIELD="CARTESIAN " diff --git a/src/MNH/spawn_surf.f90 b/src/MNH/spawn_surf.f90 index d549fcf15fb5a5b99dc0f425e1a3e5b605cc1864..cc27f9cde713d4ac5ff929edc4eb775eb7789db8 100644 --- a/src/MNH/spawn_surf.f90 +++ b/src/MNH/spawn_surf.f90 @@ -80,7 +80,7 @@ USE MODD_CONF, ONLY : NVERB USE MODD_GRID_n, ONLY : XZS USE MODD_IO_ll, ONLY : TFILEDATA USE MODD_IO_SURF_MNH, ONLY : COUTFILE -USE MODD_LUNIT, ONLY : CPGDFILE, TOUTDATAFILE +USE MODD_LUNIT, ONLY : TPGDFILE, TOUTDATAFILE USE MODD_MNH_SURFEX_n USE MODD_NESTING, ONLY : CMY_NAME, CDAD_NAME USE MODD_PARAM_n, ONLY : CSURF @@ -121,7 +121,7 @@ INTEGER :: IINFO_ll ! IF (CSURF=='EXTE') THEN IF (OSPAWN_SURF) THEN - CPGDFILE = CMY_NAME(2) + TPGDFILE => TPOUTDATAFILE !Corresponding to file with CNAME = CMY_NAME(2) TOUTDATAFILE => TPOUTDATAFILE !Corresponding to file with CNAME = CMY_NAME(2) COUTFILE = CMY_NAME(2) !* spawn PGD fields @@ -130,7 +130,7 @@ IF (CSURF=='EXTE') THEN !CALL GO_TOMODEL_ll(1,IINFO_ll) !CALL GOTO_MODEL(1) !JUAN REALZ - CALL ZOOM_PGD_SURF_ATM(YSURF_CUR,'MESONH',HINIFILEPGD,'MESONH',CPGDFILE,'MESONH') + CALL ZOOM_PGD_SURF_ATM(YSURF_CUR,'MESONH',HINIFILEPGD,'MESONH',TPGDFILE%CNAME,'MESONH') CALL MNHPUT_ZS_n !* writing of physiographic fields in the file CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH') diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90 index 01bfaf3c7f2adca5428d0fba3b6824fbe405b9a9..4c9498550b7d72c1c96f8d5c863ef8eefa9096a6 100644 --- a/src/MNH/zoom_pgd.f90 +++ b/src/MNH/zoom_pgd.f90 @@ -53,7 +53,7 @@ USE MODD_CONF, ONLY : CPROGRAM, NMASDEV, NBUGFIX, CBIBUSER, & L1D, L2D, LPACK USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,NIO_VERB,NVERB_DEBUG,TFILE_OUTPUTLISTING,TFILEDATA -USE MODD_LUNIT, ONLY : CLUOUT0, CPGDFILE, TLUOUT0, TOUTDATAFILE +USE MODD_LUNIT, ONLY : CLUOUT0, TPGDFILE, TLUOUT0, TOUTDATAFILE USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX USE MODD_PARAM_n, ONLY : CSURF USE MODD_DIM_n, ONLY : NIMAX, NJMAX @@ -94,6 +94,7 @@ INTEGER :: IRESP ! return code for I/O INTEGER :: ILUOUT0 INTEGER :: ILUNAM INTEGER :: IINFO_ll +CHARACTER(LEN=28) :: CPGDFILE ! name of the PGD file CHARACTER(LEN=28) :: YZOOMFILE ! name of the output file CHARACTER(LEN=2) :: YZOOMNBR CHARACTER(LEN=28) :: YMY_NAME,YDAD_NAME