diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90
index d8294a83437cdc05ac1dc7874029d108a3f3bc4e..834db53558eec2041befa3a8d7e54f9f2d3a12cd 100644
--- a/src/MNH/goto_model_wrapper.f90
+++ b/src/MNH/goto_model_wrapper.f90
@@ -141,7 +141,7 @@ CALL DUMMY_GR_FIELD_GOTO_MODEL(KFROM, KTO)
 CALL DYN_GOTO_MODEL(KFROM, KTO)
 CALL DYNZD_GOTO_MODEL(KFROM,KTO)
 CALL FIELD_GOTO_MODEL(KFROM, KTO)
-CALL PAST_FIELD_GOTO_MODEL(KFROM, KTO)
+!CALL PAST_FIELD_GOTO_MODEL(KFROM, KTO)
 CALL GET_GOTO_MODEL(KFROM, KTO)
 !CALL GR_FIELD_GOTO_MODEL(KFROM, KTO)
 !$20140403 add grid_conf_proj_goto_model
diff --git a/src/MNH/modd_deep_convectionn.f90 b/src/MNH/modd_deep_convectionn.f90
index 5a9ec33c41e2029ebc6c934395ec6f0f4780b0ed..ed180329cab7ea380ba33da2d187dd3766868617 100644
--- a/src/MNH/modd_deep_convectionn.f90
+++ b/src/MNH/modd_deep_convectionn.f90
@@ -45,17 +45,17 @@ IMPLICIT NONE
 
 TYPE DEEP_CONVECTION_t
 !
-  INTEGER, DIMENSION(:,:),POINTER :: NCOUNTCONV=>NULL()! convective counter used
-                                                      ! to refresh the
-                                                      ! convective tendencies
-  REAL, DIMENSION(:,:,:) ,POINTER :: XDTHCONV=>NULL()  ! convective TH tendency (K/s)
-  REAL, DIMENSION(:,:,:) ,POINTER :: XDRVCONV=>NULL()  ! convective r_v tendency (1/s)
-  REAL, DIMENSION(:,:,:) ,POINTER :: XDRCCONV=>NULL()  ! convective r_c tendency (1/s)
-  REAL, DIMENSION(:,:,:) ,POINTER :: XDRICONV=>NULL()  ! convective r_i tendency (1/s)
-  REAL, DIMENSION(:,:)   ,POINTER :: XPRCONV=>NULL()   ! total precipitation rate (m/s)
-  REAL, DIMENSION(:,:)   ,POINTER :: XPRSCONV=>NULL()  ! solid precipitation rate (m/s)
-  REAL, DIMENSION(:,:)   ,POINTER :: XPACCONV=>NULL()  ! accumulated convective
-                                                      ! precipitation (m)
+!  INTEGER, DIMENSION(:,:),POINTER :: NCOUNTCONV=>NULL()! convective counter used
+!                                                      ! to refresh the
+!                                                      ! convective tendencies
+!  REAL, DIMENSION(:,:,:) ,POINTER :: XDTHCONV=>NULL()  ! convective TH tendency (K/s)
+!  REAL, DIMENSION(:,:,:) ,POINTER :: XDRVCONV=>NULL()  ! convective r_v tendency (1/s)
+!  REAL, DIMENSION(:,:,:) ,POINTER :: XDRCCONV=>NULL()  ! convective r_c tendency (1/s)
+!  REAL, DIMENSION(:,:,:) ,POINTER :: XDRICONV=>NULL()  ! convective r_i tendency (1/s)
+!  REAL, DIMENSION(:,:)   ,POINTER :: XPRCONV=>NULL()   ! total precipitation rate (m/s)
+!  REAL, DIMENSION(:,:)   ,POINTER :: XPRSCONV=>NULL()  ! solid precipitation rate (m/s)
+!  REAL, DIMENSION(:,:)   ,POINTER :: XPACCONV=>NULL()  ! accumulated convective
+!                                                      ! precipitation (m)
   REAL, DIMENSION(:,:,:,:),POINTER ::XDSVCONV=>NULL()  ! tracer tendencies (1/s)
 ! diagnostic variables
   REAL, DIMENSION(:,:,:) ,POINTER :: XUMFCONV=>NULL()  ! updraft mass flux (kg/s m2)
@@ -104,14 +104,14 @@ SUBROUTINE DEEP_CONVECTION_GOTO_MODEL(KFROM, KTO)
 INTEGER, INTENT(IN) :: KFROM, KTO
 !
 ! Save current state for allocated arrays
-DEEP_CONVECTION_MODEL(KFROM)%NCOUNTCONV=>NCOUNTCONV
-DEEP_CONVECTION_MODEL(KFROM)%XDTHCONV=>XDTHCONV
-DEEP_CONVECTION_MODEL(KFROM)%XDRVCONV=>XDRVCONV
-DEEP_CONVECTION_MODEL(KFROM)%XDRCCONV=>XDRCCONV
-DEEP_CONVECTION_MODEL(KFROM)%XDRICONV=>XDRICONV
-DEEP_CONVECTION_MODEL(KFROM)%XPRCONV=>XPRCONV
-DEEP_CONVECTION_MODEL(KFROM)%XPRSCONV=>XPRSCONV
-DEEP_CONVECTION_MODEL(KFROM)%XPACCONV=>XPACCONV
+!DEEP_CONVECTION_MODEL(KFROM)%NCOUNTCONV=>NCOUNTCONV !Done in FIELDLIST_GOTO_MODEL
+!DEEP_CONVECTION_MODEL(KFROM)%XDTHCONV=>XDTHCONV !Done in FIELDLIST_GOTO_MODEL
+!DEEP_CONVECTION_MODEL(KFROM)%XDRVCONV=>XDRVCONV !Done in FIELDLIST_GOTO_MODEL
+!DEEP_CONVECTION_MODEL(KFROM)%XDRCCONV=>XDRCCONV !Done in FIELDLIST_GOTO_MODEL
+!DEEP_CONVECTION_MODEL(KFROM)%XDRICONV=>XDRICONV !Done in FIELDLIST_GOTO_MODEL
+!DEEP_CONVECTION_MODEL(KFROM)%XPRCONV=>XPRCONV !Done in FIELDLIST_GOTO_MODEL
+!DEEP_CONVECTION_MODEL(KFROM)%XPRSCONV=>XPRSCONV !Done in FIELDLIST_GOTO_MODEL
+!DEEP_CONVECTION_MODEL(KFROM)%XPACCONV=>XPACCONV !Done in FIELDLIST_GOTO_MODEL
 DEEP_CONVECTION_MODEL(KFROM)%XDSVCONV=>XDSVCONV
 DEEP_CONVECTION_MODEL(KFROM)%XUMFCONV=>XUMFCONV
 DEEP_CONVECTION_MODEL(KFROM)%XDMFCONV=>XDMFCONV
