diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 4eabb17f7e86fde4068a3210b4458528a88435e6..40fad9cf9a2d3f646f3af1b1fcc070d64d44005b 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -1689,7 +1689,7 @@ IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'CLDFR' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: CLDFR' -TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CUNITS = '1' TFIELDLIST(IDX)%CDIR = 'XY' TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_CLouD FRaction' TFIELDLIST(IDX)%NGRID = 1 @@ -2017,6 +2017,19 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'CAPE' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: CAPE' +TFIELDLIST(IDX)%CUNITS = 'J kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Convective Available Potentiel Energy' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'IC_RATE' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: IC_RATE' @@ -2848,6 +2861,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPRCONV CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPACCONV CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPRSCONV + CALL FIND_FIELD_ID_FROM_MNHNAME('CAPE', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XCAPE CALL FIND_FIELD_ID_FROM_MNHNAME('IC_RATE', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XIC_RATE CALL FIND_FIELD_ID_FROM_MNHNAME('CG_RATE', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XCG_RATE CALL FIND_FIELD_ID_FROM_MNHNAME('IC_TOTAL_NB',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XIC_TOTAL_NUMBER @@ -3190,6 +3204,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV', IID,IRESP); XPRCONV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV', IID,IRESP); XPACCONV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV', IID,IRESP); XPRSCONV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('CAPE', IID,IRESP); XCAPE => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('IC_RATE', IID,IRESP); XIC_RATE => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('CG_RATE', IID,IRESP); XCG_RATE => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('IC_TOTAL_NB',IID,IRESP); XIC_TOTAL_NUMBER => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA diff --git a/src/MNH/free_atm_profile.f90 b/src/MNH/free_atm_profile.f90 index c6a133dab692bbca98153a00e548fe26e77faf4f..a7b8c05927d66767f3f570710e8932788ea5dc82 100644 --- a/src/MNH/free_atm_profile.f90 +++ b/src/MNH/free_atm_profile.f90 @@ -101,7 +101,7 @@ USE MODI_COEF_VER_INTERP_LIN USE MODI_VER_INTERP_LIN USE MODI_VERT_COORD ! -USE MODE_FIELD, ONLY: TFIELDDATA, TYPEREAL +USE MODE_FIELD, ONLY: TFIELDDATA, TYPEINT, TYPEREAL USE MODE_FMWRIT USE MODE_FM ! @@ -482,21 +482,31 @@ IF (CPROGRAM == 'DIAG ' ) THEN Z2D(JI,JJ) = PZMASS_MX(JI,JJ,IK_BL_TOP(JI,JJ)) - PZS_LS(JI,JJ) END DO END DO - YRECFM='HBLTOP' - YCOMMENT='Height of Boundary Layer TOP (M)' - ILENCH=LEN(YCOMMENT) - IGRID=4 - CALL FMWRIT(TPFILE%CNAME,YRECFM,CLUOUT0,'XY',Z2D,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'HBLTOP' + TZFIELD%CSTDNAME = 'atmosphere_boundary_layer_thickness' + TZFIELD%CLONGNAME = 'MesoNH: HBLTOP' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'Height of Boundary Layer TOP' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT0,IRESP,Z2D) ! !* 11.2 Writing of level of boundary layer top ! -------------------------------------- ! Z2D(:,:) = IK_BL_TOP(:,:) - YRECFM='KBLTOP' - YCOMMENT='Index of Boundary Layer TOP ( )' - ILENCH=LEN(YCOMMENT) - IGRID=4 - CALL FMWRIT(TPFILE%CNAME,YRECFM,CLUOUT0,'XY',Z2D,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'KBLTOP' + TZFIELD%CSTDNAME = 'model_level_number_at_top_of_atmosphere_boundary_layer' + TZFIELD%CLONGNAME = 'MesoNH: KBLTOP' + TZFIELD%CUNITS = '1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'Index of Boundary Layer TOP' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEINT + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT0,IRESP,IK_BL_TOP) END IF ! IF (CPROGRAM /= 'DIAG ' .AND. CPROGRAM /= 'IDEAL ' ) THEN diff --git a/src/MNH/modd_deep_convectionn.f90 b/src/MNH/modd_deep_convectionn.f90 index 7b19db8a81a73083610da0f3873451af6b539053..b86efd55f98b984f37a75b6e1baa8b61afca203e 100644 --- a/src/MNH/modd_deep_convectionn.f90 +++ b/src/MNH/modd_deep_convectionn.f90 @@ -63,7 +63,7 @@ TYPE DEEP_CONVECTION_t REAL, DIMENSION(:,:,:) ,POINTER :: XMFCONV=>NULL() ! convective mass flux (kg/s m2) REAL, DIMENSION(:,:,:) ,POINTER ::XPRLFLXCONV=>NULL()! liquid precip flux (m/s) REAL, DIMENSION(:,:,:) ,POINTER ::XPRSFLXCONV=>NULL()! solid precip flux (m/s) - REAL, DIMENSION(:,:) ,POINTER :: XCAPE=>NULL() ! CAPE (J/kg) +! REAL, DIMENSION(:,:) ,POINTER :: XCAPE=>NULL() ! CAPE (J/kg) INTEGER,DIMENSION(:,:), POINTER :: NCLTOPCONV=>NULL()! convective cloud top level INTEGER,DIMENSION(:,:), POINTER :: NCLBASCONV=>NULL()! convective cloud base level ! @@ -118,7 +118,7 @@ DEEP_CONVECTION_MODEL(KFROM)%XDMFCONV=>XDMFCONV DEEP_CONVECTION_MODEL(KFROM)%XMFCONV=>XMFCONV DEEP_CONVECTION_MODEL(KFROM)%XPRLFLXCONV=>XPRLFLXCONV DEEP_CONVECTION_MODEL(KFROM)%XPRSFLXCONV=>XPRSFLXCONV -DEEP_CONVECTION_MODEL(KFROM)%XCAPE=>XCAPE +!DEEP_CONVECTION_MODEL(KFROM)%XCAPE=>XCAPE !Done in FIELDLIST_GOTO_MODEL DEEP_CONVECTION_MODEL(KFROM)%NCLTOPCONV=>NCLTOPCONV DEEP_CONVECTION_MODEL(KFROM)%NCLBASCONV=>NCLBASCONV !DEEP_CONVECTION_MODEL(KFROM)%XIC_RATE=>XIC_RATE !Done in FIELDLIST_GOTO_MODEL @@ -141,7 +141,7 @@ XDMFCONV=>DEEP_CONVECTION_MODEL(KTO)%XDMFCONV XMFCONV=>DEEP_CONVECTION_MODEL(KTO)%XMFCONV XPRLFLXCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRLFLXCONV XPRSFLXCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRSFLXCONV -XCAPE=>DEEP_CONVECTION_MODEL(KTO)%XCAPE +!XCAPE=>DEEP_CONVECTION_MODEL(KTO)%XCAPE !Done in FIELDLIST_GOTO_MODEL NCLTOPCONV=>DEEP_CONVECTION_MODEL(KTO)%NCLTOPCONV NCLBASCONV=>DEEP_CONVECTION_MODEL(KTO)%NCLBASCONV !XIC_RATE=>DEEP_CONVECTION_MODEL(KTO)%XIC_RATE !Done in FIELDLIST_GOTO_MODEL diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index c86eb04355b60b469ae6b4a5e1f31283dc0ee998..e596e458b7d261cde981d2d6a49d3d882bc90435 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -323,7 +323,7 @@ REAL, DIMENSION(SIZE(XZZ,1),SIZE(XZZ,2),SIZE(XZZ,3)) :: ZDELTAZ ! interval (m) b INTEGER :: ILUOUT0 ! Logical unit number for output-listing ! CHARACTER(LEN=2) :: INDICE -INTEGER :: I +INTEGER :: I,IID TYPE(TFIELDDATA) :: TZFIELD TYPE(TFIELDDATA),DIMENSION(2) :: TZFIELD2 ! @@ -1945,27 +1945,26 @@ END IF IF (LTPZH .OR. LCOREF) THEN ! !* Temperature in celsius - YRECFM='TEMP' - YCOMMENT='X_Y_Z_TEMPerature (C)' - IGRID=1 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'TEMP' + TZFIELD%CSTDNAME = 'air_temperature' + TZFIELD%CLONGNAME = 'MesoNH: TEMP' + TZFIELD%CUNITS = 'celsius' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_TEMPerature' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 ZWORK31(:,:,:)=ZTEMP(:,:,:) - XTT - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK31) ! !* Pressure in hPa - YRECFM='PRES' - YCOMMENT='X_Y_Z_PRESsure (hPa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XPABST(:,:,:)*1E-2 - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('PABST',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'hPa' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPABST(:,:,:)*1E-2) ! !* Geopotential in meters - YRECFM='ALT' - YCOMMENT='X_Y_Z_ALTitude (M)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',XZZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'ALT',CLUOUT,IRESP,XZZ) ! !* Relative humidity in percent IF (LUSERV) THEN @@ -1982,18 +1981,29 @@ IF (LTPZH .OR. LCOREF) THEN ZWORK32(:,:,:)=100.*XRT(:,:,:,1)/ZWORK31(:,:,:) END WHERE END IF - YRECFM='REHU' - YCOMMENT='X_Y_Z_RElative HUmidity (%)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK32,IGRID,ILENCH,YCOMMENT,IRESP) ! + TZFIELD%CMNHNAME = 'REHU' + TZFIELD%CSTDNAME = 'relative_humidity' + TZFIELD%CLONGNAME = 'MesoNH: REHU' + TZFIELD%CUNITS = 'percent' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_RElative HUmidity' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK32) + ! + TZFIELD%CMNHNAME = 'VPRES' + TZFIELD%CSTDNAME = 'water_vapor_partial_pressure_in_air' + TZFIELD%CLONGNAME = 'MesoNH: VPRES' + TZFIELD%CUNITS = 'hPa' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_Vapor PRESsure' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 ZWORK33(:,:,:)=ZWORK33(:,:,:)*ZWORK32(:,:,:)*1E-4 - YRECFM='VPRES' - YCOMMENT='X_Y_Z_Vapor PRESsure (hPa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK33,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK33) ! IF (LCOREF) THEN ZWORK33(:,:,:)=(77.6*( XPABST(:,:,:)*1E-2 & @@ -2012,7 +2022,7 @@ IF (LTPZH .OR. LCOREF) THEN ILENCH=LEN(YCOMMENT) CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK33,IGRID,ILENCH,YCOMMENT,IRESP) END IF -ELSE + ELSE PRINT*, 'NO WATER VAPOR IN ',YFMFILE2,' RELATIVE HUMIDITY IS NOT COMPUTED' END IF ! @@ -2432,18 +2442,29 @@ IF (LGEO .OR. LAGEO) THEN ! IF (LAGEO) THEN ZWORK31(:,:,:)=XUT(:,:,:)-ZWORK31(:,:,:) - YRECFM='UM89' - YCOMMENT='X_Y_Z_U component of AGEOstrophic wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) -! ZWORK32(:,:,:)=XVT(:,:,:)-ZWORK32(:,:,:) - YRECFM='VM89' - YCOMMENT='X_Y_Z_V component of AGEOstrophic wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK32,IGRID,ILENCH,YCOMMENT,IRESP) + ! + TZFIELD%CMNHNAME = 'UM89' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: UM89' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_U component of AGEOstrophic wind' + TZFIELD%NGRID = 2 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK31) + ! + TZFIELD%CMNHNAME = 'VM89' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: VM89' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_V component of AGEOstrophic wind' + TZFIELD%NGRID = 3 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK32) ! IF (LWIND_ZM) THEN TZFIELD2(1)%CMNHNAME = 'UM89_ZM' @@ -2470,11 +2491,11 @@ IF (LGEO .OR. LAGEO) THEN ENDIF ! ! wm necessary to plot vertical cross sections of wind vectors - YRECFM='WM89' - YCOMMENT='X_Y_Z_vertical wind (m/s)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',XWT,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('WT',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CMNHNAME = 'WM89' + TZFIELD%CLONGNAME = 'MesoNH: WM89' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XWT) END IF ! END IF @@ -2500,11 +2521,16 @@ IF (LMSLP) THEN ! sea level pressure (hPa) ZWORK22(:,:) = 1.E-2*ZWORK21(:,:)*EXP(XG*XZS(:,:)/(XRD*ZWORK22(:,:))) ! - YRECFM='MSLP' - YCOMMENT='X_Y_Mean Sea Level Pressure (hPa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK22,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'MSLP' + TZFIELD%CSTDNAME = 'air_pressure_at_sea_level' + TZFIELD%CLONGNAME = 'MesoNH: MSLP' + TZFIELD%CUNITS = 'hPa' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Mean Sea Level Pressure' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK22) END IF !------------------------------------------------------------------------------- ! @@ -2519,11 +2545,16 @@ IF (LTHW) THEN (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! vapor water in mm unit - YRECFM ='THVW' - YCOMMENT ='X_Y_THickness of Vapor Water (MM)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THVW' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: THVW' + TZFIELD%CUNITS = 'mm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_THickness of Vapor Water' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) END IF ! ZWORK21(:,:) = 0. @@ -2533,11 +2564,16 @@ IF (LTHW) THEN (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! cloud water in mm unit - YRECFM ='THCW' - YCOMMENT ='X_Y_THickness of Cloud Water (MM)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THCW' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: THCW' + TZFIELD%CUNITS = 'mm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_THickness of Cloud Water' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) END IF ! ZWORK21(:,:) = 0. @@ -2547,11 +2583,16 @@ IF (LTHW) THEN (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! rain water in mm unit - YRECFM ='THRW' - YCOMMENT ='X_Y_THickness of Rain Water (MM)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THRW' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: THRW' + TZFIELD%CUNITS = 'mm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_THickness of Rain Water' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) END IF ! ZWORK21(:,:) = 0. @@ -2561,11 +2602,16 @@ IF (LTHW) THEN (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! ice thickness in mm unit - YRECFM ='THIC' - YCOMMENT ='X_Y_THickness of ICe (MM)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THIC' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: THIC' + TZFIELD%CUNITS = 'mm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_THickness of ICe' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) END IF ! ZWORK21(:,:) = 0. @@ -2575,11 +2621,16 @@ IF (LTHW) THEN (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! snow thickness in mm unit - YRECFM ='THSN' - YCOMMENT ='X_Y_THickness of SNow (MM)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THSN' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: THSN' + TZFIELD%CUNITS = 'mm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_THickness of SNow' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) END IF ! ZWORK21(:,:) = 0. @@ -2589,11 +2640,16 @@ IF (LTHW) THEN (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! graupel thickness in mm unit - YRECFM ='THGR' - YCOMMENT ='X_Y_THickness of GRaupel (MM)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THGR' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: THGR' + TZFIELD%CUNITS = 'mm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_THickness of GRaupel' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) END IF ! ZWORK21(:,:) = 0. @@ -2603,11 +2659,15 @@ IF (LTHW) THEN (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! hail thickness in mm unit - YRECFM ='THHA' - YCOMMENT ='X_Y_THickness of HAil (MM)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THHA' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: THHA' + TZFIELD%CUNITS = 'mm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_THickness of HAil' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 END IF END IF ! @@ -2727,36 +2787,61 @@ IF (NCAPE >=0 .AND. LUSERV) THEN ZWORK32(:,:,IKB:IKE),ZWORK33(:,:,IKB:IKE), & ZWORK34(:,:,IKB:IKE),ZWORK21,ZWORK22 ) ! - YRECFM='CAPEMAX' - YCOMMENT='X_Y_MAX of Convective Available Potential Energy (J/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'CAPEMAX' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: CAPEMAX' + TZFIELD%CUNITS = 'J kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_MAX of Convective Available Potential Energy' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) ! - YRECFM='CINMAX' - YCOMMENT='X_Y_MAX of Convective INhibition energy (J/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK22,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'CINMAX' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: CINMAX' + TZFIELD%CUNITS = 'J kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_MAX of Convective INhibition energy' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK22) ! IF (NCAPE >=1) THEN - YRECFM='CAPE3D' - YCOMMENT='X_Y_Z_Convective Available Potential Energy (J/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK32,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'CAPE3D' + TZFIELD%CSTDNAME = 'atmosphere_convective_available_potential_energy' + TZFIELD%CLONGNAME = 'MesoNH: CAPE3D' + TZFIELD%CUNITS = 'J kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_Convective Available Potential Energy' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK32) ! - YRECFM='CIN3D' - YCOMMENT='X_Y_Z_Convective INhibition energy (J/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK33,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'CIN3D' + TZFIELD%CSTDNAME = 'atmosphere_convective_inhibition' + TZFIELD%CLONGNAME = 'MesoNH: CIN3D' + TZFIELD%CUNITS = 'J kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_Convective INhibition energy' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK33) ! - YRECFM='DCAPE3D' - YCOMMENT='X_Y_Z_ (J/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK34,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DCAPE3D' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: DCAPE3D' + TZFIELD%CUNITS = 'J kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = '' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK34) END IF ! IF (NCAPE >=2) THEN @@ -2764,11 +2849,16 @@ IF (NCAPE >=0 .AND. LUSERV) THEN ZWORK31(:,:,IKU) = 0. ZWORK31=0.5*ZWORK31**2 ! - YRECFM='VKE' - YCOMMENT='X_Y_Z_Vertical Kinetic Energy (J/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'VKE' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: VKE' + TZFIELD%CUNITS = 'J kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_Vertical Kinetic Energy' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK31) END IF ENDIF ! @@ -2884,29 +2974,49 @@ IF(LRADAR .AND. LUSERR) THEN ZWORK33, ZWORK34 ) ENDIF ! - YRECFM ='RARE' - YCOMMENT ='X_Y_Z_RAdar REflectivity (dBZ)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT (YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'RARE' + TZFIELD%CSTDNAME = 'equivalent_reflectivity_factor' + TZFIELD%CLONGNAME = 'MesoNH: RARE' + TZFIELD%CUNITS = 'dBZ' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_RAdar REflectivity' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK31) ! - YRECFM ='VDOP' - YCOMMENT ='X_Y_Z_radar DOPpler fall speed (M/S)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT (YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK32,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'VDOP' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: VDOP' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_radar DOPpler fall speed' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK32) ! - YRECFM ='ZDR' - YCOMMENT ='X_Y_Z_Differential polar Reflectivity (dBZ)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT (YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK33,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'ZDR' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: ZDR' + TZFIELD%CUNITS = 'dBZ' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_Differential polar Reflectivity' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK33) ! - YRECFM ='KDP' - YCOMMENT ='X_Y_Z_Differential Phase Reflectivity (degree/km)' - IGRID =1 - ILENCH =LEN(YCOMMENT) - CALL FMWRIT (YFMFILE2,YRECFM,CLUOUT,'XY',ZWORK34,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'KDP' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: KDP' + TZFIELD%CUNITS = 'degree km-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_Differential Phase Reflectivity' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK34) ! ELSE ! diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index 1d083e16e46aae0eecb98fc1369f74a48c876d04..de48f33f55cb990c7a3b5546a6b2c96788947251 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -253,62 +253,50 @@ ZTEMP(:,:,:)=XTHT(:,:,:)*(XPABST(:,:,:)/ XP00) **(XRD/XCPD) ! IF (NCONV_KF >= 0) THEN ! - YRECFM = 'CAPE' - YCOMMENT = 'X_Y_Convective Available Potentiel Energy (J/kg)' - IGRID = 4 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCAPE,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'CAPE',CLUOUT,IRESP,XCAPE) ! - YRECFM = 'CLTOPCONV' ! top height (km) of - ZWORK21(:,:)= 0. ! convective clouds + ! top height (km) of convective clouds + ZWORK21(:,:)= 0. DO JJ=IJB,IJE DO JI=IIB,IIE IF (NCLTOPCONV(JI,JJ)/=0) ZWORK21(JI,JJ)= XZZ(JI,JJ,NCLTOPCONV(JI,JJ))/1.E3 END DO END DO - YCOMMENT = 'X_Y_Top of Convective Cloud (km)' - IGRID = 4 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'CLTOPCONV' + TZFIELD%CSTDNAME = 'convective_cloud_top_altitude' + TZFIELD%CLONGNAME = 'MesoNH: CLTOPCONV' + TZFIELD%CUNITS = 'km' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Top of Convective Cloud' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 ! - YRECFM = 'CLBASCONV' ! base height (km) of - ZWORK21(:,:)= 0. ! convective clouds + ! base height (km) of convective clouds + ZWORK21(:,:)= 0. DO JJ=IJB,IJE DO JI=IIB,IIE IF (NCLBASCONV(JI,JJ)/=0) ZWORK21(JI,JJ)= XZZ(JI,JJ,NCLBASCONV(JI,JJ))/1.E3 END DO END DO - YCOMMENT = 'X_Y_Base of Convective Cloud (km)' - IGRID = 4 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'CLBASCONV' + TZFIELD%CSTDNAME = 'convective_cloud_base_altitude' + TZFIELD%CLONGNAME = 'MesoNH: CLBASCONV' + TZFIELD%CUNITS = 'km' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Base of Convective Cloud' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) ! END IF IF (NCONV_KF >= 1) THEN ! - YRECFM = 'DTHCONV' - YCOMMENT = 'X_Y_Z_CONVective heating/cooling rate (K/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'DRVCONV' - YCOMMENT = 'X_Y_Z_CONVective R_v tendency (1/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'DRCCONV' - YCOMMENT = 'X_Y_Z_CONVective R_c tendency (1/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'DRICONV' - YCOMMENT = 'X_Y_Z_CONVective R_i tendency (1/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'DTHCONV',CLUOUT,IRESP,XDTHCONV) + CALL IO_WRITE_FIELD(TPFILE,'DRVCONV',CLUOUT,IRESP,XDRVCONV) + CALL IO_WRITE_FIELD(TPFILE,'DRCCONV',CLUOUT,IRESP,XDRCCONV) + CALL IO_WRITE_FIELD(TPFILE,'DRICONV',CLUOUT,IRESP,XDRICONV) ! IF ( LCHTRANS .AND. NSV > 0 ) THEN IGRID=1 @@ -444,11 +432,16 @@ IF (LCLD_COV .AND. LUSERC) THEN ! 0 if there is no cloud ZWORK21(:,:)=ZWORK21(:,:)/1.E3 ! height (km) of explicit clouds ! - YRECFM='HECL' - YCOMMENT='X_Y_Height of Explicit CLoud top (km)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'HECL' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: HECL' + TZFIELD%CUNITS = 'km' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Height of Explicit CLoud top' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) ! ! Higher top of the different species of clouds ! @@ -475,24 +468,30 @@ IF (LCLD_COV .AND. LUSERC) THEN ! 0 if there is no cloud ZWORK21(:,:)=ZWORK21(:,:)/1.E3 ! max. cloud height (km) ! - YRECFM='HCL' - YCOMMENT='X_Y_Height of CLoud top (km)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'HCL' + TZFIELD%CSTDNAME = 'cloud_top_altitude' + TZFIELD%CLONGNAME = 'MesoNH: HCL' + TZFIELD%CUNITS = 'km' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Height of CLoud top' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK21) ENDIF ! - YRECFM='TCL' - YCOMMENT='X_Y_Temperature of CLoud top (C)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK22,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'TCL' + TZFIELD%CSTDNAME = 'air_temperature_at_cloud_top' + TZFIELD%CLONGNAME = 'MesoNH: TCL' + TZFIELD%CUNITS = 'celsius' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Height of CLoud top' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK22) ! - YRECFM='CLDFR' - YCOMMENT='X_Y_Z_Cloud Fraction (0)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'CLDFR',CLUOUT,IRESP,XCLDFR) ! ! Visibility ! @@ -501,12 +500,17 @@ IF (LCLD_COV .AND. LUSERC) THEN ZWORK31(:,:,:)=3.9E3/(144.7*(XRHODREF(:,:,:)*1.E3*XRT(:,:,:,2)/(1.+XRT(:,:,:,2)))**0.88) END WHERE ! - YRECFM ='VISI_HOR' - YCOMMENT='X_Y_Z_VISI_HOR (m)' - IGRID = 1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) - + TZFIELD%CMNHNAME = 'VISI_HOR' + TZFIELD%CSTDNAME = 'visibility_in_air' + TZFIELD%CLONGNAME = 'MesoNH: VISI_HOR' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_VISI_HOR' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK31) +! DEALLOCATE(IWORK1,IWORK2,ICL_HE_ST,GMASK2,ZWORK22) END IF !