diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index ba003cd745d9f577516687bea3d52e462d845f3c..d94d611b5d56df7b85d5ad035d8510a05487f535 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -1206,6 +1206,195 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'INPAP' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: INPAP' +TFIELDLIST(IDX)%CUNITS = 'kg m-2 s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_INstantaneous Precipitating Aerosol Rate' +TFIELDLIST(IDX)%NGRID = 1 +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 = 'ACPAP' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: ACPAP' +TFIELDLIST(IDX)%CUNITS = 'kg m-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_ACcumulated Precipitating Aerosol Rate' +TFIELDLIST(IDX)%NGRID = 1 +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 = 'EFIELDU' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: EFIELDU' +TFIELDLIST(IDX)%CUNITS = 'V m-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_EFIELDU' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'EFIELDV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: EFIELDV' +TFIELDLIST(IDX)%CUNITS = 'V m-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_EFIELDV' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'EFIELDW' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: EFIELDW' +TFIELDLIST(IDX)%CUNITS = 'V m-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_EFIELDW' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'NI_IAGGS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: NI_IAGGS' +TFIELDLIST(IDX)%CUNITS = 'C m-3 s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_NI_IAGGS' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'NI_IDRYG' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: NI_IDRYG' +TFIELDLIST(IDX)%CUNITS = 'C m-3 s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_NI_IDRYG' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'NI_SDRYG' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: NI_SDRYG' +TFIELDLIST(IDX)%CUNITS = 'C m-3 s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_NI_SDRYG' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'INDUC_CG' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: INDUC_CG' +TFIELDLIST(IDX)%CUNITS = 'C m-3 s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_INDUC_CG' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'TRIG_IC' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TRIG_IC' +TFIELDLIST(IDX)%CUNITS = '1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_FLASH_MAP_TRIG_IC' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 2 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'IMPACT_CG' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: IMPACT_CG' +TFIELDLIST(IDX)%CUNITS = '1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_FLASH_MAP_IMPACT_CG' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 2 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'AREA_CG' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: AREA_CG' +TFIELDLIST(IDX)%CUNITS = '1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_FLASH_MAP_2DAREA_CG' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 2 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'AREA_IC' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: AREA_IC' +TFIELDLIST(IDX)%CUNITS = '1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_FLASH_MAP_2DAREA_IC' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 2 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'FLASH_3DCG' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: FLASH_3DCG' +TFIELDLIST(IDX)%CUNITS = '1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_FLASH_MAP_3DCG' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 3 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'FLASH_3DIC' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: FLASH_3DIC' +TFIELDLIST(IDX)%CUNITS = '1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_FLASH_MAP_3DIC' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 3 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'PHC' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PHC' @@ -1502,6 +1691,32 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X0D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'BL_DEPTH' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: BL_DEPTH' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_BL_DEPTH' +TFIELDLIST(IDX)%NGRID = 1 +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 = 'SBL_DEPTH' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SBL_DEPTH' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_BL_SDEPTH' +TFIELDLIST(IDX)%NGRID = 1 +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 = 'WTHVMF' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: WTHVMF' @@ -2424,6 +2639,289 @@ TFIELDLIST(IDX)%NDIMS = 2 ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) IDX = IDX+1 ! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'VT_FLX' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VT_FLX' +TFIELDLIST(IDX)%CUNITS = 'K m s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = '' +TFIELDLIST(IDX)%NGRID = 2 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'WT_FLX' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: WT_FLX' +TFIELDLIST(IDX)%CUNITS = 'K m s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = '' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RTHS_EDDY_FLUX' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RTHS_EDDY_FLUX' +!TODO PW: units? +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = '' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'VU_FLX' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VU_FLX' +TFIELDLIST(IDX)%CUNITS = 'm s-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = '' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RVS_EDDY_FLUX' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RVS_EDDY_FLUX' +!TODO PW: units? +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = '' +TFIELDLIST(IDX)%NGRID = 3 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +! +IF (TRIM(CPROGRAM)=='REAL') THEN +!PW: not yet known: IF (LFILTERING) THEN +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'UT15' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: UT15' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_U component of Total wind' +TFIELDLIST(IDX)%NGRID = 2 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'VT15' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VT15' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_V component of Total wind' +TFIELDLIST(IDX)%NGRID = 3 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'TEMPTOT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TEMPTOT' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_TOTal TEMPerature' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'PRESTOT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PRESTOT' +TFIELDLIST(IDX)%CUNITS = 'Pa' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_TOTal PRESsure' +TFIELDLIST(IDX)%NGRID = 1 +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 = 'HUMTOT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: HUMTOT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_TOTal specific HUMidity' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'UT16' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: UT16' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_U component of Environmental wind' +TFIELDLIST(IDX)%NGRID = 2 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'VT16' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VT16' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_V component of Environmental wind' +TFIELDLIST(IDX)%NGRID = 3 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'TEMPENV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TEMPENV' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_ENVironmental TEMPerature' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'PRESENV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PRESENV' +TFIELDLIST(IDX)%CUNITS = 'Pa' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_ENVironmental PRESsure' +TFIELDLIST(IDX)%NGRID = 1 +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 = 'HUMENV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: HUMENV' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_ENVironmental specific HUMidity' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'UT17' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: UT17' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_U component of Basic wind' +TFIELDLIST(IDX)%NGRID = 2 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'VT17' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VT17' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_V component of Basic wind' +TFIELDLIST(IDX)%NGRID = 3 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'TEMPBAS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TEMPBAS' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_BASic TEMPerature' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'PRESBAS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PRESBAS' +TFIELDLIST(IDX)%CUNITS = 'Pa' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_BASic PRESsure' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'HUMBAS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: HUMBAS' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_BASic specific HUMidity' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'VTDIS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VTDIS' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Total disturbance tangential wind' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +!END IF !LFILTERING +END IF !CPROGRAM==REAL +! +! WRITE(YMSG,'("number of used fields=",I4," out of ",I4)') IDX-1,MAXFIELDS CALL PRINT_MSG(NVERB_INFO,'GEN','INI_FIELD_LIST',TRIM(YMSG)) ! @@ -2667,10 +3165,15 @@ USE MODD_REF USE MODD_ADV_n USE MODD_CONF_n USE MODD_DEEP_CONVECTION_n +USE MODD_DEF_EDDY_FLUX_n +USE MODD_DEF_EDDYUV_FLUX_n USE MODD_DYN_n +USE MODD_ELEC_n USE MODD_FIELD_n USE MODD_GR_FIELD_n USE MODD_GRID_n +USE MODD_HURR_FIELD_n +USE MODD_LIMA_PRECIP_SCAVENGING_n USE MODD_LSFIELD_n USE MODD_PARAM_n USE MODD_PAST_FIELD_n @@ -2819,6 +3322,21 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('DUM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFR CALL FIND_FIELD_ID_FROM_MNHNAME('DVM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDVM CALL FIND_FIELD_ID_FROM_MNHNAME('DWM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDWM ! +! MODD_LIMA_PRECIP_SCAVENGING_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('INPAP',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XINPAP +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPAP',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPAP +! +! MODD_ELEC_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('EFIELDU',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XEFIELDU +CALL FIND_FIELD_ID_FROM_MNHNAME('EFIELDV',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XEFIELDV +CALL FIND_FIELD_ID_FROM_MNHNAME('EFIELDW',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XEFIELDW +CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IAGGS',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XNI_IAGGS +CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IDRYG',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XNI_IDRYG +CALL FIND_FIELD_ID_FROM_MNHNAME('NI_SDRYG',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XNI_SDRYG +CALL FIND_FIELD_ID_FROM_MNHNAME('INDUC_CG',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XIND_RATE +! ! MODD_CH_PH_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('PHC',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XPHC @@ -2879,7 +3397,9 @@ END IF ! ! MODD_TURB_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWTHVMF +CALL FIND_FIELD_ID_FROM_MNHNAME('BL_DEPTH', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XBL_DEPTH +CALL FIND_FIELD_ID_FROM_MNHNAME('SBL_DEPTH',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XSBL_DEPTH +CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWTHVMF ! ! MODD_REF_n variables ! @@ -2949,6 +3469,38 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRG', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D CALL FIND_FIELD_ID_FROM_MNHNAME('INPRH', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XINPRH CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRH', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPRH ! +! MODD_DEF_EDDY_FLUX_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('VT_FLX',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVTH_FLUX_M +CALL FIND_FIELD_ID_FROM_MNHNAME('WT_FLX',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWTH_FLUX_M +CALL FIND_FIELD_ID_FROM_MNHNAME('RTHS_EDDY_FLUX',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRTHS_EDDY_FLUX +! +! MODD_DEF_EDDYUV_FLUX_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('VU_FLX',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVU_FLUX_M +CALL FIND_FIELD_ID_FROM_MNHNAME('RVS_EDDY_FLUX',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRVS_EDDY_FLUX +! +! MODD_HURR_FIELD_n variables +! +IF (CPROGRAM=='REAL') THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('UT15', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XUTOT + CALL FIND_FIELD_ID_FROM_MNHNAME('VT15', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVTOT + CALL FIND_FIELD_ID_FROM_MNHNAME('TEMPTOT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XTTOT + CALL FIND_FIELD_ID_FROM_MNHNAME('PRESTOT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPTOT + CALL FIND_FIELD_ID_FROM_MNHNAME('HUMTOT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XQTOT + CALL FIND_FIELD_ID_FROM_MNHNAME('UT16', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XUENV + CALL FIND_FIELD_ID_FROM_MNHNAME('VT16', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVENV + CALL FIND_FIELD_ID_FROM_MNHNAME('TEMPENV',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XTENV + CALL FIND_FIELD_ID_FROM_MNHNAME('PRESENV',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPENV + CALL FIND_FIELD_ID_FROM_MNHNAME('HUMENV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XQENV + CALL FIND_FIELD_ID_FROM_MNHNAME('UT17', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XUBASIC + CALL FIND_FIELD_ID_FROM_MNHNAME('VT17', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVBASIC + CALL FIND_FIELD_ID_FROM_MNHNAME('TEMPBAS',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XTBASIC + CALL FIND_FIELD_ID_FROM_MNHNAME('PRESBAS',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XPBASIC + CALL FIND_FIELD_ID_FROM_MNHNAME('HUMBAS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XQBASIC + CALL FIND_FIELD_ID_FROM_MNHNAME('VTDIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVTDIS +END IF +! ! ! ! @@ -3055,6 +3607,21 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('DUM',IID,IRESP); XDUM => TFIELDLIST(IID)%TFIELD CALL FIND_FIELD_ID_FROM_MNHNAME('DVM',IID,IRESP); XDVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('DWM',IID,IRESP); XDWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA ! +! MODD_LIMA_PRECIP_SCAVENGING_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('INPAP',IID,IRESP); XINPAP => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPAP',IID,IRESP); XACPAP => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +! +! MODD_ELEC_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('EFIELDU',IID,IRESP); XEFIELDU => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('EFIELDV',IID,IRESP); XEFIELDV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('EFIELDW',IID,IRESP); XEFIELDW => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IAGGS',IID,IRESP); XNI_IAGGS => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IDRYG',IID,IRESP); XNI_IDRYG => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('NI_SDRYG',IID,IRESP); XNI_SDRYG => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('INDUC_CG',IID,IRESP); XIND_RATE => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! ! MODD_CH_PH_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('PHC',IID,IRESP); XPHC => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA @@ -3222,7 +3789,9 @@ CSURF => TFIELDLIST(IID)%TFIELD_C0D(KTO)%DATA ! ! MODD_TURB_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); XWTHVMF => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('BL_DEPTH', IID,IRESP); XBL_DEPTH => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SBL_DEPTH',IID,IRESP); XSBL_DEPTH => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF', IID,IRESP); XWTHVMF => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA ! ! MODD_REF_n variables ! @@ -3292,6 +3861,40 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRG', IID,IRESP); XACPRG => TFIELDLIST(IID CALL FIND_FIELD_ID_FROM_MNHNAME('INPRH', IID,IRESP); XINPRH => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRH', IID,IRESP); XACPRH => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA ! +! +! MODD_DEF_EDDY_FLUX_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('VT_FLX', IID,IRESP); XVTH_FLUX_M => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('WT_FLX', IID,IRESP); XWTH_FLUX_M => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('RTHS_EDDY_FLUX',IID,IRESP); XRTHS_EDDY_FLUX => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! +! MODD_DEF_EDDYUV_FLUX_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('VU_FLX', IID,IRESP); XVU_FLUX_M => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('RVS_EDDY_FLUX',IID,IRESP); XRVS_EDDY_FLUX => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! +! +! MODD_HURR_FIELD_n variables +! +IF (CPROGRAM=='REAL') THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('UT15', IID,IRESP); XUTOT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('VT15', IID,IRESP); XVTOT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('TEMPTOT',IID,IRESP); XTTOT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('PRESTOT',IID,IRESP); XPTOT => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('HUMTOT', IID,IRESP); XQTOT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('UT16', IID,IRESP); XUENV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('VT16', IID,IRESP); XVENV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('TEMPENV',IID,IRESP); XTENV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('PRESENV',IID,IRESP); XPENV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('HUMENV', IID,IRESP); XQENV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('UT17', IID,IRESP); XUBASIC => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('VT17', IID,IRESP); XVBASIC => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('TEMPBAS',IID,IRESP); XTBASIC => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('PRESBAS',IID,IRESP); XPBASIC => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('HUMBAS', IID,IRESP); XQBASIC => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('VTDIS', IID,IRESP); XVTDIS => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +END IF +! END IF !KFROM/=KTO ! END SUBROUTINE FIELDLIST_GOTO_MODEL diff --git a/src/LIB/SURCOUCHE/src/mode_gather.f90 b/src/LIB/SURCOUCHE/src/mode_gather.f90 index 383a58443e82a0c47268c3751e9c914a7b3deb2c..9be905a4c873bb6206afccbf13db322ae65a96ea 100644 --- a/src/LIB/SURCOUCHE/src/mode_gather.f90 +++ b/src/LIB/SURCOUCHE/src/mode_gather.f90 @@ -1045,8 +1045,6 @@ INTEGER, INTENT(IN) :: KCOMM INTEGER, OPTIONAL,INTENT(IN) :: KXOBOX,KXEBOX,KYOBOX,KYEBOX CHARACTER(LEN=*), OPTIONAL,INTENT(IN) :: HINTER -!INCLUDE 'mpif.h' - INTEGER :: JI INTEGER :: IXO,IXE,IYO,IYE INTEGER, DIMENSION(:,:,:),POINTER:: IP diff --git a/src/MNH/eddyUV_flux_one_wayn.f90 b/src/MNH/eddyUV_flux_one_wayn.f90 index 121f72017a9b8bc57a2ebb6f1560784356191977..f60d64508b1705623dc94f55d8c212f4b6239565 100644 --- a/src/MNH/eddyUV_flux_one_wayn.f90 +++ b/src/MNH/eddyUV_flux_one_wayn.f90 @@ -71,8 +71,9 @@ USE MODI_GRADIENT_U USE MODI_BIKHARDT USE MODD_BIKHARDT_n USE MODD_NESTING - - +! +USE MODE_FIELD, ONLY : TFIELDLIST, FIND_FIELD_ID_FROM_MNHNAME +! IMPLICIT NONE ! INTEGER, INTENT(IN) :: KMI ! Model index @@ -100,7 +101,8 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZFLUX2 ! Work array=Dad interpolated flux REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZDIV_UV! Work array=DIV of ZFLUX2 INTEGER :: IKU ! -INTEGER :: IDIMX,IDIMY +INTEGER :: IDIMX,IDIMY +INTEGER :: IID, IRESP !------------------------------------------------------------------------------- ! ! @@ -122,12 +124,16 @@ IF (ISYNCHRO==1 .OR. IDTRATIO_KMI_1 == 1) THEN ! v'u' (EDDY_FLUX_MODEL(1)%XVU_FLUX_M) of model1 interpolation on the son grid put into ZFLUX2 ZFLUX2 = 0. - IDIMX = SIZE(EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M,1) - IDIMY = SIZE(EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M,2) + !IDIMX = SIZE(EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M,1) + !IDIMY = SIZE(EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M,2) + CALL FIND_FIELD_ID_FROM_MNHNAME('VU_FLX',IID,IRESP) + IDIMX = SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,1) + IDIMY = SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,2) CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,& - HLBCX,HLBCY,EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M,ZFLUX2) +! HLBCX,HLBCY,EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M,ZFLUX2) + HLBCX,HLBCY,TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,ZFLUX2) ! Lateral boundary conditions ZFLUX2(IIB,:,:) = ZFLUX2(IIB+1,:,:) diff --git a/src/MNH/eddy_flux_one_wayn.f90 b/src/MNH/eddy_flux_one_wayn.f90 index f07307d3d7b8ae6e621ac9f28045c1cac04bccf8..0ec1ed8c2fea2c7b7ec5c0887bb9b5f1ed239be3 100644 --- a/src/MNH/eddy_flux_one_wayn.f90 +++ b/src/MNH/eddy_flux_one_wayn.f90 @@ -72,7 +72,9 @@ USE MODI_GRADIENT_U USE MODI_BIKHARDT USE MODD_BIKHARDT_n USE MODD_NESTING - +! +USE MODE_FIELD, ONLY : TFIELDLIST, FIND_FIELD_ID_FROM_MNHNAME +! IMPLICIT NONE ! INTEGER, INTENT(IN) :: KMI ! Model index @@ -96,7 +98,8 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZFLUX2 ! Work array=Dad interpolated flux ! on the son grid INTEGER :: IKU ! -INTEGER :: IDIMX,IDIMY +INTEGER :: IDIMX,IDIMY +INTEGER :: IID, IRESP !------------------------------------------------------------------------------- ! ! @@ -115,22 +118,28 @@ IF (ISYNCHRO==1 .OR. IDTRATIO_KMI_1 == 1) THEN ! v'T' (EDDY_FLUX_MODEL(1)%XVTH_FLUX_M) of model1 interpolation on the son grid put into ZFLUX2 ZFLUX2 = 0. - IDIMX = SIZE(EDDY_FLUX_MODEL(1)%XVTH_FLUX_M,1) - IDIMY = SIZE(EDDY_FLUX_MODEL(1)%XVTH_FLUX_M,2) + !IDIMX = SIZE(EDDY_FLUX_MODEL(1)%XVTH_FLUX_M,1) + !IDIMY = SIZE(EDDY_FLUX_MODEL(1)%XVTH_FLUX_M,2) + CALL FIND_FIELD_ID_FROM_MNHNAME('VT_FLX',IID,IRESP) + IDIMX = SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,1) + IDIMY = SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,2) CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,& - HLBCX,HLBCY,EDDY_FLUX_MODEL(1)%XVTH_FLUX_M,ZFLUX2) +! HLBCX,HLBCY,EDDY_FLUX_MODEL(1)%XVTH_FLUX_M,ZFLUX2) + HLBCX,HLBCY,TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,ZFLUX2) ! operator GX_U_M used for gradient of v'T' (flux point) placed at a mass point XRTHS_EDDY_FLUX(:,:,:) = - XRHODJ(:,:,:)* GX_U_M(1,IKU,1,ZFLUX2,XDXX,XDZZ,XDZX) ! w'T' (EDDY_FLUX_MODEL(1)%XWTH_FLUX_M) of model1 interpolation on the son grid put into ZFLUX2 ZFLUX2 = 0. + CALL FIND_FIELD_ID_FROM_MNHNAME('WT_FLX',IID,IRESP) CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,& - HLBCX,HLBCY,EDDY_FLUX_MODEL(1)%XWTH_FLUX_M,ZFLUX2) +! HLBCX,HLBCY,EDDY_FLUX_MODEL(1)%XWTH_FLUX_M,ZFLUX2) + HLBCX,HLBCY,TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,ZFLUX2) ! DIV(W'T') put into the source term XRTHS_EDDY_FLUX(:,:,:) = XRTHS_EDDY_FLUX(:,:,:) & diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90 index c6ec88e2760cd76aa147093b6bf53529ccedc66f..de8216031c5c27ea7454c293d02d2c805681a00a 100644 --- a/src/MNH/goto_model_wrapper.f90 +++ b/src/MNH/goto_model_wrapper.f90 @@ -52,7 +52,7 @@ USE MODD_GR_FIELD_n !$20140403 !USE MODD_GRID_CONF_PROJ !$ -USE MODD_HURR_FIELD_n +!USE MODD_HURR_FIELD_n !$20140403 add modd_io_surf_mnh USE MODD_IO_SURF_MNH !$ @@ -104,10 +104,10 @@ USE MODD_RBK90_Global_n USE MODD_RBK90_JacobianSP_n USE MODD_RBK90_Parameters_n ! -USE MODD_LIMA_PRECIP_SCAVENGING_n +!USE MODD_LIMA_PRECIP_SCAVENGING_n ! -USE MODD_DEF_EDDY_FLUX_n -USE MODD_DEF_EDDYUV_FLUX_n +!USE MODD_DEF_EDDY_FLUX_n +!USE MODD_DEF_EDDYUV_FLUX_n USE MODD_RELFRC_n USE MODD_ADVFRC_n ! @@ -148,7 +148,7 @@ CALL GET_GOTO_MODEL(KFROM, KTO) !CALL GRID_CONF_PROJ_GOTO_MODEL(KFROM,KTO) !$ !CALL GRID_GOTO_MODEL(KFROM, KTO) -CALL HURR_FIELD_GOTO_MODEL(KFROM, KTO) +!CALL HURR_FIELD_GOTO_MODEL(KFROM, KTO) !$20140403 add io_surf_mnh_goto_model!! CALL IO_SURF_MNH_GOTO_MODEL(KFROM, KTO) !$ @@ -199,10 +199,10 @@ CALL RBK90_Global_GOTO_MODEL(KFROM, KTO) CALL RBK90_JacobianSP_GOTO_MODEL(KFROM, KTO) CALL RBK90_Parameters_GOTO_MODEL(KFROM, KTO) ! -CALL LIMA_PRECIP_SCAVENGING_GOTO_MODEL(KFROM, KTO) +!CALL LIMA_PRECIP_SCAVENGING_GOTO_MODEL(KFROM, KTO) ! -CALL EDDY_FLUX_GOTO_MODEL(KFROM, KTO) -CALL EDDYUV_FLUX_GOTO_MODEL(KFROM, KTO) +!CALL EDDY_FLUX_GOTO_MODEL(KFROM, KTO) +!CALL EDDYUV_FLUX_GOTO_MODEL(KFROM, KTO) CALL ADVFRC_GOTO_MODEL(KFROM, KTO) CALL RELFRC_GOTO_MODEL(KFROM, KTO) CALL CH_PRODLOSSTOT_GOTO_MODEL(KFROM,KTO) diff --git a/src/MNH/modd_def_eddyUV_fluxn.f90 b/src/MNH/modd_def_eddyUV_fluxn.f90 index 4447296044709deed0c72e02e96478313c8033d1..f5ded99e4c2e96dde406a53916a6b9a2e238d64f 100644 --- a/src/MNH/modd_def_eddyUV_fluxn.f90 +++ b/src/MNH/modd_def_eddyUV_fluxn.f90 @@ -37,19 +37,7 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX IMPLICIT NONE ! -TYPE EDDYUV_FLUX_t -! -REAL, DIMENSION(:,:,:), POINTER :: XVU_FLUX_M=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XMT_FLUX=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XRVS_EDDY_FLUX=>NULL() - -! -END TYPE EDDYUV_FLUX_t -! -TYPE(EDDYUV_FLUX_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: EDDYUV_FLUX_MODEL -! REAL, DIMENSION(:,:,:), POINTER :: XVU_FLUX_M=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XMT_FLUX=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XRVS_EDDY_FLUX=>NULL() ! CONTAINS @@ -58,16 +46,6 @@ SUBROUTINE EDDYUV_FLUX_GOTO_MODEL(KFROM, KTO) ! INTEGER, INTENT(IN) :: KFROM, KTO ! -! Save current state for allocated arrays -EDDYUV_FLUX_MODEL(KFROM)%XVU_FLUX_M=>XVU_FLUX_M -EDDYUV_FLUX_MODEL(KFROM)%XMT_FLUX=>XMT_FLUX -EDDYUV_FLUX_MODEL(KFROM)%XRVS_EDDY_FLUX=>XRVS_EDDY_FLUX -! -! Current model is set to model KTO -XVU_FLUX_M=>EDDYUV_FLUX_MODEL(KTO)%XVU_FLUX_M -XMT_FLUX=>EDDYUV_FLUX_MODEL(KTO)%XMT_FLUX -XRVS_EDDY_FLUX=>EDDYUV_FLUX_MODEL(KTO)%XRVS_EDDY_FLUX -! END SUBROUTINE EDDYUV_FLUX_GOTO_MODEL ! END MODULE MODD_DEF_EDDYUV_FLUX_n diff --git a/src/MNH/modd_def_eddy_fluxn.f90 b/src/MNH/modd_def_eddy_fluxn.f90 index 48cc35c12680176d4cbd9f8ce9c09f60e940bb2a..23a216c8d443e72c91db344e89d1da3bd87f3be2 100644 --- a/src/MNH/modd_def_eddy_fluxn.f90 +++ b/src/MNH/modd_def_eddy_fluxn.f90 @@ -37,16 +37,6 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX IMPLICIT NONE ! -TYPE EDDY_FLUX_t -! -REAL, DIMENSION(:,:,:), POINTER :: XVTH_FLUX_M=>NULL() ! V'th' flux -REAL, DIMENSION(:,:,:), POINTER :: XWTH_FLUX_M=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XRTHS_EDDY_FLUX=>NULL() -! -END TYPE EDDY_FLUX_t -! -TYPE(EDDY_FLUX_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: EDDY_FLUX_MODEL -! REAL, DIMENSION(:,:,:), POINTER :: XVTH_FLUX_M=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XWTH_FLUX_M=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XRTHS_EDDY_FLUX=>NULL() @@ -57,16 +47,6 @@ SUBROUTINE EDDY_FLUX_GOTO_MODEL(KFROM, KTO) ! INTEGER, INTENT(IN) :: KFROM, KTO ! -! Save current state for allocated arrays -EDDY_FLUX_MODEL(KFROM)%XVTH_FLUX_M=>XVTH_FLUX_M -EDDY_FLUX_MODEL(KFROM)%XWTH_FLUX_M=>XWTH_FLUX_M -EDDY_FLUX_MODEL(KFROM)%XRTHS_EDDY_FLUX=>XRTHS_EDDY_FLUX -! -! Current model is set to model KTO -XVTH_FLUX_M=>EDDY_FLUX_MODEL(KTO)%XVTH_FLUX_M -XWTH_FLUX_M=>EDDY_FLUX_MODEL(KTO)%XWTH_FLUX_M -XRTHS_EDDY_FLUX=>EDDY_FLUX_MODEL(KTO)%XRTHS_EDDY_FLUX -! END SUBROUTINE EDDY_FLUX_GOTO_MODEL ! END MODULE MODD_DEF_EDDY_FLUX_n diff --git a/src/MNH/modd_elecn.f90 b/src/MNH/modd_elecn.f90 index 9c50af2ba2f8729128be774c2f8bc57e60e0edf2..01107258a6d4673e7889ccc6615fa4cf9f1f1d56 100644 --- a/src/MNH/modd_elecn.f90 +++ b/src/MNH/modd_elecn.f90 @@ -40,12 +40,13 @@ IMPLICIT NONE TYPE ELEC_t ! - REAL, DIMENSION(:,:,:), POINTER :: XNI_SDRYG=>NULL(), XNI_IDRYG=>NULL(), & - XNI_IAGGS=>NULL(), & - XEFIELDU=>NULL(), & ! The 3 components of the electric field - XEFIELDV=>NULL(), XEFIELDW=>NULL(), & - XESOURCEFW=>NULL(), & ! Fair weather electric charge (C m^-3) - XIND_RATE=>NULL(), XEW=>NULL(), & +! REAL, DIMENSION(:,:,:), POINTER :: XNI_SDRYG=>NULL(), XNI_IDRYG=>NULL(), & +! XNI_IAGGS=>NULL(), & +! XEFIELDU=>NULL(), & ! The 3 components of the electric field +! XEFIELDV=>NULL(), XEFIELDW=>NULL(), & + REAL, DIMENSION(:,:,:), POINTER :: XESOURCEFW=>NULL(), & ! Fair weather electric charge (C m^-3) +! XIND_RATE=>NULL(), XEW=>NULL(), & + XEW=>NULL(), & XIONSOURCEFW =>NULL(), & ! Fair weather ionic source ! (ion pairs m-3 s-1) hold constant in time XCION_POS_FW =>NULL(), XCION_NEG_FW =>NULL(), & !Positive and Negative ion mixing ratio @@ -78,14 +79,14 @@ SUBROUTINE ELEC_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays -ELEC_MODEL(KFROM)%XNI_SDRYG=>XNI_SDRYG -ELEC_MODEL(KFROM)%XNI_IDRYG=>XNI_IDRYG -ELEC_MODEL(KFROM)%XNI_IAGGS=>XNI_IAGGS -ELEC_MODEL(KFROM)%XIND_RATE=>XIND_RATE +!ELEC_MODEL(KFROM)%XNI_SDRYG=>XNI_SDRYG !Done in FIELDLIST_GOTO_MODEL +!ELEC_MODEL(KFROM)%XNI_IDRYG=>XNI_IDRYG !Done in FIELDLIST_GOTO_MODEL +!ELEC_MODEL(KFROM)%XNI_IAGGS=>XNI_IAGGS !Done in FIELDLIST_GOTO_MODEL +!ELEC_MODEL(KFROM)%XIND_RATE=>XIND_RATE !Done in FIELDLIST_GOTO_MODEL ELEC_MODEL(KFROM)%XEW=>XEW -ELEC_MODEL(KFROM)%XEFIELDU=>XEFIELDU -ELEC_MODEL(KFROM)%XEFIELDV=>XEFIELDV -ELEC_MODEL(KFROM)%XEFIELDW=>XEFIELDW +!ELEC_MODEL(KFROM)%XEFIELDU=>XEFIELDU !Done in FIELDLIST_GOTO_MODEL +!ELEC_MODEL(KFROM)%XEFIELDV=>XEFIELDV !Done in FIELDLIST_GOTO_MODEL +!ELEC_MODEL(KFROM)%XEFIELDW=>XEFIELDW !Done in FIELDLIST_GOTO_MODEL ELEC_MODEL(KFROM)%XESOURCEFW=>XESOURCEFW ELEC_MODEL(KFROM)%XIONSOURCEFW=>XIONSOURCEFW ELEC_MODEL(KFROM)%XCION_POS_FW=>XCION_POS_FW @@ -100,14 +101,14 @@ ELEC_MODEL(KFROM)%XAF_E=>XAF_E ELEC_MODEL(KFROM)%XCF_E=>XCF_E ! ! Current model is set to model KTO -XNI_SDRYG=>ELEC_MODEL(KTO)%XNI_SDRYG -XNI_IDRYG=>ELEC_MODEL(KTO)%XNI_IDRYG -XNI_IAGGS=>ELEC_MODEL(KTO)%XNI_IAGGS -XIND_RATE=>ELEC_MODEL(KTO)%XIND_RATE +!XNI_SDRYG=>ELEC_MODEL(KTO)%XNI_SDRYG !Done in FIELDLIST_GOTO_MODEL +!XNI_IDRYG=>ELEC_MODEL(KTO)%XNI_IDRYG !Done in FIELDLIST_GOTO_MODEL +!XNI_IAGGS=>ELEC_MODEL(KTO)%XNI_IAGGS !Done in FIELDLIST_GOTO_MODEL +!XIND_RATE=>ELEC_MODEL(KTO)%XIND_RATE !Done in FIELDLIST_GOTO_MODEL XEW=>ELEC_MODEL(KTO)%XEW -XEFIELDU=>ELEC_MODEL(KTO)%XEFIELDU -XEFIELDV=>ELEC_MODEL(KTO)%XEFIELDV -XEFIELDW=>ELEC_MODEL(KTO)%XEFIELDW +!XEFIELDU=>ELEC_MODEL(KTO)%XEFIELDU !Done in FIELDLIST_GOTO_MODEL +!XEFIELDV=>ELEC_MODEL(KTO)%XEFIELDV !Done in FIELDLIST_GOTO_MODEL +!XEFIELDW=>ELEC_MODEL(KTO)%XEFIELDW !Done in FIELDLIST_GOTO_MODEL XESOURCEFW=>ELEC_MODEL(KTO)%XESOURCEFW XIONSOURCEFW=>ELEC_MODEL(KTO)%XIONSOURCEFW XCION_POS_FW=>ELEC_MODEL(KTO)%XCION_POS_FW diff --git a/src/MNH/modd_hurr_fieldn.f90 b/src/MNH/modd_hurr_fieldn.f90 index 736c71c97357e221276a1b92ca143d678e78c61a..c770451068d7fd3408a2f54828eed0ce15a94b46 100644 --- a/src/MNH/modd_hurr_fieldn.f90 +++ b/src/MNH/modd_hurr_fieldn.f90 @@ -46,75 +46,21 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX IMPLICIT NONE -TYPE HURR_FIELD_t -! - REAL, DIMENSION(:,:,:), POINTER :: XUTOT=>NULL(),XVTOT=>NULL(),XTTOT=>NULL() ! Total fields - REAL, DIMENSION(:,:), POINTER :: XPTOT=>NULL() -! - REAL, DIMENSION(:,:,:), POINTER :: XUENV=>NULL(),XVENV=>NULL(),XTENV=>NULL() ! Environmental - REAL, DIMENSION(:,:), POINTER :: XPENV=>NULL() ! fields -! - REAL, DIMENSION(:,:,:), POINTER :: XUBASIC=>NULL(),XVBASIC=>NULL(),XTBASIC=>NULL() ! Basic - REAL, DIMENSION(:,:,:), POINTER :: XPBASIC=>NULL() !fields -! - REAL, DIMENSION(:,:,:), POINTER :: XVTDIS=>NULL() ! Total disturbance - !tangential wind -! - REAL, DIMENSION(:,:,:), POINTER :: XQTOT=>NULL(),XQENV=>NULL(),XQBASIC=>NULL() -END TYPE HURR_FIELD_t - -TYPE(HURR_FIELD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: HURR_FIELD_MODEL - -REAL, DIMENSION(:,:,:), POINTER :: XUTOT=>NULL(),XVTOT=>NULL(),XTTOT=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XUTOT=>NULL(),XVTOT=>NULL(),XTTOT=>NULL() ! Total fields REAL, DIMENSION(:,:), POINTER :: XPTOT=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XUENV=>NULL(),XVENV=>NULL(),XTENV=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XUENV=>NULL(),XVENV=>NULL(),XTENV=>NULL() ! Environmental fields REAL, DIMENSION(:,:), POINTER :: XPENV=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XUBASIC=>NULL(),XVBASIC=>NULL(),XTBASIC=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XUBASIC=>NULL(),XVBASIC=>NULL(),XTBASIC=>NULL() ! Basic fields REAL, DIMENSION(:,:,:), POINTER :: XPBASIC=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XVTDIS=>NULL() - REAL, DIMENSION(:,:,:), POINTER :: XQTOT=>NULL(),XQENV=>NULL(),XQBASIC=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XVTDIS=>NULL() ! Total disturbance tangential wind +REAL, DIMENSION(:,:,:), POINTER :: XQTOT=>NULL(),XQENV=>NULL(),XQBASIC=>NULL() CONTAINS SUBROUTINE HURR_FIELD_GOTO_MODEL(KFROM, KTO) -INTEGER, INTENT(IN) :: KFROM, KTO ! -! Save current state for allocated arrays -HURR_FIELD_MODEL(KFROM)%XUTOT=>XUTOT -HURR_FIELD_MODEL(KFROM)%XVTOT=>XVTOT -HURR_FIELD_MODEL(KFROM)%XTTOT=>XTTOT -HURR_FIELD_MODEL(KFROM)%XPTOT=>XPTOT -HURR_FIELD_MODEL(KFROM)%XUENV=>XUENV -HURR_FIELD_MODEL(KFROM)%XVENV=>XVENV -HURR_FIELD_MODEL(KFROM)%XTENV=>XTENV -HURR_FIELD_MODEL(KFROM)%XPENV=>XPENV -HURR_FIELD_MODEL(KFROM)%XUBASIC=>XUBASIC -HURR_FIELD_MODEL(KFROM)%XVBASIC=>XVBASIC -HURR_FIELD_MODEL(KFROM)%XTBASIC=>XTBASIC -HURR_FIELD_MODEL(KFROM)%XPBASIC=>XPBASIC -HURR_FIELD_MODEL(KFROM)%XVTDIS=>XVTDIS -HURR_FIELD_MODEL(KFROM)%XQTOT=>XQTOT -HURR_FIELD_MODEL(KFROM)%XQENV=>XQENV -HURR_FIELD_MODEL(KFROM)%XQBASIC=>XQBASIC +INTEGER, INTENT(IN) :: KFROM, KTO ! -! Current model is set to model KTO -XUTOT=>HURR_FIELD_MODEL(KTO)%XUTOT -XVTOT=>HURR_FIELD_MODEL(KTO)%XVTOT -XTTOT=>HURR_FIELD_MODEL(KTO)%XTTOT -XPTOT=>HURR_FIELD_MODEL(KTO)%XPTOT -XUENV=>HURR_FIELD_MODEL(KTO)%XUENV -XVENV=>HURR_FIELD_MODEL(KTO)%XVENV -XTENV=>HURR_FIELD_MODEL(KTO)%XTENV -XPENV=>HURR_FIELD_MODEL(KTO)%XPENV -XUBASIC=>HURR_FIELD_MODEL(KTO)%XUBASIC -XVBASIC=>HURR_FIELD_MODEL(KTO)%XVBASIC -XTBASIC=>HURR_FIELD_MODEL(KTO)%XTBASIC -XPBASIC=>HURR_FIELD_MODEL(KTO)%XPBASIC -XVTDIS=>HURR_FIELD_MODEL(KTO)%XVTDIS -XQTOT=>HURR_FIELD_MODEL(KTO)%XQTOT -XQENV=>HURR_FIELD_MODEL(KTO)%XQENV -XQBASIC=>HURR_FIELD_MODEL(KTO)%XQBASIC - END SUBROUTINE HURR_FIELD_GOTO_MODEL END MODULE MODD_HURR_FIELD_n diff --git a/src/MNH/modd_lima_precip_scavengingn.f90 b/src/MNH/modd_lima_precip_scavengingn.f90 index a0866da9d6041ab3a6dedaef08223e9196d63d7a..188efc6e70aa51e8bc6474696a77a25209d32f83 100644 --- a/src/MNH/modd_lima_precip_scavengingn.f90 +++ b/src/MNH/modd_lima_precip_scavengingn.f90 @@ -29,30 +29,15 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX ! IMPLICIT NONE ! -TYPE LIMA_PRECIP_SCAVENGING_t - REAL, DIMENSION(:,:), POINTER :: XINPAP=>NULL(), XACPAP=>NULL() +REAL, DIMENSION(:,:), POINTER :: XINPAP=>NULL(), XACPAP=>NULL() ! Instant and cumul of ground ! precipitation fields of Scavenged ! Aerosol Particles -END TYPE LIMA_PRECIP_SCAVENGING_t - -TYPE(LIMA_PRECIP_SCAVENGING_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: PRECIP_SCAVENGING_MODEL - -REAL, DIMENSION(:,:), POINTER :: XINPAP=>NULL(), XACPAP=>NULL() CONTAINS SUBROUTINE LIMA_PRECIP_SCAVENGING_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO - ! - ! Save current state for allocated arrays - PRECIP_SCAVENGING_MODEL(KFROM)%XINPAP=>XINPAP - PRECIP_SCAVENGING_MODEL(KFROM)%XACPAP=>XACPAP - ! - ! Current model is set to model KTO - XINPAP=>PRECIP_SCAVENGING_MODEL(KTO)%XINPAP - XACPAP=>PRECIP_SCAVENGING_MODEL(KTO)%XACPAP - ! END SUBROUTINE LIMA_PRECIP_SCAVENGING_GOTO_MODEL ! ! diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90 index 1e61f69b440d4d8c6165ebada9157fdc455a07c7..3f429668d0514b13f4c8c2e1ee248d544a363848 100644 --- a/src/MNH/modd_spawn.f90 +++ b/src/MNH/modd_spawn.f90 @@ -66,44 +66,48 @@ CHARACTER (LEN=28) :: CDADSPAFILE ! DAD fm-file for spawning file ! if LBAL_ONLY=T ! ! Pointers to the data of the mesh #1 -REAL,DIMENSION(:), SAVE,POINTER :: XXHAT1 -REAL,DIMENSION(:), SAVE,POINTER :: XYHAT1 -REAL,DIMENSION(:), SAVE,POINTER :: XZHAT1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XZS1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XZSMT1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XZZ1 -LOGICAL, SAVE,POINTER :: LSLEVE1 -REAL, SAVE,POINTER :: XLEN11 -REAL, SAVE,POINTER :: XLEN21 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XTHT1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XTKET1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XPABST1 -REAL,DIMENSION(:,:,:,:),SAVE,POINTER :: XRT1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XUT1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVT1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XWT1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSRCT1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSIGS1 -TYPE(DATE_TIME), SAVE,POINTER :: TDTCUR1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSUM1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSVM1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSWM1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSTHM1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSRVM1 +REAL,DIMENSION(:), SAVE,POINTER :: XXHAT1 => NULL() +REAL,DIMENSION(:), SAVE,POINTER :: XYHAT1 => NULL() +REAL,DIMENSION(:), SAVE,POINTER :: XZHAT1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XZS1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XZSMT1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XZZ1 => NULL() +LOGICAL, SAVE,POINTER :: LSLEVE1 => NULL() +REAL, SAVE,POINTER :: XLEN11 => NULL() +REAL, SAVE,POINTER :: XLEN21 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XTHT1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XTKET1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XPABST1 => NULL() +REAL,DIMENSION(:,:,:,:),SAVE,POINTER :: XRT1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XUT1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVT1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XWT1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSRCT1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSIGS1 => NULL() +TYPE(DATE_TIME), SAVE,POINTER :: TDTCUR1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSUM1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSVM1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSWM1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSTHM1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSRVM1 => NULL() ! -REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRC1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRC1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XINDEP1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XACDEP1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRR1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XINPRR3D1 -REAL,DIMENSION(:,:,:),SAVE,POINTER :: XEVAP3D1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRR1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRS1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRS1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRG1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRG1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRH1 -REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRH1 +REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRC1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRC1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XINDEP1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XACDEP1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRR1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XINPRR3D1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XEVAP3D1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRR1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRS1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRS1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRG1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRG1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRH1 => NULL() +REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRH1 => NULL() +! +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVU_FLUX_M1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVTH_FLUX_M1 => NULL() +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XWTH_FLUX_M1 => NULL() ! END MODULE MODD_SPAWN diff --git a/src/MNH/modd_turbn.f90 b/src/MNH/modd_turbn.f90 index a6ef1675817db72182c08c4fdd58a7f366849c3d..b791a8e175b8e6c56b57badac484c6cfabf6c678 100644 --- a/src/MNH/modd_turbn.f90 +++ b/src/MNH/modd_turbn.f90 @@ -81,8 +81,8 @@ TYPE TURB_t ! 'NONE' none ! 'TM06' Tomas Masson 2006 CHARACTER(LEN=4) :: CSUBG_AUCV ! type of subgrid autoconv. method - REAL, DIMENSION(:,:), POINTER :: XBL_DEPTH=>NULL() ! BL depth for TOMS computations - REAL, DIMENSION(:,:), POINTER :: XSBL_DEPTH=>NULL()! SurfaceBL depth for RMC01 computations +! REAL, DIMENSION(:,:), POINTER :: XBL_DEPTH=>NULL() ! BL depth for TOMS computations +! REAL, DIMENSION(:,:), POINTER :: XSBL_DEPTH=>NULL()! SurfaceBL depth for RMC01 computations ! REAL, DIMENSION(:,:,:), POINTER :: XWTHVMF=>NULL()! Mass Flux vert. transport of buoyancy REAL :: VSIGQSAT ! coeff applied to qsat variance contribution REAL, DIMENSION(:,:,:), POINTER :: XDYP=>NULL() ! Dynamical production of Kinetic energy @@ -124,8 +124,8 @@ INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays ! -TURB_MODEL(KFROM)%XBL_DEPTH=>XBL_DEPTH -TURB_MODEL(KFROM)%XSBL_DEPTH=>XSBL_DEPTH +!TURB_MODEL(KFROM)%XBL_DEPTH=>XBL_DEPTH !Done in FIELDLIST_GOTO_MODEL +!TURB_MODEL(KFROM)%XSBL_DEPTH=>XSBL_DEPTH !Done in FIELDLIST_GOTO_MODEL !TURB_MODEL(KFROM)%XWTHVMF=>XWTHVMF !Done in FIELDLIST_GOTO_MODEL TURB_MODEL(KFROM)%XDYP=>XDYP TURB_MODEL(KFROM)%XTHP=>XTHP @@ -146,8 +146,8 @@ LSIG_CONV=>TURB_MODEL(KTO)%LSIG_CONV LRMC01=>TURB_MODEL(KTO)%LRMC01 CTOM=>TURB_MODEL(KTO)%CTOM CSUBG_AUCV=>TURB_MODEL(KTO)%CSUBG_AUCV -XBL_DEPTH=>TURB_MODEL(KTO)%XBL_DEPTH -XSBL_DEPTH=>TURB_MODEL(KTO)%XSBL_DEPTH +!XBL_DEPTH=>TURB_MODEL(KTO)%XBL_DEPTH !Done in FIELDLIST_GOTO_MODEL +!XSBL_DEPTH=>TURB_MODEL(KTO)%XSBL_DEPTH !Done in FIELDLIST_GOTO_MODEL !XWTHVMF=>TURB_MODEL(KTO)%XWTHVMF !Done in FIELDLIST_GOTO_MODEL VSIGQSAT=>TURB_MODEL(KTO)%VSIGQSAT XDYP=>TURB_MODEL(KTO)%XDYP diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90 index 563f2ba4dbe4b2e96bc5d17ad4fff340bbcf5ef8..d5f9fb857ab4d37cb6dfca2671fd7edc54a19a9c 100644 --- a/src/MNH/spawn_field2.f90 +++ b/src/MNH/spawn_field2.f90 @@ -191,8 +191,6 @@ USE MODD_RELFRC_n USE MODD_2D_FRC ! USE MODD_LATZ_EDFLX -USE MODD_DEF_EDDY_FLUX_n -USE MODD_DEF_EDDYUV_FLUX_n ! USE MODE_MPPDB USE MODE_ll @@ -389,12 +387,12 @@ CALL MPPDB_CHECK3D(PVT,"SPAWN_FIELD2:PVT",PRECISION) !* 2.1.8 Turbulent fluxes for 2D (Modif MT) ! IF (LUV_FLX) THEN - PVU_FLUX_M(:,:,:)= EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) + PVU_FLUX_M(:,:,:)= XVU_FLUX_M1 (KXOR:KXEND,KYOR:KYEND,:) END IF ! IF (LTH_FLX) THEN - PVTH_FLUX_M(:,:,:)= EDDY_FLUX_MODEL(1)%XVTH_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) - PWTH_FLUX_M(:,:,:)= EDDY_FLUX_MODEL(1)%XWTH_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) + PVTH_FLUX_M(:,:,:)= XVTH_FLUX_M1 (KXOR:KXEND,KYOR:KYEND,:) + PWTH_FLUX_M(:,:,:)= XWTH_FLUX_M1 (KXOR:KXEND,KYOR:KYEND,:) END IF ! !------------------------------------------------------------------------------- @@ -490,10 +488,10 @@ ELSE CALL SET_LSFIELD_1WAY_ll(XSIGS1(:,:,JI),ZSIGS_C(:,:,JI),2) ENDIF IF (LUV_FLX) & - CALL SET_LSFIELD_1WAY_ll(EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M(:,:,JI),ZVU_FLUX_M_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XVU_FLUX_M1(:,:,JI),ZVU_FLUX_M_C(:,:,JI),2) IF (LTH_FLX) THEN - CALL SET_LSFIELD_1WAY_ll(EDDY_FLUX_MODEL(1)%XVTH_FLUX_M(:,:,JI),ZVTH_FLUX_M_C(:,:,JI),2) - CALL SET_LSFIELD_1WAY_ll(EDDY_FLUX_MODEL(1)%XWTH_FLUX_M(:,:,JI),ZWTH_FLUX_M_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XVTH_FLUX_M1(:,:,JI),ZVTH_FLUX_M_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XWTH_FLUX_M1(:,:,JI),ZWTH_FLUX_M_C(:,:,JI),2) ENDIF ! CALL LS_FORCING_ll(2, IINFO_ll, .TRUE.) diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90 index e835499141e1e13ea3e540b8128f2181cc79b537..e9a817722aaf712d7958ba2dd25dda242a8a6d5e 100644 --- a/src/MNH/spawning.f90 +++ b/src/MNH/spawning.f90 @@ -261,8 +261,11 @@ END SUBROUTINE UPDATE_MODD_FROM_NMLVAR SUBROUTINE SET_POINTERS_TO_MODEL1() ! +USE MODD_DEF_EDDY_FLUX_n +USE MODD_DEF_EDDYUV_FLUX_n USE MODD_FIELD_n USE MODD_GRID_n +USE MODD_LATZ_EDFLX USE MODD_PRECIP_n ! XXHAT1 => XXHAT @@ -304,7 +307,14 @@ XINPRG1 => XINPRG XACPRG1 => XACPRG XINPRH1 => XINPRH XACPRH1 => XACPRH - +! +IF (LUV_FLX) THEN + XVU_FLUX_M1 => XVU_FLUX_M +END IF +IF (LTH_FLX) THEN + XVTH_FLUX_M1 => XVTH_FLUX_M + XWTH_FLUX_M1 => XWTH_FLUX_M1 +END IF ! END SUBROUTINE SET_POINTERS_TO_MODEL1 ! diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90 index 8d98c2183394171e8ed386be7b171dcca0374588..66e791e5fd33e3fba791bc80843abadba7c56be4 100644 --- a/src/MNH/write_lbn.f90 +++ b/src/MNH/write_lbn.f90 @@ -399,23 +399,32 @@ IF (NSV >=1) THEN ! ! ELEC ! - DO JSV = NSV_ELECBEG,NSV_ELECEND - IF(NSIZELBXSV_ll /= 0) THEN - YRECFM='LBX_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) - END IF + IF (NSV_ELECEND>=NSV_ELECBEG) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = '--' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = NSV_ELECBEG,NSV_ELECEND + IF(NSIZELBXSV_ll /= 0) THEN + TZFIELD%CMNHNAME = 'LBX_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBX' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV)) + END IF ! - IF(NSIZELBYSV_ll /= 0) THEN - YRECFM='LBY_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) - END IF - END DO + IF(NSIZELBYSV_ll /= 0) THEN + TZFIELD%CMNHNAME = 'LBY_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBY' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV)) + END IF + END DO + END IF ! ! IF (LORILAM) THEN @@ -826,23 +835,32 @@ IF (NSV >=1) THEN ENDIF ! ! lagrangian variables - DO JSV = NSV_LGBEG,NSV_LGEND - IF(NSIZELBXSV_ll /= 0) THEN - YRECFM = 'LBX_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (M)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) - END IF + IF (NSV_LGEND>=NSV_LGBEG) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = '--' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = NSV_LGBEG,NSV_LGEND + IF(NSIZELBXSV_ll /= 0) THEN + TZFIELD%CMNHNAME = 'LBX_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBX' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV)) + END IF ! - IF(NSIZELBYSV_ll /= 0) THEN - YRECFM = 'LBY_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (M)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) - END IF - END DO + IF(NSIZELBYSV_ll /= 0) THEN + TZFIELD%CMNHNAME = 'LBY_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBY' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV)) + END IF + END DO + END IF ! passive pollutants DO JSV = NSV_PPBEG,NSV_PPEND TZFIELD%CSTDNAME = '' diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 87e61abbfa21c03673b6ca98a2fe7894a09c88e4..5b553a417f9f8380875859f573719dfbfb418214 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -279,15 +279,7 @@ TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics INTEGER :: ILUOUT ! logical unit INTEGER :: IRESP ! IRESP : return-code if a problem appears !in LFI subroutines at the open of the file -INTEGER :: IGRID ! IGRID : grid indicator -INTEGER :: ILENCH ! ILENCH : length of comment string ! -CHARACTER(LEN=28) :: YFMFILE ! Name of FM-file to write -CHARACTER(LEN=16) :: YRECFM ! Name of the article to be written -CHARACTER(LEN=100):: YCOMMENT ! Comment string -CHARACTER (LEN=2) :: YDIR ! Type of the data field -! -INTEGER :: IRR ! Index for moist variables INTEGER :: JSV ! loop index for scalar variables INTEGER :: JSA ! beginning of chemical-aerosol variables @@ -331,8 +323,6 @@ CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) ALLOCATE(ZWORK2D(SIZE(XTHT,1),SIZE(XTHT,2))) ALLOCATE(ZWORK3D(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))) ! -YFMFILE = TPFILE%CNAME -! !* 0.2 ARRAYS BOUNDS INITIALIZATION ! IIU=NIMAX+2*JPHEXT @@ -345,7 +335,7 @@ IKE=IKU-JPVEXT !* 1. WRITES IN THE LFI FILE ! ! -!* 1.0 YFMFILE and HDADFILE writing : +!* 1.0 File and HDADFILE writing : ! CALL IO_WRITE_FIELD(TPFILE,'FILETYPE',CLUOUT,IRESP,TPFILE%CTYPE) ! @@ -480,143 +470,154 @@ IF ( (CUVW_ADV_SCHEME == 'CEN4TH') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN CALL IO_WRITE_FIELD(TPFILE,'DWM',CLUOUT,IRESP,XDWM) END IF ! -YDIR='XY' -! IF (MEAN_COUNT /= 0) THEN ! - YRECFM='UMME' - YCOMMENT='X_Y_Z_U component of mean wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) + TZFIELD%CSTDNAME = '' + TZFIELD%CDIR = 'XY' + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 +! + TZFIELD%NGRID = 2 +! + TZFIELD%CMNHNAME = 'UMME' + TZFIELD%CLONGNAME = 'MesoNH: UMME' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_Z_U component of mean wind' ZWORK3D = XUM_MEAN/MEAN_COUNT - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='U2ME' - YCOMMENT='X_Y_Z_U component of mean wind variance(m2/s2)' - IGRID=2 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'U2ME' + TZFIELD%CLONGNAME = 'MesoNH: U2ME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_U component of mean wind variance' ZWORK3D = XU2_MEAN/MEAN_COUNT-XUM_MEAN**2/MEAN_COUNT**2 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='UMMA' - YCOMMENT='X_Y_Z_U component of max wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUM_MAX,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='VMME' - YCOMMENT='X_Y_Z_V component of mean wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'UMMA' + TZFIELD%CLONGNAME = 'MesoNH: UMMA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_Z_U component of max wind' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XUM_MAX) +! + TZFIELD%NGRID = 3 +! + TZFIELD%CMNHNAME = 'VMME' + TZFIELD%CLONGNAME = 'MesoNH: VMME' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_Z_V component of mean wind' ZWORK3D = XVM_MEAN/MEAN_COUNT - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='V2ME' - YCOMMENT='X_Y_Z_V component of mean wind variance (m2/s2)' - IGRID=3 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'V2ME' + TZFIELD%CLONGNAME = 'MesoNH: V2ME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_V component of mean wind variance' ZWORK3D = XV2_MEAN/MEAN_COUNT-XVM_MEAN**2/MEAN_COUNT**2 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) - ! - YRECFM='VMMA' - YCOMMENT='X_Y_Z_V component of max wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVM_MAX,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='WMME' - YCOMMENT='X_Y_Z_vertical mean wind (m/s)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - ZWORK3D = XWM_MEAN/MEAN_COUNT - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='W2ME' - YCOMMENT='X_Y_Z_vertical mean wind variance(m2/s2)' - IGRID=4 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'VMMA' + TZFIELD%CLONGNAME = 'MesoNH: VMMA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_Z_V component of max wind' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XVM_MAX) +! + TZFIELD%NGRID = 4 +! + TZFIELD%CMNHNAME = 'WMME' + TZFIELD%CLONGNAME = 'MesoNH: WMME' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_Z_vertical mean wind' + ZWORK3D = XWM_MEAN/MEAN_COUNT + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) +! + TZFIELD%CMNHNAME = 'W2ME' + TZFIELD%CLONGNAME = 'MesoNH: W2ME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_vertical mean wind variance' ZWORK3D = XW2_MEAN/MEAN_COUNT-XWM_MEAN**2/MEAN_COUNT**2 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='WMMA' - YCOMMENT='X_Y_Z_vertical max wind (m/s)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWM_MAX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='THMME' - YCOMMENT='X_Y_Z_mean potential temperature (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'WMMA' + TZFIELD%CLONGNAME = 'MesoNH: WMMA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_Z_vertical max wind' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XWM_MAX) +! + TZFIELD%NGRID = 1 +! + TZFIELD%CMNHNAME = 'THMME' + TZFIELD%CLONGNAME = 'MesoNH: THMME' + TZFIELD%CUNITS = 'K' + TZFIELD%CCOMMENT = 'X_Y_Z_mean potential temperature' ZWORK3D = XTHM_MEAN/MEAN_COUNT - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) - ! - YRECFM='TH2ME' - YCOMMENT='X_Y_Z_mean potential temperature variance (K2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) +! + TZFIELD%CMNHNAME = 'TH2ME' + TZFIELD%CLONGNAME = 'MesoNH: TH2ME' + TZFIELD%CUNITS = 'K2' + TZFIELD%CCOMMENT = 'X_Y_Z_mean potential temperature variance' ZWORK3D = XTH2_MEAN/MEAN_COUNT-XTHM_MEAN**2/MEAN_COUNT**2 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) - ! - YRECFM='THMMA' - YCOMMENT='X_Y_Z_max potential temperature (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHM_MAX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='TEMPMME' - YCOMMENT='X_Y_Z_mean temperature (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - ZWORK3D= XTEMPM_MEAN/MEAN_COUNT - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) - ! - YRECFM='TEMP2ME' - YCOMMENT='X_Y_Z_mean temperature variance (K2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'THMMA' + TZFIELD%CLONGNAME = 'MesoNH: THMMA' + TZFIELD%CUNITS = 'K' + TZFIELD%CCOMMENT = 'X_Y_Z_max potential temperature' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XTHM_MAX) +! + TZFIELD%CMNHNAME = 'TEMPMME' + TZFIELD%CLONGNAME = 'MesoNH: TEMPMME' + TZFIELD%CUNITS = 'K' + TZFIELD%CCOMMENT = 'X_Y_Z_mean temperature' + ZWORK3D = XTEMPM_MEAN/MEAN_COUNT + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) +! + TZFIELD%CMNHNAME = 'TEMP2ME' + TZFIELD%CLONGNAME = 'MesoNH: TEMP2ME' + TZFIELD%CUNITS = 'K2' + TZFIELD%CCOMMENT = 'X_Y_Z_mean temperature variance' ZWORK3D = XTEMP2_MEAN/MEAN_COUNT-XTEMPM_MEAN**2/MEAN_COUNT**2 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='TEMPMMA' - YCOMMENT='X_Y_Z_max temperature (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTEMPM_MAX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='PABSMME' - YCOMMENT='X_Y_Z_mean ABSolute Pressure (Pa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - ZWORK3D= XPABSM_MEAN/MEAN_COUNT - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='PABS2ME' - YCOMMENT='X_Y_Z_mean ABSolute Pressure variance(Pa2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'TEMPMMA' + TZFIELD%CLONGNAME = 'MesoNH: TEMPMMA' + TZFIELD%CUNITS = 'K' + TZFIELD%CCOMMENT = 'X_Y_Z_max temperature' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XTEMPM_MAX) +! + TZFIELD%CMNHNAME = 'PABSMME' + TZFIELD%CLONGNAME = 'MesoNH: PABSMME' + TZFIELD%CUNITS = 'Pa' + TZFIELD%CCOMMENT = 'X_Y_Z_mean ABSolute Pressure' + ZWORK3D = XPABSM_MEAN/MEAN_COUNT + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) +! + TZFIELD%CMNHNAME = 'PABS2ME' + TZFIELD%CLONGNAME = 'MesoNH: PABS2ME' + TZFIELD%CUNITS = 'Pa2' + TZFIELD%CCOMMENT = 'X_Y_Z_mean ABSolute Pressure variance' ZWORK3D = XPABS2_MEAN/MEAN_COUNT-XPABSM_MEAN**2/MEAN_COUNT**2 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='PABSMMA' - YCOMMENT='X_Y_Z_max ABSolute Pressure (Pa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPABSM_MAX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) + ! + TZFIELD%CMNHNAME = 'PABSMMA' + TZFIELD%CLONGNAME = 'MesoNH: PABSMMA' + TZFIELD%CUNITS = 'Pa' + TZFIELD%CCOMMENT = 'X_Y_Z_max ABSolute Pressure' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPABSM_MAX) ! IF (CTURB /= 'NONE') THEN - YRECFM='TKEMME' - YCOMMENT='X_Y_Z_mean kinetic energy (m2/s2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'TKEMME' + TZFIELD%CLONGNAME = 'MesoNH: TKEMME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_mean kinetic energy' ZWORK3D= XTKEM_MEAN/MEAN_COUNT - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='TKEMMA' - YCOMMENT='X_Y_Z_max kinetic energy (m2/s2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTKEM_MAX,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'TKEMMA' + TZFIELD%CLONGNAME = 'MesoNH: TKEMMA' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_max kinetic energy' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XTKEM_MAX) END IF ! END IF @@ -660,16 +661,23 @@ END IF ! IF (NSV >=1) THEN JSA=0 - IGRID=1 ! individually in the file ! User scalar variables - DO JSV = 1,NSV_USER - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - JSA=JSA+1 - END DO + IF (NSV_USER>0) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = 1,NSV_USER + WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'SVT',JSV + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + JSA=JSA+1 + END DO + END IF ! microphysical C2R2 scheme scalar variables IF (NSV_C2R2END>=NSV_C2R2BEG) THEN TZFIELD%CSTDNAME = '' @@ -688,14 +696,22 @@ IF (NSV >=1) THEN END DO END IF ! microphysical C3R5 scheme additional scalar variables - DO JSV = NSV_C1R3BEG,NSV_C1R3END - YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (/M3)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - JSA=JSA+1 - END DO + IF (NSV_C1R3END>=NSV_C1R3BEG) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'm-3' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = NSV_C1R3BEG,NSV_C1R3END + TZFIELD%CMNHNAME = TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + JSA=JSA+1 + END DO + END IF ! ! microphysical LIMA variables ! @@ -771,161 +787,126 @@ IF (NSV >=1) THEN IF (LSCAV .AND. LAERO_MASS) THEN IF (ASSOCIATED(XINPAP)) THEN IF (SIZE(XINPAP) /= 0 ) THEN - YRECFM = 'INPAP' - YCOMMENT = 'X_Y_INstantaneous Precipitating Aerosol Rate (kg/m2/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPAP,IGRID,ILENCH, & - YCOMMENT,IRESP) ! unit conversion -! - ZWORK2D(:,:) = XRHOLW*XINPRR(:,:)*XSVT(:,:,2,NSV_LIMA_SCAVMASS)/ & + CALL IO_WRITE_FIELD(TPFILE,'INPAP',CLUOUT,IRESP,XINPAP) + ! + ZWORK2D(:,:) = XRHOLW*XINPRR(:,:)*XSVT(:,:,2,NSV_LIMA_SCAVMASS)/ & max( 1.e-20,XRT(:,:,2,3) ) !~2=at ground level - YRECFM = 'INPBP' - YCOMMENT = 'X_Y_INstantaneous Precipitating Aerosol Rate (kg/m2/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, & - YCOMMENT,IRESP) ! unit conversion -! - YRECFM = 'ACPAP' - YCOMMENT = 'X_Y_ACcumulated Precipitating Aerosol Rate (kg/m2)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPAP,IGRID,ILENCH, & - YCOMMENT,IRESP) ! unit conversion + TZFIELD%CMNHNAME = 'INPBP' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: INPBP' + TZFIELD%CUNITS = 'kg m-2 s-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_INstantaneous Precipitating Aerosol Rate' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK2D) + ! + CALL IO_WRITE_FIELD(TPFILE,'ACPAP',CLUOUT,IRESP,XACPAP) END IF END IF END IF ! ! ! electrical scalar variables - DO JSV = NSV_ELECBEG,NSV_ELECEND - YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'T' - IF (JSV .GT. NSV_ELECBEG .AND. JSV .LT. NSV_ELECEND) THEN - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (C/m3)' - ELSE - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (nb ions/m3)' - END IF - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - JSA=JSA+1 - END DO + IF (NSV_ELECEND>=NSV_ELECBEG) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = NSV_ELECBEG,NSV_ELECEND + TZFIELD%CMNHNAME = TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + IF (JSV .GT. NSV_ELECBEG .AND. JSV .LT. NSV_ELECEND) THEN + TZFIELD%CUNITS = 'C m-3' + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (C/m3)' + ELSE + TZFIELD%CUNITS = 'm-3' + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (nb ions/m3)' + END IF + ZWORK3D(:,:,:) = XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) + JSA=JSA+1 + END DO + END IF + ! IF (CELEC /= 'NONE') THEN - YRECFM='EFIELDU' - YCOMMENT='X_Y_Z_EFIELDU (V/m)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDU(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'EFIELDU',CLUOUT,IRESP,XEFIELDU) + CALL IO_WRITE_FIELD(TPFILE,'EFIELDV',CLUOUT,IRESP,XEFIELDV) + CALL IO_WRITE_FIELD(TPFILE,'EFIELDW',CLUOUT,IRESP,XEFIELDW) ! - YRECFM='EFIELDV' - YCOMMENT='X_Y_Z_EFIELDV (V/m)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDV(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - ! - YRECFM='EFIELDW' - YCOMMENT='X_Y_Z_EFIELDW (V/m)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDW(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - ! - YRECFM='EMODULE' - YCOMMENT='X_Y_Z_EMODULE (V/m)' + TZFIELD%CMNHNAME = 'EMODULE' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'V m-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME) + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 ZWORK3D(:,:,:) = (XEFIELDU**2 + XEFIELDV**2 + XEFIELDW**2)**0.5 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - ! - YRECFM='NI_IAGGS' - YCOMMENT='X_Y_Z_NI_IAGGS (pC/m3/s)' - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = XNI_IAGGS(:,:,:) * 1.E12 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - ! - YRECFM='NI_IDRYG' - YCOMMENT='X_Y_Z_NI_IDRYG (pC/m3/s)' - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = XNI_IDRYG(:,:,:) * 1.E12 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - ! - YRECFM='NI_SDRYG' - YCOMMENT='X_Y_Z_NI_SDRYG (pC/m3/s)' - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = XNI_SDRYG(:,:,:) * 1.E12 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - ! - YRECFM='INDUC_CG' - YCOMMENT='X_Y_Z_INDUC_CG (pC/m3/s)' - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = XIND_RATE(:,:,:) * 1.E12 - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK3D) ! - YRECFM='TRIG_IC' - YCOMMENT='X_Y_Z_FLASH_MAP_TRIG_IC (no unit)' - ILENCH=LEN(YCOMMENT) - ZWORK2D(:,:) = FLOAT(NMAP_TRIG_IC(:,:)) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - ! - YRECFM='IMPACT_CG' - YCOMMENT='X_Y_Z_FLASH_MAP_IMPACT_CG (no unit)' - ILENCH=LEN(YCOMMENT) - ZWORK2D(:,:) = FLOAT(NMAP_IMPACT_CG(:,:)) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IAGGS',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'pC m-3 s-1' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XNI_IAGGS*1.E12) ! - YRECFM='AREA_CG' - YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_CG (no unit)' - ILENCH=LEN(YCOMMENT) - ZWORK2D(:,:) = FLOAT(NMAP_2DAREA_CG(:,:)) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IDRYG',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'pC m-3 s-1' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XNI_IDRYG*1.E12) ! - YRECFM='AREA_IC' - YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_IC (no unit)' - ILENCH=LEN(YCOMMENT) - ZWORK2D(:,:) = FLOAT(NMAP_2DAREA_IC(:,:)) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('NI_SDRYG',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'pC m-3 s-1' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XNI_SDRYG*1.E12) ! - YRECFM='FLASH_3DCG' - YCOMMENT='X_Y_Z_FLASH_MAP_3DCG (no unit)' - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = FLOAT(NMAP_3DCG(:,:,:)) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('INDUC_CG',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'pC m-3 s-1' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XIND_RATE*1.E12) ! - YRECFM='FLASH_3DIC' - YCOMMENT='X_Y_Z_FLASH_MAP_3DIC (no unit)' - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = FLOAT(NMAP_3DIC(:,:,:)) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'TRIG_IC', CLUOUT,IRESP,NMAP_TRIG_IC) + CALL IO_WRITE_FIELD(TPFILE,'IMPACT_CG', CLUOUT,IRESP,NMAP_IMPACT_CG) + CALL IO_WRITE_FIELD(TPFILE,'AREA_CG', CLUOUT,IRESP,NMAP_2DAREA_CG) + CALL IO_WRITE_FIELD(TPFILE,'AREA_IC', CLUOUT,IRESP,NMAP_2DAREA_IC) + CALL IO_WRITE_FIELD(TPFILE,'FLASH_3DCG',CLUOUT,IRESP,NMAP_3DCG) + CALL IO_WRITE_FIELD(TPFILE,'FLASH_3DIC',CLUOUT,IRESP,NMAP_3DIC) ! IF (LLNOX_EXPLICIT) THEN - YRECFM='LINOX' - WRITE(YCOMMENT,'(A6,A3,I3.3,A10)')'X_Y_Z_','SVT',JSV,' (mol/mol)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,NSV_LNOXEND),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LINOX' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'mol mol-1' + TZFIELD%CDIR = 'XY' + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,NSV_LNOXEND)) JSA=JSA+1 END IF END IF ! lagrangian variables - DO JSV = NSV_LGBEG,NSV_LGEND - YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (M)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - JSA=JSA+1 - END DO + IF (NSV_LGEND>=NSV_LGBEG) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = NSV_LGBEG,NSV_LGEND + TZFIELD%CMNHNAME = TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + JSA=JSA+1 + END DO + END IF ! Passive scalar variables IF (LPASPOL) THEN TZFIELD%CSTDNAME = '' @@ -956,24 +937,36 @@ IF (NSV >=1) THEN #ifdef MNH_FOREFIRE ! ForeFire scalar variables IF ( LFOREFIRE ) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_FFBEG,NSV_FFEND - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) + WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'SVT',JSV + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) JSA=JSA+1 END DO END IF #endif ! Conditional sampling variables IF (LCONDSAMP) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_CSBEG,NSV_CSEND - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) + WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'SVT',JSV + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) JSA=JSA+1 END DO ! @@ -1058,13 +1051,19 @@ IF (NSV >=1) THEN ENDIF ENDIF ELSE IF (LCH_CONV_LINOX) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_LNOXBEG,NSV_LNOXEND - YRECFM='LINOXT' - WRITE(YCOMMENT,'(A6,A3,I3.3,A)') 'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1) + TZFIELD%CMNHNAME = 'LINOXT' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)') 'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + YCHNAMES(JSV-JSA)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) END DO ENDIF ! aerosol scalar variables @@ -1073,26 +1072,40 @@ IF (NSV >=1) THEN CALL CH_AER_REALLFI_n(XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),XSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) IF ((CPROGRAM == 'IDEAL ').AND.(NSV_AER > 1).AND.(IMI==1)) & CALL CH_AER_REALLFI_n(XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),XSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) - DO JSV = NSV_AERBEG,NSV_AEREND - YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF (JSV==NSV_AERBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERBEG ',JSV - IF (JSV==NSV_AEREND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AEREND ',JSV - YCHNAMES(JSV-JSA)= YRECFM(1:LEN_TRIM(YRECFM)-1) - END DO - IF (LDEPOS_AER(IMI)) THEN + IF (NSV_AEREND>=NSV_AERBEG) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = NSV_AERBEG,NSV_AEREND + TZFIELD%CMNHNAME = TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + IF (JSV==NSV_AERBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERBEG ',JSV + IF (JSV==NSV_AEREND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AEREND ',JSV + YCHNAMES(JSV-JSA)= TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) + END DO + END IF + IF (LDEPOS_AER(IMI)) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_AERDEPBEG,NSV_AERDEPEND - YRECFM=TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) IF (JSV==NSV_AERDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERDEPBEG ',JSV IF (JSV==NSV_AERDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERDEPEND ',JSV - YCHNAMES(JSV-JSA) = YRECFM(1:LEN_TRIM(YRECFM)-1) + YCHNAMES(JSV-JSA) = TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) END DO ! Loop on aq dust scalar variables ENDIF END IF @@ -1181,15 +1194,21 @@ IF (NSV >=1) THEN END DO ! Loop on dust scalar variables END IF IF (LDEPOS_DST(IMI)) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND - YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) IF (JSV==NSV_DSTDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTDEPBEG ',JSV IF (JSV==NSV_DSTDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTDEPEND ',JSV - YCHNAMES(JSV-JSA) = YRECFM(1:LEN_TRIM(YRECFM)-1) + YCHNAMES(JSV-JSA) = TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) END DO ! Loop on aq dust scalar variables ENDIF ENDIF @@ -1216,6 +1235,12 @@ IF (NSV >=1) THEN STOP END IF ALLOCATE(YSLTNAMES(NSV_SLTEND - NSV_SLTBEG+1)) + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 DO JMODE=1, NMODE_SLT DO JMOM = 1, IMOMENTS !Index from which names are picked @@ -1224,12 +1249,12 @@ IF (NSV >=1) THEN JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + JMOM & !Number of moments in this mode + (NSV_SLTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=YRECFM(1:LEN_TRIM(YRECFM)-1) + + TZFIELD%CMNHNAME = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) END DO ! Loop on moments END DO ! Loop on modes ! @@ -1240,27 +1265,39 @@ IF (NSV >=1) THEN ELSE ! We are in the subprogram MESONH, CSALTNAMES are allocated and are !in the same order as the variables in XSVT (i.e. following JPSALTORDER) + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_SLTBEG,NSV_SLTEND - YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) IF (JSV==NSV_SLTBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTBEG ',JSV IF (JSV==NSV_SLTEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTEND ',JSV - YCHNAMES(JSV-JSA) = YRECFM(1:LEN_TRIM(YRECFM)-1) + YCHNAMES(JSV-JSA) = TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) END DO ! Loop on sea salt scalar variables END IF - IF (LDEPOS_SLT(IMI)) THEN + IF (LDEPOS_SLT(IMI)) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_SLTDEPBEG,NSV_SLTDEPEND - YRECFM=TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) IF (JSV==NSV_SLTDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTDEPBEG ',JSV IF (JSV==NSV_SLTDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTDEPEND ',JSV - YCHNAMES(JSV-JSA) = YRECFM(1:LEN_TRIM(YRECFM)-1) + YCHNAMES(JSV-JSA) = TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) END DO ! Loop on aq dust scalar variables ENDIF ENDIF @@ -1302,13 +1339,21 @@ IF (NSV >=1) THEN END IF ! ! lagrangian variables - DO JSV = NSV_LGBEG,NSV_LGEND - YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (M)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO + IF (NSV_LGEND>=NSV_LGBEG) THEN + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + DO JSV = NSV_LGBEG,NSV_LGEND + TZFIELD%CMNHNAME = TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + END DO + END IF END IF ! ! @@ -1323,22 +1368,12 @@ CALL WRITE_LB_n(TPFILE) ! CALL IO_WRITE_FIELD(TPFILE,'DRYMASST',CLUOUT,IRESP,XDRYMASST) ! -YDIR='XY' -! IF( CTURB /= 'NONE' .AND. CTOM=='TM06') THEN - YRECFM='BL_DEPTH' - YCOMMENT='X_Y_BL_DEPTH (M)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XBL_DEPTH,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'BL_DEPTH',CLUOUT,IRESP,XBL_DEPTH) END IF ! IF( CTURB /= 'NONE' .AND. LRMC01) THEN - YRECFM='SBL_DEPTH' - YCOMMENT='X_Y_SBL_DEPTH (M)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSBL_DEPTH,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'SBL_DEPTH',CLUOUT,IRESP,XBL_DEPTH) END IF ! IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN @@ -1376,24 +1411,32 @@ IF (CPROGRAM == 'MESONH') THEN END IF END IF ! -! - YDIR='XY' ! ! IF (NSV >=1) THEN ! DO JSV = NSV_C2R2BEG,NSV_C2R2END ! IF (JSV == NSV_C2R2BEG ) THEN -! YRECFM='RSVS_CLD1' -! YCOMMENT='X_Y_Z_RHS_CLD' -! ILENCH=LEN(YCOMMENT) -! CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & -! YCOMMENT,IRESP) +! TZFIELD%CMNHNAME = 'RSVS_CLD1' +! TZFIELD%CSTDNAME = '' +! TZFIELD%CLONGNAME = 'MesoNH: RSVS_CLD1' +! TZFIELD%CUNITS = '1' +! TZFIELD%CDIR = 'XY' +! TZFIELD%CCOMMENT = 'X_Y_Z_RHS_CLD' +! TZFIELD%NGRID = 1 +! TZFIELD%NTYPE = TYPEREAL +! TZFIELD%NDIMS = 3 +! CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XRRS_CLD(:,:,:,IRR)) ! END IF ! IF (JSV == NSV_C2R2END ) THEN -! YRECFM='RSVS_CLD2' -! YCOMMENT='X_Y_Z_RHS_CLD' -! ILENCH=LEN(YCOMMENT) -! CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & -! YCOMMENT,IRESP) +! TZFIELD%CMNHNAME = 'RSVS_CLD2' +! TZFIELD%CSTDNAME = '' +! TZFIELD%CLONGNAME = 'MesoNH: RSVS_CLD2' +! TZFIELD%CUNITS = '1' +! TZFIELD%CDIR = 'XY' +! TZFIELD%CCOMMENT = 'X_Y_Z_RHS_CLD' +! TZFIELD%NGRID = 1 +! TZFIELD%NTYPE = TYPEREAL +! TZFIELD%NDIMS = 3 +! CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XRRS_CLD(:,:,:,IRR)) ! END IF ! END DO ! END IF @@ -1560,8 +1603,6 @@ END IF !* 1.10 Diagnostic variables related to the precipitations ! IF (CPROGRAM /= 'IDEAL') THEN - YDIR='XY' -! IF (ASSOCIATED(XINPRC)) THEN IF (SIZE(XINPRC) /= 0 ) THEN CALL FIND_FIELD_ID_FROM_MNHNAME('INPRC',IID,IRESP) @@ -1660,7 +1701,7 @@ IF (CPROGRAM /= 'IDEAL') THEN TZFIELD%CMNHNAME = 'ACPRT' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'MesoNH: ACPRT' - TZFIELD%CUNITS = 'mm ' + TZFIELD%CUNITS = 'mm' TZFIELD%CDIR = 'XY' TZFIELD%CCOMMENT = 'X_Y_Total ACcumulated PRecipitation rate' TZFIELD%NGRID = 1 @@ -1678,102 +1719,141 @@ END IF ! IF (LFORCING) THEN ! - YDIR='--' -! - YRECFM='FRC' - YCOMMENT=' ' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NFRC,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'FRC' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: FRC' + TZFIELD%CUNITS = '1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Number of forcing profiles' + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEINT + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,NFRC) ! DO JT=1,NFRC ! WRITE (YFRC,'(I3.3)') JT ! + TZFIELD%CMNHNAME = 'DTFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'seconds since YYYY-MM-DD HH:MM:SS.S' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Date of forcing profile '//YFRC + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEDATE + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,TDTFRC(JT)) ! - YRECFM='DTFRC'//YFRC - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTFRC(JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! -! - YRECFM='UFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! -! - YRECFM='VFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! -! - YRECFM='WFRC'//YFRC - YCOMMENT=' ' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! -! - YRECFM='THFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! -! - YRECFM='RVFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRVFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! + TZFIELD%CMNHNAME = 'UFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Zonal component of horizontal forcing wind' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XUFRC(:,JT)) ! - YRECFM='TENDTHFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTENDTHFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'VFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Meridian component of horizontal forcing wind' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XVFRC(:,JT)) ! + TZFIELD%CMNHNAME = 'WFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Vertical forcing wind' + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XWFRC(:,JT)) ! - YRECFM='TENDRVFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTENDRVFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'K' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Forcing potential temperature' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XTHFRC(:,JT)) ! + TZFIELD%CMNHNAME = 'RVFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Forcing vapor mixing ratio' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XRVFRC(:,JT)) ! - YRECFM='GXTHFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XGXTHFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'TENDTHFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'K s-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Large-scale potential temperature tendency for forcing' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XTENDTHFRC(:,JT)) ! + TZFIELD%CMNHNAME = 'TENDRVFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'kg kg-1 s-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Large-scale vapor mixing ratio tendency for forcing' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XTENDRVFRC(:,JT)) ! - YRECFM='GYTHFRC'//YFRC - YCOMMENT=' ' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XGYTHFRC(:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'GXTHFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'K m-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Large-scale potential temperature gradient for forcing' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XGXTHFRC(:,JT)) ! + TZFIELD%CMNHNAME = 'GYTHFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'K m-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Large-scale potential temperature gradient for forcing' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XGYTHFRC(:,JT)) ! - YRECFM='PGROUNDFRC'//YFRC - YCOMMENT=' ' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPGROUNDFRC(JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'PGROUNDFRC'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'Pa' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Forcing ground pressure' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPGROUNDFRC(JT)) ! END DO ! @@ -1783,107 +1863,123 @@ END IF ! ------------------------------------------------------------------------- IF ( L2D_ADV_FRC ) THEN ! - YDIR='--' -! - YRECFM='NADVFRC1' - YCOMMENT=' ' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NADVFRC,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'NADVFRC1' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: NADVFRC1' + TZFIELD%CUNITS = '1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Number of forcing profiles' + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEINT + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,NADVFRC) ! DO JT=1,NADVFRC ! WRITE (YFRC,'(I3.3)') JT ! - YRECFM='DTADV'//YFRC - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTADVFRC(JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DTADV'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'seconds since YYYY-MM-DD HH:MM:SS.S' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Date and time of the advecting forcing '//YFRC + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEDATE + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,TDTADVFRC(JT)) ! - YRECFM='TH_ADV'//YFRC - YCOMMENT='K/S' - IGRID=1 - ILENCH=LEN(YCOMMENT) -! - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDTHFRC(:,:,:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! - YRECFM='Q_ADV'//YFRC - YCOMMENT='KG/KG/S' - IGRID=1 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'TH_ADV'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'K s-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = '' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDTHFRC(:,:,:,JT)) ! - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRVFRC(:,:,:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'Q_ADV'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'kg kg-1 s-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = '' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDRVFRC(:,:,:,JT)) ! ENDDO ENDIF ! IF ( L2D_REL_FRC ) THEN ! - YDIR='--' -! - YRECFM='NRELFRC1' - YCOMMENT=' ' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NRELFRC,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'NRELFRC1' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: NRELFRC1' + TZFIELD%CUNITS = '1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Number of forcing profiles' + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEINT + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,NRELFRC) ! DO JT=1,NRELFRC ! WRITE (YFRC,'(I3.3)') JT ! - YRECFM='DTREL'//YFRC - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTRELFRC(JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DTREL'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'seconds since YYYY-MM-DD HH:MM:SS.S' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Date and time of the relaxation forcing '//YFRC + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEDATE + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,TDTRELFRC(JT)) ! - YRECFM='TH_REL'//YFRC - YCOMMENT='K' - IGRID=1 - ILENCH=LEN(YCOMMENT) -! - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHREL(:,:,:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) -! - YRECFM='Q_REL'//YFRC - YCOMMENT='KG/KG' - IGRID=1 - ILENCH=LEN(YCOMMENT) + TZFIELD%CMNHNAME = 'TH_REL'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'K' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = '' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XTHREL(:,:,:,JT)) ! - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRVREL(:,:,:,JT),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'Q_REL'//YFRC + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = '' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XRVREL(:,:,:,JT)) ! ENDDO ENDIF ! !* 1.11bis Eddy Fluxes variables ! Modif PP ! -YDIR='XY' IF ( LTH_FLX ) THEN - YRECFM='VT_FLX' - YCOMMENT='K M/S' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVTH_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='WT_FLX' - YCOMMENT='K M/S' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWTH_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP)! + CALL IO_WRITE_FIELD(TPFILE,'VT_FLX',CLUOUT,IRESP,XVTH_FLUX_M) + CALL IO_WRITE_FIELD(TPFILE,'WT_FLX',CLUOUT,IRESP,XWTH_FLUX_M) END IF ! -IF ( LUV_FLX) THEN - YRECFM='VU_FLX' - YCOMMENT='M/S**2' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVU_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP) -END IF +IF ( LUV_FLX) CALL IO_WRITE_FIELD(TPFILE,'VU_FLX',CLUOUT,IRESP,XVU_FLUX_M) ! !* 1.12 Balloon variables ! ! -IF (LFLYER) CALL WRITE_BALLOON_n(YFMFILE) +IF (LFLYER) CALL WRITE_BALLOON_n(TPFILE%CNAME) ! ! !* 1.13 Filtered variables for hurricane initialization @@ -1893,128 +1989,39 @@ IF ( CPROGRAM=='REAL ' ) THEN IF (LFILTERING) THEN ! IF (NDIAG_FILT >=0) THEN -! - YDIR='XY' ! ! i) Total fields (TOT=BASIC+TOTDIS) ! - YRECFM='UT15' - YCOMMENT='X_Y_Z_U component of Total wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUTOT,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='VT15' - YCOMMENT='X_Y_Z_V component of Total wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVTOT,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='TEMPTOT' - YCOMMENT='X_Y_Z_TOTal TEMPerature (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTTOT,IGRID,ILENCH,YCOMMENT,IRESP) -! - IF (INDEX(CFILTERING,'P')/=0) THEN - YRECFM='PRESTOT' - YCOMMENT='X_Y_Z_TOTal PRESsure (Pa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPTOT,IGRID,ILENCH,YCOMMENT,IRESP) - ENDIF - IF (INDEX(CFILTERING,'Q')/=0) THEN - YRECFM='HUMTOT' - YCOMMENT='X_Y_Z_TOTal specific HUMidity (kg/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XQTOT,IGRID,ILENCH,YCOMMENT,IRESP) - ENDIF + CALL IO_WRITE_FIELD(TPFILE,'UT15', CLUOUT,IRESP,XUTOT) + CALL IO_WRITE_FIELD(TPFILE,'VT15', CLUOUT,IRESP,XVTOT) + CALL IO_WRITE_FIELD(TPFILE,'TEMPTOT',CLUOUT,IRESP,XTTOT) + IF (INDEX(CFILTERING,'P')/=0) CALL IO_WRITE_FIELD(TPFILE,'PRESTOT',CLUOUT,IRESP,XPTOT) + IF (INDEX(CFILTERING,'Q')/=0) CALL IO_WRITE_FIELD(TPFILE,'HUMTOT', CLUOUT,IRESP,XQTOT) ! ! ii) Environmental fields (ENV=TOT-VORDIS) ! - YRECFM='UT16' - YCOMMENT='X_Y_Z_U component of Environmental wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUENV,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='VT16' - YCOMMENT='X_Y_Z_V component of Environmental wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVENV,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='TEMPENV' - YCOMMENT='X_Y_Z_ENVironmental TEMPerature (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTENV,IGRID,ILENCH,YCOMMENT,IRESP) -! - IF (INDEX(CFILTERING,'P')/=0) THEN - YRECFM='PRESENV' - YCOMMENT='X_Y_Z_ENVironmental PRESsure (Pa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPENV,IGRID,ILENCH,YCOMMENT,IRESP) - ENDIF - IF (INDEX(CFILTERING,'Q')/=0) THEN - YRECFM='HUMENV' - YCOMMENT='X_Y_Z_ENVironmental specific HUMidity (kg/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XQENV,IGRID,ILENCH,YCOMMENT,IRESP) - ENDIF + CALL IO_WRITE_FIELD(TPFILE,'UT16', CLUOUT,IRESP,XUENV) + CALL IO_WRITE_FIELD(TPFILE,'VT16', CLUOUT,IRESP,XVENV) + CALL IO_WRITE_FIELD(TPFILE,'TEMPENV',CLUOUT,IRESP,XTENV) + IF (INDEX(CFILTERING,'P')/=0) CALL IO_WRITE_FIELD(TPFILE,'PRESENV',CLUOUT,IRESP,XPENV) + IF (INDEX(CFILTERING,'Q')/=0) CALL IO_WRITE_FIELD(TPFILE,'HUMENV', CLUOUT,IRESP,XQENV) ! END IF IF (NDIAG_FILT >=1) THEN ! ! iii) Basic (filtered) fields ! - YRECFM='UT17' - YCOMMENT='X_Y_Z_U component of Basic wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUBASIC,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='VT17' - YCOMMENT='X_Y_Z_V component of Basic wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVBASIC,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='TEMPBAS' - YCOMMENT='X_Y_Z_BASic TEMPerature (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTBASIC,IGRID,ILENCH,YCOMMENT,IRESP) -! - IF (INDEX(CFILTERING,'P')/=0) THEN - YRECFM='PRESBAS' - YCOMMENT='Pa' - YCOMMENT='X_Y_Z_BASic PRESsure (Pa)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPBASIC(:,:,1),IGRID,ILENCH,YCOMMENT,IRESP) - ENDIF -! - IF (INDEX(CFILTERING,'Q')/=0) THEN - YRECFM='HUMBAS' - YCOMMENT='X_Y_Z_BASic specific HUMidity (kg/kg)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XQBASIC,IGRID,ILENCH,YCOMMENT,IRESP) - ENDIF + CALL IO_WRITE_FIELD(TPFILE,'UT17', CLUOUT,IRESP,XUBASIC) + CALL IO_WRITE_FIELD(TPFILE,'VT17', CLUOUT,IRESP,XVBASIC) + CALL IO_WRITE_FIELD(TPFILE,'TEMPBAS',CLUOUT,IRESP,XTBASIC) + IF (INDEX(CFILTERING,'P')/=0) CALL IO_WRITE_FIELD(TPFILE,'PRESBAS',CLUOUT,IRESP,XPBASIC) + IF (INDEX(CFILTERING,'Q')/=0) CALL IO_WRITE_FIELD(TPFILE,'HUMBAS', CLUOUT,IRESP,XQBASIC) END IF IF (NDIAG_FILT >=2) THEN ! ! iv) Total disturbance tangential wind ! - YRECFM='VTDIS' - YCOMMENT='X_Y_Z_Total disturbance tangential wind (m/s)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVTDIS,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'VTDIS',CLUOUT,IRESP,XVTDIS) ! END IF ! @@ -2023,14 +2030,18 @@ IF ( CPROGRAM=='REAL ' ) THEN !* 1.14 Dummy variables in PREP_REAL_CASE ! IF (ALLOCATED(CDUMMY_2D)) THEN - YDIR='XY' + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + ! DO JSA=1,SIZE(XDUMMY_2D,3) - YRECFM=ADJUSTL(CDUMMY_2D(JSA)) - YCOMMENT='X_Y_Z_'//ADJUSTL(YRECFM) - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDUMMY_2D(:,:,JSA), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = ADJUSTL(CDUMMY_2D(JSA)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME) + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDUMMY_2D(:,:,JSA)) END DO END IF !