@@ -127,14 +127,14 @@ DEEP_CONVECTION_MODEL(KFROM)%XIC_TOTAL_NUMBER=>XIC_TOTAL_NUMBER
 DEEP_CONVECTION_MODEL(KFROM)%XCG_TOTAL_NUMBER=>XCG_TOTAL_NUMBER
 !
 ! Current model is set to model KTO
-NCOUNTCONV=>DEEP_CONVECTION_MODEL(KTO)%NCOUNTCONV
-XDTHCONV=>DEEP_CONVECTION_MODEL(KTO)%XDTHCONV
-XDRVCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRVCONV
-XDRCCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRCCONV
-XDRICONV=>DEEP_CONVECTION_MODEL(KTO)%XDRICONV
-XPRCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRCONV
-XPRSCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRSCONV
-XPACCONV=>DEEP_CONVECTION_MODEL(KTO)%XPACCONV
+!NCOUNTCONV=>DEEP_CONVECTION_MODEL(KTO)%NCOUNTCONV !Done in FIELDLIST_GOTO_MODEL
+!XDTHCONV=>DEEP_CONVECTION_MODEL(KTO)%XDTHCONV !Done in FIELDLIST_GOTO_MODEL
+!XDRVCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRVCONV !Done in FIELDLIST_GOTO_MODEL
+!XDRCCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRCCONV !Done in FIELDLIST_GOTO_MODEL
+!XDRICONV=>DEEP_CONVECTION_MODEL(KTO)%XDRICONV !Done in FIELDLIST_GOTO_MODEL
+!XPRCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRCONV !Done in FIELDLIST_GOTO_MODEL
+!XPRSCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRSCONV !Done in FIELDLIST_GOTO_MODEL
+!XPACCONV=>DEEP_CONVECTION_MODEL(KTO)%XPACCONV !Done in FIELDLIST_GOTO_MODEL
 XDSVCONV=>DEEP_CONVECTION_MODEL(KTO)%XDSVCONV
 XUMFCONV=>DEEP_CONVECTION_MODEL(KTO)%XUMFCONV
 XDMFCONV=>DEEP_CONVECTION_MODEL(KTO)%XDMFCONV
diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90
index d7ea0abad99fb7552eeb97ed604529e98628e858..3f3d0a469d18df7c926920d77b4f74d7c2898bab 100644
--- a/src/MNH/modd_fieldn.f90
+++ b/src/MNH/modd_fieldn.f90
@@ -98,11 +98,11 @@ TYPE FIELD_t
 !  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
-                                                     ! Subgrid Condensation
-  REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL()   ! cloud fraction
-  REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL()    ! turbulent flux <s'Rc'>
-                                                     ! at t
+!  REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL()    ! turbulent flux <s'Rc'>
+!                                                     ! at t
+!  REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL()    ! =sqrt(<s's'>) for the
+!                                                     ! Subgrid Condensation
+!  REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL()   ! cloud fraction
   REAL, DIMENSION(:,:,:), POINTER :: XCIT=>NULL()     ! Pristine ice concentration
   REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL()      ! Theta at Previous time step 
   REAL, DIMENSION(:,:,:), POINTER :: XRCM=>NULL()      ! Cloud mixing ratio at Previous time step
@@ -134,9 +134,9 @@ REAL, DIMENSION(:,:,:,:), POINTER :: XRSVS_CLD=>NULL()
 REAL, POINTER :: XDRYMASST=>NULL()
 REAL, POINTER :: XDRYMASSS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSRC=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XCIT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL()
@@ -177,9 +177,9 @@ FIELD_MODEL(KFROM)%XSVT=>XSVT
 FIELD_MODEL(KFROM)%XRSVS=>XRSVS
 FIELD_MODEL(KFROM)%XRSVS_CLD=>XRSVS_CLD
 FIELD_MODEL(KFROM)%XSRC=>XSRC
-FIELD_MODEL(KFROM)%XSIGS=>XSIGS
-FIELD_MODEL(KFROM)%XCLDFR=>XCLDFR
-FIELD_MODEL(KFROM)%XSRCT=>XSRCT
+!FIELD_MODEL(KFROM)%XSRCT=>XSRCT !Done in FIELDLIST_GOTO_MODEL
+!FIELD_MODEL(KFROM)%XSIGS=>XSIGS !Done in FIELDLIST_GOTO_MODEL
+!FIELD_MODEL(KFROM)%XCLDFR=>XCLDFR !Done in FIELDLIST_GOTO_MODEL
 FIELD_MODEL(KFROM)%XCIT=>XCIT
 FIELD_MODEL(KFROM)%XTHM=>XTHM
 FIELD_MODEL(KFROM)%XPABSM=>XPABSM
