From c894744f7f11aeed075e9d2f342d3d3e5ec9817f Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 23 Mar 2017 16:51:48 +0100 Subject: [PATCH] Philippe 23/03/2017: IO: use IO_WRITE_FIELD for PREP_NEST_PGD and PREP_PGD --- src/MNH/prep_nest_pgd.f90 | 35 +++++++------- src/MNH/prep_pgd.f90 | 58 ++++++++++------------- src/MNH/write_zsmt.f90 | 98 --------------------------------------- src/MNH/zsmt_pgd.f90 | 26 ++++------- 4 files changed, 52 insertions(+), 165 deletions(-) delete mode 100644 src/MNH/write_zsmt.f90 diff --git a/src/MNH/prep_nest_pgd.f90 b/src/MNH/prep_nest_pgd.f90 index 8a9c9577a..39b52a809 100644 --- a/src/MNH/prep_nest_pgd.f90 +++ b/src/MNH/prep_nest_pgd.f90 @@ -102,6 +102,7 @@ USE MODD_PARAMETERS USE MODD_CONF USE MODD_CST +USE MODD_GRID_n, ONLY : XZSMT USE MODD_LUNIT USE MODD_NESTING USE MODD_CONF_n @@ -354,7 +355,7 @@ DO JPGD=1,NMODEL TFILE_SURFEX => TZFILENESTPGD(JPGD) CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH') NULLIFY(TFILE_SURFEX) - CALL WRITE_ZSMT_n(TZFILENESTPGD(JPGD)%CNAME) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'ZSMT',CLUOUT0,IRESP,XZSMT) END DO ! !------------------------------------------------------------------------------- @@ -364,29 +365,29 @@ END DO ! ! DO JPGD=1,NMODEL - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'MASDEV ',CLUOUT0,'--',NMASDEV,0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'BUGFIX ',CLUOUT0,'--',NBUGFIX,0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'BIBUSER ',CLUOUT0,'--',CBIBUSER,0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'PROGRAM ',CLUOUT0,'--',CPROGRAM,0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'STORAGE_TYPE',CLUOUT0,'--',CSTORAGE_TYPE,0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'MY_NAME ',CLUOUT0,'--',TZFILENESTPGD(JPGD)%CNAME,0,1,' ',IRESP) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'MASDEV', CLUOUT0,IRESP,NMASDEV) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'BUGFIX', CLUOUT0,IRESP,NBUGFIX) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'BIBUSER', CLUOUT0,IRESP,CBIBUSER) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'PROGRAM', CLUOUT0,IRESP,CPROGRAM) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'STORAGE_TYPE',CLUOUT0,IRESP,CSTORAGE_TYPE) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'MY_NAME', CLUOUT0,IRESP,TZFILENESTPGD(JPGD)%CNAME) IF (NDAD(JPGD)>=1) THEN YDAD_NAME = TZFILENESTPGD(NDAD(JPGD))%CNAME ELSE YDAD_NAME = ' ' END IF - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'DAD_NAME ',CLUOUT0,'--',YDAD_NAME,0,1,' ',IRESP) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'DAD_NAME', CLUOUT0,IRESP,YDAD_NAME) IF (LEN_TRIM(YDAD_NAME)>0) THEN - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'DXRATIO ',CLUOUT0,'--',NDXRATIO_ALL(JPGD),0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'DYRATIO ',CLUOUT0,'--',NDYRATIO_ALL(JPGD),0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'XOR ',CLUOUT0,'--',NXOR_ALL(JPGD),0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'YOR ',CLUOUT0,'--',NYOR_ALL(JPGD),0,1,' ',IRESP) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'DXRATIO',CLUOUT0,IRESP,NDXRATIO_ALL(JPGD)) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'DYRATIO',CLUOUT0,IRESP,NDYRATIO_ALL(JPGD)) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'XOR', CLUOUT0,IRESP,NXOR_ALL(JPGD)) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'YOR', CLUOUT0,IRESP,NYOR_ALL(JPGD)) END IF - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'SURF ',CLUOUT0,'--','EXTE',0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'L1D ',CLUOUT0,'--',L1D_ALL(JPGD),0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'L2D ',CLUOUT0,'--',L2D_ALL(JPGD),0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'PACK ',CLUOUT0,'--',LPACK_ALL(JPGD),0,1,' ',IRESP) - CALL FMWRIT(TZFILENESTPGD(JPGD)%CNAME,'JPHEXT ',CLUOUT0,'--',JPHEXT,0,1,' ',IRESP) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'SURF', CLUOUT0,IRESP,'EXTE') + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'L1D', CLUOUT0,IRESP,L1D_ALL(JPGD)) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'L2D', CLUOUT0,IRESP,L2D_ALL(JPGD)) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'PACK', CLUOUT0,IRESP,LPACK_ALL(JPGD)) + CALL IO_WRITE_FIELD(TZFILENESTPGD(JPGD),'JPHEXT',CLUOUT0,IRESP,JPHEXT) END DO ! !------------------------------------------------------------------------------- diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90 index b3a322d17..dc5c4cda2 100644 --- a/src/MNH/prep_pgd.f90 +++ b/src/MNH/prep_pgd.f90 @@ -78,7 +78,7 @@ USE MODD_CONF, ONLY : CPROGRAM, NMASDEV, NBUGFIX, CBIBUSER, & L1D, L2D, LPACK , LCARTESIAN USE MODD_CONF_n,ONLY : CSTORAGE_TYPE -USE MODD_LUNIT, ONLY : CLUOUT0, COUTFMFILE +USE MODD_LUNIT, ONLY : CLUOUT0 USE MODD_PARAMETERS, ONLY : XUNDEF USE MODD_IO_ll, ONLY : GSMONOPROC, TFILEDATA, TFILE_SURFEX USE MODD_IO_SURF_MNH, ONLY : NHALO @@ -259,19 +259,17 @@ TZFILE%NLFIVERB = 5 ! CALL IO_FILE_OPEN_ll(TZFILE,CLUOUT0,IRESP,OPARALLELIO=.FALSE.) ! -COUTFMFILE = CPGDFILE -! -CALL FMWRIT(COUTFMFILE,'MASDEV ',CLUOUT0,'--',NMASDEV,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'BUGFIX ',CLUOUT0,'--',NBUGFIX,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'BIBUSER ',CLUOUT0,'--',CBIBUSER,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'PROGRAM ',CLUOUT0,'--',CPROGRAM,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'STORAGE_TYPE',CLUOUT0,'--',CSTORAGE_TYPE,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'MY_NAME ',CLUOUT0,'--',COUTFMFILE,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'DAD_NAME ',CLUOUT0,'--',YDAD,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'SURF ',CLUOUT0,'--','EXTE',0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'L1D ',CLUOUT0,'--',L1D,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'L2D ',CLUOUT0,'--',L2D,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'PACK ',CLUOUT0,'--',LPACK,0,1,' ',IRESP) +CALL IO_WRITE_FIELD(TZFILE,'MASDEV', CLUOUT0,IRESP,NMASDEV) +CALL IO_WRITE_FIELD(TZFILE,'BUGFIX', CLUOUT0,IRESP,NBUGFIX) +CALL IO_WRITE_FIELD(TZFILE,'BIBUSER', CLUOUT0,IRESP,CBIBUSER) +CALL IO_WRITE_FIELD(TZFILE,'PROGRAM', CLUOUT0,IRESP,CPROGRAM) +CALL IO_WRITE_FIELD(TZFILE,'STORAGE_TYPE',CLUOUT0,IRESP,CSTORAGE_TYPE) +CALL IO_WRITE_FIELD(TZFILE,'MY_NAME', CLUOUT0,IRESP,TZFILE%CNAME) +CALL IO_WRITE_FIELD(TZFILE,'DAD_NAME', CLUOUT0,IRESP,YDAD) +CALL IO_WRITE_FIELD(TZFILE,'SURF', CLUOUT0,IRESP,'EXTE') +CALL IO_WRITE_FIELD(TZFILE,'L1D', CLUOUT0,IRESP,L1D) +CALL IO_WRITE_FIELD(TZFILE,'L2D', CLUOUT0,IRESP,L2D) +CALL IO_WRITE_FIELD(TZFILE,'PACK', CLUOUT0,IRESP,LPACK) IF ( NDXRATIO <= 0 .AND. NDYRATIO <= 0 ) THEN NDXRATIO = 1 NDYRATIO = 1 @@ -284,21 +282,22 @@ IF ( NXOR <= 0 .AND. NYOR <= 0 ) THEN NXOR = 1 NYOR = 1 ENDIF -CALL FMWRIT(COUTFMFILE,'DXRATIO ',CLUOUT0,'--',NDXRATIO,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'DYRATIO ',CLUOUT0,'--',NDYRATIO,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'XSIZE ',CLUOUT0,'--',NXSIZE,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'YSIZE ',CLUOUT0,'--',NYSIZE,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'XOR ',CLUOUT0,'--',NXOR,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'YOR ',CLUOUT0,'--',NYOR,0,1,' ',IRESP) -CALL FMWRIT(COUTFMFILE,'JPHEXT ',CLUOUT0,'--',JPHEXT,0,1,' ',IRESP) +CALL IO_WRITE_FIELD(TZFILE,'DXRATIO',CLUOUT0,IRESP,NDXRATIO) +CALL IO_WRITE_FIELD(TZFILE,'DYRATIO',CLUOUT0,IRESP,NDYRATIO) +CALL IO_WRITE_FIELD(TZFILE,'XSIZE', CLUOUT0,IRESP,NXSIZE) +CALL IO_WRITE_FIELD(TZFILE,'YSIZE', CLUOUT0,IRESP,NYSIZE) +CALL IO_WRITE_FIELD(TZFILE,'XOR', CLUOUT0,IRESP,NXOR) +CALL IO_WRITE_FIELD(TZFILE,'YOR', CLUOUT0,IRESP,NYOR) +CALL IO_WRITE_FIELD(TZFILE,'JPHEXT', CLUOUT0,IRESP,JPHEXT) ! TFILE_SURFEX => TZFILE CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH') NULLIFY(TFILE_SURFEX) !Probably not necessary +! !* 4. Computes and writes smooth orography for SLEVE coordinate ! --------------------------------------------------------- -!CALL ZSMT_PGD(COUTFMFILE,NZSFILTER,NSLEVE,XSMOOTH_ZS,LHSLOP,XHSLOP) -CALL ZSMT_PGD(COUTFMFILE,NZSFILTER,NSLEVE,XSMOOTH_ZS) +CALL ZSMT_PGD(TZFILE,NZSFILTER,NSLEVE,XSMOOTH_ZS) +! IF (.NOT.LCARTESIAN) THEN !!!! WRITE LAT and LON CALL GET_DIM_PHYS_ll('B',IIMAX,IJMAX) @@ -325,17 +324,8 @@ IF (.NOT.LCARTESIAN) THEN ZWORK_LON(:,1) = ZWORK_LON(:,2) ZWORK_LON(:,IJMAX+2) = ZWORK_LON(:,IJMAX+1) ENDIF - YRECFM='LAT' - YCOMMENT='X_Y_latitude (degree)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT0,'XY',ZWORK_LAT,IGRID,ILENCH,YCOMMENT,IRESP) - - YRECFM='LON' - YCOMMENT='X_Y_longitude (degree)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT0,'XY',ZWORK_LON,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TZFILE,'LAT',CLUOUT0,IRESP,ZWORK_LAT) + CALL IO_WRITE_FIELD(TZFILE,'LON',CLUOUT0,IRESP,ZWORK_LON) ! DEALLOCATE(ZWORK,ZWORK_LAT,ZWORK_LON) END IF diff --git a/src/MNH/write_zsmt.f90 b/src/MNH/write_zsmt.f90 deleted file mode 100644 index c184d33c6..000000000 --- a/src/MNH/write_zsmt.f90 +++ /dev/null @@ -1,98 +0,0 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier -!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt -!MNH_LIC for details. version 1. -!----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 newsrc 2006/05/18 13:07:25 -!----------------------------------------------------------------- -! ###################### - MODULE MODI_WRITE_ZSMT_n -! ###################### -! -INTERFACE -! - SUBROUTINE WRITE_ZSMT_n(HFILE) -! -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the input/output file -! -END SUBROUTINE WRITE_ZSMT_n -! -END INTERFACE -! -END MODULE MODI_WRITE_ZSMT_n -! -! -! -! ############################# - SUBROUTINE WRITE_ZSMT_n(HFILE) -! ############################# -! -!!**** *WRITE_ZSMT* writes smoothed orography for SLEVE coordinate -!! -!! PURPOSE -!! ------- -! -!!** METHOD -!! ------ -!! -!! EXTERNAL -!! -------- -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! REFERENCE -!! --------- -!! Book2 of the documentation -!! -!! -!! AUTHOR -!! ------ -!! V. Masson * Meteo-France * -!! -!! MODIFICATIONS -!! ------------- -!! Original nov 2005 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! -! -USE MODD_GRID_n, ONLY : XZSMT -USE MODD_LUNIT_n, ONLY : CLUOUT -! -USE MODE_FMWRIT -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the input/output file -! -! -!* 0.2 declarations of local variables -! -! -INTEGER :: IRESP ! return code for I/O -CHARACTER(LEN=16) :: YRECFM ! name of record -INTEGER :: IGRID ! grid location -INTEGER :: ILENCH ! length of comment string -CHARACTER(LEN=100):: YCOMMENT ! comment string -!------------------------------------------------------------------------------- -! -!* 1. writes smoothed orography in the file -! ------------------------------------- -! -YRECFM='ZSMT' -YCOMMENT='X_Y_ZSMT (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFILE,YRECFM,CLUOUT,'XY',XZSMT,IGRID,ILENCH,YCOMMENT,IRESP) -! -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE WRITE_ZSMT_n diff --git a/src/MNH/zsmt_pgd.f90 b/src/MNH/zsmt_pgd.f90 index da0fe8521..3ee676016 100644 --- a/src/MNH/zsmt_pgd.f90 +++ b/src/MNH/zsmt_pgd.f90 @@ -8,9 +8,11 @@ ! INTERFACE ! - SUBROUTINE ZSMT_PGD(HFILE,KZSFILTER,KSLEVE,PSMOOTH_ZS) + SUBROUTINE ZSMT_PGD(TPFILE,KZSFILTER,KSLEVE,PSMOOTH_ZS) ! -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the input/output file +USE MODD_IO_ll, ONLY : TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics INTEGER, INTENT(IN) :: KZSFILTER ! number of iterations for fine orography INTEGER, INTENT(IN) :: KSLEVE ! number of iterations REAL, INTENT(IN) :: PSMOOTH_ZS ! optional uniform smooth orography for SLEVE coordinate @@ -24,7 +26,7 @@ END MODULE MODI_ZSMT_PGD ! ! ! ############################# - SUBROUTINE ZSMT_PGD(HFILE,KZSFILTER,KSLEVE,PSMOOTH_ZS) + SUBROUTINE ZSMT_PGD(TPFILE,KZSFILTER,KSLEVE,PSMOOTH_ZS) ! ############################# ! !!**** *ZSMT_PGD* computes smoothed orography for SLEVE coordinate @@ -58,6 +60,7 @@ END MODULE MODI_ZSMT_PGD ! !* 0. DECLARATIONS ! +USE MODD_IO_ll, ONLY : TFILEDATA USE MODD_LUNIT, ONLY : CLUOUT0 USE MODD_PARAMETERS, ONLY : JPHEXT, XUNDEF ! @@ -71,7 +74,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the input/output file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics INTEGER, INTENT(IN) :: KZSFILTER ! number of iterations for fine orography INTEGER, INTENT(IN) :: KSLEVE ! number of iterations REAL, INTENT(IN) :: PSMOOTH_ZS ! optional uniform smooth orography for SLEVE coordinate @@ -127,7 +130,7 @@ ALLOCATE(ZSLEVE_ZS(IIU,IJU)) ALLOCATE(ZMASK(IIU,IJU)) ! YRECFM = 'ZS ' -CALL FMREAD(HFILE,YRECFM,CLUOUT0,'XY',ZZS,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMREAD(TPFILE%CNAME,YRECFM,CLUOUT0,'XY',ZZS,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JI=1,JPHEXT ZZS(JI,:) = ZZS(IIB,:) @@ -210,17 +213,8 @@ END IF ! --------------------------------------- ! ! -YRECFM='ZS' -YCOMMENT='X_Y_ZS (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFILE,YRECFM,CLUOUT0,'XY',ZFINE_ZS,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='ZSMT' -YCOMMENT='X_Y_ZSMT (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFILE,YRECFM,CLUOUT0,'XY',ZSLEVE_ZS,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'ZS', CLUOUT0,IRESP,ZFINE_ZS) +CALL IO_WRITE_FIELD(TPFILE,'ZSMT',CLUOUT0,IRESP,ZSLEVE_ZS) ! DEALLOCATE(ZZS) DEALLOCATE(ZFINE_ZS) -- GitLab