From 72ca57e663d7be40e8293b7b3967b08b08f957c7 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Mon, 13 Feb 2017 17:34:16 +0100 Subject: [PATCH] Philippe 13/02/2017: added fields to TFIELDLIST --- src/LIB/SURCOUCHE/src/mode_field.f90 | 990 +++++++++++++++++++++++++-- src/MNH/modd_advn.f90 | 8 +- src/MNH/modd_fieldn.f90 | 34 +- src/MNH/modd_lsfieldn.f90 | 26 +- src/MNH/modd_paramn.f90 | 6 +- src/MNH/modd_radiationsn.f90 | 72 +- src/MNH/modd_spawn.f90 | 8 + src/MNH/modd_turbn.f90 | 6 +- src/MNH/read_prc_fmfile.f90 | 5 + src/MNH/set_mask.f90 | 9 +- src/MNH/spawn_field2.f90 | 35 +- src/MNH/spawn_pressure2.f90 | 9 +- src/MNH/spawning.f90 | 8 + src/MNH/write_lfin.f90 | 393 ++--------- 14 files changed, 1114 insertions(+), 495 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index fb13c1846..5ae0f6218 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -7,12 +7,13 @@ MODULE MODE_FIELD USE MODD_CONF, ONLY : CPROGRAM USE MODD_IO_ll, ONLY : NVERB_DEBUG,NVERB_INFO,NVERB_WARNING,NVERB_ERROR,NVERB_FATAL USE MODD_PARAMETERS +USE MODD_PARAM_n, ONLY : CRAD USE MODD_TYPE_DATE USE MODE_MSG ! IMPLICIT NONE ! -INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 100 +INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 150 INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5 ! TYPE TFIELDPTR_C0D @@ -23,6 +24,10 @@ TYPE TFIELDPTR_L0D LOGICAL, POINTER :: DATA => NULL() END TYPE TFIELDPTR_L0D ! +TYPE TFIELDPTR_N2D + INTEGER,DIMENSION(:,:), POINTER :: DATA => NULL() +END TYPE TFIELDPTR_N2D +! TYPE TFIELDPTR_X0D REAL, POINTER :: DATA => NULL() END TYPE TFIELDPTR_X0D @@ -39,6 +44,10 @@ TYPE TFIELDPTR_X3D REAL,DIMENSION(:,:,:),POINTER :: DATA => NULL() END TYPE TFIELDPTR_X3D ! +TYPE TFIELDPTR_X4D + REAL,DIMENSION(:,:,:,:),POINTER :: DATA => NULL() +END TYPE TFIELDPTR_X4D +! TYPE TFIELDPTR_T0D TYPE(DATE_TIME), POINTER :: DATA => NULL() END TYPE TFIELDPTR_T0D @@ -59,10 +68,13 @@ TYPE TFIELDDATA ! TYPE(TFIELDPTR_L0D),DIMENSION(:),ALLOCATABLE :: TFIELD_L0D !Pointer to the scalar logical fields (one per nested mesh) ! + TYPE(TFIELDPTR_N2D),DIMENSION(:),ALLOCATABLE :: TFIELD_N2D !Pointer to the integer 2D fields (one per nested mesh) + ! TYPE(TFIELDPTR_X0D),DIMENSION(:),ALLOCATABLE :: TFIELD_X0D !Pointer to the scalar real fields (one per nested mesh) TYPE(TFIELDPTR_X1D),DIMENSION(:),ALLOCATABLE :: TFIELD_X1D !Pointer to the real 1D fields (one per nested mesh) TYPE(TFIELDPTR_X2D),DIMENSION(:),ALLOCATABLE :: TFIELD_X2D !Pointer to the real 2D fields (one per nested mesh) TYPE(TFIELDPTR_X3D),DIMENSION(:),ALLOCATABLE :: TFIELD_X3D !Pointer to the real 3D fields (one per nested mesh) + TYPE(TFIELDPTR_X4D),DIMENSION(:),ALLOCATABLE :: TFIELD_X4D !Pointer to the real 4D fields (one per nested mesh) ! TYPE(TFIELDPTR_T0D),DIMENSION(:),ALLOCATABLE :: TFIELD_T0D !Pointer to the scalar date/time fields (one per nested mesh) END TYPE TFIELDDATA @@ -332,7 +344,7 @@ TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 0 IDX = IDX+1 ! -END IF +END IF !.NOT.LCARTESIAN ! ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() @@ -574,7 +586,7 @@ TFIELDLIST(IDX)%NDIMS = 2 ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) IDX = IDX+1 ! -END IF +END IF !.NOT.LCARTESIAN ! ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() @@ -713,7 +725,7 @@ TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DTEXP' TFIELDLIST(IDX)%CUNITS = 'seconds since YYYY-MM-DD HH:MM:SS.S' TFIELDLIST(IDX)%CDIR = '--' -TFIELDLIST(IDX)%CCOMMENT = 'Time and date of experiment beginning ' +TFIELDLIST(IDX)%CCOMMENT = 'Time and date of experiment beginning' TFIELDLIST(IDX)%NGRID = 0 TFIELDLIST(IDX)%NTYPE = TYPEDATE TFIELDLIST(IDX)%NDIMS = 0 @@ -725,19 +737,116 @@ TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DTSEG' TFIELDLIST(IDX)%CUNITS = 'seconds since YYYY-MM-DD HH:MM:SS.S' TFIELDLIST(IDX)%CDIR = '--' -TFIELDLIST(IDX)%CCOMMENT = 'Time and date of segment beginning ' +TFIELDLIST(IDX)%CCOMMENT = 'Time and date of segment beginning' TFIELDLIST(IDX)%NGRID = 0 TFIELDLIST(IDX)%NTYPE = TYPEDATE TFIELDLIST(IDX)%NDIMS = 0 IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'L1D' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: L1D' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Logical for 1D model version' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'L2D' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: L2D' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Logical for 2D model version' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'PACK' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PACK' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Logical to compress 1D or 2D FM files' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'CARTESIAN' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: CARTESIAN' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Logical for cartesian geometry' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'LBOUSS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBOUSS' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Logical for Boussinesq approximation' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SURF' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SURF' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Kind of surface processes parameterization' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPECHAR +TFIELDLIST(IDX)%NDIMS = 0 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_C0D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'CPL_AROME' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: CPL_AROME' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Logical for AROME coupling file' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'COUPLING' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: COUPLING' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Logical for coupling file' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'UT' TFIELDLIST(IDX)%CSTDNAME = 'x_wind' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: UT' TFIELDLIST(IDX)%CUNITS = 'm s-1' TFIELDLIST(IDX)%CDIR = 'XY' -TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_U component of wind (m/s)' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_U component of wind' TFIELDLIST(IDX)%NGRID = 2 TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 3 @@ -750,7 +859,7 @@ TFIELDLIST(IDX)%CSTDNAME = 'y_wind' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VT' TFIELDLIST(IDX)%CUNITS = 'm s-1' TFIELDLIST(IDX)%CDIR = 'XY' -TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_V component of wind (m/s)' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_V component of wind' TFIELDLIST(IDX)%NGRID = 3 TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 3 @@ -763,7 +872,7 @@ TFIELDLIST(IDX)%CSTDNAME = 'upward_air_velocity' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: WT' TFIELDLIST(IDX)%CUNITS = 'm s-1' TFIELDLIST(IDX)%CDIR = 'XY' -TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_vertical wind (m/s)' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_vertical wind' TFIELDLIST(IDX)%NGRID = 4 TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 3 @@ -776,7 +885,243 @@ TFIELDLIST(IDX)%CSTDNAME = 'air_potential_temperature' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: THT' TFIELDLIST(IDX)%CUNITS = 'K' TFIELDLIST(IDX)%CDIR = 'XY' -TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_potential temperature (K)' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_potential 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 = 'TKET' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TKET' +TFIELDLIST(IDX)%CUNITS = 'm2 s-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Turbulent Kinetic Energy' +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 = 'TKEMS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TKEMS' +TFIELDLIST(IDX)%CUNITS = 'm2 s-3' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Turbulent Kinetic Energy adv source' +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 = 'PABST' +TFIELDLIST(IDX)%CSTDNAME = 'air_pressure' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PABST' +TFIELDLIST(IDX)%CUNITS = 'Pa' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_ABSolute 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 = 'RT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'Moist variables (rho Rn)' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 4 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X4D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RVT' +!TODO: check stdname +TFIELDLIST(IDX)%CSTDNAME = 'humidity_mixing_ratio' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RVT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Vapor mixing Ratio' +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 = 'RCT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RCT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Cloud mixing Ratio' +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 = 'RRT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RRT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Rain mixing Ratio' +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 = 'RIT' +!TODO: check stdname +TFIELDLIST(IDX)%CSTDNAME = 'cloud_ice_mixing_ratio' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RIT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Ice mixing Ratio' +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 = 'RST' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RST' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Snow mixing Ratio' +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 = 'RGT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RGT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Graupel mixing Ratio' +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 = 'RHT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RHT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Hail mixing Ratio' +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 = 'LSUM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LSUM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Large Scale U component' +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 = 'LSVM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LSVM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Large Scale V component' +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 = 'LSWM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LSWM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Large Scale vertical wind' +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 = 'LSTHM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LSTHM' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Large Scale potential 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 = 'LSRVM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LSRVM' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Large Scale Vapor Mixing Ratio' +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 = 'DRYMASST' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DRYMASST' +TFIELDLIST(IDX)%CUNITS = 'kg' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Total Dry Mass' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 0 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X0D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'WTHVMF' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: WTHVMF' +TFIELDLIST(IDX)%CUNITS = 'm K s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_WTHVMF' TFIELDLIST(IDX)%NGRID = 1 TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 3 @@ -859,7 +1204,7 @@ TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: WS_PRES' !TODO: units? TFIELDLIST(IDX)%CUNITS = '' TFIELDLIST(IDX)%CDIR = 'XY' -TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_US_PRES' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_WS_PRES' TFIELDLIST(IDX)%NGRID = 4 TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 3 @@ -880,7 +1225,272 @@ TFIELDLIST(IDX)%NDIMS = 3 ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! -END IF +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'Source of Moist variables' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 4 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X4D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RVS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RVS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RVS_CLD' +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 = 'RCS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RCS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RCS_CLD' +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 = 'RRS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RRS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RRS_CLD' +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 = 'RIS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RIS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RIS_CLD' +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 = 'RSS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RSS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RSS_CLD' +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 = 'RGS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RGS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RGS_CLD' +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 = 'RHS_CLD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RHS_CLD' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RHS_CLD' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +END IF ! CPROGRAM=MESONH +! +! +IF (CRAD /= 'NONE') THEN +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DTHRAD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DTHRAD' +TFIELDLIST(IDX)%CUNITS = 'K s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_RADiative heating/cooling rate' +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 = 'FLALWD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: FLALWD' +TFIELDLIST(IDX)%CUNITS = 'W m-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Downward Long Waves on FLAT surface' +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 = 'DIRFLASWD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DIRFLASWD' +TFIELDLIST(IDX)%CUNITS = 'W m-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_DIRect Downward Long Waves on FLAT surface' +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 = 'SCAFLASWD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SCAFLASWD' +TFIELDLIST(IDX)%CUNITS = 'W m-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_SCAttered Downward Long Waves on FLAT surface' +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 = 'DIRSRFSWD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DIRSRFSWD' +TFIELDLIST(IDX)%CUNITS = 'W m-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_DIRect Downward Long Waves' +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 = 'CLEARCOL_TM1' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: CLEARCOL_TM1' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'TRACE OF CLOUD' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_N2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'ZENITH' +TFIELDLIST(IDX)%CSTDNAME = 'zenith_angle' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: ZENITH' +TFIELDLIST(IDX)%CUNITS = 'rad' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_ZENITH' +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 = 'AZIM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: AZIM' +TFIELDLIST(IDX)%CUNITS = 'rad' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_AZIMuth' +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 = 'DIR_ALB' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DIR_ALB' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_DIRect ALBedo' +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 = 'SCA_ALB' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SCA_ALB' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_SCAttered ALBedo' +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 = 'EMIS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: EMIS' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_EMISsivity' +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 = 'TSRAD' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TSRAD' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_RADiative Surface Temperature' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +END IF !CRAD /= 'NONE' ! ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() @@ -890,7 +1500,7 @@ TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: ACPRR' !PW: TODO: CF-convention prefers 'kg m-2' TFIELDLIST(IDX)%CUNITS = 'm' TFIELDLIST(IDX)%CDIR = '' -TFIELDLIST(IDX)%CCOMMENT = 'X_Y_ACcumulated Precipitation Rain Rate (m)' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_ACcumulated Precipitation Rain Rate' TFIELDLIST(IDX)%NGRID = 1 TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 2 @@ -978,8 +1588,10 @@ END SUBROUTINE FIND_FIELD_ID_FROM_MNHNAME ! SUBROUTINE INI_FIELD_SCALARS ! +USE MODD_FIELD_n USE MODD_GRID_n USE MODD_TIME_n +USE MODD_PARAM_n ! INTEGER :: IID,IRESP ! @@ -1033,6 +1645,18 @@ IF (.NOT.ASSOCIATED(TDTDCONV)) THEN CALL FIND_FIELD_ID_FROM_MNHNAME('DTDCONV',IID,IRESP) TFIELDLIST(IID)%TFIELD_T0D(1)%DATA=>TDTDCONV END IF +IF (.NOT.ASSOCIATED(CSURF)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' CSURF was not associated') + ALLOCATE(CHARACTER(LEN=4) :: CSURF) + CALL FIND_FIELD_ID_FROM_MNHNAME('SURF',IID,IRESP) + TFIELDLIST(IID)%TFIELD_C0D(1)%DATA=>CSURF +END IF +IF (.NOT.ASSOCIATED(XDRYMASST)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' XDRYMASST was not associated') + ALLOCATE(XDRYMASST) + CALL FIND_FIELD_ID_FROM_MNHNAME('DRYMASST',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X0D(1)%DATA=>XDRYMASST +END IF ! END SUBROUTINE INI_FIELD_SCALARS ! @@ -1042,15 +1666,21 @@ SUBROUTINE FIELDLIST_GOTO_MODEL(KFROM, KTO) USE MODD_CONF, ONLY: LCARTESIAN USE MODD_REF ! +USE MODD_ADV_n +USE MODD_CONF_n USE MODD_FIELD_n USE MODD_GRID_n +USE MODD_LSFIELD_n +USE MODD_PARAM_n USE MODD_PRECIP_n +USE MODD_RADIATIONS_n USE MODD_TIME_n +USE MODD_TURB_n ! INTEGER, INTENT(IN) :: KFROM, KTO ! !LOGICAL,SAVE :: GFIRST_CALL=.TRUE. -INTEGER :: IID,IRESP +INTEGER :: IID,IID2,IRESP CHARACTER(LEN=64) :: YMSG ! WRITE(YMSG,'( I4,"->",I4 )') KFROM,KTO @@ -1097,46 +1727,141 @@ END IF ! ! MODD_FIELD_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('UT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XUT -CALL FIND_FIELD_ID_FROM_MNHNAME('VT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XVT -CALL FIND_FIELD_ID_FROM_MNHNAME('WT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XWT -CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XTHT +CALL FIND_FIELD_ID_FROM_MNHNAME('UT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XUT +CALL FIND_FIELD_ID_FROM_MNHNAME('VT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVT +CALL FIND_FIELD_ID_FROM_MNHNAME('WT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWT +CALL FIND_FIELD_ID_FROM_MNHNAME('THT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XTHT +CALL FIND_FIELD_ID_FROM_MNHNAME('TKET', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XTKET +CALL FIND_FIELD_ID_FROM_MNHNAME('PABST',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XPABST +CALL FIND_FIELD_ID_FROM_MNHNAME('RT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X4D(KFROM)%DATA => XRT +! +IF (CONF_MODEL(KFROM)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RVT) +END IF +IF (CONF_MODEL(KFROM)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RCT) +END IF +IF (CONF_MODEL(KFROM)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RRT) +END IF +IF (CONF_MODEL(KFROM)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RIT) +END IF +IF (CONF_MODEL(KFROM)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RST', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RST) +END IF +IF (CONF_MODEL(KFROM)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RGT) +END IF +IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RHT) +END IF +! IF (CPROGRAM == 'MESONH') THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRUS_PRES - CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRVS_PRES - CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRWS_PRES - CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRTHS_CLD + ! + CALL FIND_FIELD_ID_FROM_MNHNAME('RS_CLD',IID,IRESP); TFIELDLIST(IID)%TFIELD_X4D(KFROM)%DATA => XRRS_CLD + ! + IF (CONF_MODEL(KFROM)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVS_CLD',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RVT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCS_CLD',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RCT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRS_CLD',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RRT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIS_CLD',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RIT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RSS_CLD',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RST) + END IF + IF (CONF_MODEL(KFROM)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGS_CLD',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RGT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHS_CLD',IID,IRESP) + TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RHT) + END IF + ! + CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRUS_PRES + CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRVS_PRES + CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRWS_PRES + CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRTHS_CLD END IF ! +! MODD_LSFIELD_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('LSUM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSUM +CALL FIND_FIELD_ID_FROM_MNHNAME('LSVM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSVM +CALL FIND_FIELD_ID_FROM_MNHNAME('LSWM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSWM +CALL FIND_FIELD_ID_FROM_MNHNAME('LSTHM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSTHM +IF(LUSERV) CALL FIND_FIELD_ID_FROM_MNHNAME('LSRVM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSRVM +! +! MODD_ADV_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('TKEMS',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRTKEMS +! ! MODD_GRID_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('ZS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XZS -CALL FIND_FIELD_ID_FROM_MNHNAME('ZSMT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XZSMT -CALL FIND_FIELD_ID_FROM_MNHNAME('XHAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XXHAT -CALL FIND_FIELD_ID_FROM_MNHNAME('YHAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XYHAT -CALL FIND_FIELD_ID_FROM_MNHNAME('ZHAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XZHAT -CALL FIND_FIELD_ID_FROM_MNHNAME('DXHAT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XDXHAT -CALL FIND_FIELD_ID_FROM_MNHNAME('DYHAT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XDYHAT -CALL FIND_FIELD_ID_FROM_MNHNAME('DYHAT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XDYHAT -CALL FIND_FIELD_ID_FROM_MNHNAME('ALT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XZZ -CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSXW',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XDIRCOSXW -CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSYW',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XDIRCOSYW -CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSZW',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XDIRCOSZW -CALL FIND_FIELD_ID_FROM_MNHNAME('COSSLOPE',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XCOSSLOPE -CALL FIND_FIELD_ID_FROM_MNHNAME('SINSLOPE',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XSINSLOPE +CALL FIND_FIELD_ID_FROM_MNHNAME('ZS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XZS +CALL FIND_FIELD_ID_FROM_MNHNAME('ZSMT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XZSMT +CALL FIND_FIELD_ID_FROM_MNHNAME('XHAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA => XXHAT +CALL FIND_FIELD_ID_FROM_MNHNAME('YHAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA => XYHAT +CALL FIND_FIELD_ID_FROM_MNHNAME('ZHAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA => XZHAT +CALL FIND_FIELD_ID_FROM_MNHNAME('DXHAT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA => XDXHAT +CALL FIND_FIELD_ID_FROM_MNHNAME('DYHAT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA => XDYHAT +CALL FIND_FIELD_ID_FROM_MNHNAME('DYHAT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA => XDYHAT +CALL FIND_FIELD_ID_FROM_MNHNAME('ALT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XZZ +CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSXW',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XDIRCOSXW +CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSYW',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XDIRCOSYW +CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSZW',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XDIRCOSZW +CALL FIND_FIELD_ID_FROM_MNHNAME('COSSLOPE',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XCOSSLOPE +CALL FIND_FIELD_ID_FROM_MNHNAME('SINSLOPE',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XSINSLOPE IF (.NOT.LCARTESIAN) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('MAP', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XMAP - CALL FIND_FIELD_ID_FROM_MNHNAME('LAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XLAT - CALL FIND_FIELD_ID_FROM_MNHNAME('LON', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XLON + CALL FIND_FIELD_ID_FROM_MNHNAME('MAP', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XMAP + CALL FIND_FIELD_ID_FROM_MNHNAME('LAT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XLAT + CALL FIND_FIELD_ID_FROM_MNHNAME('LON', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XLON END IF ! ! MODD_TIME_n variables ! !***NONE*** ! +! MODD_PARAM_n variables +! +!***NONE*** +! +! MODD_TURB_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XWTHVMF +! +! MODD_RADIATIONS_n variables +! +IF (CRAD /= 'NONE') THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('DTHRAD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XDTHRAD + CALL FIND_FIELD_ID_FROM_MNHNAME('FLALWD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XFLALWD + CALL FIND_FIELD_ID_FROM_MNHNAME('DIRFLASWD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XDIRFLASWD + CALL FIND_FIELD_ID_FROM_MNHNAME('SCAFLASWD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XSCAFLASWD + CALL FIND_FIELD_ID_FROM_MNHNAME('DIRSRFSWD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XDIRSRFSWD + CALL FIND_FIELD_ID_FROM_MNHNAME('CLEARCOL_TM1',IID,IRESP); TFIELDLIST(IID)%TFIELD_N2D(KTO)%DATA => NCLEARCOL_TM1 + CALL FIND_FIELD_ID_FROM_MNHNAME('ZENITH', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XZENITH + CALL FIND_FIELD_ID_FROM_MNHNAME('AZIM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XAZIM + CALL FIND_FIELD_ID_FROM_MNHNAME('DIR_ALB', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XDIR_ALB + CALL FIND_FIELD_ID_FROM_MNHNAME('SCA_ALB', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XSCA_ALB + CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XEMIS + CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XTSRAD +END IF +! ! MODD_PRECIP_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XACPRR +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPRR ! ! ! @@ -1150,26 +1875,111 @@ IF( KFROM/=KTO) THEN ! ! MODD_FIELD_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('UT', IID,IRESP); XUT=> TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('VT', IID,IRESP); XVT=> TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('WT', IID,IRESP); XWT=> TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP); XTHT=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('UT', IID,IRESP); XUT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('VT', IID,IRESP); XVT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('WT', IID,IRESP); XWT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('THT', IID,IRESP); XTHT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('TKET', IID,IRESP); XTKET => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('PABST',IID,IRESP); XPABST => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('RT', IID,IRESP); XRT => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA +! +IF (CONF_MODEL(KTO)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RVT) +END IF +IF (CONF_MODEL(KTO)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RCT) +END IF +IF (CONF_MODEL(KTO)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RRT) +END IF +IF (CONF_MODEL(KTO)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RIT) +END IF +IF (CONF_MODEL(KTO)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RST',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RST) +END IF +IF (CONF_MODEL(KTO)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RGT) +END IF +IF (CONF_MODEL(KTO)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RHT) +END IF +! IF (CPROGRAM == 'MESONH') THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP);XRUS_PRES=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA - CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP);XRVS_PRES=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA - CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP);XRWS_PRES=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA - CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP);XRTHS_CLD=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + ! + CALL FIND_FIELD_ID_FROM_MNHNAME('RS_CLD',IID,IRESP); XRRS_CLD => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA + ! + IF (CONF_MODEL(KTO)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVS_CLD',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RVT) + END IF + IF (CONF_MODEL(KTO)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCS_CLD',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RCT) + END IF + IF (CONF_MODEL(KTO)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRS_CLD',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RRT) + END IF + IF (CONF_MODEL(KTO)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIS_CLD',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RIT) + END IF + IF (CONF_MODEL(KTO)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RSS_CLD',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RST) + END IF + IF (CONF_MODEL(KTO)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGS_CLD',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RGT) + END IF + IF (CONF_MODEL(KTO)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHS_CLD',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RHT) + END IF + ! + CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP); XRUS_PRES => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP); XRVS_PRES => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP); XRWS_PRES => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); XRTHS_CLD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA END IF ! +! MODD_LSFIELD_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('LSUM', IID,IRESP); XLSUM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LSVM', IID,IRESP); XLSVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LSWM', IID,IRESP); XLSWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LSTHM',IID,IRESP); XLSTHM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +IF(LUSERV) CALL FIND_FIELD_ID_FROM_MNHNAME('LSRVM',IID,IRESP); XLSRVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! +CALL FIND_FIELD_ID_FROM_MNHNAME('DRYMASST',IID,IRESP) +IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',& + 'TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) + ALLOCATE(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA) +END IF +XDRYMASST => TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA +! +! MODD_ADV_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('TKEMS',IID,IRESP); XRTKEMS=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! ! MODD_GRID_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('ZS', IID,IRESP); XZS=> TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('ZSMT', IID,IRESP); XZSMT=> TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('XHAT', IID,IRESP); XXHAT=> TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('YHAT', IID,IRESP); XYHAT=> TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('ZHAT', IID,IRESP); XZHAT=> TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('DXHAT',IID,IRESP); XDXHAT=>TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('DYHAT',IID,IRESP); XDYHAT=>TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('ZS', IID,IRESP); XZS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('ZSMT', IID,IRESP); XZSMT => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('XHAT', IID,IRESP); XXHAT => TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('YHAT', IID,IRESP); XYHAT => TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('ZHAT', IID,IRESP); XZHAT => TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DXHAT',IID,IRESP); XDXHAT => TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DYHAT',IID,IRESP); XDYHAT => TFIELDLIST(IID)%TFIELD_X1D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('SLEVE',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA)) THEN @@ -1177,7 +1987,7 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA) END IF -LSLEVE=>TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA +LSLEVE => TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('LEN1',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN @@ -1185,7 +1995,7 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA) END IF -XLEN1=>TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA +XLEN1 => TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('LEN2',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN @@ -1193,18 +2003,18 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA) END IF -XLEN2=>TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA -! -CALL FIND_FIELD_ID_FROM_MNHNAME('ALT', IID,IRESP); XZZ=> TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSXW',IID,IRESP); XDIRCOSXW=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSYW',IID,IRESP); XDIRCOSYW=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSZW',IID,IRESP); XDIRCOSZW=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('COSSLOPE',IID,IRESP); XCOSSLOPE=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('SINSLOPE',IID,IRESP); XSINSLOPE=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +XLEN2 => TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA +! +CALL FIND_FIELD_ID_FROM_MNHNAME('ALT', IID,IRESP); XZZ => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSXW',IID,IRESP); XDIRCOSXW => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSYW',IID,IRESP); XDIRCOSYW => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DIRCOSZW',IID,IRESP); XDIRCOSZW => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('COSSLOPE',IID,IRESP); XCOSSLOPE => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SINSLOPE',IID,IRESP); XSINSLOPE => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA IF (.NOT.LCARTESIAN) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('MAP', IID,IRESP); XMAP=> TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA - CALL FIND_FIELD_ID_FROM_MNHNAME('LAT', IID,IRESP); XLAT=> TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA - CALL FIND_FIELD_ID_FROM_MNHNAME('LON', IID,IRESP); XLON=> TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('MAP', IID,IRESP); XMAP => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('LAT', IID,IRESP); XLAT => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('LON', IID,IRESP); XLON => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA END IF ! ! MODD_TIME_n variables @@ -1215,7 +2025,7 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA) END IF -TDTMOD=>TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA +TDTMOD => TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('DTCUR',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN @@ -1223,7 +2033,7 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA) END IF -TDTCUR=>TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA +TDTCUR => TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('DTRAD_FULL',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN @@ -1231,7 +2041,7 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA) END IF -TDTRAD_FULL=>TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA +TDTRAD_FULL => TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('DTRAD_CLLY',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN @@ -1239,7 +2049,7 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA) END IF -TDTRAD_CLONLY=>TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA +TDTRAD_CLONLY => TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('DTDCONV',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN @@ -1247,12 +2057,44 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA)) THEN 'TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) ALLOCATE(TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA) END IF -TDTDCONV=>TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA +TDTDCONV => TFIELDLIST(IID)%TFIELD_T0D(KTO)%DATA ! -! MODD_PRECIP_n variables +! MODD_PARAM_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); XACPRR=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SURF',IID,IRESP) +IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_C0D(KTO)%DATA)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',& + 'TFIELDLIST(IID)%TFIELD_C0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) + ALLOCATE(CHARACTER(LEN=4) :: TFIELDLIST(IID)%TFIELD_C0D(KTO)%DATA) END IF +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 +! +! MODD_RADIATIONS_n variables +! +IF (CRAD /= 'NONE') THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('DTHRAD', IID,IRESP); XDTHRAD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('FLALWD', IID,IRESP); XFLALWD => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('DIRFLASWD', IID,IRESP); XDIRFLASWD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('SCAFLASWD', IID,IRESP); XSCAFLASWD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('DIRSRFSWD', IID,IRESP); XDIRSRFSWD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('CLEARCOL_TM1',IID,IRESP); NCLEARCOL_TM1 => TFIELDLIST(IID)%TFIELD_N2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('ZENITH', IID,IRESP); XZENITH => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('AZIM', IID,IRESP); XAZIM => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('DIR_ALB', IID,IRESP); XDIR_ALB => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('SCA_ALB', IID,IRESP); XSCA_ALB => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); XEMIS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD', IID,IRESP); XTSRAD => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +END IF +! +! MODD_PRECIP_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); XACPRR => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +! +END IF !KFROM/=KTO ! END SUBROUTINE FIELDLIST_GOTO_MODEL ! diff --git a/src/MNH/modd_advn.f90 b/src/MNH/modd_advn.f90 index 4ce244e32..1da2b2b21 100644 --- a/src/MNH/modd_advn.f90 +++ b/src/MNH/modd_advn.f90 @@ -66,7 +66,7 @@ TYPE ADV_t ! LOGICAL :: LCFL_WRIT ! Flag to write CFL fields in output file ! -REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL() ! Advection TKE source term +!REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL() ! Advection TKE source term END TYPE ADV_t TYPE(ADV_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: ADV_MODEL @@ -79,7 +79,7 @@ LOGICAL, POINTER :: LSPLIT_CFL=>NULL() LOGICAL, POINTER :: LSPLIT_WENO=>NULL() LOGICAL, POINTER :: LCFL_WRIT=>NULL() REAL, POINTER :: XSPLIT_CFL=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL() ! Advection TKE source term CONTAINS @@ -88,7 +88,7 @@ SUBROUTINE ADV_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays -ADV_MODEL(KFROM)%XRTKEMS=>XRTKEMS +!ADV_MODEL(KFROM)%XRTKEMS=>XRTKEMS !Done in FIELDLIST_GOTO_MODEL ! ! Current model is set to model KTO CUVW_ADV_SCHEME=>ADV_MODEL(KTO)%CUVW_ADV_SCHEME @@ -101,7 +101,7 @@ LSPLIT_CFL=>ADV_MODEL(KTO)%LSPLIT_CFL LSPLIT_WENO=>ADV_MODEL(KTO)%LSPLIT_WENO LCFL_WRIT=>ADV_MODEL(KTO)%LCFL_WRIT XSPLIT_CFL=>ADV_MODEL(KTO)%XSPLIT_CFL -XRTKEMS=>ADV_MODEL(KTO)%XRTKEMS +!XRTKEMS=>ADV_MODEL(KTO)%XRTKEMS !Done in FIELDLIST_GOTO_MODEL END SUBROUTINE ADV_GOTO_MODEL diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90 index 82a544c66..d7ea0abad 100644 --- a/src/MNH/modd_fieldn.f90 +++ b/src/MNH/modd_fieldn.f90 @@ -79,23 +79,23 @@ TYPE FIELD_t ! at time t REAL, DIMENSION(:,:,:), POINTER :: XSSPRO=>NULL() ! Sursat ! at time t - REAL, DIMENSION(:,:,:), POINTER :: XTKET=>NULL() ! Kinetic energy - ! at time t +! REAL, DIMENSION(:,:,:), POINTER :: XTKET=>NULL() ! Kinetic energy +! ! at time t REAL, DIMENSION(:,:,:), POINTER :: XRTKES=>NULL() ! Source of kinetic energy ! (rho e) - REAL, DIMENSION(:,:,:), POINTER :: XPABST=>NULL() ! absolute pressure at - ! time t - REAL, DIMENSION(:,:,:,:), POINTER :: XRT=>NULL() ! Moist variables (rho Rn) - ! at time t +! REAL, DIMENSION(:,:,:), POINTER :: XPABST=>NULL() ! absolute pressure at +! ! time t +! REAL, DIMENSION(:,:,:,:), POINTER :: XRT=>NULL() ! Moist variables (rho Rn) +! ! at time t REAL, DIMENSION(:,:,:,:), POINTER :: XRRS=>NULL() ! Source of Moist variables ! (rho Rn) - REAL, DIMENSION(:,:,:,:), POINTER :: XRRS_CLD=>NULL() ! Source of Moist variables +! REAL, DIMENSION(:,:,:,:), POINTER :: XRRS_CLD=>NULL() ! Source of Moist variables REAL, DIMENSION(:,:,:,:), POINTER :: XSVT=>NULL() ! Additionnal scalar ! variables at time t REAL, DIMENSION(:,:,:,:), POINTER :: XRSVS=>NULL() ! Source of addi. scalar ! variables (rho Sn.) REAL, DIMENSION(:,:,:,:), POINTER :: XRSVS_CLD=>NULL() ! Source of (rho Sn) from resolved_cloud - REAL :: XDRYMASST ! Mass of dry air Md +! REAL :: XDRYMASST ! Mass of dry air Md REAL :: XDRYMASSS ! LS sources of Md REAL, DIMENSION(:,:,:), POINTER :: XSRC=>NULL() ! turbulent flux <s'Rc'> REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL() ! =sqrt(<s's'>) for the @@ -167,12 +167,12 @@ FIELD_MODEL(KFROM)%XSUPSAT=>XSUPSAT FIELD_MODEL(KFROM)%XNACT=>XNACT FIELD_MODEL(KFROM)%XNPRO=>XNPRO FIELD_MODEL(KFROM)%XSSPRO=>XSSPRO -FIELD_MODEL(KFROM)%XTKET=>XTKET +!FIELD_MODEL(KFROM)%XTKET=>XTKET !Done in FIELDLIST_GOTO_MODEL FIELD_MODEL(KFROM)%XRTKES=>XRTKES -FIELD_MODEL(KFROM)%XPABST=>XPABST -FIELD_MODEL(KFROM)%XRT=>XRT +!FIELD_MODEL(KFROM)%XPABST=>XPABST !Done in FIELDLIST_GOTO_MODEL +!FIELD_MODEL(KFROM)%XRT=>XRT !Done in FIELDLIST_GOTO_MODEL FIELD_MODEL(KFROM)%XRRS=>XRRS -FIELD_MODEL(KFROM)%XRRS_CLD=>XRRS_CLD +!FIELD_MODEL(KFROM)%XRRS_CLD=>XRRS_CLD !Done in FIELDLIST_GOTO_MODEL FIELD_MODEL(KFROM)%XSVT=>XSVT FIELD_MODEL(KFROM)%XRSVS=>XRSVS FIELD_MODEL(KFROM)%XRSVS_CLD=>XRSVS_CLD @@ -202,16 +202,16 @@ XSUPSAT=>FIELD_MODEL(KTO)%XSUPSAT XNACT=>FIELD_MODEL(KTO)%XNACT XSSPRO=>FIELD_MODEL(KTO)%XSSPRO XNPRO=>FIELD_MODEL(KTO)%XNPRO -XTKET=>FIELD_MODEL(KTO)%XTKET +!XTKET=>FIELD_MODEL(KTO)%XTKET !Done in FIELDLIST_GOTO_MODEL XRTKES=>FIELD_MODEL(KTO)%XRTKES -XPABST=>FIELD_MODEL(KTO)%XPABST -XRT=>FIELD_MODEL(KTO)%XRT +!XPABST=>FIELD_MODEL(KTO)%XPABST !Done in FIELDLIST_GOTO_MODEL +!XRT=>FIELD_MODEL(KTO)%XRT !Done in FIELDLIST_GOTO_MODEL XRRS=>FIELD_MODEL(KTO)%XRRS -XRRS_CLD=>FIELD_MODEL(KTO)%XRRS_CLD +!XRRS_CLD=>FIELD_MODEL(KTO)%XRRS_CLD !Done in FIELDLIST_GOTO_MODEL XSVT=>FIELD_MODEL(KTO)%XSVT XRSVS=>FIELD_MODEL(KTO)%XRSVS XRSVS_CLD=>FIELD_MODEL(KTO)%XRSVS_CLD -XDRYMASST=>FIELD_MODEL(KTO)%XDRYMASST +!XDRYMASST=>FIELD_MODEL(KTO)%XDRYMASST !Done in FIELDLIST_GOTO_MODEL XDRYMASSS=>FIELD_MODEL(KTO)%XDRYMASSS XSRC=>FIELD_MODEL(KTO)%XSRC XSIGS=>FIELD_MODEL(KTO)%XSIGS diff --git a/src/MNH/modd_lsfieldn.f90 b/src/MNH/modd_lsfieldn.f90 index 29b872161..5a2d83e04 100644 --- a/src/MNH/modd_lsfieldn.f90 +++ b/src/MNH/modd_lsfieldn.f90 @@ -53,11 +53,11 @@ TYPE LSFIELD_t ! ! Large scale variables for variables which are relaxed at the model top ! - REAL, DIMENSION(:,:,:), POINTER :: XLSUM=>NULL(),XLSVM=>NULL(),XLSWM=>NULL() ! +! REAL, DIMENSION(:,:,:), POINTER :: XLSUM=>NULL(),XLSVM=>NULL(),XLSWM=>NULL() ! ! ! U,V,W for larger scales at time t-dt - REAL, DIMENSION(:,:,:), POINTER :: XLSTHM=>NULL() ! theta at +! REAL, DIMENSION(:,:,:), POINTER :: XLSTHM=>NULL() ! theta at ! ! time t-dt for larger scales - REAL, DIMENSION(:,:,:), POINTER :: XLSRVM=>NULL() ! Rv (mixing ratio for vapor) +! REAL, DIMENSION(:,:,:), POINTER :: XLSRVM=>NULL() ! Rv (mixing ratio for vapor) ! ! at time t-dt for larger scales REAL, DIMENSION(:,:,:), POINTER :: XLSUS=>NULL(),XLSVS=>NULL(),XLSWS=>NULL() ! Tendency of ! U,V,W for larger scales @@ -142,11 +142,11 @@ SUBROUTINE LSFIELD_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays -LSFIELD_MODEL(KFROM)%XLSUM=>XLSUM -LSFIELD_MODEL(KFROM)%XLSVM=>XLSVM -LSFIELD_MODEL(KFROM)%XLSWM=>XLSWM -LSFIELD_MODEL(KFROM)%XLSTHM=>XLSTHM -LSFIELD_MODEL(KFROM)%XLSRVM=>XLSRVM +!LSFIELD_MODEL(KFROM)%XLSUM=>XLSUM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLSVM=>XLSVM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLSWM=>XLSWM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLSTHM=>XLSTHM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLSRVM=>XLSRVM !Done in FIELDLIST_GOTO_MODEL LSFIELD_MODEL(KFROM)%XLSUS=>XLSUS LSFIELD_MODEL(KFROM)%XLSVS=>XLSVS LSFIELD_MODEL(KFROM)%XLSWS=>XLSWS @@ -198,11 +198,11 @@ LSFIELD_MODEL(KFROM)%NKLIN_LBYW=>NKLIN_LBYW LSFIELD_MODEL(KFROM)%NKLIN_LBYM=>NKLIN_LBYM ! ! Current model is set to model KTO -XLSUM=>LSFIELD_MODEL(KTO)%XLSUM -XLSVM=>LSFIELD_MODEL(KTO)%XLSVM -XLSWM=>LSFIELD_MODEL(KTO)%XLSWM -XLSTHM=>LSFIELD_MODEL(KTO)%XLSTHM -XLSRVM=>LSFIELD_MODEL(KTO)%XLSRVM +!XLSUM=>LSFIELD_MODEL(KTO)%XLSUM !Done in FIELDLIST_GOTO_MODEL +!XLSVM=>LSFIELD_MODEL(KTO)%XLSVM !Done in FIELDLIST_GOTO_MODEL +!XLSWM=>LSFIELD_MODEL(KTO)%XLSWM !Done in FIELDLIST_GOTO_MODEL +!XLSTHM=>LSFIELD_MODEL(KTO)%XLSTHM !Done in FIELDLIST_GOTO_MODEL +!XLSRVM=>LSFIELD_MODEL(KTO)%XLSRVM !Done in FIELDLIST_GOTO_MODEL XLSUS=>LSFIELD_MODEL(KTO)%XLSUS XLSVS=>LSFIELD_MODEL(KTO)%XLSVS XLSWS=>LSFIELD_MODEL(KTO)%XLSWS diff --git a/src/MNH/modd_paramn.f90 b/src/MNH/modd_paramn.f90 index cf3febaa9..fe4d6d0bc 100644 --- a/src/MNH/modd_paramn.f90 +++ b/src/MNH/modd_paramn.f90 @@ -60,8 +60,8 @@ TYPE PARAM_t ! 'NONE' if no parameterization CHARACTER (LEN=4) :: CSCONV ! Kind of shallow convection ! 'NONE' if no parameterization - CHARACTER (LEN=4) :: CSURF ! Kind of surface processes parameterization - ! 'NONE' if no parameterization +! CHARACTER (LEN=4) :: CSURF ! Kind of surface processes parameterization +! ! 'NONE' if no parameterization CHARACTER (LEN=4) :: CELEC ! Kind of atmospheric electricity scheme CHARACTER (LEN=4) :: CACTCCN ! Kind of CCN activation scheme ! @@ -91,7 +91,7 @@ CRAD=>PARAM_MODEL(KTO)%CRAD CCLOUD=>PARAM_MODEL(KTO)%CCLOUD CDCONV=>PARAM_MODEL(KTO)%CDCONV CSCONV=>PARAM_MODEL(KTO)%CSCONV -CSURF=>PARAM_MODEL(KTO)%CSURF +!CSURF=>PARAM_MODEL(KTO)%CSURF !Done in FIELDLIST_GOTO_MODEL CELEC=>PARAM_MODEL(KTO)%CELEC CACTCCN=>PARAM_MODEL(KTO)%CACTCCN diff --git a/src/MNH/modd_radiationsn.f90 b/src/MNH/modd_radiationsn.f90 index b2455d8a1..15686b6e1 100644 --- a/src/MNH/modd_radiationsn.f90 +++ b/src/MNH/modd_radiationsn.f90 @@ -64,7 +64,7 @@ TYPE RADIATIONS_t INTEGER :: NSWB ! number of SW bands INTEGER :: NSTATM ! index od the STAndard ATMosphere level just above ! the model top - INTEGER, DIMENSION(:,:), POINTER :: NCLEARCOL_TM1=>NULL() ! trace of cloud/clear columns at +! INTEGER, DIMENSION(:,:), POINTER :: NCLEARCOL_TM1=>NULL() ! trace of cloud/clear columns at ! the previous radiation time step ! (to be replaced by a logical array when fmread-writ could treat this kind of data) REAL :: XCCO2 ! CO2 mixing ratio @@ -84,34 +84,34 @@ TYPE RADIATIONS_t REAL, DIMENSION(:,:,:,:), POINTER :: XDST_WL=>NULL() ! Extinction by wavelength REAL, DIMENSION(:,:,:,:), POINTER :: XAER_CLIM=>NULL() ! aerosol optical thickness ! - REAL, DIMENSION(:,:,:), POINTER :: XDTHRAD=>NULL() ! radiative heating/cooling rate +! REAL, DIMENSION(:,:,:), POINTER :: XDTHRAD=>NULL() ! radiative heating/cooling rate REAL, DIMENSION(:,:), POINTER :: XSRFLWD=>NULL() ! downward surface LW radiations REAL, DIMENSION(:,:), POINTER :: XSCASRFSWD=>NULL() ! downward surface scaterred SW radiations ! - REAL, DIMENSION(:,:), POINTER :: XFLALWD=>NULL() ! downward LW radiations on flat surface +! REAL, DIMENSION(:,:), POINTER :: XFLALWD=>NULL() ! downward LW radiations on flat surface REAL, DIMENSION(:,:), POINTER :: XFLASWD=>NULL() ! downward SW radiations on flat surface ! INTEGER :: NSWB_MNH ! number of SW spectral bands REAL, DIMENSION(:), POINTER :: XSW_BANDS=>NULL() ! value of the wavelentgh ! ! in the middle of each SW spectral band ! - REAL, DIMENSION(:,:,:), POINTER :: XDIRFLASWD=>NULL() ! downward surface direct SW radiations +! REAL, DIMENSION(:,:,:), POINTER :: XDIRFLASWD=>NULL() ! downward surface direct SW radiations ! ! BEFORE slope and shadows effects ! ! for each spectral band - REAL, DIMENSION(:,:,:), POINTER :: XSCAFLASWD=>NULL() ! downward surface diffuse SW radiations +! REAL, DIMENSION(:,:,:), POINTER :: XSCAFLASWD=>NULL() ! downward surface diffuse SW radiations ! ! BEFORE slope and shadows effects ! ! for each spectral band - REAL, DIMENSION(:,:,:), POINTER :: XDIRSRFSWD=>NULL() ! downward surface direct SW radiations +! REAL, DIMENSION(:,:,:), POINTER :: XDIRSRFSWD=>NULL() ! downward surface direct SW radiations ! ! for each spectral band ! - REAL, DIMENSION(:,:,:), POINTER :: XDIR_ALB=>NULL() ! direct albedo for each spectral band - REAL, DIMENSION(:,:,:), POINTER :: XSCA_ALB=>NULL() ! scattered albedo for each spectral band - REAL, DIMENSION(:,:), POINTER :: XEMIS=>NULL() ! emissivity - REAL, DIMENSION(:,:), POINTER :: XTSRAD=>NULL() ! surface temperature +! REAL, DIMENSION(:,:,:), POINTER :: XDIR_ALB=>NULL() ! direct albedo for each spectral band +! REAL, DIMENSION(:,:,:), POINTER :: XSCA_ALB=>NULL() ! scattered albedo for each spectral band +! REAL, DIMENSION(:,:), POINTER :: XEMIS=>NULL() ! emissivity +! REAL, DIMENSION(:,:), POINTER :: XTSRAD=>NULL() ! surface temperature REAL, DIMENSION(:,:), POINTER :: XSEA=>NULL() ! sea fraction ! - REAL, DIMENSION(:,:), POINTER :: XZENITH=>NULL() ! zenithal angle (radian from the vertical) - REAL, DIMENSION(:,:), POINTER :: XAZIM=>NULL() ! azimuthal angle (radian from N, clockwise) +! REAL, DIMENSION(:,:), POINTER :: XZENITH=>NULL() ! zenithal angle (radian from the vertical) +! REAL, DIMENSION(:,:), POINTER :: XAZIM=>NULL() ! azimuthal angle (radian from N, clockwise) REAL, DIMENSION(:,:), POINTER :: XALBUV=>NULL() ! UV albedo REAL, DIMENSION(:,:,:), POINTER :: XSWU !SW_UP REAL, DIMENSION(:,:,:), POINTER :: XSWD !SW_DOWN @@ -179,7 +179,7 @@ SUBROUTINE RADIATIONS_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays -RADIATIONS_MODEL(KFROM)%NCLEARCOL_TM1=>NCLEARCOL_TM1 +!RADIATIONS_MODEL(KFROM)%NCLEARCOL_TM1=>NCLEARCOL_TM1 !Done in FIELDLIST_GOTO_MODEL RADIATIONS_MODEL(KFROM)%XSLOPANG=>XSLOPANG RADIATIONS_MODEL(KFROM)%XSLOPAZI=>XSLOPAZI RADIATIONS_MODEL(KFROM)%XSTATM=>XSTATM @@ -187,22 +187,22 @@ RADIATIONS_MODEL(KFROM)%XOZON=>XOZON RADIATIONS_MODEL(KFROM)%XAER=>XAER RADIATIONS_MODEL(KFROM)%XDST_WL=>XDST_WL RADIATIONS_MODEL(KFROM)%XAER_CLIM=>XAER_CLIM -RADIATIONS_MODEL(KFROM)%XDTHRAD=>XDTHRAD +!RADIATIONS_MODEL(KFROM)%XDTHRAD=>XDTHRAD !Done in FIELDLIST_GOTO_MODEL RADIATIONS_MODEL(KFROM)%XSRFLWD=>XSRFLWD RADIATIONS_MODEL(KFROM)%XSCASRFSWD=>XSCASRFSWD -RADIATIONS_MODEL(KFROM)%XFLALWD=>XFLALWD +!RADIATIONS_MODEL(KFROM)%XFLALWD=>XFLALWD !Done in FIELDLIST_GOTO_MODEL RADIATIONS_MODEL(KFROM)%XFLASWD=>XFLASWD RADIATIONS_MODEL(KFROM)%XSW_BANDS=>XSW_BANDS -RADIATIONS_MODEL(KFROM)%XDIRFLASWD=>XDIRFLASWD -RADIATIONS_MODEL(KFROM)%XSCAFLASWD=>XSCAFLASWD -RADIATIONS_MODEL(KFROM)%XDIRSRFSWD=>XDIRSRFSWD -RADIATIONS_MODEL(KFROM)%XDIR_ALB=>XDIR_ALB -RADIATIONS_MODEL(KFROM)%XSCA_ALB=>XSCA_ALB -RADIATIONS_MODEL(KFROM)%XEMIS=>XEMIS -RADIATIONS_MODEL(KFROM)%XTSRAD=>XTSRAD +!RADIATIONS_MODEL(KFROM)%XDIRFLASWD=>XDIRFLASWD !Done in FIELDLIST_GOTO_MODEL +!RADIATIONS_MODEL(KFROM)%XSCAFLASWD=>XSCAFLASWD !Done in FIELDLIST_GOTO_MODEL +!RADIATIONS_MODEL(KFROM)%XDIRSRFSWD=>XDIRSRFSWD !Done in FIELDLIST_GOTO_MODEL +!RADIATIONS_MODEL(KFROM)%XDIR_ALB=>XDIR_ALB !Done in FIELDLIST_GOTO_MODEL +!RADIATIONS_MODEL(KFROM)%XSCA_ALB=>XSCA_ALB !Done in FIELDLIST_GOTO_MODEL +!RADIATIONS_MODEL(KFROM)%XEMIS=>XEMIS !Done in FIELDLIST_GOTO_MODEL +!RADIATIONS_MODEL(KFROM)%XTSRAD=>XTSRAD !Done in FIELDLIST_GOTO_MODEL RADIATIONS_MODEL(KFROM)%XSEA=>XSEA -RADIATIONS_MODEL(KFROM)%XZENITH=>XZENITH -RADIATIONS_MODEL(KFROM)%XAZIM=>XAZIM +!RADIATIONS_MODEL(KFROM)%XZENITH=>XZENITH !Done in FIELDLIST_GOTO_MODEL +!RADIATIONS_MODEL(KFROM)%XAZIM=>XAZIM !Done in FIELDLIST_GOTO_MODEL RADIATIONS_MODEL(KFROM)%XALBUV=>XALBUV RADIATIONS_MODEL(KFROM)%XSWU=>XSWU RADIATIONS_MODEL(KFROM)%XSWD=>XSWD @@ -220,7 +220,7 @@ NRAD=>RADIATIONS_MODEL(KTO)%NRAD NAER=>RADIATIONS_MODEL(KTO)%NAER NSWB=>RADIATIONS_MODEL(KTO)%NSWB NSTATM=>RADIATIONS_MODEL(KTO)%NSTATM -NCLEARCOL_TM1=>RADIATIONS_MODEL(KTO)%NCLEARCOL_TM1 +!NCLEARCOL_TM1=>RADIATIONS_MODEL(KTO)%NCLEARCOL_TM1 !Done in FIELDLIST_GOTO_MODEL XCCO2=>RADIATIONS_MODEL(KTO)%XCCO2 XSINDEL=>RADIATIONS_MODEL(KTO)%XSINDEL XCOSDEL=>RADIATIONS_MODEL(KTO)%XCOSDEL @@ -235,23 +235,23 @@ XOZON=>RADIATIONS_MODEL(KTO)%XOZON XAER=>RADIATIONS_MODEL(KTO)%XAER XDST_WL=>RADIATIONS_MODEL(KTO)%XDST_WL XAER_CLIM=>RADIATIONS_MODEL(KTO)%XAER_CLIM -XDTHRAD=>RADIATIONS_MODEL(KTO)%XDTHRAD +!XDTHRAD=>RADIATIONS_MODEL(KTO)%XDTHRAD !Done in FIELDLIST_GOTO_MODEL XSRFLWD=>RADIATIONS_MODEL(KTO)%XSRFLWD XSCASRFSWD=>RADIATIONS_MODEL(KTO)%XSCASRFSWD -XFLALWD=>RADIATIONS_MODEL(KTO)%XFLALWD +!XFLALWD=>RADIATIONS_MODEL(KTO)%XFLALWD !Done in FIELDLIST_GOTO_MODEL XFLASWD=>RADIATIONS_MODEL(KTO)%XFLASWD NSWB_MNH=>RADIATIONS_MODEL(KTO)%NSWB_MNH XSW_BANDS=>RADIATIONS_MODEL(KTO)%XSW_BANDS -XDIRFLASWD=>RADIATIONS_MODEL(KTO)%XDIRFLASWD -XSCAFLASWD=>RADIATIONS_MODEL(KTO)%XSCAFLASWD -XDIRSRFSWD=>RADIATIONS_MODEL(KTO)%XDIRSRFSWD -XDIR_ALB=>RADIATIONS_MODEL(KTO)%XDIR_ALB -XSCA_ALB=>RADIATIONS_MODEL(KTO)%XSCA_ALB -XEMIS=>RADIATIONS_MODEL(KTO)%XEMIS -XTSRAD=>RADIATIONS_MODEL(KTO)%XTSRAD +!XDIRFLASWD=>RADIATIONS_MODEL(KTO)%XDIRFLASWD !Done in FIELDLIST_GOTO_MODEL +!XSCAFLASWD=>RADIATIONS_MODEL(KTO)%XSCAFLASWD !Done in FIELDLIST_GOTO_MODEL +!XDIRSRFSWD=>RADIATIONS_MODEL(KTO)%XDIRSRFSWD !Done in FIELDLIST_GOTO_MODEL +!XDIR_ALB=>RADIATIONS_MODEL(KTO)%XDIR_ALB !Done in FIELDLIST_GOTO_MODEL +!XSCA_ALB=>RADIATIONS_MODEL(KTO)%XSCA_ALB !Done in FIELDLIST_GOTO_MODEL +!XEMIS=>RADIATIONS_MODEL(KTO)%XEMIS !Done in FIELDLIST_GOTO_MODEL +!XTSRAD=>RADIATIONS_MODEL(KTO)%XTSRAD !Done in FIELDLIST_GOTO_MODEL XSEA=>RADIATIONS_MODEL(KTO)%XSEA -XZENITH=>RADIATIONS_MODEL(KTO)%XZENITH -XAZIM=>RADIATIONS_MODEL(KTO)%XAZIM +!XZENITH=>RADIATIONS_MODEL(KTO)%XZENITH !Done in FIELDLIST_GOTO_MODEL +!XAZIM=>RADIATIONS_MODEL(KTO)%XAZIM !Done in FIELDLIST_GOTO_MODEL XALBUV=>RADIATIONS_MODEL(KTO)%XALBUV XSWU=>RADIATIONS_MODEL(KTO)%XSWU XSWD=>RADIATIONS_MODEL(KTO)%XSWD diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90 index bd78da721..1304d91a9 100644 --- a/src/MNH/modd_spawn.f90 +++ b/src/MNH/modd_spawn.f90 @@ -77,9 +77,17 @@ REAL, SAVE,POINTER :: XLEN11 REAL, SAVE,POINTER :: XLEN21 REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRR1 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 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 ! END MODULE MODD_SPAWN diff --git a/src/MNH/modd_turbn.f90 b/src/MNH/modd_turbn.f90 index 2f811ad08..a6ef16758 100644 --- a/src/MNH/modd_turbn.f90 +++ b/src/MNH/modd_turbn.f90 @@ -83,7 +83,7 @@ TYPE TURB_t 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 :: XWTHVMF=>NULL()! Mass Flux vert. transport of buoyancy +! 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 REAL, DIMENSION(:,:,:), POINTER :: XTHP=>NULL() ! Thermal production of Kinetic energy @@ -126,7 +126,7 @@ INTEGER, INTENT(IN) :: KFROM, KTO ! TURB_MODEL(KFROM)%XBL_DEPTH=>XBL_DEPTH TURB_MODEL(KFROM)%XSBL_DEPTH=>XSBL_DEPTH -TURB_MODEL(KFROM)%XWTHVMF=>XWTHVMF +!TURB_MODEL(KFROM)%XWTHVMF=>XWTHVMF !Done in FIELDLIST_GOTO_MODEL TURB_MODEL(KFROM)%XDYP=>XDYP TURB_MODEL(KFROM)%XTHP=>XTHP TURB_MODEL(KFROM)%XTR=>XTR @@ -148,7 +148,7 @@ 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 -XWTHVMF=>TURB_MODEL(KTO)%XWTHVMF +!XWTHVMF=>TURB_MODEL(KTO)%XWTHVMF !Done in FIELDLIST_GOTO_MODEL VSIGQSAT=>TURB_MODEL(KTO)%VSIGQSAT XDYP=>TURB_MODEL(KTO)%XDYP XTHP=>TURB_MODEL(KTO)%XTHP diff --git a/src/MNH/read_prc_fmfile.f90 b/src/MNH/read_prc_fmfile.f90 index 0248ac647..1f4042266 100644 --- a/src/MNH/read_prc_fmfile.f90 +++ b/src/MNH/read_prc_fmfile.f90 @@ -121,6 +121,7 @@ USE MODD_PREP_REAL USE MODE_FMREAD USE MODE_FM USE MODE_IO_ll +USE MODE_FIELD ! USE MODI_TRUNC_FIELD USE MODI_DEALLOCATE_MODEL1 @@ -177,6 +178,7 @@ INTEGER :: IINFO_ll TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange ! INTEGER :: IIB, IIE, IJB, IJE +INTEGER :: IID !------------------------------------------------------------------------------- ! !* 1. INITIALIZATIONS @@ -203,10 +205,13 @@ NULLIFY(TZFIELDS_ll) ! IF (.NOT. LUSERV) THEN NRR=1 + IDX_RVT=1 LUSERV=.TRUE. DEALLOCATE(XRT) ALLOCATE(XRT(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3),NRR)) XRT(:,:,:,:) = 0. + CALL FIND_FIELD_ID_FROM_MNHNAME('RT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X4D(IMI)%DATA=>XRT + CALL FIND_FIELD_ID_FROM_MNHNAME('RVT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(IMI)%DATA=>XRT(:,:,:,IDX_RVT) END IF !------------------------------------------------------------------------------- ! diff --git a/src/MNH/set_mask.f90 b/src/MNH/set_mask.f90 index 20c141265..ed1a137e0 100644 --- a/src/MNH/set_mask.f90 +++ b/src/MNH/set_mask.f90 @@ -65,7 +65,7 @@ USE MODD_BUDGET USE MODE_ll USE MODE_FIELD, ONLY : TFIELDLIST, FIND_FIELD_ID_FROM_MNHNAME -USE MODD_FIELD_n, ONLY : FIELD_MODEL +!USE MODD_FIELD_n, ONLY : FIELD_MODEL ! ! IMPLICIT NONE @@ -100,8 +100,11 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('WT',IID,IRESP) LBU_MASK(IIB:IIE,IJB:IJE,1)=TFIELDLIST(IID)%TFIELD_X3D(NBUMOD)%DATA(IIB:IIE,IJB:IJE,10)>0. ! !2rd mask on rain mixing ratio at level k=2 -IF (NBUMASK>=2) & - LBU_MASK(IIB:IIE,IJB:IJE,2)=FIELD_MODEL(NBUMOD)%XRT(IIB:IIE,IJB:IJE,2,3)>1.E-8 +IF (NBUMASK>=2) THEN + !LBU_MASK(IIB:IIE,IJB:IJE,2)=FIELD_MODEL(NBUMOD)%XRT(IIB:IIE,IJB:IJE,2,3)>1.E-8 + CALL FIND_FIELD_ID_FROM_MNHNAME('RT',IID,IRESP) + LBU_MASK(IIB:IIE,IJB:IJE,2)=TFIELDLIST(IID)%TFIELD_X4D(NBUMOD)%DATA(IIB:IIE,IJB:IJE,2,3)>1.E-8 +END IF ! !============================================================================== ! diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90 index c5306792d..db5c54ff9 100644 --- a/src/MNH/spawn_field2.f90 +++ b/src/MNH/spawn_field2.f90 @@ -159,7 +159,6 @@ USE MODD_CONF_n, ONLY: CONF_MODEL USE MODD_LBC_n, ONLY: LBC_MODEL USE MODD_LUNIT_n, ONLY: LUNIT_MODEL USE MODD_FIELD_n, ONLY: FIELD_MODEL -USE MODD_LSFIELD_n,ONLY: LSFIELD_MODEL USE MODD_REF_n, ONLY: REF_MODEL ! USE MODD_NSV @@ -238,7 +237,7 @@ INTEGER :: IRESP ! Return codes in FM routines INTEGER :: JRR,JSV ! Loop index for moist and scalar variables INTEGER :: IRR ! Number of moist variables ! -REAL, DIMENSION(SIZE(FIELD_MODEL(1)%XRT,1),SIZE(FIELD_MODEL(1)%XRT,2),SIZE(FIELD_MODEL(1)%XRT,3)) :: ZHUT ! relative humidity +REAL, DIMENSION(SIZE(XRT1,1),SIZE(XRT1,2),SIZE(XRT1,3)) :: ZHUT ! relative humidity ! (model 1) !REAL, DIMENSION(SIZE(FIELD_MODEL(1)%XTHT,1),SIZE(FIELD_MODEL(1)%XTHT,2),SIZE(FIELD_MODEL(1)%XTHT,3)) :: ZTHVT! virtual pot. T !REAL, DIMENSION(:,:,:),ALLOCATABLE :: ZTHVT! virtual pot. T @@ -298,7 +297,7 @@ CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) ! !* 1.1 Secondary variables ! -CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,FIELD_MODEL(1)%XRT,XTHT1,FIELD_MODEL(1)%XPABST,ZTHVT,ZHUT) +CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,XRT1,XTHT1,XPABST1,ZTHVT,ZHUT) ! !* 1.2 Working arrays for reading in SON input file ! @@ -344,14 +343,14 @@ CALL MPPDB_CHECK3D(PVT,"SPAWN_FIELD2:PVT",PRECISION) !* 2.1.2 TKE variable ! IF (HTURB /= 'NONE') THEN - PTKET(:,:,:) = FIELD_MODEL(1)%XTKET(KXOR:KXEND,KYOR:KYEND,:) + PTKET(:,:,:) = XTKET1(KXOR:KXEND,KYOR:KYEND,:) ENDIF ! !* 2.1.3 moist variables ! IF (CONF_MODEL(1)%NRR /= 0) THEN - PRT (:,:,:,:) = FIELD_MODEL(1)%XRT (KXOR:KXEND,KYOR:KYEND,:,:) - PLSRVM(:,:,:) = FIELD_MODEL(1)%XRT (KXOR:KXEND,KYOR:KYEND,:,1) + PRT (:,:,:,:) = XRT1 (KXOR:KXEND,KYOR:KYEND,:,:) + PLSRVM(:,:,:) = XRT1 (KXOR:KXEND,KYOR:KYEND,:,1) PHUT (:,:,:) = ZHUT (KXOR:KXEND,KYOR:KYEND,:) ENDIF ! @@ -370,12 +369,12 @@ CALL MPPDB_CHECK3D(PVT,"SPAWN_FIELD2:PVT",PRECISION) ! !* 2.1.6 Large scale variables ! - PLSUM (:,:,:) = LSFIELD_MODEL(1)%XLSUM (KXOR:KXEND,KYOR:KYEND,:) - PLSVM (:,:,:) = LSFIELD_MODEL(1)%XLSVM (KXOR:KXEND,KYOR:KYEND,:) - PLSWM (:,:,:) = LSFIELD_MODEL(1)%XLSWM (KXOR:KXEND,KYOR:KYEND,:) - PLSTHM(:,:,:) = LSFIELD_MODEL(1)%XLSTHM (KXOR:KXEND,KYOR:KYEND,:) + PLSUM (:,:,:) = XLSUM1 (KXOR:KXEND,KYOR:KYEND,:) + PLSVM (:,:,:) = XLSVM1 (KXOR:KXEND,KYOR:KYEND,:) + PLSWM (:,:,:) = XLSWM1 (KXOR:KXEND,KYOR:KYEND,:) + PLSTHM(:,:,:) = XLSTHM1 (KXOR:KXEND,KYOR:KYEND,:) IF ( CONF_MODEL(1)%NRR > 0 ) THEN - PLSRVM (:,:,:) = LSFIELD_MODEL(1)%XLSRVM (KXOR:KXEND,KYOR:KYEND,:) + PLSRVM (:,:,:) = XLSRVM1 (KXOR:KXEND,KYOR:KYEND,:) END IF ! !* 2.1.7 Advective forcing fields for 2D (Modif MT) @@ -470,22 +469,22 @@ ELSE !$series of SET_LSFIELD_1WAY_ll !$***** 3D VARS CALL SET_LSFIELD_1WAY_ll(XUT1(:,:,JI),ZUT_C(:,:,JI),2) - CALL SET_LSFIELD_1WAY_ll(LSFIELD_MODEL(1)%XLSUM(:,:,JI), ZLSUM_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XLSUM1(:,:,JI), ZLSUM_C(:,:,JI),2) ! CALL SET_LSFIELD_1WAY_ll(XVT1(:,:,JI),ZVT_C(:,:,JI),2) - CALL SET_LSFIELD_1WAY_ll(LSFIELD_MODEL(1)%XLSVM(:,:,JI),ZLSVM_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XLSVM1(:,:,JI),ZLSVM_C(:,:,JI),2) ! CALL SET_LSFIELD_1WAY_ll(XWT1(:,:,JI),ZWT_C(:,:,JI),2) - CALL SET_LSFIELD_1WAY_ll(LSFIELD_MODEL(1)%XLSWM(:,:,JI),ZLSWM_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XLSWM1(:,:,JI),ZLSWM_C(:,:,JI),2) ! CALL SET_LSFIELD_1WAY_ll(ZTHVT(:,:,JI), ZTHVT_C(:,:,JI),2) - CALL SET_LSFIELD_1WAY_ll(LSFIELD_MODEL(1)%XLSTHM(:,:,JI),ZLSTHM_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XLSTHM1(:,:,JI),ZLSTHM_C(:,:,JI),2) !$conditionnal VARS IF (HTURB /= 'NONE') THEN - CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XTKET(:,:,JI), ZTKET_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XTKET1(:,:,JI), ZTKET_C(:,:,JI),2) ENDIF IF (CONF_MODEL(1)%NRR>=1) THEN - CALL SET_LSFIELD_1WAY_ll(LSFIELD_MODEL(1)%XLSRVM(:,:,JI), ZLSRVM_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XLSRVM1(:,:,JI), ZLSRVM_C(:,:,JI),2) CALL SET_LSFIELD_1WAY_ll(ZHUT(:,:,JI),ZHUT_C(:,:,JI),2) ENDIF IF (CONF_MODEL(1)%NRR>1 .AND. HTURB /='NONE') THEN @@ -514,7 +513,7 @@ ELSE CALL GOTO_MODEL(1) CALL GO_TOMODEL_ll(1, IINFO_ll) IF (CONF_MODEL(1)%NRR>=1) THEN - CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XRT(:,:,JI,KI),ZRT_C(:,:,JI,KI),2) + CALL SET_LSFIELD_1WAY_ll(XRT1(:,:,JI,KI),ZRT_C(:,:,JI,KI),2) ENDIF IF ( L2D_ADV_FRC ) THEN CALL SET_LSFIELD_1WAY_ll(ADVFRC_MODEL(1)%XDTHFRC(:,:,JI,KI),ZDTHFRC_C(:,:,JI,KI),2) diff --git a/src/MNH/spawn_pressure2.f90 b/src/MNH/spawn_pressure2.f90 index 6d657354b..23d25ac16 100644 --- a/src/MNH/spawn_pressure2.f90 +++ b/src/MNH/spawn_pressure2.f90 @@ -118,7 +118,6 @@ USE MODD_CST USE MODD_CONF_n, ONLY: CONF_MODEL USE MODD_LBC_n, ONLY: LBC_MODEL USE MODD_LUNIT_n,ONLY: LUNIT_MODEL -USE MODD_FIELD_n,ONLY: FIELD_MODEL USE MODD_REF_n, ONLY: REF_MODEL ! USE MODD_BIKHARDT_n @@ -211,7 +210,7 @@ IKE=IKU-JPVEXT ! IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN ! - PPABST (:,:,:) = FIELD_MODEL(1)%XPABST (KXOR:KXEND,KYOR:KYEND,:) + PPABST (:,:,:) = XPABST1 (KXOR:KXEND,KYOR:KYEND,:) ! CALL GOTO_MODEL(IMI) RETURN @@ -231,12 +230,12 @@ END IF ALLOCATE(ZSUMR(IIU1,IJU1,IKU)) ZSUMR(:,:,:) = 0. DO JRR=1,CONF_MODEL(1)%NRR - ZSUMR(:,:,:) = ZSUMR(:,:,:) + FIELD_MODEL(1)%XRT(:,:,:,JRR) + ZSUMR(:,:,:) = ZSUMR(:,:,:) + XRT1(:,:,:,JRR) END DO ! - ZEXN1(:,:,:)=(FIELD_MODEL(1)%XPABST(:,:,:)/XP00)**(XRD/XCPD) + ZEXN1(:,:,:)=(XPABST1(:,:,:)/XP00)**(XRD/XCPD) IF (CONF_MODEL(1)%LUSERV) THEN - ZTHV1(:,:,:)=XTHT1(:,:,:)*(1.+XRV/XRD*FIELD_MODEL(1)%XRT(:,:,:,1))/(1.+ZSUMR) + ZTHV1(:,:,:)=XTHT1(:,:,:)*(1.+XRV/XRD*XRT1(:,:,:,1))/(1.+ZSUMR) ELSE ZTHV1(:,:,:)=XTHT1(:,:,:) END IF diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90 index 9731fd1c3..34b3840db 100644 --- a/src/MNH/spawning.f90 +++ b/src/MNH/spawning.f90 @@ -276,10 +276,18 @@ XLEN11 => XLEN1 XLEN21 => XLEN2 XACPRR1 => XACPRR XTHT1 => XTHT +XTKET1 => XTKET +XPABST1 => XPABST +XRT1 => XRT XUT1 => XUT XVT1 => XVT XWT1 => XWT TDTCUR1 => TDTCUR +XLSUM1 => XLSUM +XLSVM1 => XLSVM +XLSWM1 => XLSWM +XLSTHM1 => XLSTHM +XLSRVM1 => XLSRVM ! END SUBROUTINE SET_POINTERS_TO_MODEL1 ! diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index e591ba977..45b8d12ca 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -446,59 +446,18 @@ CALL IO_WRITE_FIELD(TPFILE,'DTSEG',CLUOUT,IRESP,TDTSEG) ! !* 1.3 Configuration variables : ! -YDIR='--' -! -YRECFM='L1D' -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,L1D,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='L2D' -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,L2D,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='PACK' -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LPACK,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='CARTESIAN' -YCOMMENT='Logical for cartesian geometry' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LCARTESIAN,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='LBOUSS' -YCOMMENT='Logical for boussinesq' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LBOUSS,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='SURF' -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,CSURF,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='CPL_AROME' -YCOMMENT='Logical for arome coupling file' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LCPL_AROME,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='COUPLING' -YCOMMENT='Logical for coupling file' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LCOUPLING,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'L1D', CLUOUT,IRESP,L1D) +CALL IO_WRITE_FIELD(TPFILE,'L2D', CLUOUT,IRESP,L2D) +CALL IO_WRITE_FIELD(TPFILE,'PACK', CLUOUT,IRESP,LPACK) +CALL IO_WRITE_FIELD(TPFILE,'CARTESIAN',CLUOUT,IRESP,LCARTESIAN) +CALL IO_WRITE_FIELD(TPFILE,'LBOUSS', CLUOUT,IRESP,LBOUSS) +! +CALL IO_WRITE_FIELD(TPFILE,'SURF', CLUOUT,IRESP,CSURF) +CALL IO_WRITE_FIELD(TPFILE,'CPL_AROME',CLUOUT,IRESP,LCPL_AROME) +CALL IO_WRITE_FIELD(TPFILE,'COUPLING', CLUOUT,IRESP,LCOUPLING) ! !* 1.4 Prognostic variables : ! -YDIR='XY' ! !* 1.4.1 Time t: ! @@ -520,7 +479,8 @@ CALL IO_WRITE_FIELD(TPFILE,'WT',CLUOUT,IRESP,XWT) CALL IO_WRITE_FIELD(TPFILE,'THT',CLUOUT,IRESP,XTHT) ! !* 1.4.2 Time t-dt: - +YDIR='XY' +! IF ( (CUVW_ADV_SCHEME == 'CEN4TH') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN YRECFM='UM' YCOMMENT='X_Y_Z_U component of wind (m/s)' @@ -703,67 +663,28 @@ END IF ! ! IF (CTURB /= 'NONE') THEN - YRECFM='TKET' - YCOMMENT='X_Y_Z_Turbulent Kinetic Energy (M**2/S**2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTKET,IGRID,ILENCH,YCOMMENT,IRESP) -! - IF (CPROGRAM == 'MESONH') THEN - YRECFM='TKEMS' - YCOMMENT='X_Y_Z_Turbulent Kinetic Energy adv source (M**2/S**3)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRTKEMS,IGRID,ILENCH,YCOMMENT,IRESP) - END IF + CALL IO_WRITE_FIELD(TPFILE,'TKET',CLUOUT,IRESP,XTKET) + IF (CPROGRAM == 'MESONH') CALL IO_WRITE_FIELD(TPFILE,'TKEMS',CLUOUT,IRESP,XRTKEMS) END IF ! ! -! -YRECFM='PABST' -YCOMMENT='X_Y_Z_ABSolute Pressure (Pa)' -IGRID=1 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPABST,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'PABST',CLUOUT,IRESP,XPABST) ! IF (NRR >=1) THEN - IRR=0 - IGRID=1 ! individually in file - IF (LUSERV) THEN - IRR = IRR+1 - YRECFM= 'RVT' - YCOMMENT='X_Y_Z_Vapor mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF + IF (LUSERV) CALL IO_WRITE_FIELD(TPFILE,'RVT',CLUOUT,IRESP,XRT(:,:,:,IDX_RVT)) IF (LUSERC) THEN - IRR = IRR+1 - YRECFM= 'RCT' - YCOMMENT='X_Y_Z_Cloud mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RC min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll) + CALL IO_WRITE_FIELD(TPFILE,'RCT',CLUOUT,IRESP,XRT(:,:,:,IDX_RCT)) + WRITE (ILUOUT,*) IDX_RCT,' RC min-max ',MIN_ll(XRT(:,:,:,IDX_RCT),INFO_ll),MAX_ll(XRT(:,:,:,IDX_RCT),INFO_ll) END IF IF (LUSERR) THEN - IRR = IRR+1 - YRECFM= 'RRT' - YCOMMENT='X_Y_Z_Rain mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RR min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll) + CALL IO_WRITE_FIELD(TPFILE,'RRT',CLUOUT,IRESP,XRT(:,:,:,IDX_RRT)) + WRITE (ILUOUT,*) IDX_RRT,' RR min-max ',MIN_ll(XRT(:,:,:,IDX_RRT),INFO_ll),MAX_ll(XRT(:,:,:,IDX_RRT),INFO_ll) END IF IF (LUSERI) THEN - IRR = IRR+1 - YRECFM= 'RIT' - YCOMMENT='X_Y_Z_Ice mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RI min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll) + CALL IO_WRITE_FIELD(TPFILE,'RIT',CLUOUT,IRESP,XRT(:,:,:,IDX_RIT)) + WRITE (ILUOUT,*) IDX_RIT,' RI min-max ',MIN_ll(XRT(:,:,:,IDX_RIT),INFO_ll),MAX_ll(XRT(:,:,:,IDX_RIT),INFO_ll) IF ( CPROGRAM == 'MESONH' .AND. CCLOUD(1:3) == 'ICE') THEN + IGRID=1 YRECFM= 'CIT' YCOMMENT='X_Y_Z_Cloud Ice concentration (/M3)' ILENCH=LEN(YCOMMENT) @@ -772,31 +693,14 @@ IF (NRR >=1) THEN END IF END IF IF (LUSERS) THEN - IRR = IRR+1 - YRECFM= 'RST' - YCOMMENT='X_Y_Z_Snow mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RS min-max ',MINVAL(XRT(:,:,:,IRR)),MAXVAL(XRT(:,:,:,IRR)) + CALL IO_WRITE_FIELD(TPFILE,'RST',CLUOUT,IRESP,XRT(:,:,:,IDX_RST)) + WRITE (ILUOUT,*) IDX_RST,' RS min-max ',MINVAL(XRT(:,:,:,IDX_RST)),MAXVAL(XRT(:,:,:,IDX_RST)) END IF IF (LUSERG) THEN - IRR = IRR+1 - YRECFM= 'RGT' - YCOMMENT='X_Y_Z_Graupel mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RG min-max ',MINVAL(XRT(:,:,:,IRR)),MAXVAL(XRT(:,:,:,IRR)) - END IF - IF (LUSERH) THEN - IRR = IRR+1 - YRECFM= 'RHT' - YCOMMENT='X_Y_Z_Hail mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'RGT',CLUOUT,IRESP,XRT(:,:,:,IDX_RGT)) + WRITE (ILUOUT,*) IDX_RGT,' RG min-max ',MINVAL(XRT(:,:,:,IDX_RGT)),MAXVAL(XRT(:,:,:,IDX_RGT)) END IF + IF (LUSERH) CALL IO_WRITE_FIELD(TPFILE,'RHT',CLUOUT,IRESP,XRT(:,:,:,IDX_RHT)) END IF ! IF (NSV >=1) THEN @@ -1437,47 +1341,16 @@ END IF ! Valeur IMOMENTS END IF ! ! -YRECFM='LSUM' -YCOMMENT='X_Y_Z_Large Scale U component (M/S)' -IGRID=2 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSUM,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='LSVM' -YCOMMENT='X_Y_Z_Large Scale V component (M/S)' -IGRID=3 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSVM,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='LSWM' -YCOMMENT='X_Y_Z_Large Scale vertical wind (M/S)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSWM,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='LSTHM' -YCOMMENT='X_Y_Z_Large Scale potential Temperature (K)' -IGRID=1 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSTHM,IGRID,ILENCH,YCOMMENT,IRESP) -! -IF (LUSERV) THEN - YRECFM='LSRVM' - YCOMMENT='X_Y_Z_Large Scale Vapor Mixing Ratio (KG/KG)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSRVM,IGRID,ILENCH,YCOMMENT,IRESP) -END IF +CALL IO_WRITE_FIELD(TPFILE,'LSUM', CLUOUT,IRESP,XLSUM) +CALL IO_WRITE_FIELD(TPFILE,'LSVM', CLUOUT,IRESP,XLSVM) +CALL IO_WRITE_FIELD(TPFILE,'LSWM', CLUOUT,IRESP,XLSWM) +CALL IO_WRITE_FIELD(TPFILE,'LSTHM',CLUOUT,IRESP,XLSTHM) +IF (LUSERV) CALL IO_WRITE_FIELD(TPFILE,'LSRVM',CLUOUT,IRESP,XLSRVM) ! CALL WRITE_LB_n(YFMFILE) ! ! -YRECFM='DRYMASST' -YDIR='--' -YCOMMENT='Total Dry Mass (KG)' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRYMASST,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'DRYMASST',CLUOUT,IRESP,XDRYMASST) ! YDIR='XY' ! @@ -1498,11 +1371,7 @@ IF( CTURB /= 'NONE' .AND. LRMC01) THEN END IF ! IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN - YRECFM='WTHVMF' - YCOMMENT='X_Y_WTHVMF (mK/s)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWTHVMF,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'WTHVMF',CLUOUT,IRESP,XWTHVMF) END IF ! ! @@ -1527,7 +1396,6 @@ CALL IO_WRITE_FIELD(TPFILE,'RHOREFZ',CLUOUT,IRESP,XRHODREFZ) CALL IO_WRITE_FIELD(TPFILE,'THVREFZ',CLUOUT,IRESP,XTHVREFZ) CALL IO_WRITE_FIELD(TPFILE,'EXNTOP', CLUOUT,IRESP,XEXNTOP) ! -YDIR='--' ! !* 1.6 Tendencies ! @@ -1536,172 +1404,59 @@ IF (CPROGRAM == 'MESONH') THEN CALL IO_WRITE_FIELD(TPFILE,'VS_PRES',CLUOUT,IRESP,XRVS_PRES) CALL IO_WRITE_FIELD(TPFILE,'WS_PRES',CLUOUT,IRESP,XRWS_PRES) CALL IO_WRITE_FIELD(TPFILE,'THS_CLD',CLUOUT,IRESP,XRTHS_CLD) -! - YDIR='XY' ! IF (NRR >=1) THEN - IRR=0 - IGRID=1 - IF (LUSERV) THEN - IRR = IRR+1 - YRECFM= 'RVS_CLD' - YCOMMENT='X_Y_Z_RVS_CLD' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERC) THEN - IRR = IRR+1 - YRECFM= 'RCS_CLD' - YCOMMENT='X_Y_Z_RCS_CLD' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERR) THEN - IRR = IRR+1 - YRECFM= 'RRS_CLD' - YCOMMENT='X_Y_Z_RCS_CLD' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERI) THEN - IRR = IRR+1 - YRECFM= 'RIS_CLD' - YCOMMENT='X_Y_Z_RIS_CLD' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERS) THEN - IRR = IRR+1 - YRECFM= 'RSS_CLD' - YCOMMENT='X_Y_Z_RSS_CLD' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERG) THEN - IRR = IRR+1 - YRECFM= 'RGS_CLD' - YCOMMENT='X_Y_Z_RGS_CLD' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERH) THEN - IRR = IRR+1 - YRECFM= 'RHS_CLD' - YCOMMENT='X_Y_Z_RHS_CLD' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF + IF (LUSERV) CALL IO_WRITE_FIELD(TPFILE,'RVS_CLD',CLUOUT,IRESP,XRRS_CLD(:,:,:,IDX_RVT)) + IF (LUSERC) CALL IO_WRITE_FIELD(TPFILE,'RCS_CLD',CLUOUT,IRESP,XRRS_CLD(:,:,:,IDX_RCT)) + IF (LUSERR) CALL IO_WRITE_FIELD(TPFILE,'RRS_CLD',CLUOUT,IRESP,XRRS_CLD(:,:,:,IDX_RRT)) + IF (LUSERI) CALL IO_WRITE_FIELD(TPFILE,'RIS_CLD',CLUOUT,IRESP,XRRS_CLD(:,:,:,IDX_RIT)) + IF (LUSERS) CALL IO_WRITE_FIELD(TPFILE,'RSS_CLD',CLUOUT,IRESP,XRRS_CLD(:,:,:,IDX_RST)) + IF (LUSERG) CALL IO_WRITE_FIELD(TPFILE,'RGS_CLD',CLUOUT,IRESP,XRRS_CLD(:,:,:,IDX_RGT)) + IF (LUSERH) CALL IO_WRITE_FIELD(TPFILE,'RHS_CLD',CLUOUT,IRESP,XRRS_CLD(:,:,:,IDX_RHT)) END IF END IF ! -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) - 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) - END IF - END DO -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) +! 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) +! END IF +! END DO +! END IF ! !* 1.8 Diagnostic variables related to the radiations ! ! IF (CRAD /= 'NONE') THEN -! CALL IO_WRITE_FIELD(TPFILE,'DTRAD_FULL',CLUOUT,IRESP,TDTRAD_FULL) CALL IO_WRITE_FIELD(TPFILE,'DTRAD_CLLY',CLUOUT,IRESP,TDTRAD_CLONLY) ! - YDIR='XY' -! - YRECFM = 'DTHRAD' - YCOMMENT = 'X_Y_Z_RADiative heating/cooling rate (K/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDTHRAD,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'FLALWD' - YCOMMENT = 'X_Y_Downward Long Waves on FLAT surface (W/M2)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XFLALWD,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'DIRFLASWD' - YCOMMENT = 'X_Y_DIRect Downward Long Waves on FLAT surface (W/M2)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDIRFLASWD,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'SCAFLASWD' - YCOMMENT = 'X_Y_SCAttered Downward Long Waves on FLAT surface (W/M2)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSCAFLASWD,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'DIRSRFSWD' - YCOMMENT = 'X_Y_DIRect Downward Long Waves (W/M2)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDIRSRFSWD,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'CLEARCOL_TM1' - YCOMMENT = 'TRACE OF CLOUD' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NCLEARCOL_TM1,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'ZENITH' - YCOMMENT = 'X_Y_ZENITH (RAD)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XZENITH,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'AZIM' - YCOMMENT = 'X_Y_AZIMuth (RAD)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XAZIM,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'DIR_ALB' - YCOMMENT = 'X_Y_DIRect ALBedo (-)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDIR_ALB,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'SCA_ALB' - YCOMMENT = 'X_Y_SCAttered ALBedo (-)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSCA_ALB,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'EMIS' - YCOMMENT = 'X_Y_EMISsivity (-)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEMIS,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM = 'TSRAD' - YCOMMENT = 'X_Y_RADiative Surface Temperature (K)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTSRAD,IGRID,ILENCH,YCOMMENT,IRESP) -! + CALL IO_WRITE_FIELD(TPFILE,'DTHRAD', CLUOUT,IRESP,XDTHRAD) + CALL IO_WRITE_FIELD(TPFILE,'FLALWD', CLUOUT,IRESP,XFLALWD) + CALL IO_WRITE_FIELD(TPFILE,'DIRFLASWD', CLUOUT,IRESP,XDIRFLASWD) + CALL IO_WRITE_FIELD(TPFILE,'SCAFLASWD', CLUOUT,IRESP,XSCAFLASWD) + CALL IO_WRITE_FIELD(TPFILE,'DIRSRFSWD', CLUOUT,IRESP,XDIRSRFSWD) + CALL IO_WRITE_FIELD(TPFILE,'CLEARCOL_TM1',CLUOUT,IRESP,NCLEARCOL_TM1) + CALL IO_WRITE_FIELD(TPFILE,'ZENITH', CLUOUT,IRESP,XZENITH) + CALL IO_WRITE_FIELD(TPFILE,'AZIM', CLUOUT,IRESP,XAZIM) + CALL IO_WRITE_FIELD(TPFILE,'DIR_ALB', CLUOUT,IRESP,XDIR_ALB) + CALL IO_WRITE_FIELD(TPFILE,'SCA_ALB', CLUOUT,IRESP,XSCA_ALB) + CALL IO_WRITE_FIELD(TPFILE,'EMIS', CLUOUT,IRESP,XEMIS) + CALL IO_WRITE_FIELD(TPFILE,'TSRAD', CLUOUT,IRESP,XTSRAD) ENDIF ! IF (NRR > 1 .AND. CPROGRAM == 'MESONH') THEN -- GitLab