@@ -214,9 +214,9 @@ XRSVS_CLD=>FIELD_MODEL(KTO)%XRSVS_CLD
 !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
-XCLDFR=>FIELD_MODEL(KTO)%XCLDFR
-XSRCT=>FIELD_MODEL(KTO)%XSRCT
+!XSRCT=>FIELD_MODEL(KTO)%XSRCT !Done in FIELDLIST_GOTO_MODEL
+!XSIGS=>FIELD_MODEL(KTO)%XSIGS !Done in FIELDLIST_GOTO_MODEL
+!XCLDFR=>FIELD_MODEL(KTO)%XCLDFR !Done in FIELDLIST_GOTO_MODEL
 XCIT=>FIELD_MODEL(KTO)%XCIT
 XTHM=>FIELD_MODEL(KTO)%XTHM
 XPABSM=>FIELD_MODEL(KTO)%XPABSM
diff --git a/src/MNH/modd_past_fieldn.f90 b/src/MNH/modd_past_fieldn.f90
index d87523da88d50d846e54703f90f0e433cae2ecdf..3fa92f5a8e9bd93f5b94044da288f3516debebff 100644
--- a/src/MNH/modd_past_fieldn.f90
+++ b/src/MNH/modd_past_fieldn.f90
@@ -47,16 +47,7 @@
 USE MODD_PARAMETERS, ONLY: JPMODELMAX
 IMPLICIT NONE
 
