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