-TYPE FIELD_t
-  REAL, DIMENSION(:,:,:), POINTER :: XUM=>NULL(),XVM=>NULL(),XWM=>NULL()
-                                      ! U,V,W  at time t-dt
-  REAL, DIMENSION(:,:,:), POINTER :: XDUM=>NULL(),XDVM=>NULL(),XDWM=>NULL()
-!
-END TYPE FIELD_t
-
-TYPE(FIELD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: FIELD_MODEL
-
-REAL, DIMENSION(:,:,:), POINTER :: XUM=>NULL(),XVM=>NULL(),XWM=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XUM=>NULL(),XVM=>NULL(),XWM=>NULL() ! U,V,W  at time t-dt
 REAL, DIMENSION(:,:,:), POINTER :: XDUM=>NULL(),XDVM=>NULL(),XDWM=>NULL()
 
 CONTAINS
@@ -64,21 +55,21 @@ CONTAINS
 SUBROUTINE PAST_FIELD_GOTO_MODEL(KFROM, KTO)
 INTEGER, INTENT(IN) :: KFROM, KTO
 !
-! Save current state for allocated arrays
-FIELD_MODEL(KFROM)%XUM=>XUM
-FIELD_MODEL(KFROM)%XVM=>XVM
-FIELD_MODEL(KFROM)%XWM=>XWM
-FIELD_MODEL(KFROM)%XDUM=>XDUM
-FIELD_MODEL(KFROM)%XDVM=>XDVM
-FIELD_MODEL(KFROM)%XDWM=>XDWM
-!
-! Current model is set to model KTO
-XUM=>FIELD_MODEL(KTO)%XUM
-XVM=>FIELD_MODEL(KTO)%XVM
-XWM=>FIELD_MODEL(KTO)%XWM
-XDUM=>FIELD_MODEL(KTO)%XDUM
-XDVM=>FIELD_MODEL(KTO)%XDVM
-XDWM=>FIELD_MODEL(KTO)%XDWM
+! ! Save current state for allocated arrays
+! !FIELD_MODEL(KFROM)%XUM=>XUM !Done in FIELDLIST_GOTO_MODEL
+! !FIELD_MODEL(KFROM)%XVM=>XVM !Done in FIELDLIST_GOTO_MODEL
+! !FIELD_MODEL(KFROM)%XWM=>XWM !Done in FIELDLIST_GOTO_MODEL
+! !FIELD_MODEL(KFROM)%XDUM=>XDUM !Done in FIELDLIST_GOTO_MODEL
+! !FIELD_MODEL(KFROM)%XDVM=>XDVM !Done in FIELDLIST_GOTO_MODEL
+! !FIELD_MODEL(KFROM)%XDWM=>XDWM !Done in FIELDLIST_GOTO_MODEL
+! !
+! ! Current model is set to model KTO
+! !XUM=>FIELD_MODEL(KTO)%XUM !Done in FIELDLIST_GOTO_MODEL
+! !XVM=>FIELD_MODEL(KTO)%XVM !Done in FIELDLIST_GOTO_MODEL
+! !XWM=>FIELD_MODEL(KTO)%XWM !Done in FIELDLIST_GOTO_MODEL
+! !XDUM=>FIELD_MODEL(KTO)%XDUM !Done in FIELDLIST_GOTO_MODEL
+! !XDVM=>FIELD_MODEL(KTO)%XDVM !Done in FIELDLIST_GOTO_MODEL
+! !XDWM=>FIELD_MODEL(KTO)%XDWM !Done in FIELDLIST_GOTO_MODEL
 
 END SUBROUTINE PAST_FIELD_GOTO_MODEL
 
diff --git a/src/MNH/modd_precipn.f90 b/src/MNH/modd_precipn.f90
index 13572802d414b360acf7bf3a2b3e542d35d7c853..645ec2b2a3cb673285791931b759e1b8d535d259 100644
--- a/src/MNH/modd_precipn.f90
+++ b/src/MNH/modd_precipn.f90
@@ -50,14 +50,13 @@ TYPE PRECIP_t
   REAL, DIMENSION(:,:), POINTER :: XINPRC=>NULL(), XACPRC=>NULL(),  &
                    XINDEP=>NULL(), XACDEP=>NULL(),                  &
 !                   XINPRR=>NULL(), XACPRR=>NULL(),                  &
-                   XINPRR=>NULL(),                                  &
                    XINPRS=>NULL(), XACPRS=>NULL(), XINPRG=>NULL(),  &
                    XACPRG=>NULL(), XINPRH=>NULL(), XACPRH=>NULL()
                                          ! Instant and cumul of ground
                                          ! precipitation fields of Cloud,Rain, 
                                          !    Snow, Graupel and Hail
-  REAL, DIMENSION(:,:,:), POINTER :: XINPRR3D=>NULL(), & !Instant precip 3D
-                   XEVAP3D=>NULL()! Evap profile 3D
+!  REAL, DIMENSION(:,:,:), POINTER :: XINPRR3D=>NULL(), & !Instant precip 3D
+!                   XEVAP3D=>NULL()! Evap profile 3D
 !
 END TYPE PRECIP_t
 
@@ -84,9 +83,9 @@ PRECIP_MODEL(KFROM)%XINPRC=>XINPRC
 PRECIP_MODEL(KFROM)%XACPRC=>XACPRC
 PRECIP_MODEL(KFROM)%XINDEP=>XINDEP
 PRECIP_MODEL(KFROM)%XACDEP=>XACDEP
-PRECIP_MODEL(KFROM)%XINPRR=>XINPRR
-PRECIP_MODEL(KFROM)%XINPRR3D=>XINPRR3D
-PRECIP_MODEL(KFROM)%XEVAP3D=>XEVAP3D
+!PRECIP_MODEL(KFROM)%XINPRR=>XINPRR !Done in FIELDLIST_GOTO_MODEL
+!PRECIP_MODEL(KFROM)%XINPRR3D=>XINPRR3D !Done in FIELDLIST_GOTO_MODEL
+!PRECIP_MODEL(KFROM)%XEVAP3D=>XEVAP3D !Done in FIELDLIST_GOTO_MODEL
 !PRECIP_MODEL(KFROM)%XACPRR=>XACPRR !Done in FIELDLIST_GOTO_MODEL
 PRECIP_MODEL(KFROM)%XINPRS=>XINPRS
 PRECIP_MODEL(KFROM)%XACPRS=>XACPRS
@@ -100,9 +99,9 @@ XINPRC=>PRECIP_MODEL(KTO)%XINPRC
 XACPRC=>PRECIP_MODEL(KTO)%XACPRC
 XINDEP=>PRECIP_MODEL(KTO)%XINDEP
 XACDEP=>PRECIP_MODEL(KTO)%XACDEP
-XINPRR=>PRECIP_MODEL(KTO)%XINPRR
-XINPRR3D=>PRECIP_MODEL(KTO)%XINPRR3D
-XEVAP3D=>PRECIP_MODEL(KTO)%XEVAP3D
+!XINPRR=>PRECIP_MODEL(KTO)%XINPRR !Done in FIELDLIST_GOTO_MODEL
+!XINPRR3D=>PRECIP_MODEL(KTO)%XINPRR3D !Done in FIELDLIST_GOTO_MODEL
+!XEVAP3D=>PRECIP_MODEL(KTO)%XEVAP3D !Done in FIELDLIST_GOTO_MODEL
 !XACPRR=>PRECIP_MODEL(KTO)%XACPRR !Done in FIELDLIST_GOTO_MODEL
 XINPRS=>PRECIP_MODEL(KTO)%XINPRS
 XACPRS=>PRECIP_MODEL(KTO)%XACPRS
diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90
index 1304d91a9d0ac5359ad494a2674aa108852af7f9..6dcdc45869f468969550fe77856bd421c78f2375 100644
--- a/src/MNH/modd_spawn.f90
+++ b/src/MNH/modd_spawn.f90
@@ -75,7 +75,6 @@ REAL,DIMENSION(:,:,:),SAVE,POINTER :: XZZ1
 LOGICAL,              SAVE,POINTER :: LSLEVE1
 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
@@ -83,11 +82,17 @@ REAL,DIMENSION(:,:,:,:),SAVE,POINTER :: XRT1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XUT1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVT1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XWT1
+REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSRCT1
+REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSIGS1
 TYPE(DATE_TIME),      SAVE,POINTER :: TDTCUR1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSUM1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSVM1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSWM1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSTHM1
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSRVM1
+REAL,DIMENSION(:,:),  SAVE,POINTER :: XINPRR1
+REAL,DIMENSION(:,:,:),SAVE,POINTER :: XINPRR3D1
+REAL,DIMENSION(:,:,:),SAVE,POINTER :: XEVAP3D1
+REAL,DIMENSION(:,:),  SAVE,POINTER :: XACPRR1
 !
 END MODULE MODD_SPAWN
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index db5c54ff9a832e4b8192e17a59852a41248bddaa..563f2ba4dbe4b2e96bc5d17ad4fff340bbcf5ef8 100644
--- a/src/MNH/spawn_field2.f90
+++ b/src/MNH/spawn_field2.f90
@@ -239,8 +239,6 @@ INTEGER             :: IRR       ! Number of moist variables
 !
 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
 REAL, DIMENSION(SIZE(XTHT1,1),SIZE(XTHT1,2),SIZE(XTHT1,3)) :: ZTHVT! virtual pot. T
                                                                 ! (model 1)          
 !$20140708
@@ -363,8 +361,8 @@ CALL MPPDB_CHECK3D(PVT,"SPAWN_FIELD2:PVT",PRECISION)
 !*       2.1.5  secondary prognostic variables
 !
   IF (CONF_MODEL(1)%NRR > 1) THEN
-    PSRCT (:,:,:) =  FIELD_MODEL(1)%XSRCT (KXOR:KXEND,KYOR:KYEND,:)
-    PSIGS(:,:,:) =  FIELD_MODEL(1)%XSIGS(KXOR:KXEND,KYOR:KYEND,:)
+    PSRCT(:,:,:) = XSRCT1 (KXOR:KXEND,KYOR:KYEND,:)
+    PSIGS(:,:,:) = XSIGS1(KXOR:KXEND,KYOR:KYEND,:)
   ENDIF
 !
 !*       2.1.6  Large scale variables
@@ -488,8 +486,8 @@ ELSE
       CALL SET_LSFIELD_1WAY_ll(ZHUT(:,:,JI),ZHUT_C(:,:,JI),2)
     ENDIF
     IF (CONF_MODEL(1)%NRR>1 .AND. HTURB /='NONE') THEN
-      CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XSRCT(:,:,JI),ZSRCT_C(:,:,JI),2)
-      CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XSIGS(:,:,JI),ZSIGS_C(:,:,JI),2)
+      CALL SET_LSFIELD_1WAY_ll(XSRCT1(:,:,JI),ZSRCT_C(:,:,JI),2)
+      CALL SET_LSFIELD_1WAY_ll(XSIGS1(:,:,JI),ZSIGS_C(:,:,JI),2)
     ENDIF
     IF (LUV_FLX)                                    &
       CALL SET_LSFIELD_1WAY_ll(EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M(:,:,JI),ZVU_FLUX_M_C(:,:,JI),2)
diff --git a/src/MNH/spawn_surf2_rain.f90 b/src/MNH/spawn_surf2_rain.f90
index 18cfed7cb47dc43682b353dd3aeaf046f2c1402c..dd984b3ce2366fb83061305307318bdad10af1f8 100644
--- a/src/MNH/spawn_surf2_rain.f90
+++ b/src/MNH/spawn_surf2_rain.f90
@@ -214,11 +214,11 @@ IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN
     PACDEP(:,:) = PRECIP_MODEL(1)%XACDEP(KXOR:KXEND,KYOR:KYEND)
   END IF
 !
-  IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN
-    PINPRR(:,:) = PRECIP_MODEL(1)%XINPRR(KXOR:KXEND,KYOR:KYEND)
-    PINPRR3D(:,:,:) = PRECIP_MODEL(1)%XINPRR3D(KXOR:KXEND,KYOR:KYEND,:)
-    PEVAP3D(:,:,:) = PRECIP_MODEL(1)%XEVAP3D(KXOR:KXEND,KYOR:KYEND,:)
-    PACPRR(:,:) = XACPRR1(KXOR:KXEND,KYOR:KYEND)
+  IF (SIZE(XINPRR1) /= 0 ) THEN
+    PINPRR(:,:)     = XINPRR1  (KXOR:KXEND,KYOR:KYEND)
+    PINPRR3D(:,:,:) = XINPRR3D1(KXOR:KXEND,KYOR:KYEND,:)
+    PEVAP3D(:,:,:)  = XEVAP3D1 (KXOR:KXEND,KYOR:KYEND,:)
+    PACPRR(:,:)     = XACPRR1  (KXOR:KXEND,KYOR:KYEND)
   END IF
 !
   IF (SIZE(PRECIP_MODEL(1)%XINPRS) /= 0 ) THEN
@@ -279,21 +279,21 @@ ELSE
      PACDEP(:,:)=MAX(0.,PACDEP(:,:))
     END IF
 !
-    IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN
-      IDIMX = SIZE(PRECIP_MODEL(1)%XINPRR,1)
-      IDIMY = SIZE(PRECIP_MODEL(1)%XINPRR,2)
+    IF (SIZE(XINPRR1) /= 0 ) THEN
+      IDIMX = SIZE(XINPRR1,1)
+      IDIMY = SIZE(XINPRR1,2)
       CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                     XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                     2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,       &
-                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XINPRR,PINPRR)
+                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,XINPRR1,PINPRR)
       CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                     XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                     2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,       &
-                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XINPRR3D,PINPRR3D)
+                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,XINPRR3D1,PINPRR3D)
       CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                     XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                     2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,       &
-                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XEVAP3D,PEVAP3D)
+                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,XEVAP3D1,PEVAP3D)
       CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                     XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                     2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,       &
@@ -377,7 +377,7 @@ IF (PRESENT(HSONFILE)) THEN
     ALLOCATE(ZACDEP1(0,0))
     YGETRRT='SKIP'
   END IF
-  IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN
+  IF (SIZE(XINPRR1) /= 0 ) THEN
     ALLOCATE(ZINPRR1(KIUSON,KJUSON))
     ALLOCATE(ZINPRR3D1(KIUSON,KJUSON,ILU))
     ALLOCATE(ZEVAP3D1(KIUSON,KJUSON,ILU))
@@ -434,7 +434,7 @@ IF (PRESENT(HSONFILE)) THEN
   DEALLOCATE(ZACPRC1)
   DEALLOCATE(ZINDEP1)
   DEALLOCATE(ZACDEP1)
-  IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN
+  IF (SIZE(XINPRR1) /= 0 ) THEN
     PINPRR(KIB2:KIE2,KJB2:KJE2) = ZINPRR1(KIB1:KIE1,KJB1:KJE1)
     PINPRR3D(KIB2:KIE2,KJB2:KJE2,:) = ZINPRR3D1(KIB1:KIE1,KJB1:KJE1,:)
     PEVAP3D(KIB2:KIE2,KJB2:KJE2,:) = ZEVAP3D1(KIB1:KIE1,KJB1:KJE1,:)
diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90
index 34b3840db73f1522c5a08848b63e72f894c633c5..b537f31b57ad43e937899570366cc0edb833aaff 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -274,7 +274,6 @@ XZZ1 => XZZ
 LSLEVE1 => LSLEVE
 XLEN11 => XLEN1
 XLEN21 => XLEN2
-XACPRR1 => XACPRR
 XTHT1 => XTHT
 XTKET1 => XTKET
 XPABST1 => XPABST
@@ -282,12 +281,18 @@ XRT1 => XRT
 XUT1 => XUT
 XVT1 => XVT
 XWT1 => XWT
+XSRCT1 => XSRCT
+XSIGS1 => XSIGS
 TDTCUR1 => TDTCUR
 XLSUM1 => XLSUM
 XLSVM1 => XLSVM
 XLSWM1 => XLSWM
 XLSTHM1 => XLSTHM
 XLSRVM1 => XLSRVM
+XINPRR1 => XINPRR
+XINPRR3D1 => XINPRR3D
+XEVAP3D1 => XEVAP3D
+XACPRR1 => XACPRR
 !
 END SUBROUTINE SET_POINTERS_TO_MODEL1
 !
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 61b48cd675385ad6f47e945187489ead4efbdd00..57aab16bf962cbd631a624bf6686cb04d5d22887 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -319,7 +319,7 @@ INTEGER           :: JI,JJ,JK   ! loop index
 INTEGER           :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds
 !
 CHARACTER(LEN=2)  :: INDICE
-INTEGER           :: I
+INTEGER           :: I, IID
 TYPE(TFIELDDATA)  :: TZFIELD
 !-------------------------------------------------------------------------------
 !
@@ -479,49 +479,18 @@ 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)'
-  IGRID=2
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUM,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-  YRECFM='VM'
-  YCOMMENT='X_Y_Z_V component of wind (m/s)'
-  IGRID=3
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVM,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-  YRECFM='WM'
-  YCOMMENT='X_Y_Z_vertical wind (m/s)'
-  IGRID=4
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWM,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-   YRECFM='DUM'
-  YCOMMENT='X_Y_Z_U component of wind (m/s)'
-  IGRID=2
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDUM,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-  YRECFM='DVM'
-  YCOMMENT='X_Y_Z_V component of wind (m/s)'
-  IGRID=3
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDVM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL IO_WRITE_FIELD(TPFILE,'UM', CLUOUT,IRESP,XUM)
+  CALL IO_WRITE_FIELD(TPFILE,'VM', CLUOUT,IRESP,XVM)
+  CALL IO_WRITE_FIELD(TPFILE,'WM', CLUOUT,IRESP,XWM)
+  CALL IO_WRITE_FIELD(TPFILE,'DUM',CLUOUT,IRESP,XDUM)
+  CALL IO_WRITE_FIELD(TPFILE,'DVM',CLUOUT,IRESP,XDVM)
+  CALL IO_WRITE_FIELD(TPFILE,'DWM',CLUOUT,IRESP,XDWM)
+END IF
 !
-  YRECFM='DWM'
-  YCOMMENT='X_Y_Z_vertical wind (m/s)'
-  IGRID=4
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDWM,IGRID,ILENCH,YCOMMENT,IRESP)
+YDIR='XY'
 !
-END IF
-
-
-
 IF (MEAN_COUNT /= 0) THEN
 !
   YRECFM='UMME'
@@ -805,13 +774,13 @@ IF (NSV >=1) THEN
   IF (LSCAV .AND. LAERO_MASS) THEN
   IF (ASSOCIATED(XINPAP)) THEN
   IF (SIZE(XINPAP) /= 0 ) THEN
-     ZWORK2D(:,:)  = XINPAP(:,:)
      YRECFM      = 'INPAP'
      YCOMMENT    = 'X_Y_INstantaneous Precipitating Aerosol Rate (kg/m2/s)'
      IGRID       = 1
      ILENCH      = LEN(YCOMMENT)
-     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPAP,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
+!
      ZWORK2D(:,:)  = XRHOLW*XINPRR(:,:)*XSVT(:,:,2,NSV_LIMA_SCAVMASS)/ &
                                         max( 1.e-20,XRT(:,:,2,3) ) !~2=at ground level
      YRECFM      = 'INPBP'
@@ -821,12 +790,11 @@ IF (NSV >=1) THEN
      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
 !
-     ZWORK2D(:,:)  = XACPAP(:,:)
      YRECFM      = 'ACPAP'
      YCOMMENT    = 'X_Y_ACcumulated Precipitating Aerosol Rate (kg/m2)'
      IGRID       = 1
      ILENCH      = LEN(YCOMMENT)
-     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPAP,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
   END IF
   END IF
@@ -842,7 +810,6 @@ IF (NSV >=1) THEN
       WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (nb ions/m3)'
     END IF
     ILENCH=LEN(YCOMMENT)
-    ZWORK3D(:,:,:) = 0.
     ZWORK3D(:,:,:) = XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
@@ -867,7 +834,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDW(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK3D(:,:,:) = 0.
     YRECFM='EMODULE'
     YCOMMENT='X_Y_Z_EMODULE (V/m)'
     ZWORK3D(:,:,:) = (XEFIELDU**2 + XEFIELDV**2 + XEFIELDW**2)**0.5
@@ -875,7 +841,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK3D(:,:,:) = 0.
     YRECFM='NI_IAGGS'
     YCOMMENT='X_Y_Z_NI_IAGGS (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
@@ -883,7 +848,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK3D(:,:,:) = 0.
     YRECFM='NI_IDRYG'
     YCOMMENT='X_Y_Z_NI_IDRYG (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
@@ -891,7 +855,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK3D(:,:,:) = 0.
     YRECFM='NI_SDRYG'
     YCOMMENT='X_Y_Z_NI_SDRYG (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
@@ -899,7 +862,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK3D(:,:,:) = 0.
     YRECFM='INDUC_CG'
     YCOMMENT='X_Y_Z_INDUC_CG (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
@@ -907,7 +869,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK2D(:,:) = 0.
     YRECFM='TRIG_IC'
     YCOMMENT='X_Y_Z_FLASH_MAP_TRIG_IC (no unit)'
     ILENCH=LEN(YCOMMENT)
@@ -915,7 +876,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK2D(:,:) = 0.
     YRECFM='IMPACT_CG'
     YCOMMENT='X_Y_Z_FLASH_MAP_IMPACT_CG (no unit)'
     ILENCH=LEN(YCOMMENT)
@@ -923,7 +883,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK2D(:,:) = 0.
     YRECFM='AREA_CG'
     YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_CG (no unit)'
     ILENCH=LEN(YCOMMENT)
@@ -931,7 +890,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK2D(:,:) = 0.
     YRECFM='AREA_IC'
     YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_IC (no unit)'
     ILENCH=LEN(YCOMMENT)
@@ -939,7 +897,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK3D(:,:,:) = 0.
     YRECFM='FLASH_3DCG'
     YCOMMENT='X_Y_Z_FLASH_MAP_3DCG (no unit)'
     ILENCH=LEN(YCOMMENT)
@@ -947,7 +904,6 @@ IF (NSV >=1) THEN
     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
-    ZWORK3D(:,:,:) = 0.
     YRECFM='FLASH_3DIC'
     YCOMMENT='X_Y_Z_FLASH_MAP_3DIC (no unit)'
     ILENCH=LEN(YCOMMENT)
@@ -1374,20 +1330,9 @@ IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN
   CALL IO_WRITE_FIELD(TPFILE,'WTHVMF',CLUOUT,IRESP,XWTHVMF)
 END IF
 !
-!
 IF( NRR > 1 .AND. CTURB /= 'NONE' ) THEN
-  YRECFM='SRCT'
-  YCOMMENT='X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2 (KG/KG**2)'
-  IGRID=1
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSRCT,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-  YRECFM='SIGS'
-  YCOMMENT='X_Y_Z_Sigma_s from turbulence scheme (KG/KG**2)'
-  IGRID=1
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSIGS,IGRID,ILENCH,YCOMMENT,IRESP)
-!
+  CALL IO_WRITE_FIELD(TPFILE,'SRCT',CLUOUT,IRESP,XSRCT)
+  CALL IO_WRITE_FIELD(TPFILE,'SIGS',CLUOUT,IRESP,XSIGS)
 END IF
 !
 !*       1.5    Reference state variables :
@@ -1460,12 +1405,7 @@ IF (CRAD /= 'NONE') THEN
 ENDIF
 !
 IF (NRR > 1 .AND. CPROGRAM == 'MESONH') THEN
-  YRECFM='CLDFR'
-  YCOMMENT='X_Y_Z_CLouD FRaction (0)'
-  IGRID=1
-  ILENCH=LEN(YCOMMENT) 
-  YDIR='XY'
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL IO_WRITE_FIELD(TPFILE,'CLDFR',CLUOUT,IRESP,XCLDFR)
 END IF
 !
 !
@@ -1476,68 +1416,27 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
 !
 ! 
 !
-  CALL IO_WRITE_FIELD(TPFILE,'DTDCONV',CLUOUT,IRESP,TDTDCONV)
+  CALL IO_WRITE_FIELD(TPFILE,'DTDCONV',  CLUOUT,IRESP,TDTDCONV)
+  CALL IO_WRITE_FIELD(TPFILE,'COUNTCONV',CLUOUT,IRESP,NCOUNTCONV)
+  CALL IO_WRITE_FIELD(TPFILE,'DTHCONV',  CLUOUT,IRESP,XDTHCONV)
+  CALL IO_WRITE_FIELD(TPFILE,'DRVCONV',  CLUOUT,IRESP,XDRVCONV)
+  CALL IO_WRITE_FIELD(TPFILE,'DRCCONV',  CLUOUT,IRESP,XDRCCONV)
+  CALL IO_WRITE_FIELD(TPFILE,'DRICONV',  CLUOUT,IRESP,XDRICONV)
 !
-  YDIR='XY'
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV',IID,IRESP)
+  TZFIELD = TFIELDLIST(IID)
+  TZFIELD%CUNITS = 'mm hour-1'
+  CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPRCONV*3.6E6)
 !
-  YRECFM      = 'COUNTCONV'
-  YCOMMENT    = 'X_Y_COUNTCONV'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NCOUNTCONV,IGRID,ILENCH,YCOMMENT, &
-              IRESP)
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV',IID,IRESP)
+  TZFIELD = TFIELDLIST(IID)
+  TZFIELD%CUNITS = 'mm'
+  CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPACCONV*1.0E3)
 !
-!
-  YRECFM      = 'DTHCONV'
-  YCOMMENT    = 'X_Y_Z_CONVective heating/cooling rate (K/s)'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-!
-  YRECFM      = 'DRVCONV'
-  YCOMMENT    = 'X_Y_Z_CONVective R_v tendency (1/s)'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-!
-  YRECFM      = 'DRCCONV'
-  YCOMMENT    = 'X_Y_Z_CONVective R_c tendency (1/s)'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-!
-  YRECFM      = 'DRICONV'
-  YCOMMENT    = 'X_Y_Z_CONVective R_i tendency (1/s)'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-!
-  YRECFM      = 'PRCONV'
-  YCOMMENT    = 'X_Y_CONVective instantaneous Precipitation Rate (MM/H)'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPRCONV*3.6E6,IGRID,ILENCH, &
-                                                        YCOMMENT,IRESP)
-!
-!
-  YRECFM      = 'PACCONV'
-  YCOMMENT    = 'X_Y_CONVective ACcumulated Precipitation rate (MM)'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPACCONV*1.0E3,IGRID,ILENCH, &
-                                                         YCOMMENT,IRESP)
-!
-!
-  YRECFM      = 'PRSCONV'
-  YCOMMENT    = 'X_Y_CONVective instantaneous Precipitation Rate for Snow (MM/H)'
-  IGRID       = 1
-  ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPRSCONV*3.6E6,IGRID,ILENCH, &
-                                                        YCOMMENT,IRESP)
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV',IID,IRESP)
+  TZFIELD = TFIELDLIST(IID)
+  TZFIELD%CUNITS = 'mm hour-1'
+  CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPRSCONV*3.6E6)
 !
   IF ( LCH_CONV_LINOX ) THEN 
     YRECFM      = 'IC_RATE'
@@ -1678,116 +1577,90 @@ IF (CPROGRAM /= 'IDEAL') THEN
 !
   IF (ASSOCIATED(XINPRC)) THEN
   IF (SIZE(XINPRC) /= 0 ) THEN
-    ZWORK2D(:,:)  = XINPRC(:,:)
     YRECFM      = 'INPRC'
     YCOMMENT    = 'X_Y_INstantaneous Cloud Precipitation Rain Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRC*3.6E6,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
-    ZWORK2D(:,:)  = XACPRC(:,:)
     YRECFM      = 'ACPRC'
     YCOMMENT    = 'X_Y_ACcumulated Cloud Precipitation Rain Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRC*1.0E3,IGRID,ILENCH, &
                                                  YCOMMENT,IRESP) ! unit conversion
   ENDIF
   ENDIF
 !
   IF (ASSOCIATED(XINPRR)) THEN
   IF (SIZE(XINPRR) /= 0 ) THEN
-    ZWORK2D(:,:)  = XINPRR(:,:)
-    YRECFM      = 'INPRR'
-    YCOMMENT    = 'X_Y_INstantaneous Precipitation Rain Rate (MM/H)'
-    IGRID       = 1
-    ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
-                                               YCOMMENT,IRESP) ! unit conversion
+    CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR',IID,IRESP)
+    TZFIELD = TFIELDLIST(IID)
+    TZFIELD%CUNITS = 'mm hour-1'
+    CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XINPRR*3.6E6)
 !
-    ZWORK3D(:,:,:)  = XINPRR3D(:,:,:)
-    YRECFM      = 'INPRR3D'
-    YCOMMENT    = 'X_Y_INstantaneous 3D Rain Precipitation flux (M/S)'
-    IGRID       = 1
-    ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, &
-                                               YCOMMENT,IRESP) ! unit conversion
+    CALL IO_WRITE_FIELD(TPFILE,'INPRR3D',CLUOUT,IRESP,XINPRR3D)
+    CALL IO_WRITE_FIELD(TPFILE,'EVAP3D', CLUOUT,IRESP,XEVAP3D)
 !
-    ZWORK3D(:,:,:)  = XEVAP3D(:,:,:)
-    YRECFM      = 'EVAP3D'
-    YCOMMENT    = 'X_Y_INstantaneous 3D Rain Evaporation flux (KG/KG/S)'
-    IGRID       = 1
-    ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, &
-                                               YCOMMENT,IRESP) ! unit conversion
+    CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP)
+    TZFIELD = TFIELDLIST(IID)
+    TZFIELD%CUNITS = 'mm'
+    CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XACPRR*1.0E3)
 !
-    ZWORK2D(:,:)  = XACPRR(:,:)
-    YRECFM      = 'ACPRR'
-    YCOMMENT    = 'X_Y_ACcumulated Precipitation Rain Rate (MM)'
-    IGRID       = 1
-    ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
-                                                 YCOMMENT,IRESP) ! unit conversion
   ENDIF
   ENDIF
 !
   IF (ASSOCIATED(XINPRS)) THEN
   IF (SIZE(XINPRS) /= 0 ) THEN
-    ZWORK2D(:,:)  = XINPRS(:,:)
     YRECFM      = 'INPRS'
     YCOMMENT    = 'X_Y_INstantaneous PRecipitation Snow Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRS*3.6E6,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
 !
-    ZWORK2D(:,:)  = XACPRS(:,:)
     YRECFM      = 'ACPRS'
     YCOMMENT    = 'X_Y_ACcumulated PRecipitation Snow Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRS*1.0E3,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
   END IF
   END IF
 !
   IF (ASSOCIATED(XINPRG)) THEN
   IF (SIZE(XINPRG) /= 0 ) THEN
-    ZWORK2D(:,:)  = XINPRG(:,:)
     YRECFM      = 'INPRG'
     YCOMMENT    = 'X_Y_INstantaneous PRecipitation Graupel Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRG*3.6E6,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
-    ZWORK2D(:,:)  = XACPRG(:,:)
     YRECFM      = 'ACPRG'
     YCOMMENT    = 'X_Y_ACcumulated PRecipitation Graupel Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRG*1.0E3,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
   END IF
   END IF
 !
   IF (ASSOCIATED(XINPRH)) THEN
   IF (SIZE(XINPRH) /= 0 ) THEN
-    ZWORK2D(:,:)  = XINPRH(:,:)
     YRECFM      = 'INPRH'
     YCOMMENT    = 'X_Y_INstantaneous PRecipitation Hail Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRH*3.6E6,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
-    ZWORK2D(:,:)  = XACPRH(:,:)
     YRECFM      = 'ACPRH'
     YCOMMENT    = 'X_Y_ACcumulated PRecipitation Hail Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRH*1.0E3,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
   ENDIF
   ENDIF