From 1eb88ba709352a634dde63dd78b1cb8eb5c64af6 Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Thu, 12 Dec 2013 16:17:03 +0000
Subject: [PATCH] Christine 12/12/13 : WENO

---
 src/MNH/adv_boundaries.f90          |  117 ++
 src/MNH/advec_3rd_order_aux.f90     |  854 ++++++++
 src/MNH/advec_weno_k_1_aux.f90      |  343 +++
 src/MNH/advec_weno_k_2_aux.f90      | 1421 +++++++++++++
 src/MNH/advec_weno_k_3_aux.f90      | 3014 +++++++++++++++++++++++++++
 src/MNH/advection.f90               |  239 +--
 src/MNH/advection_metsv.f90         |  537 +++++
 src/MNH/advection_uvw.f90           |  312 +++
 src/MNH/advection_uvw_cen.f90       |  251 +++
 src/MNH/advecuvw_2nd.f90            |  157 ++
 src/MNH/advecuvw_4th.f90            |   53 -
 src/MNH/advecuvw_rk.f90             |  350 ++++
 src/MNH/advecuvw_weno_k.f90         |  271 +++
 src/MNH/anel_balancen.f90           |   74 +-
 src/MNH/boundaries.f90              |  274 +--
 src/MNH/budget.f90                  |   17 +-
 src/MNH/budget_flags.f90            |   29 +-
 src/MNH/c2r2_adjust.f90             |   10 +-
 src/MNH/c3r5_adjust.f90             |    5 +-
 src/MNH/ch_aqueous_sedimkhko.f90    |   20 +-
 src/MNH/ch_boundaries.f90           |   27 +-
 src/MNH/ch_init_fieldn.f90          |   95 +-
 src/MNH/ch_monitorn.f90             |   81 +-
 src/MNH/compute_function_thermo.f90 |  258 +++
 src/MNH/compute_r00.f90             |   10 +-
 src/MNH/deallocate_model1.f90       |   41 +-
 src/MNH/default_desfmn.f90          |   53 +-
 src/MNH/diag.f90                    |   32 +-
 src/MNH/dyn_sources.f90             |   48 +-
 src/MNH/endstep.f90                 |  188 +-
 src/MNH/endstep_budget.f90          |   24 +-
 src/MNH/error_on_temperature.f90    |    6 +-
 src/MNH/exchange.f90                |   30 +-
 src/MNH/fast_terms.f90              |   10 +-
 src/MNH/forcing.f90                 |   50 +-
 src/MNH/goto_model_wrapper.f90      |    2 +
 src/MNH/gravity.f90                 |  184 ++
 src/MNH/gravity_impl.f90            |  145 ++
 src/MNH/ground_paramn.f90           |   18 +-
 src/MNH/ice_adjust.f90              |   23 +-
 src/MNH/ice_adjust_bis.f90          |  131 ++
 src/MNH/ice_adjust_elec.f90         |   32 +-
 src/MNH/ini_budget.f90              |  310 +--
 src/MNH/ini_cpl.f90                 |   40 +-
 src/MNH/ini_elecn.f90               |   12 +-
 src/MNH/ini_lesn.f90                |   49 +-
 src/MNH/ini_lg.f90                  |   30 +-
 src/MNH/ini_micron.f90              |   34 +-
 src/MNH/ini_modeln.f90              |  200 +-
 src/MNH/ini_one_wayn.f90            |   73 +-
 src/MNH/ini_prog_var.f90            |   87 +-
 src/MNH/ini_segn.f90                |    9 +-
 src/MNH/ini_tke_eps.f90             |   56 +-
 src/MNH/init_for_convlfi.f90        |  361 ++++
 src/MNH/init_mnh.f90                |    5 +-
 src/MNH/initial_guess.f90           |  115 +-
 src/MNH/interp3d.f90                |  154 ++
 src/MNH/ion_boundaries.f90          |   16 +-
 src/MNH/ion_drift.f90               |   53 +-
 src/MNH/les_budget.f90              |  154 +-
 src/MNH/les_budget_tendn.f90        |   36 +-
 src/MNH/les_cloud_masksn.f90        |   33 +-
 src/MNH/les_ini_timestepn.f90       |   46 +-
 src/MNH/les_masksn.f90              |    2 +-
 src/MNH/les_res_tr.f90              |   27 +-
 src/MNH/lesn.f90                    |   93 +-
 src/MNH/ls_coupling.f90             |   38 +-
 src/MNH/mean_field.f90              |   58 +-
 src/MNH/mesonh.f90                  |   12 +-
 src/MNH/mf_turb.f90                 |   20 +-
 src/MNH/modd_advn.f90               |   42 +-
 src/MNH/modd_budget.f90             |   42 +-
 src/MNH/modd_conf.f90               |    8 +-
 src/MNH/modd_fieldn.f90             |   75 +-
 src/MNH/modd_getn.f90               |   59 +-
 src/MNH/modd_les_budget.f90         |    7 +-
 src/MNH/modd_past_fieldn.f90        |   81 +
 src/MNH/modd_sub_modeln.f90         |    6 +-
 src/MNH/modeln.f90                  |  473 +++--
 src/MNH/modn_advn.f90               |   35 +-
 src/MNH/modn_budget.f90             |   28 +-
 src/MNH/modn_conf.f90               |    2 +-
 src/MNH/one_wayn.f90                |   10 +-
 src/MNH/paspol.f90                  |    8 +-
 src/MNH/phys_paramn.f90             |  143 +-
 src/MNH/ppm_met.f90                 |   58 +-
 src/MNH/ppm_rhodj.f90               |  114 +
 src/MNH/ppm_scalar.f90              |   42 +-
 src/MNH/prep_ideal_case.f90         |  109 +-
 src/MNH/prep_real_case.f90          |   20 +-
 src/MNH/pressure_in_prep.f90        |   66 +-
 src/MNH/pressurez.f90               |   41 +-
 src/MNH/rad_bound.f90               |  137 +-
 src/MNH/rain_c2r2.f90               |   83 +-
 src/MNH/rain_ice.f90                |   68 +-
 src/MNH/rain_ice_elec.f90           |   67 +-
 src/MNH/rain_khko.f90               |   75 +-
 src/MNH/read_desfmn.f90             |   10 +-
 src/MNH/read_exsegn.f90             |  186 +-
 src/MNH/read_field.f90              |  931 +++------
 src/MNH/read_precip_field.f90       |   35 +-
 src/MNH/relax2fw_ion.f90            |   11 +-
 src/MNH/relaxation.f90              |   87 +-
 src/MNH/reset_exseg.f90             |    8 +-
 src/MNH/resolved_cloud.f90          |  151 +-
 src/MNH/resolved_elecn.f90          |  111 +-
 src/MNH/series_cloud_elec.f90       |    8 +-
 src/MNH/set_geosbal.f90             |   26 +-
 src/MNH/set_grid.f90                |    4 +-
 src/MNH/set_mask.f90                |    4 +-
 src/MNH/set_mass.f90                |   36 +-
 src/MNH/set_perturb.f90             |   96 +-
 src/MNH/shallow_mf.f90              |   14 +-
 src/MNH/shallow_mf_pack.f90         |   10 +-
 src/MNH/slow_terms.f90              |    4 -
 src/MNH/spawn_field2.f90            |  217 +-
 src/MNH/spawn_model2.f90            |  127 +-
 src/MNH/spawn_pressure2.f90         |   72 +-
 src/MNH/spawn_surf2_rain.f90        |    8 +-
 src/MNH/spawning.f90                |    6 +-
 src/MNH/thlrt_from_thrvrcri.f90     |  107 +
 src/MNH/thrvrcri_from_thlrtrcri.f90 |  108 +
 src/MNH/tke_eps_sources.f90         |   46 +-
 src/MNH/turb.f90                    |  347 ++-
 src/MNH/turb_hor_splt.f90           |   41 +-
 src/MNH/turb_ver.f90                |   31 +-
 src/MNH/two_wayn.f90                |   46 +-
 src/MNH/ver_dyn.f90                 |  134 +-
 src/MNH/ver_interp_field.f90        |   33 +-
 src/MNH/ver_thermo.f90              |  111 +-
 src/MNH/version.f90                 |    4 +-
 131 files changed, 12055 insertions(+), 4973 deletions(-)
 create mode 100644 src/MNH/adv_boundaries.f90
 create mode 100644 src/MNH/advec_3rd_order_aux.f90
 create mode 100644 src/MNH/advec_weno_k_1_aux.f90
 create mode 100644 src/MNH/advec_weno_k_2_aux.f90
 create mode 100644 src/MNH/advec_weno_k_3_aux.f90
 create mode 100644 src/MNH/advection_metsv.f90
 create mode 100644 src/MNH/advection_uvw.f90
 create mode 100644 src/MNH/advection_uvw_cen.f90
 create mode 100644 src/MNH/advecuvw_2nd.f90
 create mode 100644 src/MNH/advecuvw_rk.f90
 create mode 100644 src/MNH/advecuvw_weno_k.f90
 create mode 100644 src/MNH/compute_function_thermo.f90
 create mode 100644 src/MNH/gravity.f90
 create mode 100644 src/MNH/gravity_impl.f90
 create mode 100644 src/MNH/ice_adjust_bis.f90
 create mode 100644 src/MNH/init_for_convlfi.f90
 create mode 100644 src/MNH/interp3d.f90
 create mode 100644 src/MNH/modd_past_fieldn.f90
 create mode 100644 src/MNH/ppm_rhodj.f90
 create mode 100644 src/MNH/thlrt_from_thrvrcri.f90
 create mode 100644 src/MNH/thrvrcri_from_thlrtrcri.f90

diff --git a/src/MNH/adv_boundaries.f90 b/src/MNH/adv_boundaries.f90
new file mode 100644
index 000000000..2d83c87ed
--- /dev/null
+++ b/src/MNH/adv_boundaries.f90
@@ -0,0 +1,117 @@
+!#####################
+MODULE MODI_ADV_BOUNDARIES
+!#####################
+!
+INTERFACE
+!
+      SUBROUTINE ADV_BOUNDARIES ( HLBCX,HLBCY,PFIELD,PFIELDI,HFIELD )    
+!
+CHARACTER(LEN=4), DIMENSION(2), INTENT(IN)      :: HLBCX,HLBCY   ! X and Y-direc. LBC type
+REAL, DIMENSION(:,:,:),   INTENT(INOUT)         :: PFIELD                        
+REAL, DIMENSION(:,:,:),   INTENT(IN), OPTIONAL  :: PFIELDI                        
+CHARACTER(LEN=1),         INTENT(IN), OPTIONAL  :: HFIELD  ! Field type
+!
+END SUBROUTINE ADV_BOUNDARIES
+!
+END INTERFACE
+!
+
+END MODULE MODI_ADV_BOUNDARIES
+!
+!
+!     ####################################################################
+      SUBROUTINE ADV_BOUNDARIES ( HLBCX,HLBCY,PFIELD,PFIELDI,HFIELD )
+!     ####################################################################
+!
+!!****  *ADV_BOUNDARIES* - routine to prepare the top and bottom Boundary Conditions 
+!!
+!!
+!!    AUTHOR
+!!    ------
+!!	
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!         
+USE MODD_PARAMETERS
+USE MODE_ll
+!
+IMPLICIT NONE
+!
+!
+!*       0.1   declarations of arguments
+!
+!
+CHARACTER(LEN=4), DIMENSION(2), INTENT(IN)      :: HLBCX,HLBCY   ! X and Y-direc. LBC type
+REAL, DIMENSION(:,:,:),   INTENT(INOUT)         :: PFIELD                        
+REAL, DIMENSION(:,:,:),   INTENT(IN), OPTIONAL  :: PFIELDI                        
+CHARACTER(LEN=1),         INTENT(IN), OPTIONAL  :: HFIELD  ! Field type
+!
+!
+!*       0.2   declarations of local variables
+!
+INTEGER             :: IKB       ! indice K Beginning in z direction
+INTEGER             :: IKE       ! indice K End       in z direction 
+INTEGER             :: IIU, IJU  ! Index End in X and Y directions
+!
+!-------------------------------------------------------------------------------
+!
+!*       1.    COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES:
+!              ----------------------------------------------
+IKB = 1 + JPVEXT
+IKE = SIZE(PFIELD,3) - JPVEXT
+IIU=SIZE(PFIELD,1)
+IJU=SIZE(PFIELD,2)
+!
+IF (SIZE(PFIELD)==0) RETURN
+!-------------------------------------------------------------------------------
+!
+!*       2.    UPPER AND LOWER BC FILLING:   
+!              ---------------------------
+!
+!*       2.1    COMPUTE THE FIELD EXTRAPOLATIONS AT THE GROUND
+!
+!
+   IF (PRESENT(HFIELD) .AND. PRESENT(PFIELDI)) THEN
+     IF (HFIELD=='W') &
+     PFIELD  (:,:,IKB  )   = PFIELDI (:,:,IKB) 
+   END IF
+!
+   PFIELD  (:,:,IKB-1)   = PFIELD  (:,:,IKB) 
+
+!
+!*       2.2    COMPUTE THE FIELD EXTRAPOLATIONS AT THE TOP
+!
+  PFIELD  (:,:,IKE+1)   = PFIELD  (:,:,IKE) 
+!
+!
+!*       3.    LATERAL BC FILLING                                
+!              ---------------------------
+!
+IF( PRESENT(PFIELDI) )  THEN
+  IF (HLBCX(1)=='OPEN' .AND. LWEST_ll()) THEN
+     PFIELD(1,:,:) = PFIELDI(1,:,:)
+     IF (PRESENT(HFIELD)) THEN
+       IF (HFIELD=='U') &
+       PFIELD(2,:,:) = PFIELDI(2,:,:)
+     END IF
+  END IF
+  IF (HLBCX(2)=='OPEN' .AND. LEAST_ll()) THEN
+     PFIELD(IIU,:,:) = PFIELDI(IIU,:,:)
+  END IF
+  IF (HLBCY(1)=='OPEN' .AND. LSOUTH_ll()) THEN
+     PFIELD(:,1,:) = PFIELDI(:,1,:)
+     IF (PRESENT(HFIELD)) THEN
+       IF (HFIELD=='V') &
+       PFIELD(:,2,:) = PFIELDI(:,2,:)
+     END IF
+  END IF
+  IF (HLBCY(2)=='OPEN' .AND. LNORTH_ll()) THEN
+     PFIELD(:,IJU,:) = PFIELDI(:,IJU,:)
+  END IF
+END IF
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE ADV_BOUNDARIES
diff --git a/src/MNH/advec_3rd_order_aux.f90 b/src/MNH/advec_3rd_order_aux.f90
new file mode 100644
index 000000000..549052246
--- /dev/null
+++ b/src/MNH/advec_3rd_order_aux.f90
@@ -0,0 +1,854 @@
+!     ###############################
+      MODULE MODI_ADVEC_3RD_ORDER_AUX
+!     ###############################
+!
+INTERFACE
+!
+!-------------------------------------------------------------------------------
+!
+      SUBROUTINE ADVEC_3RD_ORDER_UX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_3RD_ORDER_UX
+!
+!-------------------------------------------------------------------------------
+!
+      SUBROUTINE ADVEC_3RD_ORDER_MX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_3RD_ORDER_MX
+!
+!-------------------------------------------------------------------------------
+!
+      SUBROUTINE ADVEC_3RD_ORDER_VY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_3RD_ORDER_VY
+!
+!-------------------------------------------------------------------------------
+!
+      SUBROUTINE ADVEC_3RD_ORDER_MY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_3RD_ORDER_MY
+!
+!------------------------------------------------------------------------
+!
+      FUNCTION UP3_WZ(PSRC, PRWCT) RESULT(PR)
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on W grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+END FUNCTION UP3_WZ
+!
+!-------------------------------------------------------------------------------
+!
+      FUNCTION UP3_MZ(PSRC, PRWCT) RESULT(PR)
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on W grid
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+END FUNCTION UP3_MZ
+!
+END INTERFACE
+!
+END MODULE MODI_ADVEC_3RD_ORDER_AUX
+!
+!-------------------------------------------------------------------------------
+!
+!     #############################################################
+      SUBROUTINE ADVEC_3RD_ORDER_UX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!     #############################################################
+!!
+!!****  ADVEC_3RD_ORDER_UX - 3rd order upstream fluxes of U in X direction
+!!              input variable PSRC is on U grid, and output PR is on mass grid
+!!
+!!    AUTHOR
+!!    ------
+!!      C.Lac            * CNRM/GMME *               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+!
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER:: IW,IE,IWF,IEF   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE X DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IW=IIB+1
+    IE=IIE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF  
+!
+  IWF=IW-1
+  IEF=IE-1
+!
+  PR(IWF:IEF,:,:) = 1./6. * ( (2.*PSRC(IW:IE,:,:) + 5.*PSRC(IW-1:IE-1,:,:) -   &
+                   PSRC(IW-2:IE-2,:,:)) * (0.5+SIGN(0.5,PRUCT(IW-1:IE-1,:,:))) &
+                            + (5.*PSRC(IW:IE,:,:) + 2.*PSRC(IW-1:IE-1,:,:) -   &
+                   PSRC(IW+1:IE+1,:,:)) * (0.5-SIGN(0.5,PRUCT(IW-1:IE-1,:,:))) )
+!
+  PR(IEF+1,:,:) = 1./6. * ( (2.*PSRC(IE+1,:,:) + 5.*PSRC(IE,:,:) -             &
+                               PSRC(IE-1,:,:)) * (0.5+SIGN(0.5,PRUCT(IE,:,:))) &
+                          + (5.*PSRC(IE+1,:,:) + 2.*PSRC(IE,:,:) -             &
+                            TPHALO2%EAST(:,:)) * (0.5-SIGN(0.5,PRUCT(IE,:,:))))
+!
+  PR(IWF-1,:,:) = 1./6. * ( (2.*PSRC(IW-1,:,:) + 5.*PSRC(IW-2,:,:) -           &
+                          TPHALO2%WEST(:,:)) * (0.5+SIGN(0.5,PRUCT(IW-2,:,:))) &
+                          + (5.*PSRC(IW-1,:,:) + 2.*PSRC(IW-2,:,:) -           &
+                               PSRC(IW,:,:)) * (0.5-SIGN(0.5,PRUCT(IW-2,:,:))) )
+!
+!       OPEN, WALL, NEST CASE IN THE X DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER
+!
+  IF (LWEST_ll()) THEN
+      IW=IIB+2          ! special case of C grid
+  ELSE
+    IF(NHALO == 1) THEN
+      IW=IIB+1
+    ELSE
+      IW=IIB
+    ENDIF
+  ENDIF
+  IF (LEAST_ll() .OR. NHALO == 1) THEN
+    IE=IIE
+  ELSE
+    IE=IIE
+  END IF
+!
+  IWF=IW-1
+  IEF=IE-1
+!
+  IF(LWEST_ll()) THEN
+    PR(IWF-1,:,:) = PSRC(IW-2,:,:) * (0.5+SIGN(0.5,PRUCT(IW-2,:,:))) &
+                  + PSRC(IW-1,:,:) * (0.5-SIGN(0.5,PRUCT(IW-2,:,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(IWF-1,:,:) = 1./6. * ( (2.*PSRC(IW-1,:,:) + 5.*PSRC(IW-2,:,:) -         &
+                          TPHALO2%WEST(:,:)) * (0.5+SIGN(0.5,PRUCT(IW-2,:,:))) &
+                          + (5.*PSRC(IW-1,:,:) + 2.*PSRC(IW-2,:,:) -           &
+                               PSRC(IW,:,:)) * (0.5-SIGN(0.5,PRUCT(IW-2,:,:))) )
+  ENDIF
+!
+  IF(LEAST_ll()) THEN
+    PR(IEF+1,:,:) = PSRC(IE,:,:)   * (0.5+SIGN(0.5,PRUCT(IE,:,:))) &
+                  + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE,:,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(IEF+1,:,:) = 1./6. * ( (2.*PSRC(IE+1,:,:) + 5.*PSRC(IE,:,:) -           &
+                               PSRC(IE-1,:,:)) * (0.5+SIGN(0.5,PRUCT(IE,:,:))) &
+                          + (5.*PSRC(IE+1,:,:) + 2.*PSRC(IE,:,:) -             &
+                            TPHALO2%EAST(:,:)) * (0.5-SIGN(0.5,PRUCT(IE,:,:))))
+  ENDIF
+!
+!      USE A THIRD ORDER UPSTREAM SCHEME ELSEWHERE 
+!
+  PR(IWF:IEF,:,:) = 1./6. * ( (2.*PSRC(IW:IE,:,:) + 5.*PSRC(IW-1:IE-1,:,:) -   &
+                   PSRC(IW-2:IE-2,:,:)) * (0.5+SIGN(0.5,PRUCT(IW-1:IE-1,:,:))) &
+                            + (5.*PSRC(IW:IE,:,:) + 2.*PSRC(IW-1:IE-1,:,:) -   &
+                   PSRC(IW+1:IE+1,:,:)) * (0.5-SIGN(0.5,PRUCT(IW-1:IE-1,:,:))) )
+!
+END SELECT
+!
+PR = PR * PRUCT
+!
+END SUBROUTINE ADVEC_3RD_ORDER_UX 
+!
+!-------------------------------------------------------------------------------
+!
+!     #############################################################
+      SUBROUTINE ADVEC_3RD_ORDER_MX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!     #############################################################
+!!
+!!**** ADVEC_3RD_ORDER_MX - 3rd order upstream fluxes of variable in X direction
+!!     Input variable PSRC is on MASS grid, and output PR is on U grid
+!!
+!!    AUTHOR
+!!    ------
+!!      C.Lac            * CNRM/GMME *               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER:: IW,IE,IWF,IEF   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE X DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IW=IIB+1
+    IE=IIE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF  
+!
+  IWF=IW
+  IEF=IE
+!
+  PR(IWF:IEF,:,:) = 1./6. * ( (2.*PSRC(IW:IE,:,:) + 5.*PSRC(IW-1:IE-1,:,:) -   &
+                       PSRC(IW-2:IE-2,:,:)) * (0.5+SIGN(0.5,PRUCT(IW:IE,:,:))) &
+                            + (5.*PSRC(IW:IE,:,:) + 2.*PSRC(IW-1:IE-1,:,:) -   &
+                       PSRC(IW+1:IE+1,:,:)) * (0.5-SIGN(0.5,PRUCT(IW:IE,:,:))) )
+!
+  PR(IWF-1,:,:) = 1./6. * ( (2.*PSRC(IW-1,:,:) + 5.*PSRC(IW-2,:,:) -           &
+                          TPHALO2%WEST(:,:)) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) &
+                          + (5.*PSRC(IW-1,:,:) + 2.*PSRC(IW-2,:,:) -           &
+                               PSRC(IW,:,:)) * (0.5-SIGN(0.5,PRUCT(IW-1,:,:))) )
+!
+  PR(IEF+1,:,:) = 1./6. * ( (2.*PSRC(IE+1,:,:) + 5.*PSRC(IE,:,:) -             &
+                             PSRC(IE-1,:,:)) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) &
+                          + (5.*PSRC(IE+1,:,:) + 2.*PSRC(IE,:,:) -             &
+                               TPHALO2%EAST) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:))) )
+!
+!    OPEN, WALL, NEST CASE IN THE X DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+!    USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSCIAL BORDER 
+!
+  IF (LWEST_ll()) THEN
+    IW=IIB+1
+  ELSE
+    IF(NHALO == 1) THEN
+      IW=IIB+1
+    ELSE
+      IW=IIB
+    ENDIF
+  ENDIF
+  IF (LEAST_ll() .OR. NHALO == 1) THEN
+    IE=IIE
+  ELSE
+    IE=IIE
+  END IF  
+!
+  IWF=IW
+  IEF=IE
+!
+  IF(LWEST_ll()) THEN
+    PR(IWF-1,:,:) = PSRC(IW-2,:,:) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) &
+                  + PSRC(IW-1,:,:) * (0.5-SIGN(0.5,PRUCT(IW-1,:,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(IWF-1,:,:) = 1./6. * ( (2.*PSRC(IW-1,:,:) + 5.*PSRC(IW-2,:,:) -         &
+                          TPHALO2%WEST(:,:)) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) &
+                          + (5.*PSRC(IW-1,:,:) + 2.*PSRC(IW-2,:,:) -           &
+                               PSRC(IW,:,:)) * (0.5-SIGN(0.5,PRUCT(IW-1,:,:))) )
+  ENDIF
+!
+  IF(LEAST_ll()) THEN
+    PR(IEF+1,:,:) = PSRC(IE,:,:)   * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) &
+                  + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(IEF+1,:,:) = 1./6. * ( (2.*PSRC(IE+1,:,:) + 5.*PSRC(IE,:,:) -           &
+                             PSRC(IE-1,:,:)) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) &
+                          + (5.*PSRC(IE+1,:,:) + 2.*PSRC(IE,:,:) -             &
+                               TPHALO2%EAST) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:))) )
+  ENDIF
+!
+!    USE A THIRD ORDER UPSTREAM SCHEME ELSEWHERE
+!
+  PR(IWF:IEF,:,:) = 1./6. * ( (2.*PSRC(IW:IE,:,:) + 5.*PSRC(IW-1:IE-1,:,:) -   &
+                       PSRC(IW-2:IE-2,:,:)) * (0.5+SIGN(0.5,PRUCT(IW:IE,:,:))) &
+                            + (5.*PSRC(IW:IE,:,:) + 2.*PSRC(IW-1:IE-1,:,:) -   &
+                       PSRC(IW+1:IE+1,:,:)) * (0.5-SIGN(0.5,PRUCT(IW:IE,:,:))) )
+!
+END SELECT
+!
+PR = PR * PRUCT
+!
+END SUBROUTINE ADVEC_3RD_ORDER_MX
+!
+!-------------------------------------------------------------------------------
+!
+!     #############################################################
+      SUBROUTINE ADVEC_3RD_ORDER_VY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!     #############################################################
+!!
+!!****  ADVEC_3RD_ORDER_VY - 3rd order upstream fluxes of V in Y direction
+!!      Input variable PSRC is on V grid, and output PR is on MASS grid
+!!
+!!    AUTHOR
+!!    ------
+!!      C.Lac            * CNRM/GMME *               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER:: IS,IN,ISF,INF   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCY(1) ) ! 
+!
+!*       1.1    CYCLIC CASE IN THE Y DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCY(1) == HLBCY(2)
+!
+  IF(NHALO == 1) THEN
+    IS=IJB+1
+    IN=IJE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF
+!
+  ISF=IS-1
+  INF=IN-1
+!
+  PR(:,ISF:INF,:) = 1./6. * ( (2.*PSRC(:,IS:IN,:) + 5.*PSRC(:,IS-1:IN-1,:) -   &
+                   PSRC(:,IS-2:IN-2,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1:IN-1,:))) &
+                            + (5.*PSRC(:,IS:IN,:) + 2.*PSRC(:,IS-1:IN-1,:) -   &
+                   PSRC(:,IS+1:IN+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-1:IN-1,:))) )
+!
+  PR(:,ISF-1,:) = 1./6. * ( (2.*PSRC(:,IS-1,:) + 5.*PSRC(:,IS-2,:) -           &
+                         TPHALO2%SOUTH(:,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-2,:))) &
+                          + (5.*PSRC(:,IS-1,:) + 2.*PSRC(:,IS-2,:) -           &
+                               PSRC(:,IS,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-2,:))) )
+!
+  PR(:,INF+1,:) = 1./6. * ( (2.*PSRC(:,IN+1,:) + 5.*PSRC(:,IN,:) -             &
+                               PSRC(:,IN-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN,:))) &
+                          + (5.*PSRC(:,IN+1,:) + 2.*PSRC(:,IN,:) -             &
+                           TPHALO2%NORTH(:,:)) * (0.5-SIGN(0.5,PRVCT(:,IN,:))) )
+!
+!       OPEN, WALL, NEST CASES IN THE Y DIRECTION 
+!
+CASE ('OPEN','WALL','NEST')
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER 
+!
+  IF (LSOUTH_ll()) THEN
+    IS=IJB+2
+  ELSE
+    IF(NHALO == 1) THEN
+      IS=IJB+1
+    ELSE
+      IS=IJB
+    ENDIF
+  ENDIF
+  IF (LNORTH_ll() .OR. NHALO == 1) THEN
+    IN=IJE
+  ELSE
+    IN=IJE
+  END IF
+!
+  ISF=IS-1
+  INF=IN-1
+!
+  IF(LSOUTH_ll()) THEN
+    PR(:,ISF-1,:) = PSRC(:,IS-2,:) * (0.5+SIGN(0.5,PRVCT(:,IS-2,:))) &
+                  + PSRC(:,IS-1,:) * (0.5-SIGN(0.5,PRVCT(:,IS-2,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(:,ISF-1,:) = 1./6. * ( (2.*PSRC(:,IS-1,:) + 5.*PSRC(:,IS-2,:) -         &
+                         TPHALO2%SOUTH(:,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-2,:))) &
+                          + (5.*PSRC(:,IS-1,:) + 2.*PSRC(:,IS-2,:) -           &
+                               PSRC(:,IS,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-2,:))) )
+  ENDIF
+!
+  IF(LNORTH_ll()) THEN
+    PR(:,INF+1,:) = PSRC(:,IN,:)   * (0.5+SIGN(0.5,PRVCT(:,IN,:))) &
+                  + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(:,INF+1,:) = 1./6. * ( (2.*PSRC(:,IN+1,:) + 5.*PSRC(:,IN,:) -           &
+                               PSRC(:,IN-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN,:))) &
+                          + (5.*PSRC(:,IN+1,:) + 2.*PSRC(:,IN,:) -             &
+                           TPHALO2%NORTH(:,:)) * (0.5-SIGN(0.5,PRVCT(:,IN,:))) )
+  ENDIF
+!
+!       USE A 3RD ORDER UPSTREAM SCHEME ELSEWHERE
+!
+  PR(:,ISF:INF,:) = 1./6. * ( (2.*PSRC(:,IS:IN,:) + 5.*PSRC(:,IS-1:IN-1,:) -   &
+                   PSRC(:,IS-2:IN-2,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1:IN-1,:))) &
+                            + (5.*PSRC(:,IS:IN,:) + 2.*PSRC(:,IS-1:IN-1,:) -   &
+                   PSRC(:,IS+1:IN+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-1:IN-1,:))) )
+!
+END SELECT
+!
+PR = PR * PRVCT
+!
+END SUBROUTINE ADVEC_3RD_ORDER_VY
+!
+!-------------------------------------------------------------------------------
+!
+!     ##############################################################
+      SUBROUTINE ADVEC_3RD_ORDER_MY(HLBCY, PSRC, PRVCT, PR, TPHALO2)
+!     ##############################################################
+!!
+!!**** ADVEC_3RD_ORDER_MY - 3rd order upstream fluxes of variable in Y direction
+!!     Input variable PSRC is on MASS grid, and output PR is on V grid
+!!
+!!    AUTHOR
+!!    ------
+!!      C.Lac            * CNRM/GMME *               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER:: IS,IN,ISF,INF   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE Y DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IS=IJB+1
+    IN=IJE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF
+!
+  ISF=IS
+  INF=IN
+!
+  PR(:,ISF:INF,:) = 1./6. * ( (2.*PSRC(:,IS:IN,:) + 5.*PSRC(:,IS-1:IN-1,:) -   &
+                       PSRC(:,IS-2:IN-2,:)) * (0.5+SIGN(0.5,PRVCT(:,IS:IN,:))) &
+                            + (5.*PSRC(:,IS:IN,:) + 2.*PSRC(:,IS-1:IN-1,:) -   &
+                       PSRC(:,IS+1:IN+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS:IN,:))) )
+!
+  PR(:,ISF-1,:) = 1./6. * ( (2.*PSRC(:,IS-1,:) + 5.*PSRC(:,IS-2,:) -           &
+                         TPHALO2%SOUTH(:,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) &
+                          + (5.*PSRC(:,IS-1,:) + 2.*PSRC(:,IS-2,:) -           &
+                               PSRC(:,IS,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:))) )
+!
+  PR(:,INF+1,:) = 1./6. * ( (2.*PSRC(:,IN+1,:) + 5.*PSRC(:,IN,:) -             &
+                             PSRC(:,IN-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) &
+                          + (5.*PSRC(:,IN+1,:) + 2.*PSRC(:,IN,:) -             &
+                         TPHALO2%NORTH(:,:)) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:))) )
+!
+!       OPEN, WALL, NEST CASES IN THE Y DIRECTION 
+!
+CASE ('OPEN','WALL','NEST')
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER 
+!
+  IF (LSOUTH_ll()) THEN
+    IS=IJB+1
+  ELSE
+    IF(NHALO == 1) THEN
+      IS=IJB+1
+    ELSE
+      IS=IJB
+    ENDIF
+  ENDIF
+  IF (LNORTH_ll() .OR. NHALO == 1) THEN
+    IN=IJE
+  ELSE
+    IN=IJE
+  END IF
+!
+  ISF=IS
+  INF=IN
+!
+  IF(LSOUTH_ll()) THEN
+    PR(:,ISF-1,:) = PSRC(:,IS-2,:) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) &
+                  + PSRC(:,IS-1,:) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(:,ISF-1,:) = 1./6. * ( (2.*PSRC(:,IS-1,:) + 5.*PSRC(:,IS-2,:) -         &
+                         TPHALO2%SOUTH(:,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) &
+                          + (5.*PSRC(:,IS-1,:) + 2.*PSRC(:,IS-2,:) -           &
+                               PSRC(:,IS,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:))) )
+  END IF
+!
+  IF(LNORTH_ll()) THEN
+    PR(:,INF+1,:) = PSRC(:,IN,:)   * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) &
+                  + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
+  ELSEIF (NHALO == 1) THEN
+    PR(:,INF+1,:) = 1./6. * ( (2.*PSRC(:,IN+1,:) + 5.*PSRC(:,IN,:) -           &
+                             PSRC(:,IN-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) &
+                          + (5.*PSRC(:,IN+1,:) + 2.*PSRC(:,IN,:) -             &
+                         TPHALO2%NORTH(:,:)) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:))) )
+  END IF
+!
+!       USE A THIRD ORDER UPSTREAM SCHEME ELSEWHERE 
+!
+   PR(:,ISF:INF,:) = 1./6. * ( (2.*PSRC(:,IS:IN,:) + 5.*PSRC(:,IS-1:IN-1,:) -  &
+                       PSRC(:,IS-2:IN-2,:)) * (0.5+SIGN(0.5,PRVCT(:,IS:IN,:))) &
+                            + (5.*PSRC(:,IS:IN,:) + 2.*PSRC(:,IS-1:IN-1,:) -   &
+                       PSRC(:,IS+1:IN+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS:IN,:))) )
+!
+END SELECT
+!
+PR = PR * PRVCT
+!
+END SUBROUTINE ADVEC_3RD_ORDER_MY
+!
+!-------------------------------------------------------------------------------
+!
+!     #######################################
+      FUNCTION UP3_WZ(PSRC, PRWCT) RESULT(PR)
+!     #######################################
+!!
+!!****  UP3_WZ - upstream fluxes of W in Z direction
+!!              input variable PSRC is on W grid, and output PR is on MASS grid
+!!
+!!    AUTHOR
+!!    ------
+!!      C.Lac            * CNRM/GMME *               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_CONF
+USE MODD_PARAMETERS,ONLY: JPVEXT
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on W grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IKB    ! Begining useful area in x,y,z directions
+INTEGER :: IKE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+IKB = 1 + JPVEXT
+IKE = SIZE(PSRC,3) - JPVEXT
+!
+!-------------------------------------------------------------------------------
+!
+! upstream flux on mass points
+!
+PR(:,:,IKB:IKE-1) = 1./6. * ( (2.*PSRC(:,:,IKB+1:IKE) + 5.*PSRC(:,:,IKB:IKE-1)-&
+                 PSRC(:,:,IKB-1:IKE-2)) * (0.5+SIGN(0.5,PRWCT(:,:,IKB:IKE-1))) &
+                            + (5.*PSRC(:,:,IKB+1:IKE) + 2.*PSRC(:,:,IKB:IKE-1)-&
+                 PSRC(:,:,IKB+2:IKE+1)) * (0.5-SIGN(0.5,PRWCT(:,:,IKB:IKE-1))) )
+!
+PR(:,:,IKB-1) = PSRC(:,:,IKB-1) * (0.5+SIGN(0.5,PRWCT(:,:,IKB-1))) &
+              + PSRC(:,:,IKB  ) * (0.5-SIGN(0.5,PRWCT(:,:,IKB-1)))
+PR(:,:,IKE  ) = PSRC(:,:,IKE  ) * (0.5+SIGN(0.5,PRWCT(:,:,IKE  ))) &
+              + PSRC(:,:,IKE+1) * (0.5-SIGN(0.5,PRWCT(:,:,IKE  )))
+PR(:,:,IKE+1) = -999.                  
+!
+PR = PR * PRWCT
+!
+END FUNCTION UP3_WZ
+!
+!-------------------------------------------------------------------------------
+!
+!     #######################################
+      FUNCTION UP3_MZ(PSRC, PRWCT) RESULT(PR)
+!     #######################################
+!!
+!!****  UP3_MZ - upstream fluxes of variable in Z direction
+!!      input variable PSRC is on MASS grid, and output PR is on W grid
+!!
+!!    AUTHOR
+!!    ------
+!!      C.Lac            * CNRM/GMME *               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_CONF
+USE MODD_PARAMETERS,ONLY: JPVEXT
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on W grid
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IKB    ! Begining useful area in x,y,z directions
+INTEGER :: IKE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+IKB = 1 + JPVEXT
+IKE = SIZE(PSRC,3) - JPVEXT
+!
+!-------------------------------------------------------------------------------
+!
+! upstream flux on mass points
+!
+PR(:,:,IKB+1:IKE) = 1./6. * ( (2.*PSRC(:,:,IKB+1:IKE) + 5.*PSRC(:,:,IKB:IKE-1)-&
+                 PSRC(:,:,IKB-1:IKE-2)) * (0.5+SIGN(0.5,PRWCT(:,:,IKB+1:IKE))) &
+                            + (5.*PSRC(:,:,IKB+1:IKE) + 2.*PSRC(:,:,IKB:IKE-1)-&
+                 PSRC(:,:,IKB+2:IKE+1)) * (0.5-SIGN(0.5,PRWCT(:,:,IKB+1:IKE))) )
+!
+PR(:,:,IKB  ) = PSRC(:,:,IKB-1) * (0.5+SIGN(0.5,PRWCT(:,:,IKB  ))) &
+              + PSRC(:,:,IKB  ) * (0.5-SIGN(0.5,PRWCT(:,:,IKB  )))
+PR(:,:,IKE+1) = PSRC(:,:,IKE  ) * (0.5+SIGN(0.5,PRWCT(:,:,IKE+1))) &
+              + PSRC(:,:,IKE+1) * (0.5-SIGN(0.5,PRWCT(:,:,IKE+1)))
+PR(:,:,IKB-1) = -999.                  
+!
+PR = PR * PRWCT
+!
+END FUNCTION UP3_MZ
diff --git a/src/MNH/advec_weno_k_1_aux.f90 b/src/MNH/advec_weno_k_1_aux.f90
new file mode 100644
index 000000000..90abbd47f
--- /dev/null
+++ b/src/MNH/advec_weno_k_1_aux.f90
@@ -0,0 +1,343 @@
+!     ##############################
+      MODULE MODI_ADVEC_WENO_K_1_AUX
+!     ##############################
+!
+INTERFACE
+!
+FUNCTION UP_UX(PSRC, PRUCT) RESULT(PR)
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR ! output src term
+END FUNCTION UP_UX
+!
+FUNCTION UP_MX(PSRC, PRUCT) RESULT(PR)
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR ! output src term
+END FUNCTION UP_MX
+!
+FUNCTION UP_VY(PSRC, PRVCT) RESULT(PR)
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR ! output src term
+END FUNCTION UP_VY
+!
+FUNCTION UP_MY(PSRC, PRVCT) RESULT(PR)
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR ! output src term
+END FUNCTION UP_MY
+!
+FUNCTION UP_WZ(PSRC, PRWCT) RESULT(PR)
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR ! output src term
+END FUNCTION UP_WZ
+!
+FUNCTION UP_MZ(PSRC, PRWCT) RESULT(PR)
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR ! output src term
+END FUNCTION UP_MZ
+!
+END INTERFACE
+!
+END MODULE MODI_ADVEC_WENO_K_1_AUX
+!
+!-------------------------------------------------------------------------------
+!
+!     ########################################################################
+      FUNCTION UP_UX(PSRC, PRUCT) RESULT(PR)
+!     ########################################################################
+!!
+!!****  UP_UX - upstream fluxes of U in X direction
+!!              input variable PSRC is on U grid, and output PR is on mass grid
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+! upstream flux on mass points
+!
+PR(IIB:IIE,:,:) = PSRC(IIB:IIE,:,:)     * (0.5+SIGN(0.5,PRUCT(IIB:IIE,:,:))) +&
+                  PSRC(IIB+1:IIE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IIB:IIE,:,:)))
+!
+PR(IIB-1,:,:) = PR(IIE,:,:)
+PR(IIE+1,:,:) = PR(IIB,:,:)
+!
+PR = PR * PRUCT
+!
+END FUNCTION UP_UX
+!
+!-------------------------------------------------------------------------------
+!
+!     ########################################################################
+      FUNCTION UP_MX(PSRC, PRUCT) RESULT(PR)
+!     ########################################################################
+!!
+!!****  UP_MX - upstream fluxes of variable in X direction
+!!              input variable PSRC is on MASS grid, and output PR is on U grid
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS GRID at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on U GRID
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+! upstream flux on mass points
+!
+PR(IIB:IIE,:,:) = PSRC(IIB-1:IIE-1,:,:) * (0.5 + SIGN(0.5,PRUCT(IIB:IIE,:,:))) &
+                  + PSRC(IIB:IIE,:,:)   * (0.5 - SIGN(0.5,PRUCT(IIB:IIE,:,:)))
+!
+PR(IIB-1,:,:) = PR(IIE,:,:)
+PR(IIE+1,:,:) = PR(IIB,:,:)
+!
+PR = PR * PRUCT
+!
+END FUNCTION UP_MX
+!
+!-------------------------------------------------------------------------------
+!
+!     ########################################################################
+      FUNCTION UP_VY(PSRC, PRVCT) RESULT(PR)
+!     ########################################################################
+!!
+!!****  UP_VY - upstream fluxes of V in Y direction
+!!              input variable PSRC is on V grid, and output PR is on MASS grid
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on V grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+! upstream flux on mass points
+!
+PR(:,IJB:IJE,:) = PSRC(:,IJB:IJE,:)     * (0.5+SIGN(0.5,PRVCT(:,IJB:IJE,:))) +&
+                  PSRC(:,IJB+1:IJE+1,:) * (0.5-SIGN(0.5,PRVCT(:,IJB:IJE,:)))
+!
+PR(:,IJB-1,:) = PR(:,IJE,:)
+PR(:,IJE+1,:) = PR(:,IJB,:)
+!
+PR = PR * PRVCT
+!
+END FUNCTION UP_VY
+!
+!-------------------------------------------------------------------------------
+!
+!     ########################################################################
+      FUNCTION UP_MY(PSRC, PRVCT) RESULT(PR)
+!     ########################################################################
+!!
+!!****  UP_MY - upstream fluxes of variable in Y direction
+!!              input variable PSRC is on MASS grid, and output PR is on V grid
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on V GRID
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+! upstream flux on mass points
+!
+PR(:,IJB:IJE,:) = PSRC(:,IJB-1:IJE-1,:) * (0.5+SIGN(0.5,PRVCT(:,IJB:IJE,:))) +&
+                  PSRC(:,IJB:IJE,:)     * (0.5-SIGN(0.5,PRVCT(:,IJB:IJE,:)))
+!
+PR(:,IJB-1,:) = PR(:,IJE,:)
+PR(:,IJE+1,:) = PR(:,IJB,:)
+!
+PR = PR * PRVCT
+!
+END FUNCTION UP_MY
+!
+!-------------------------------------------------------------------------------
+!
+!     ########################################################################
+      FUNCTION UP_WZ(PSRC, PRWCT) RESULT(PR)
+!     ########################################################################
+!!
+!!****  UP_WZ - upstream fluxes of W in Z direction
+!!              input variable PSRC is on W grid, and output PR is on MASS grid
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_PARAMETERS,ONLY: JPVEXT
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on W grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IKB    ! Begining useful area in x,y,z directions
+INTEGER :: IKE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+IKB = 1 + JPVEXT
+IKE = SIZE(PSRC,3) - JPVEXT
+!
+! upstream flux on mass points
+!
+PR(:,:,IKB:IKE) = PSRC(:,:,IKB:IKE)     * (0.5+SIGN(0.5,PRWCT(:,:,IKB:IKE))) +&
+                  PSRC(:,:,IKB+1:IKE+1) * (0.5-SIGN(0.5,PRWCT(:,:,IKB:IKE)))
+!
+PR(:,:,IKB-1) = PR(:,:,IKB)
+PR(:,:,IKE+1) = PR(:,:,IKE)
+!
+PR = PR * PRWCT
+!
+END FUNCTION UP_WZ
+!
+!-------------------------------------------------------------------------------
+!
+!     ########################################################################
+      FUNCTION UP_MZ(PSRC, PRWCT) RESULT(PR)
+!     ########################################################################
+!!
+!!****  UP_MZ - upstream fluxes of variable in Z direction
+!!              input variable PSRC is on MASS grid, and output PR is on W grid
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_PARAMETERS,ONLY: JPVEXT
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on W grid
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IKB    ! Begining useful area in x,y,z directions
+INTEGER :: IKE    ! End useful area in x,y,z directions
+!
+!-------------------------------------------------------------------------------
+!
+IKB = 1 + JPVEXT
+IKE = SIZE(PSRC,3) - JPVEXT
+!
+! upstream flux on mass points
+!
+PR(:,:,IKB:IKE) = PSRC(:,:,IKB-1:IKE-1) * (0.5+SIGN(0.5,PRWCT(:,:,IKB:IKE))) +&
+                  PSRC(:,:,IKB:IKE)     * (0.5-SIGN(0.5,PRWCT(:,:,IKB:IKE)))
+!
+PR(:,:,IKB-1) = PR(:,:,IKB)
+PR(:,:,IKE+1) = PR(:,:,IKE)
+!
+PR = PR * PRWCT
+!
+END FUNCTION UP_MZ
diff --git a/src/MNH/advec_weno_k_2_aux.f90 b/src/MNH/advec_weno_k_2_aux.f90
new file mode 100644
index 000000000..1f3f42fc2
--- /dev/null
+++ b/src/MNH/advec_weno_k_2_aux.f90
@@ -0,0 +1,1421 @@
+!     ##############################
+      MODULE MODI_ADVEC_WENO_K_2_AUX
+!     ##############################
+!
+INTERFACE
+!
+      SUBROUTINE ADVEC_WENO_K_2_UX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_2_UX
+!
+!                    ----------------------------
+!
+      SUBROUTINE ADVEC_WENO_K_2_MX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_2_MX
+!
+!                     ---------------------------
+!
+      SUBROUTINE ADVEC_WENO_K_2_VY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_2_VY
+!
+!                  ------------------------------
+!
+      SUBROUTINE ADVEC_WENO_K_2_MY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_2_MY
+!
+!                     -------------------------------
+!
+FUNCTION WENO_K_2_WZ(PSRC, PRWCT) RESULT(PR)
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on W grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+END FUNCTION WENO_K_2_WZ
+!
+!                      ------------------------------
+!
+FUNCTION WENO_K_2_MZ(PSRC, PRWCT) RESULT(PR)
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on W grid
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+END FUNCTION WENO_K_2_MZ
+!
+END INTERFACE
+!
+END MODULE MODI_ADVEC_WENO_K_2_AUX
+!
+!-----------------------------------------------------------------------------
+!
+!     ############################################################
+      SUBROUTINE ADVEC_WENO_K_2_UX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!     ############################################################
+!!
+!!**** Computes PRUCT * PUT. Upstream fluxes of U in X direction.  
+!!     Input PUT is on U Grid 'ie' (i,j,k) based on UGRID reference
+!!     Output PR is on mass Grid 'ie' (i+1/2,j,k) based on UGRID reference
+!!              
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+USE MODI_GET_HALO
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER:: IW,IE,IWF,IEF   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFPOS1, ZFPOS2
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFNEG1, ZFNEG2
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBPOS1, ZBPOS2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBNEG1, ZBNEG2
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./3.
+REAL, PARAMETER :: ZGAMMA2 = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-----------------------------------------------------------------------------
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1  = 0.0
+ZFPOS2  = 0.0
+ZFNEG1  = 0.0
+ZFNEG2  = 0.0
+ZBPOS1  = 0.0
+ZBPOS2  = 0.0
+ZBNEG1  = 0.0
+ZBNEG2  = 0.0
+ZOMP1   = 0.0
+ZOMP2   = 0.0
+ZOMN1   = 0.0
+ZOMN2   = 0.0
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE X DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IW=IIB
+    IE=IIE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF
+!
+! r: many left cells in regard to 'i' cell for each stencil
+!
+! intermediate fluxes at the mass point on Ugrid u(i+1/2,j,k) for positive wind
+! (r=1 for the first stencil ZFPOS1, r=0 for the second ZFPOS2)
+!
+   ZFPOS1(IW:IE+1,:,:) = 0.5 * (3.0*PSRC(IW:IE+1,:,:) - PSRC(IW-1:IE,:,:))
+   ZFPOS1(IW-1,   :,:) = 0.5 * (3.0*PSRC(IW-1,   :,:) - TPHALO2%WEST(:,:))
+!
+   ZFPOS2(IW-1:IE,:,:) = 0.5 * (PSRC(IW-1:IE,:,:) + PSRC(IW:IE+1,:,:))
+   ZFPOS2(IE+1,   :,:) = 0.5 * (PSRC(IE+1,   :,:) + TPHALO2%EAST(:,:))
+!
+! intermediate flux at the mass point on Ugrid (i+1/2,j,k) for negative wind 
+! case (from the right to the left)
+! (r=0 for the second stencil ZFNEG2=ZFPOS2, r=-1 for the first ZFNEG1)  
+!
+  ZFNEG1(IW-1:IE-1,:,:) = 0.5 * (3.0*PSRC(IW:IE,:,:) - PSRC(IW+1:IE+1,:,:))
+  ZFNEG1(IE,   :,:) = 0.5 * (3.0*PSRC(IE+1,   :,:) - TPHALO2%EAST(:,:))
+  ZFNEG2(IW-1:IE,:,:) = 0.5 * (PSRC(IW-1:IE,:,:) + PSRC(IW:IE+1,:,:))
+  ZFNEG2(IE+1,   :,:) = 0.5 * (PSRC(IE+1,   :,:) + TPHALO2%EAST(:,:))
+!
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(IW:IE+1,:,:) = (PSRC(IW:IE+1,:,:) - PSRC(IW-1:IE,:,:))**2
+  ZBPOS1(IW-1,   :,:) = (PSRC(IW-1,   :,:) - TPHALO2%WEST(:,:))**2
+!
+  ZBPOS2(IW-1:IE,:,:) = (PSRC(IW:IE+1,:,:) - PSRC(IW-1:IE,:,:))**2
+  ZBPOS2(IE+1,   :,:) = (TPHALO2%EAST(:,:) - PSRC(IE+1,   :,:))**2
+!
+! smoothness indicators for negative wind case
+!       
+  ZBNEG1(IW-1:IE-1,:,:) = (PSRC(IW:IE,:,:)   - PSRC(IW+1:IE+1,:,:))**2
+  ZBNEG1(IE,   :,:)     = (PSRC(IE+1,   :,:) - TPHALO2%EAST(:,:))**2
+  ZBNEG2(IW-1:IE,:,:)   = (PSRC(IW-1:IE,:,:) - PSRC(IW:IE+1,:,:))**2
+  ZBNEG2(IE+1,   :,:)   = (PSRC(IE+1,   :,:) - TPHALO2%EAST(:,:))**2
+!
+! WENO weights
+!
+  ZOMP1 = ZGAMMA1 / (ZEPS + ZBPOS1)**2
+  ZOMP2 = ZGAMMA2 / (ZEPS + ZBPOS2)**2
+  ZOMN1 = ZGAMMA1 / (ZEPS + ZBNEG1)**2
+  ZOMN2 = ZGAMMA2 / (ZEPS + ZBNEG2)**2
+!
+! WENO fluxes
+!
+  PR = (ZOMN2/(ZOMN1+ZOMN2) * ZFNEG2 +                           &
+       (ZOMN1/(ZOMN1+ZOMN2) * ZFNEG1)) * (0.5-SIGN(0.5,PRUCT)) + &
+       (ZOMP2/(ZOMP1+ZOMP2) * ZFPOS2 +                           &
+       (ZOMP1/(ZOMP1+ZOMP2) * ZFPOS1)) * (0.5+SIGN(0.5,PRUCT))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE X DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IW=IIB
+  IE=IIE
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER
+!
+  IF(LWEST_ll()) THEN
+    PR(IW-1,:,:) = PSRC(IW-1,:,:) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) + PSRC(IW,:,:) * (0.5-SIGN(0.5,PRUCT(IW-1,:,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(IW-1,:,:) = 0.5 * (3.0*PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))
+    ZFPOS2(IW-1,:,:) = 0.5 * (PSRC(IW-1,    :,:) + PSRC(IW,:,:))
+    ZBPOS1(IW-1,:,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2
+    ZBPOS2(IW-1,:,:) = (PSRC(IW,  :,:) - PSRC(IW-1,:,:))**2
+!
+    ZFNEG1(IW-1,:,:) = 0.5 * (3.0*PSRC(IW,:,:) - PSRC(IW+1,:,:))
+    ZFNEG2(IW-1,:,:) = 0.5 * (PSRC(IW-1,  :,:) + PSRC(IW,  :,:))
+    ZBNEG1(IW-1,:,:) = (PSRC(IW,  :,:) - PSRC(IW+1,:,:))**2
+    ZBNEG2(IW-1,:,:) = (PSRC(IW-1,:,:) - PSRC(IW,  :,:))**2
+!
+    ZOMP1(IW-1,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW-1,:,:))**2
+    ZOMP2(IW-1,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW-1,:,:))**2
+    ZOMN1(IW-1,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW-1,:,:))**2
+    ZOMN2(IW-1,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW-1,:,:))**2
+!
+    PR(IW-1,:,:) = (ZOMN2(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) * ZFNEG2(IW-1,:,:) +   &
+                   (ZOMN1(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) * ZFNEG1(IW-1,:,:))) * (0.5-SIGN(0.5,PRUCT(IW-1,:,:))) + &
+                   (ZOMP2(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) * ZFPOS2(IW-1,:,:) +  &
+                   (ZOMP1(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) * ZFPOS1(IW-1,:,:))) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:)))
+!
+  ENDIF
+!
+  IF(LEAST_ll()) THEN
+    PR(IE,:,:) = PSRC(IE,:,:) * (0.5+SIGN(0.5,PRUCT(IE,:,:))) + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE,:,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(IE,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE-1,:,:))
+    ZFPOS2(IE,:,:) = 0.5 * (PSRC(IE,    :,:) + PSRC(IE+1,:,:)) 
+    ZBPOS1(IE,:,:) = (PSRC(IE,:,:) - PSRC(IE-1,:,:))**2
+    ZBPOS2(IE,:,:) = (PSRC(IE+1,:,:) - PSRC(IE,:,:))**2
+!
+    ZFNEG1(IE,:,:) = 0.5 * (3.0*PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))
+    ZFNEG2(IE,:,:) = 0.5 * (PSRC(IE,:,:) + PSRC(IE+1,:,:))
+    ZBNEG1(IE,:,:) = (PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))**2
+    ZBNEG2(IE,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,:,:))**2
+!
+    ZOMP1(IE,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IE,:,:))**2
+    ZOMP2(IE,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IE,:,:))**2
+    ZOMN1(IE,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IE,:,:))**2
+    ZOMN2(IE,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IE,:,:))**2
+!
+    PR(IE,:,:) = (ZOMN2(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)) * ZFNEG2(IE,:,:) +  &
+       (ZOMN1(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)) * ZFNEG1(IE,:,:))) * (0.5-SIGN(0.5,PRUCT(IE,:,:))) + &
+                 (ZOMP2(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)) * ZFPOS2(IE,:,:) +  &
+       (ZOMP1(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)) * ZFPOS1(IE,:,:))) * (0.5+SIGN(0.5,PRUCT(IE,:,:)))
+!
+  ENDIF
+!
+!      USE A THIRD ORDER UPSTREAM WENO SCHEME ELSEWHERE 
+!
+  ZFPOS1(IW:IE-1,:,:) = 0.5 * (3.0*PSRC(IW:IE-1,:,:) - PSRC(IW-1:IE-2,:,:))
+  ZFPOS2(IW:IE-1,:,:) = 0.5 * (PSRC(IW:IE-1,    :,:) + PSRC(IW+1:IE,  :,:))
+  ZBPOS1(IW:IE-1,:,:) = (PSRC(IW:IE-1,:,:) - PSRC(IW-1:IE-2,:,:))**2
+  ZBPOS2(IW:IE-1,:,:) = (PSRC(IW+1:IE,:,:) - PSRC(IW:IE-1,  :,:))**2
+!
+  ZFNEG1(IW:IE-1,:,:) = 0.5 * (3.0*PSRC(IW+1:IE,:,:) - PSRC(IW+2:IE+1,:,:))
+  ZFNEG2(IW:IE-1,:,:) = 0.5 * (PSRC(IW:IE-1,    :,:) + PSRC(IW+1:IE,  :,:))
+  ZBNEG1(IW:IE-1,:,:) = (PSRC(IW+1:IE,:,:) - PSRC(IW+2:IE+1,:,:))**2
+  ZBNEG2(IW:IE-1,:,:)   = (PSRC(IW:IE-1,:,:) - PSRC(IW+1:IE,:,:))**2
+!
+  ZOMP1(IW:IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW:IE-1,:,:))**2
+  ZOMP2(IW:IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW:IE-1,:,:))**2
+  ZOMN1(IW:IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW:IE-1,:,:))**2
+  ZOMN2(IW:IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW:IE-1,:,:))**2
+!
+    PR(IW:IE-1,:,:) = (ZOMN2(IW:IE-1,:,:)/(ZOMN1(IW:IE-1,:,:)+ZOMN2(IW:IE-1,:,:)) * ZFNEG2(IW:IE-1,:,:) +   &
+       (ZOMN1(IW:IE-1,:,:)/(ZOMN1(IW:IE-1,:,:)+ZOMN2(IW:IE-1,:,:)) * ZFNEG1(IW:IE-1,:,:))) * (0.5-SIGN(0.5,PRUCT(IW:IE-1,:,:))) + &
+       (ZOMP2(IW:IE-1,:,:)/(ZOMP1(IW:IE-1,:,:)+ZOMP2(IW:IE-1,:,:)) * ZFPOS2(IW:IE-1,:,:) +   &
+       (ZOMP1(IW:IE-1,:,:)/(ZOMP1(IW:IE-1,:,:)+ZOMP2(IW:IE-1,:,:)) * ZFPOS1(IW:IE-1,:,:))) * (0.5+SIGN(0.5,PRUCT(IW:IE-1,:,:)))
+!
+END SELECT
+!
+PR = PR * PRUCT
+CALL GET_HALO(PR)
+!
+END SUBROUTINE ADVEC_WENO_K_2_UX
+!
+!------------------------------------------------------------------------------
+!
+!     ############################################################
+      SUBROUTINE ADVEC_WENO_K_2_MX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!     ############################################################
+!!
+!!**** Computes PRUCT * PWT (or PRUCT * PVT). Upstream fluxes of W (or V) 
+!!     variables in X direction.  
+!!     Input PWT is on W Grid 'ie' (i,j,k) based on WGRID reference
+!!     Output PR is on mass Grid 'ie' (i-1/2,j,k) based on WGRID reference  
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*                
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+USE MODI_GET_HALO
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER::  IW,IE   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFPOS1, ZFPOS2
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFNEG1, ZFNEG2
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBPOS1, ZBPOS2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBNEG1, ZBNEG2
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./3.
+REAL, PARAMETER :: ZGAMMA2 = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-----------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0 
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0 
+!
+!------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE X DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IW=IIB
+    IE=IIE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF  
+!
+! intermediate fluxes for positive wind case
+!
+  ZFPOS1(IW+1:IE+1,:,:) = 0.5 * (3.0*PSRC(IW:IE,:,:) - PSRC(IW-1:IE-1,:,:))
+  ZFPOS1(IW,       :,:) = 0.5 * (3.0*PSRC(IW-1, :,:) - TPHALO2%WEST(:,:))
+!!  ZFPOS1(IW-1,     :,:) = - 999.
+!
+  ZFPOS2(IW:IE+1,:,:) = 0.5 * (PSRC(IW-1:IE,:,:) + PSRC(IW:IE+1,:,:))
+  ZFPOS2(IW-1,   :,:) = 0.5 * (TPHALO2%WEST(:,:) + PSRC(IW-1,   :,:))
+!
+! intermediate flux for negative wind case
+!
+  ZFNEG1(IW-1:IE,:,:) = 0.5 * (3.0*PSRC(IW-1:IE,:,:) - PSRC(IW:IE+1,:,:))
+  ZFNEG1(IE+1,   :,:) = 0.5 * (3.0*PSRC(IE+1,   :,:) - TPHALO2%EAST(:,:))
+!
+  ZFNEG2(IW:IE+1,:,:) = 0.5 * (PSRC(IW:IE+1,:,:) + PSRC(IW-1:IE,:,:))
+  ZFNEG2(IW-1,       :,:) = 0.5 * (PSRC(IW-1, :,:) + TPHALO2%WEST(:,:))
+! 
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(IW+1:IE+1,:,:) = (PSRC(IW:IE,:,:) - PSRC(IW-1:IE-1,:,:))**2
+  ZBPOS1(IW,       :,:) = (PSRC(IW-1, :,:) - TPHALO2%WEST(:,:))**2
+!!  ZBPOS1(IW-1,     :,:) = - 999.
+!
+  ZBPOS2(IW:IE+1,:,:) = (PSRC(IW:IE+1,:,:) - PSRC(IW-1:IE,:,:))**2
+  ZBPOS2(IW-1,   :,:) = (PSRC(IW-1,   :,:) - TPHALO2%WEST(:,:))**2
+!
+! smoothness indicators for negative wind case
+!       
+  ZBNEG1(IW-1:IE,:,:) = (PSRC(IW-1:IE,:,:) - PSRC(IW:IE+1,:,:))**2
+  ZBNEG1(IE+1,   :,:) = (PSRC(IE+1,   :,:) - TPHALO2%EAST(:,:))**2
+!
+  ZBNEG2(IW:IE+1,:,:) = (PSRC(IW-1:IE,:,:) - PSRC(IW:IE+1,:,:))**2
+  ZBNEG2(IW-1,   :,:) = (TPHALO2%WEST(:,:) - PSRC(IW-1,:,:))**2
+!
+! WENO weights
+!
+  ZOMP1 = ZGAMMA1 / (ZEPS + ZBPOS1)**2
+  ZOMP2 = ZGAMMA2 / (ZEPS + ZBPOS2)**2
+  ZOMN1 = ZGAMMA1 / (ZEPS + ZBNEG1)**2
+  ZOMN2 = ZGAMMA2 / (ZEPS + ZBNEG2)**2
+!
+! WENO fluxes
+!
+  PR = (ZOMP2/(ZOMP1+ZOMP2) * ZFPOS2 +                            &
+       (ZOMP1/(ZOMP1+ZOMP2) * ZFPOS1)) * (0.5+SIGN(0.5,PRUCT )) + &
+       (ZOMN2/(ZOMN1+ZOMN2) * ZFNEG2 +                            &
+       (ZOMN1/(ZOMN1+ZOMN2) * ZFNEG1)) * (0.5-SIGN(0.5,PRUCT ))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE X DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IW=IIB
+  IE=IIE
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER
+!
+  IF(LWEST_ll()) THEN
+    PR(IW,:,:) = PSRC(IW-1,:,:) * (0.5+SIGN(0.5,PRUCT(IW,:,:))) + PSRC(IW,:,:) * (0.5-SIGN(0.5,PRUCT(IW,:,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(IW,:,:) = 0.5 * (3.0*PSRC(IW-1, :,:) - TPHALO2%WEST(:,:))
+    ZFPOS2(IW,:,:) = 0.5 * (PSRC(IW-1,     :,:) + PSRC(IW,     :,:))
+    ZBPOS1(IW,:,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2
+    ZBPOS2(IW,:,:) = (PSRC(IW,  :,:) - PSRC(IW-1,:,:))**2
+!
+    ZFNEG1(IW,:,:) = 0.5 * (3.0*PSRC(IW,:,:) - PSRC(IW+1,:,:))
+    ZFNEG2(IW,:,:) = 0.5 * (PSRC(IW,    :,:) + PSRC(IW-1,:,:))
+    ZBNEG1(IW,:,:) = (PSRC(IW,:,:) - PSRC(IW+1,:,:))**2
+    ZBNEG2(IW,:,:) = (PSRC(IW-1,:,:) - PSRC(IW,:,:))**2
+!
+    ZOMP1(IW,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW,:,:))**2
+    ZOMP2(IW,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW,:,:))**2
+    ZOMN1(IW,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW,:,:))**2
+    ZOMN2(IW,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW,:,:))**2
+!
+    PR(IW,:,:) = (ZOMP2(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS2(IW,:,:) +  &
+       (ZOMP1(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS1(IW,:,:))) * (0.5+SIGN(0.5,PRUCT(IW,:,:))) + &
+       (ZOMN2(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * ZFNEG2(IW,:,:) +   &
+       (ZOMN1(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * ZFNEG1(IW,:,:))) * (0.5-SIGN(0.5,PRUCT(IW,:,:)))
+!
+  ENDIF
+!
+  IF(LEAST_ll()) THEN
+    PR(IE+1,:,:) = PSRC(IE,:,:) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(IE+1,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE-1,:,:))
+    ZFPOS2(IE+1,:,:) = 0.5 * (PSRC(IE,    :,:) + PSRC(IE+1,:,:))
+    ZBPOS1(IE+1,:,:) = (PSRC(IE,:,:) - PSRC(IE-1,:,:))**2
+    ZBPOS2(IE+1,:,:) = (PSRC(IE+1,:,:) - PSRC(IE,:,:))**2
+!
+    ZFNEG1(IE+1,:,:) = 0.5 * (3.0*PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))
+    ZFNEG2(IE+1,:,:) = 0.5 * (PSRC(IE+1,    :,:) + PSRC(IE,:,:))
+    ZBNEG1(IE+1,:,:) = (PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))**2
+    ZBNEG2(IE+1,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,:,:))**2
+!
+    ZOMP1(IE+1,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IE+1,:,:))**2
+    ZOMP2(IE+1,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IE+1,:,:))**2
+    ZOMN1(IE+1,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IE+1,:,:))**2
+    ZOMN2(IE+1,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IE+1,:,:))**2
+!
+    PR(IE+1,:,:) = (ZOMP2(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) * ZFPOS2(IE+1,:,:) +  &
+       (ZOMP1(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) * ZFPOS1(IE+1,:,:))) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) + &
+       (ZOMN2(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) * ZFNEG2(IE+1,:,:) +   &
+       (ZOMN1(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) * ZFNEG1(IE+1,:,:))) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))
+!
+  ENDIF
+!
+!      USE A THIRD ORDER UPSTREAM WENO SCHEME ELSEWHERE 
+!
+  ZFPOS1(IW+1:IE,:,:) = 0.5 * (3.0*PSRC(IW:IE-1,:,:) - PSRC(IW-1:IE-2,:,:))
+  ZFPOS2(IW+1:IE,:,:) = 0.5 * (PSRC(IW:IE-1,    :,:) + PSRC(IW+1:IE,  :,:))
+  ZBPOS1(IW+1:IE,:,:) = (PSRC(IW:IE-1,:,:) - PSRC(IW-1:IE-2,:,:))**2
+  ZBPOS2(IW+1:IE,:,:) = (PSRC(IW+1:IE,:,:) - PSRC(IW:IE-1,:,:))**2
+!
+  ZFNEG1(IW+1:IE,:,:) = 0.5 * (3.0*PSRC(IW+1:IE,:,:) - PSRC(IW+2:IE+1,:,:))
+  ZFNEG2(IW+1:IE,:,:) = 0.5 * (PSRC(IW+1:IE,    :,:) + PSRC(IW:IE-1,  :,:))
+  ZBNEG1(IW+1:IE,:,:) = (PSRC(IW+1:IE,:,:) - PSRC(IW+2:IE+1,:,:))**2
+  ZBNEG2(IW+1:IE,:,:) = (PSRC(IW:IE-1,:,:) - PSRC(IW+1:IE,:,:))**2
+!
+  ZOMP1(IW+1:IE,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW+1:IE,:,:))**2
+  ZOMP2(IW+1:IE,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW+1:IE,:,:))**2
+  ZOMN1(IW+1:IE,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW+1:IE,:,:))**2
+  ZOMN2(IW+1:IE,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW+1:IE,:,:))**2
+!
+  PR(IW+1:IE,:,:) = (ZOMP2(IW+1:IE,:,:)/(ZOMP1(IW+1:IE,:,:)+ZOMP2(IW+1:IE,:,:)) * ZFPOS2(IW+1:IE,:,:) + &
+       (ZOMP1(IW+1:IE,:,:)/(ZOMP1(IW+1:IE,:,:)+ZOMP2(IW+1:IE,:,:)) * ZFPOS1(IW+1:IE,:,:))) * (0.5+SIGN(0.5,PRUCT(IW+1:IE,:,:))) + &
+       (ZOMN2(IW+1:IE,:,:)/(ZOMN1(IW+1:IE,:,:)+ZOMN2(IW+1:IE,:,:)) * ZFNEG2(IW+1:IE,:,:) +              &
+       (ZOMN1(IW+1:IE,:,:)/(ZOMN1(IW+1:IE,:,:)+ZOMN2(IW+1:IE,:,:)) * ZFNEG1(IW+1:IE,:,:))) * (0.5-SIGN(0.5,PRUCT(IW+1:IE,:,:)))
+!
+END SELECT
+!
+PR = PR * PRUCT
+CALL GET_HALO(PR)
+!
+END SUBROUTINE ADVEC_WENO_K_2_MX
+!
+!-------------------------------------------------------------------------------
+!
+!     ############################################################
+      SUBROUTINE ADVEC_WENO_K_2_MY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!     ############################################################
+!!
+!!****  Computes PRVCT * PUT (or PRVCT * PWT). Upstream fluxes of U (or W) 
+!!      variables in Y direction.  
+!!      Input PUT is on U Grid 'ie' (i,j,k) based on UGRID reference
+!!      Output PR is on mass Grid 'ie' (i,j-1/2,k) based on UGRID reference 
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*                 
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+USE MODI_GET_HALO
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2 ! halo2 for the field at t
+!
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER::  IS,IN      ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFPOS1, ZFPOS2
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFNEG1, ZFNEG2
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBPOS1, ZBPOS2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBNEG1, ZBNEG2
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./3.
+REAL, PARAMETER :: ZGAMMA2 = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-----------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!---------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0 
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCY(1) ) ! 
+!
+!*       1.1    CYCLIC CASE IN THE Y DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCY(1) == HLBCY(2)
+!
+  IF(NHALO == 1) THEN
+    IS=IJB
+    IN=IJE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF
+!
+! intermediate fluxes for positive wind case
+!
+  ZFPOS1(:,IS+1:IN+1,:) = 0.5 * (3.0*PSRC(:,IS:IN,:) - PSRC(:,IS-1:IN-1,:))
+  ZFPOS1(:,IS,       :) = 0.5 * (3.0*PSRC(:,IS-1, :) - TPHALO2%SOUTH(:,:))
+!!  ZFPOS1(:,IS-1,     :) = - 999.
+!
+  ZFPOS2(:,IS:IN+1,:) = 0.5 * (PSRC(:,IS-1:IN,:) + PSRC(:,IS:IN+1,:))
+  ZFPOS2(:,IS-1,   :) = 0.5 * (TPHALO2%SOUTH(:,:) + PSRC(:,IS-1,   :))
+!
+  ZFNEG1(:,IS-1:IN,:) = 0.5 * (3.0*PSRC(:,IS-1:IN,:) - PSRC(:,IS:IN+1,:))
+  ZFNEG1(:,IN+1,   :) = 0.5 * (3.0*PSRC(:,IN+1,   :) - TPHALO2%NORTH(:,:))
+!
+  ZFNEG2(:,IS:IN+1,:) = 0.5 * (PSRC(:,IS:IN+1,:) + PSRC(:,IS-1:IN,:))
+  ZFNEG2(:,IS-1,   :) = 0.5 * (PSRC(:,IS-1,   :) + TPHALO2%SOUTH(:,:))
+!
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(:,IS+1:IN+1,:) = (PSRC(:,IS:IN,:) - PSRC(:,IS-1:IN-1,:))**2
+  ZBPOS1(:,IS,       :) = (PSRC(:,IS-1,   :) - TPHALO2%SOUTH(:,:))**2
+!!  ZBPOS1(:,IS-1,     :) = - 999. 
+!
+  ZBPOS2(:,IS:IN+1,:) = (PSRC(:,IS:IN+1,:) - PSRC(:,IS-1:IN,:))**2
+  ZBPOS2(:,IS-1,   :) = (PSRC(:,IS-1,   :) - TPHALO2%SOUTH(:,:))**2
+!
+! smoothness indicators for negative wind case
+!
+  ZBNEG1(:,IS-1:IN,:) = (PSRC(:,IS-1:IN,:) - PSRC(:,IS:IN+1,:))**2
+  ZBNEG1(:,IN+1,   :) = (PSRC(:,IN+1,   :) - TPHALO2%NORTH(:,:))**2
+!
+  ZBNEG2(:,IS:IN+1,:) = (PSRC(:,IS-1:IN,:) - PSRC(:,IS:IN+1,:))**2
+  ZBNEG2(:,IS-1,   :) = (TPHALO2%SOUTH(:,:) - PSRC(:,IS-1,:))**2
+!
+! WENO weights
+!
+  ZOMP1 = ZGAMMA1 / (ZEPS + ZBPOS1)**2
+  ZOMP2 = ZGAMMA2 / (ZEPS + ZBPOS2)**2
+  ZOMN1 = ZGAMMA1 / (ZEPS + ZBNEG1)**2
+  ZOMN2 = ZGAMMA2 / (ZEPS + ZBNEG2)**2
+!
+! WENO fluxes
+!
+  PR = (ZOMP2/(ZOMP1+ZOMP2) * ZFPOS2 +                           &
+       (ZOMP1/(ZOMP1+ZOMP2) * ZFPOS1)) * (0.5+SIGN(0.5,PRVCT)) + &
+       (ZOMN2/(ZOMN1+ZOMN2) * ZFNEG2 +                           &
+       (ZOMN1/(ZOMN1+ZOMN2) * ZFNEG1)) * (0.5-SIGN(0.5,PRVCT))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE Y DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IS=IJB
+  IN=IJE
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER
+!
+  IF(LSOUTH_ll()) THEN
+    PR(:,IS,:) = PSRC(:,IS-1,:) * (0.5+SIGN(0.5,PRVCT(:,IS,:))) + PSRC(:,IS,:) * (0.5-SIGN(0.5,PRVCT(:,IS,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(:,IS,:) = 0.5 * (3.0*PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))
+    ZFPOS2(:,IS,:) = 0.5 * (PSRC(:,IS-1,:) + PSRC(:,IS,:))
+    ZBPOS1(:,IS,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2
+    ZBPOS2(:,IS,:) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+!
+    ZFNEG1(:,IS,:) = 0.5 * (3.0*PSRC(:,IS,:) - PSRC(:,IS+1,:))
+    ZFNEG2(:,IS,:) = 0.5 * (PSRC(:,IS,    :) + PSRC(:,IS-1,:))
+    ZBNEG1(:,IS,:) = (PSRC(:,IS,  :) - PSRC(:,IS+1,:))**2
+    ZBNEG2(:,IS,:) = (PSRC(:,IS-1,:) - PSRC(:,IS,  :))**2
+!
+    ZOMP1(:,IS,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS,:))**2
+    ZOMP2(:,IS,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS,:))**2
+    ZOMN1(:,IS,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS,:))**2
+    ZOMN2(:,IS,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS,:))**2
+!
+    PR(:,IS,:) = (ZOMP2(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)) * ZFPOS2(:,IS,:) + &
+       (ZOMP1(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)) * ZFPOS1(:,IS,:))) * (0.5+SIGN(0.5,PRVCT(:,IS,:))) + &
+       (ZOMN2(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)) * ZFNEG2(:,IS,:) +  &
+       (ZOMN1(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)) * ZFNEG1(:,IS,:))) * (0.5-SIGN(0.5,PRVCT(:,IS,:)))
+!
+  ENDIF
+!
+  IF(LNORTH_ll()) THEN
+    PR(:,IN+1,:) = PSRC(:,IN,:) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN-1,:))
+    ZFPOS2(:,IN+1,:) = 0.5 * (PSRC(:,IN,    :) + PSRC(:,IN+1,:))
+    ZBPOS1(:,IN+1,:) = (PSRC(:,IN,:) - PSRC(:,IN-1,:))**2
+    ZBPOS2(:,IN+1,:) = (PSRC(:,IN+1,:) - PSRC(:,IN,:))**2
+!
+    ZFNEG1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))
+    ZFNEG2(:,IN+1,:) = 0.5 * (PSRC(:,IN+1,    :) + PSRC(:,IN,:))
+    ZBNEG1(:,IN+1,:) = (PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))**2
+    ZBNEG2(:,IN+1,:) = (PSRC(:,IN,  :) - PSRC(:,IN+1,:))**2
+!
+    ZOMP1(:,IN+1,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IN+1,:))**2
+    ZOMP2(:,IN+1,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IN+1,:))**2
+    ZOMN1(:,IN+1,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IN+1,:))**2
+    ZOMN2(:,IN+1,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IN+1,:))**2
+!
+    PR(:,IN+1,:) = (ZOMP2(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:)) * ZFPOS2(:,IN+1,:) +   &
+       (ZOMP1(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:)) * ZFPOS1(:,IN+1,:))) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) + &
+       (ZOMN2(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * ZFNEG2(:,IN+1,:) +     &
+       (ZOMN1(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * ZFNEG1(:,IN+1,:))) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
+!
+  ENDIF
+!
+!      USE A THIRD ORDER UPSTREAM WENO SCHEME ELSEWHERE 
+!
+  ZFPOS1(:,IS+1:IN,:) = 0.5 * (3.0*PSRC(:,IS:IN-1,:) - PSRC(:,IS-1:IN-2,:))
+  ZFPOS2(:,IS+1:IN,:) = 0.5 * (PSRC(:,IS:IN-1,    :) + PSRC(:,IS+1:IN,  :))
+  ZBPOS1(:,IS+1:IN,:) = (PSRC(:,IS:IN-1,:) - PSRC(:,IS-1:IN-2,:))**2
+  ZBPOS2(:,IS+1:IN,:) = (PSRC(:,IS+1:IN,:) - PSRC(:,IS:IN-1,  :))**2
+!
+  ZFNEG1(:,IS+1:IN,:) = 0.5 * (3.0*PSRC(:,IS+1:IN,:) - PSRC(:,IS+2:IN+1,:))
+  ZFNEG2(:,IS+1:IN,:) = 0.5 * (PSRC(:,IS+1:IN,    :) + PSRC(:,IS:IN-1,  :))
+  ZBNEG1(:,IS+1:IN,:) = (PSRC(:,IS+1:IN,:) - PSRC(:,IS+2:IN+1,:))**2
+  ZBNEG2(:,IS+1:IN,:) = (PSRC(:,IS:IN-1,:) - PSRC(:,IS+1:IN,:))**2
+!
+  ZOMP1(:,IS+1:IN,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS+1:IN,:))**2
+  ZOMP2(:,IS+1:IN,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS+1:IN,:))**2
+  ZOMN1(:,IS+1:IN,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS+1:IN,:))**2
+  ZOMN2(:,IS+1:IN,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS+1:IN,:))**2
+!
+  PR(:,IS+1:IN,:) = (ZOMP2(:,IS+1:IN,:)/(ZOMP1(:,IS+1:IN,:)+ZOMP2(:,IS+1:IN,:)) * ZFPOS2(:,IS+1:IN,:) +  &
+       (ZOMP1(:,IS+1:IN,:)/(ZOMP1(:,IS+1:IN,:)+ZOMP2(:,IS+1:IN,:)) * ZFPOS1(:,IS+1:IN,:))) * (0.5+SIGN(0.5,PRVCT(:,IS+1:IN,:))) + &
+       (ZOMN2(:,IS+1:IN,:)/(ZOMN1(:,IS+1:IN,:)+ZOMN2(:,IS+1:IN,:)) * ZFNEG2(:,IS+1:IN,:) + &
+       (ZOMN1(:,IS+1:IN,:)/(ZOMN1(:,IS+1:IN,:)+ZOMN2(:,IS+1:IN,:)) * ZFNEG1(:,IS+1:IN,:))) * (0.5-SIGN(0.5,PRVCT(:,IS+1:IN,:)))
+!
+END SELECT
+!
+PR = PR * PRVCT
+CALL GET_HALO(PR)
+!
+END SUBROUTINE ADVEC_WENO_K_2_MY
+!-------------------------------------------------------------------------------
+!
+!     #############################################################
+      SUBROUTINE ADVEC_WENO_K_2_VY(HLBCY, PSRC, PRVCT, PR, TPHALO2)
+!     #############################################################
+!!
+!!**** Computes PRVCT * PVT. Upstream fluxes of V in Y direction.  
+!!     Input PVT is on V Grid 'ie' (i,j,k) based on VGRID reference
+!!     Output PR is on mass Grid 'ie' (i,j+1/2,k) based on VGRID reference
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+USE MODI_GET_HALO
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER::  IS,IN      ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFPOS1, ZFPOS2
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFNEG1, ZFNEG2
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBPOS1, ZBPOS2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBNEG1, ZBNEG2
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./3.
+REAL, PARAMETER :: ZGAMMA2 = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!----------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!--------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE Y DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IS=IJB
+    IN=IJE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF
+!
+! intermediate fluxes for positive wind case
+!
+  ZFPOS1(:,IS:IN+1,:) = 0.5 * (3.0*PSRC(:,IS:IN+1,:) - PSRC(:,IS-1:IN,:))
+  ZFPOS1(:,IS-1,   :) = 0.5 * (3.0*PSRC(:,IS-1,   :) - TPHALO2%SOUTH(:,:))
+!
+  ZFPOS2(:,IS-1:IN,:) = 0.5 * (PSRC(:,IS-1:IN,:) + PSRC(:,IS:IN+1,:))
+  ZFPOS2(:,IN+1,   :) = 0.5 * (PSRC(:,IN+1,   :) + TPHALO2%NORTH(:,:))
+!
+! intermediate flux for negative wind case
+!
+  ZFNEG1(:,IS-1:IN-1,:) = 0.5 * (3.0*PSRC(:,IS:IN,:) - PSRC(:,IS+1:IN+1,:))
+  ZFNEG1(:,IN,   :) = 0.5 * (3.0*PSRC(:,IN+1,   :) - TPHALO2%NORTH(:,:))
+!
+  ZFNEG2(:,IS-1:IN,:) = 0.5 * (PSRC(:,IS-1:IN,:) + PSRC(:,IS:IN+1,:))
+  ZFNEG2(:,IN+1,   :) = 0.5 * (PSRC(:,IN+1,   :) + TPHALO2%NORTH(:,:))
+!
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(:,IS:IN+1,:) = (PSRC(:,IS:IN+1,:) - PSRC(:,IS-1:IN,:))**2
+  ZBPOS1(:,IS-1,   :) = (PSRC(:,IS-1,   :) - TPHALO2%SOUTH(:,:))**2
+!
+  ZBPOS2(:,IS-1:IN,:) = (PSRC(:,IS:IN+1,:) - PSRC(:,IS-1:IN,:))**2
+  ZBPOS2(:,IN+1,   :) = (TPHALO2%NORTH(:,:) - PSRC(:,IN+1,     :))**2
+!
+! smoothness indicators for negative wind case
+!
+  ZBNEG1(:,IS-1:IN-1,:) = (PSRC(:,IS:IN,:) - PSRC(:,IS+1:IN+1,:))**2
+  ZBNEG1(:,IN,       :) = (PSRC(:,IN+1, :) - TPHALO2%NORTH(:,:))**2
+!
+  ZBNEG2(:,IS-1:IN,:) = (PSRC(:,IS-1:IN,:) - PSRC(:,IS:IN+1,:))**2
+  ZBNEG2(:,IN+1,   :) = (PSRC(:,IN+1,   :) - TPHALO2%NORTH(:,:))**2 
+!
+! WENO weights
+!
+  ZOMP1 = ZGAMMA1 / (ZEPS + ZBPOS1)**2
+  ZOMP2 = ZGAMMA2 / (ZEPS + ZBPOS2)**2
+  ZOMN1 = ZGAMMA1 / (ZEPS + ZBNEG1)**2
+  ZOMN2 = ZGAMMA2 / (ZEPS + ZBNEG2)**2
+!
+  PR = (ZOMP2/(ZOMP1+ZOMP2) * ZFPOS2 +                           &
+       (ZOMP1/(ZOMP1+ZOMP2) * ZFPOS1)) * (0.5+SIGN(0.5,PRVCT)) + &
+       (ZOMN2/(ZOMN1+ZOMN2) * ZFNEG2 +                           &
+       (ZOMN1/(ZOMN1+ZOMN2) * ZFNEG1)) * (0.5-SIGN(0.5,PRVCT))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE Y DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IS=IJB
+  IN=IJE
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER
+!
+  IF(LSOUTH_ll()) THEN
+    PR(:,IS-1,:) = PSRC(:,IS-1,:) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) + PSRC(:,IS,:) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))
+    ZFPOS2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1,    :) + PSRC(:,IS,:))
+    ZBPOS1(:,IS-1,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2
+    ZBPOS2(:,IS-1,:) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+!
+    ZFNEG1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS,:) - PSRC(:,IS+1,:))
+    ZFNEG2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1,  :) + PSRC(:,IS,:))
+    ZBNEG1(:,IS-1,:) = (PSRC(:,IS,:) - PSRC(:,IS+1,:))**2
+    ZBNEG2(:,IS-1,:) = (PSRC(:,IS-1,:) - PSRC(:,IS,:))**2
+!
+    ZOMP1(:,IS-1,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS-1,:))**2
+    ZOMP2(:,IS-1,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS-1,:))**2
+    ZOMN1(:,IS-1,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS-1,:))**2
+    ZOMN2(:,IS-1,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS-1,:))**2
+!
+    PR(:,IS-1,:) = (ZOMP2(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * ZFPOS2(:,IS-1,:) +   &
+       (ZOMP1(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * ZFPOS1(:,IS-1,:))) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) + &
+       (ZOMN2(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * ZFNEG2(:,IS-1,:) +        &
+       (ZOMN1(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * ZFNEG1(:,IS-1,:))) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
+!
+  ENDIF
+!
+  IF(LNORTH_ll()) THEN
+    PR(:,IN,:) = PSRC(:,IN,:) * (0.5+SIGN(0.5,PRVCT(:,IN,:))) + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN,:)))
+!
+  ELSEIF (NHALO == 1) THEN
+    ZFPOS1(:,IN,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN-1,:))
+    ZFPOS2(:,IN,:) = 0.5 * (PSRC(:,IN,    :) + PSRC(:,IN+1,:))
+    ZBPOS1(:,IN,:) = (PSRC(:,IN,  :) - PSRC(:,IN-1,:))**2
+    ZBPOS2(:,IN,:) = (PSRC(:,IN+1,:) - PSRC(:,IN,  :))**2
+!
+    ZFNEG1(:,IN,:) = 0.5 * (3.0*PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))
+    ZFNEG2(:,IN,:) = 0.5 * (PSRC(:,IN,      :) + PSRC(:,IN+1,:))
+    ZBNEG1(:,IN,:) = (PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))**2
+    ZBNEG2(:,IN,:) = (PSRC(:,IN,  :) - PSRC(:,IN+1,:))**2
+!
+    ZOMP1(:,IN,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IN,:))**2
+    ZOMP2(:,IN,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IN,:))**2
+    ZOMN1(:,IN,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IN,:))**2
+    ZOMN2(:,IN,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IN,:))**2
+!
+    PR(:,IN,:) = (ZOMP2(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)) * ZFPOS2(:,IN,:) + &
+       (ZOMP1(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)) * ZFPOS1(:,IN,:))) * (0.5+SIGN(0.5,PRVCT(:,IN,:))) + &
+       (ZOMN2(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)) * ZFNEG2(:,IN,:) +  &
+       (ZOMN1(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)) * ZFNEG1(:,IN,:))) * (0.5-SIGN(0.5,PRVCT(:,IN,:)))
+!
+  ENDIF
+!
+!      USE A THIRD ORDER UPSTREAM WENO SCHEME ELSEWHERE 
+!
+  ZFPOS1(:,IS:IN-1,:) = 0.5 * (3.0*PSRC(:,IS:IN-1,:) - PSRC(:,IS-1:IN-2,:))
+  ZFPOS2(:,IS:IN-1,:) = 0.5 * (PSRC(:,IS:IN-1,    :) + PSRC(:,IS+1:IN,  :))
+  ZBPOS1(:,IS:IN-1,:) = (PSRC(:,IS:IN-1,:) - PSRC(:,IS-1:IN-2,:))**2
+  ZBPOS2(:,IS:IN-1,:) = (PSRC(:,IS+1:IN,:) - PSRC(:,IS:IN-1,  :))**2
+!  
+  ZFNEG1(:,IS:IN-1,:) = 0.5 * (3.0*PSRC(:,IS+1:IN,:) - PSRC(:,IS+2:IN+1,:))  
+  ZFNEG2(:,IS:IN-1,:) = 0.5 * (PSRC(:,IS:IN-1,    :) + PSRC(:,IS+1:IN,  :))
+  ZBNEG1(:,IS:IN-1,:) = (PSRC(:,IS+1:IN,:) - PSRC(:,IS+2:IN+1,:))**2
+  ZBNEG2(:,IS:IN-1,:) = (PSRC(:,IS:IN-1,:) - PSRC(:,IS+1:IN,  :))**2
+!
+  ZOMP1(:,IS:IN-1,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS:IN-1,:))**2
+  ZOMP2(:,IS:IN-1,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS:IN-1,:))**2
+  ZOMN1(:,IS:IN-1,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS:IN-1,:))**2
+  ZOMN2(:,IS:IN-1,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS:IN-1,:))**2
+!
+  PR(:,IS:IN-1,:) = (ZOMP2(:,IS:IN-1,:)/(ZOMP1(:,IS:IN-1,:)+ZOMP2(:,IS:IN-1,:)) * ZFPOS2(:,IS:IN-1,:) + &
+       (ZOMP1(:,IS:IN-1,:)/(ZOMP1(:,IS:IN-1,:)+ZOMP2(:,IS:IN-1,:)) * ZFPOS1(:,IS:IN-1,:))) * (0.5+SIGN(0.5,PRVCT(:,IS:IN-1,:))) + &
+       (ZOMN2(:,IS:IN-1,:)/(ZOMN1(:,IS:IN-1,:)+ZOMN2(:,IS:IN-1,:)) * ZFNEG2(:,IS:IN-1,:) + &
+       (ZOMN1(:,IS:IN-1,:)/(ZOMN1(:,IS:IN-1,:)+ZOMN2(:,IS:IN-1,:)) * ZFNEG1(:,IS:IN-1,:))) * (0.5-SIGN(0.5,PRVCT(:,IS:IN-1,:)))
+!
+END SELECT
+!
+PR = PR * PRVCT
+CALL GET_HALO(PR)
+!
+END SUBROUTINE ADVEC_WENO_K_2_VY
+!
+!-------------------------------------------------------------------------------
+!
+!     ############################################
+      FUNCTION WENO_K_2_WZ(PSRC, PRWCT) RESULT(PR)
+!     ############################################
+!!
+!!* Computes PRWCT * PWT. Upstream fluxes of W in Z direction.  
+!!  Input PWT is on W Grid 'ie' (i,j,k) based on WGRID reference
+!!  Output PR is on mass Grid 'ie' (i,j,k+1/2) based on WGRID reference
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_CONF
+USE MODD_PARAMETERS,ONLY: JPVEXT
+USE MODI_GET_HALO
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on W grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IB    ! Begining useful area in x,y,z directions
+INTEGER :: IT    ! End useful area in x,y,z directions
+!
+! WENO-related variables:
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFPOS1, ZFPOS2
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFNEG1, ZFNEG2
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBPOS1, ZBPOS2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBNEG1, ZBNEG2
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./3.
+REAL, PARAMETER :: ZGAMMA2 = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+IB = 1 + JPVEXT
+IT = SIZE(PSRC,3) - JPVEXT
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0 
+!
+! intermediate fluxes at the mass point on Wgrid w(i,j,k+1/2) for positive 
+! wind case (L. to the R.)
+! (r=1 for the first stencil ZFPOS1, r=0 for the second ZFPOS2)
+!
+ZFPOS1(:,:,IB:IT-1) = 0.5 * (3.0*PSRC(:,:,IB:IT-1) - PSRC(:,:,IB-1:IT-2))
+ZFPOS2(:,:,IB:IT-1) = 0.5 * (PSRC(:,:,IB:IT-1) + PSRC(:,:,IB+1:IT))
+!
+! intermediate flux at the mass point on Wgrid w(i,j,k+1/2) for negative 
+! wind case (R. to the L.)
+! (r=-1 for the first stencil ZFNEG1, r=0 for the second ZFNEG2=ZFPOS2)
+!
+ZFNEG1(:,:,IB-1:IT-1) = 0.5 * (3.0*PSRC(:,:,IB:IT) - PSRC(:,:,IB+1:IT+1))
+ZFNEG2(:,:,IB-1:IT) = 0.5 * (PSRC(:,:,IB-1:IT) + PSRC(:,:,IB:IT+1))
+!
+! smoothness indicators for positive wind case
+!
+ZBPOS1(:,:,IB:IT-1) = (PSRC(:,:,IB:IT-1) - PSRC(:,:,IB-1:IT-2))**2
+ZBPOS2(:,:,IB:IT-1) = (PSRC(:,:,IB+1:IT) - PSRC(:,:,IB:IT-1))**2
+!
+! smoothness indicators for negative wind case
+!
+ZBNEG1(:,:,IB-1:IT-1) = (PSRC(:,:,IB:IT) - PSRC(:,:,IB+1:IT+1))**2
+ZBNEG2(:,:,IB-1:IT) = (PSRC(:,:,IB-1:IT) - PSRC(:,:,IB:IT+1))**2
+!
+! WENO weights
+!
+ZOMP1 = ZGAMMA1 / (ZEPS + ZBPOS1)**2
+ZOMP2 = ZGAMMA2 / (ZEPS + ZBPOS2)**2
+ZOMN1 = ZGAMMA1 / (ZEPS + ZBNEG1)**2
+ZOMN2 = ZGAMMA2 / (ZEPS + ZBNEG2)**2
+!
+! WENO fluxes
+!
+PR(:,:,IB:IT-1) = (ZOMP2(:,:,IB:IT-1)/(ZOMP1(:,:,IB:IT-1)+ZOMP2(:,:,IB:IT-1))* &
+                                                         ZFPOS2(:,:,IB:IT-1) + &
+                  (ZOMP1(:,:,IB:IT-1)/(ZOMP1(:,:,IB:IT-1)+ZOMP2(:,:,IB:IT-1))* &
+                 ZFPOS1(:,:,IB:IT-1))) * (0.5+SIGN(0.5,PRWCT(:,:,IB:IT-1) )) + &
+                  (ZOMN2(:,:,IB:IT-1)/(ZOMN1(:,:,IB:IT-1)+ZOMN2(:,:,IB:IT-1))* &
+                                                         ZFNEG2(:,:,IB:IT-1) + &
+                  (ZOMN1(:,:,IB:IT-1)/(ZOMN1(:,:,IB:IT-1)+ZOMN2(:,:,IB:IT-1))* &
+                 ZFNEG1(:,:,IB:IT-1))) * (0.5-SIGN(0.5,PRWCT(:,:,IB:IT-1) ))
+!
+PR(:,:,IB-1) = PSRC(:,:,IB-1) * (0.5+SIGN(0.5,PRWCT(:,:,IB-1) )) + &
+               PSRC(:,:,IB)   * (0.5-SIGN(0.5,PRWCT(:,:,IB-1) ))
+PR(:,:,IT)   = PSRC(:,:,IT)   * (0.5+SIGN(0.5,PRWCT(:,:,IT) ))   + &
+               PSRC(:,:,IT+1) * (0.5-SIGN(0.5,PRWCT(:,:,IT) ))
+PR(:,:,IT+1) = -999.
+!
+PR = PR * PRWCT
+CALL GET_HALO(PR)
+!
+END FUNCTION WENO_K_2_WZ
+!
+!-----------------------------------------------------------------------------
+!
+!     ############################################
+      FUNCTION WENO_K_2_MZ(PSRC, PRWCT) RESULT(PR)
+!     ############################################
+!!
+!!* Computes PRWCT * PUT (or PRWCT * PVT). Upstream fluxes of U (or V) 
+!!  variables in Z direction.  
+!!  Input PUT is on U Grid 'ie' (i,j,k) based on UGRID reference                
+!!  Output PR is on mass Grid 'ie' (i,j,k-1/2) based on UGRID reference
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_CONF
+USE MODD_PARAMETERS,ONLY: JPVEXT
+USE MODI_GET_HALO
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on W grid
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IB    ! Begining useful area in x,y,z directions
+INTEGER :: IT    ! End useful area in x,y,z directions
+!
+! WENO-related variables:
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFPOS1, ZFPOS2
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZFNEG1, ZFNEG2
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBPOS1, ZBPOS2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZBNEG1, ZBNEG2
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./3.
+REAL, PARAMETER :: ZGAMMA2 = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+IB = 1 + JPVEXT
+IT = SIZE(PSRC,3) - JPVEXT
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0 
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0
+!
+! intermediate fluxes at the flux point on the Wgrid u(i,j,k-1/2) for 
+! positive wind case
+!
+ZFPOS1(:,:,IB+1:IT) = 0.5 * (3.0*PSRC(:,:,IB:IT-1) - PSRC(:,:,IB-1:IT-2))
+ZFPOS2(:,:,IB+1:IT) = 0.5 * (PSRC(:,:,IB:IT-1) + PSRC(:,:,IB+1:IT))
+!
+! intermediate flux at the flux point on the Wgrid u(i,j,k-1/2) for 
+! negative wind case
+!
+ZFNEG1(:,:,IB+1:IT) = 0.5 * (3.0*PSRC(:,:,IB+1:IT) - PSRC(:,:,IB+2:IT+1))
+ZFNEG2(:,:,IB+1:IT) = 0.5 * (PSRC(:,:,IB:IT-1) + PSRC(:,:,IB+1:IT))
+!
+! smoothness indicators for positive wind case
+!
+ZBPOS1(:,:,IB+1:IT) = (PSRC(:,:,IB:IT-1) - PSRC(:,:,IB-1:IT-2))**2
+ZBPOS2(:,:,IB+1:IT) = (PSRC(:,:,IB+1:IT) - PSRC(:,:,IB:IT-1))**2
+!
+! smoothness indicators for negative wind case
+!
+ZBNEG1(:,:,IB+1:IT) = (PSRC(:,:,IB+1:IT) - PSRC(:,:,IB+2:IT+1))**2
+ZBNEG2(:,:,IB+1:IT) = (PSRC(:,:,IB:IT-1) - PSRC(:,:,IB+1:IT))**2
+!
+! WENO weights
+!
+ZOMP1(:,:,IB+1:IT) = ZGAMMA1 / (ZEPS + ZBPOS1(:,:,IB+1:IT))**2
+ZOMP2(:,:,IB+1:IT) = ZGAMMA2 / (ZEPS + ZBPOS2(:,:,IB+1:IT))**2
+ZOMN1(:,:,IB+1:IT) = ZGAMMA1 / (ZEPS + ZBNEG1(:,:,IB+1:IT))**2
+ZOMN2(:,:,IB+1:IT) = ZGAMMA2 / (ZEPS + ZBNEG2(:,:,IB+1:IT))**2
+!
+PR(:,:,IB+1:IT) = (ZOMP2(:,:,IB+1:IT)/(ZOMP1(:,:,IB+1:IT)+ZOMP2(:,:,IB+1:IT))* &
+                                                         ZFPOS2(:,:,IB+1:IT) + &
+                  (ZOMP1(:,:,IB+1:IT)/(ZOMP1(:,:,IB+1:IT)+ZOMP2(:,:,IB+1:IT))* &
+                 ZFPOS1(:,:,IB+1:IT))) * (0.5+SIGN(0.5,PRWCT(:,:,IB+1:IT) )) + &
+                  (ZOMN2(:,:,IB+1:IT)/(ZOMN1(:,:,IB+1:IT)+ZOMN2(:,:,IB+1:IT))* &
+                                                         ZFNEG2(:,:,IB+1:IT) + &
+                  (ZOMN1(:,:,IB+1:IT)/(ZOMN1(:,:,IB+1:IT)+ZOMN2(:,:,IB+1:IT))* &
+                 ZFNEG1(:,:,IB+1:IT))) * (0.5-SIGN(0.5,PRWCT(:,:,IB+1:IT) ))
+!
+PR(:,:,IB)   = PSRC(:,:,IB-1) * (0.5+SIGN(0.5,PRWCT(:,:,IB) ))   + &
+               PSRC(:,:,IB)   * (0.5-SIGN(0.5,PRWCT(:,:,IB) ))
+PR(:,:,IT+1) = PSRC(:,:,IT)   * (0.5+SIGN(0.5,PRWCT(:,:,IT+1) )) + &
+               PSRC(:,:,IT+1) * (0.5-SIGN(0.5,PRWCT(:,:,IT+1) ))
+!
+PR = PR * PRWCT
+CALL GET_HALO(PR)
+!
+END FUNCTION WENO_K_2_MZ
diff --git a/src/MNH/advec_weno_k_3_aux.f90 b/src/MNH/advec_weno_k_3_aux.f90
new file mode 100644
index 000000000..44151ccbd
--- /dev/null
+++ b/src/MNH/advec_weno_k_3_aux.f90
@@ -0,0 +1,3014 @@
+!     ##############################
+      MODULE MODI_ADVEC_WENO_K_3_AUX
+!     ##############################
+!
+INTERFACE
+!
+      SUBROUTINE ADVEC_WENO_K_3_UX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_3_UX
+!
+!                    ----------------------------
+!
+      SUBROUTINE ADVEC_WENO_K_3_MX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_3_MX
+!
+!                     ---------------------------
+!
+      SUBROUTINE ADVEC_WENO_K_3_VY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_3_VY
+!
+!                  ------------------------------
+!
+      SUBROUTINE ADVEC_WENO_K_3_MY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+END SUBROUTINE ADVEC_WENO_K_3_MY
+!
+!                     -------------------------------
+!
+FUNCTION WENO_K_3_WZ(PSRC, PRWCT) RESULT(PR)
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on W grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+END FUNCTION WENO_K_3_WZ
+!
+!                      ------------------------------
+!
+FUNCTION WENO_K_3_MZ(PSRC, PRWCT) RESULT(PR)
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on W grid
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+END FUNCTION WENO_K_3_MZ
+!
+END INTERFACE
+!
+END MODULE MODI_ADVEC_WENO_K_3_AUX
+!
+!-----------------------------------------------------------------------------
+!
+!     ############################################################
+      SUBROUTINE ADVEC_WENO_K_3_UX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!     ############################################################
+!!
+!!**** Computes PRUCT * PUT. Upstream fluxes of U in X direction.  
+!!     Input PUT is on U Grid 'ie' (i,j,k) based on UGRID reference
+!!     Output PR is on mass Grid 'ie' (i+1/2,j,k) based on UGRID reference
+!!              
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*               
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER:: IW,IE,IWF,IEF   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFPOS1, ZFPOS2, ZFPOS3
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFNEG1, ZFNEG2, ZFNEG3
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBPOS1, ZBPOS2, ZBPOS3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBNEG1, ZBNEG2, ZBNEG3
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2, ZOMP3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2, ZOMN3
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./10.
+REAL, PARAMETER :: ZGAMMA2 = 3./5.
+REAL, PARAMETER :: ZGAMMA3 = 3./10.
+REAL, PARAMETER :: ZGAMMA1_PRIM = 1./3.
+REAL, PARAMETER :: ZGAMMA2_PRIM = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-----------------------------------------------------------------------------
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1  = 0.0
+ZFPOS2  = 0.0
+ZFPOS3  = 0.0
+ZFNEG1  = 0.0
+ZFNEG2  = 0.0
+ZFNEG3  = 0.0
+ZBPOS1  = 0.0
+ZBPOS2  = 0.0
+ZBPOS3  = 0.0
+ZBNEG1  = 0.0
+ZBNEG2  = 0.0
+ZBNEG3  = 0.0
+ZOMP1   = 0.0
+ZOMP2   = 0.0
+ZOMP3   = 0.0
+ZOMN1   = 0.0
+ZOMN2   = 0.0
+ZOMN3   = 0.0 
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE X DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IW=IIB
+    IE=IIE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF
+!
+! r: many left cells in regard to 'i' cell for each stencil
+!
+! intermediate fluxes at the mass point on Ugrid u(i+1/2,j,k) for positive wind
+! case (left to the right)
+! (r=2 for the first stencil ZFPOS1, r=1 for the second ZFPOS2 and
+!  r=0 for the last ZFPOS3)
+!
+  ZFPOS1(IW+1:IE-1,:,:) = 1./6 * (2.0*PSRC(IW-1:IE-3,:,:) - &
+                    7.0*PSRC(IW:IE-2,:,:) + 11.0*PSRC(IW+1:IE-1,:,:))
+  ZFPOS1(IW,       :,:) = 1./6 * (2.0*TPHALO2%WEST(:,:)   - &
+                    7.0*PSRC(IW-1,   :,:) + 11.0*PSRC(IW,       :,:))
+  ZFPOS1(IW-1,     :,:) = 0.5  * (3.0*PSRC(IW-1     ,:,:) - TPHALO2%WEST(:,:))
+  ZFPOS1(IE,       :,:) = 0.5  * (3.0*PSRC(IE       ,:,:) - PSRC(IE-1,   :,:))
+  ZFPOS1(IE+1,     :,:) = 0.5  * (3.0*PSRC(IE+1     ,:,:) - PSRC(IE,     :,:))
+!
+!
+  ZFPOS2(IW:IE-1,:,:) = 1./6 * (-1.0*PSRC(IW-1:IE-2,:,:) + 5.0*PSRC(IW:IE-1,:,:) + 2.0*PSRC(IW+1:IE,:,:))
+  ZFPOS2(IW-1,   :,:) = 0.5 * (PSRC(IW-1     ,:,:) + PSRC(IW,     :,:))
+  ZFPOS2(IE,     :,:) = 0.5 * (PSRC(IE       ,:,:) + PSRC(IE+1,   :,:))
+  ZFPOS2(IE+1,   :,:) = 0.5 * (PSRC(IE+1     ,:,:) + TPHALO2%EAST(:,:))
+!
+  ZFPOS3(IW:IE-1,:,:) = 1./6 * (2.0*PSRC(IW:IE-1,:,:) + 5.0*PSRC(IW+1:IE,:,:) &
+                        - PSRC(IW+2:IE+1,:,:))
+!
+!
+! r: many left cells in regard to 'i+1' cell for each stencil
+! 
+! intermediate flux at the mass point on Ugrid (i+1/2,j,k)=((i+1)-1/2,j,k) for 
+! negative wind case (right to the left)
+! (r=2 for the last stencil ZFNEG3=ZFPOS2, r=1 for the second ZFNEG2=ZFPOS3 
+!  and r=0 for the first ZFNEG1)  
+!
+  ZFNEG1(IW:IE-2,:,:) = 1./6 * (11.0*PSRC(IW+1:IE-1,:,:) - &
+                        7.0*PSRC(IW+2:IE,:,:) + 2.0*PSRC(IW+3:IE+1,:,:))
+  ZFNEG1(IE-1,   :,:) = 1./6 * (11.0*PSRC(IE,       :,:) - &
+                        7.0*PSRC(IE+1,   :,:) + 2.0*TPHALO2%EAST(:,:))
+  ZFNEG1(IE,  :,:) = 0.5 * (3.0*PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))
+  ZFNEG1(IE+1,:,:) = - 999.
+  ZFNEG1(IW-1,:,:) = 0.5 * (3.0*PSRC(IW,  :,:) - PSRC(IW+1,   :,:))
+!
+! 
+  ZFNEG2(IW:IE-1,:,:) = 1./6 * (2.0*PSRC(IW:IE-1,:,:) +    &
+                        5.0*PSRC(IW+1:IE,:,:) - PSRC(IW+2:IE+1,:,:))
+  ZFNEG2(IE,  :,:) = 0.5 * (PSRC(IE,   :,:) + PSRC(IE+1,:,:))
+  ZFNEG2(IE+1,:,:) = 0.5 * (PSRC(IE+1, :,:) + TPHALO2%EAST(:,:))
+  ZFNEG2(IW-1,:,:) = 0.5 * (PSRC(IW-1, :,:) + PSRC(IW,:,:))
+!
+!
+  ZFNEG3(IW:IE-1,:,:) = 1./6 * (-1.0*PSRC(IW-1:IE-2,:,:) + &
+                        5.0*PSRC(IW:IE-1,:,:) + 2.0*PSRC(IW+1:IE,:,:))
+!
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(IW+1:IE-1,:,:) = 13./12 * (PSRC(IW-1:IE-3,:,:) - 2.0*PSRC(IW:IE-2,:,:)&
+                       + PSRC(IW+1:IE-1,:,:))**2 + 1./4 * (PSRC(IW-1:IE-3,:,:) &
+                       - 4.0*PSRC(IW:IE-2,:,:) + 3.0*PSRC(IW+1:IE-1,:,:))**2
+  ZBPOS1(IW,       :,:) = 13./12 * (TPHALO2%WEST(:,:) - 2.0*PSRC(IW-1,:,:) + &
+                          PSRC(IW,:,:))**2 + 1./4 * (TPHALO2%WEST(:,:) -     &
+                          4.0*PSRC(IW-1,:,:) + 3.0*PSRC(IW,:,:))**2
+  ZBPOS1(IW-1,   :,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2
+  ZBPOS1(IE,     :,:) = (PSRC(IE  ,:,:) - PSRC(IE-1,   :,:))**2
+  ZBPOS1(IE+1,   :,:) = (PSRC(IE+1,:,:) - PSRC(IE,     :,:))**2
+!
+!
+  ZBPOS2(IW:IE-1,:,:) = 13./12 * (PSRC(IW-1:IE-2,:,:) - 2.0*PSRC(IW:IE-1,:,:) +&
+   PSRC(IW+1:IE,:,:))**2 + 1./4 * (PSRC(IW-1:IE-2,:,:) - PSRC(IW+1:IE,:,:))**2
+  ZBPOS2(IW-1,:,:) = (PSRC(IW,  :,:) - PSRC(IW-1,:,:))**2
+  ZBPOS2(IE,  :,:) = (PSRC(IE+1,:,:) - PSRC(IE,  :,:))**2
+  ZBPOS2(IE+1,:,:) = (TPHALO2%EAST(:,:) - PSRC(IE+1,:,:))**2
+!
+!
+  ZBPOS3(IW:IE-1,:,:) = 13./12 * (PSRC(IW:IE-1,:,:) - 2.0*PSRC(IW+1:IE,:,:) + &
+   PSRC(IW+2:IE+1,:,:))**2 + 1./4 * ( 3.0*PSRC(IW:IE-1,:,:) -                 &
+   4.0*PSRC(IW+1:IE,:,:) + PSRC(IW+2:IE+1,:,:))**2
+!
+! smoothness indicators for negative wind case
+!       
+  ZBNEG1(IW:IE-2,:,:) = 13./12 * (PSRC(IW+1:IE-1,:,:) - 2.0*PSRC(IW+2:IE,:,:) +&
+              PSRC(IW+3:IE+1,:,:))**2 + 1./4 * ( 3.0*PSRC(IW+1:IE-1,:,:) -     &
+              4.0*PSRC(IW+2:IE,:,:) + PSRC(IW+3:IE+1,:,:))**2
+  ZBNEG1(IE-1,   :,:) = 13./12 * (PSRC(IE,:,:) - 2.0*PSRC(IE+1,:,:) +          &
+              TPHALO2%EAST(:,:))**2 + 1./4 * ( 3.0*PSRC(IE,:,:) -              &
+              4.0*PSRC(IE+1,:,:) + TPHALO2%EAST(:,:))**2
+  ZBNEG1(IE,   :,:) = (PSRC(IE+1,   :,:) - TPHALO2%EAST(:,:))**2
+  ZBNEG1(IE+1, :,:) = - 999.
+  ZBNEG1(IW-1, :,:) = (PSRC(IW,  :,:) - PSRC(IW+1,   :,:))**2
+!
+!
+  ZBNEG2(IW:IE-1,:,:) = 13./12 * (PSRC(IW:IE-1,:,:) - 2.0*PSRC(IW+1:IE,:,:) + &
+   PSRC(IW+2:IE+1,:,:))**2 + 1./4 * (PSRC(IW:IE-1,:,:) - PSRC(IW+2:IE+1,:,:))**2
+  ZBNEG2(IW-1,:,:) = (PSRC(IW-1,:,:) - PSRC(IW,  :,:))**2
+  ZBNEG2(IE  ,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,:,:))**2
+  ZBNEG2(IE+1,:,:) = (PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))**2
+!
+!
+  ZBNEG3(IW:IE-1,:,:) = 13./12 * (PSRC(IW-1:IE-2,:,:) - 2.0*PSRC(IW:IE-1,:,:) +&
+                        PSRC(IW+1:IE,:,:))**2 + 1./4 * ( PSRC(IW-1:IE-2,:,:) - &
+                        4.0*PSRC(IW:IE-1,:,:) + 3.0*PSRC(IW+1:IE,:,:))**2
+!
+! WENO weights
+!
+  ZOMP1(IW:IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW:IE-1,:,:))**2
+  ZOMP2(IW:IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW:IE-1,:,:))**2
+  ZOMP3(IW:IE-1,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IW:IE-1,:,:))**2
+  ZOMN1(IW:IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW:IE-1,:,:))**2
+  ZOMN2(IW:IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW:IE-1,:,:))**2
+  ZOMN3(IW:IE-1,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IW:IE-1,:,:))**2
+!
+  ZOMP1(IW-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IW-1,:,:))**2
+  ZOMP2(IW-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IW-1,:,:))**2
+  ZOMP1(IE,  :,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IE,  :,:))**2
+  ZOMP2(IE,  :,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IE,  :,:))**2
+  ZOMP1(IE+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IE+1,:,:))**2
+  ZOMP2(IE+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IE+1,:,:))**2
+  ZOMN1(IW-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IW-1,:,:))**2
+  ZOMN2(IW-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IW-1,:,:))**2
+  ZOMN1(IE,  :,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IE,  :,:))**2
+  ZOMN2(IE,  :,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IE,  :,:))**2
+  ZOMN1(IE+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IE+1,:,:))**2
+  ZOMN2(IE+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IE+1,:,:))**2
+!
+! WENO fluxes (5th order)
+!
+  PR(IW:IE-1,:,:) = (ZOMP2(IW:IE-1,:,:)/(ZOMP1(IW:IE-1,:,:)+ZOMP2(IW:IE-1,:,:)+&
+                     ZOMP3(IW:IE-1,:,:)) * ZFPOS2(IW:IE-1,:,:) &
+                   + ZOMP1(IW:IE-1,:,:)/(ZOMP1(IW:IE-1,:,:)+ZOMP2(IW:IE-1,:,:)+&
+                     ZOMP3(IW:IE-1,:,:)) * ZFPOS1(IW:IE-1,:,:) & 
+                   + ZOMP3(IW:IE-1,:,:)/(ZOMP1(IW:IE-1,:,:)+ZOMP2(IW:IE-1,:,:)+&
+                     ZOMP3(IW:IE-1,:,:)) * ZFPOS3(IW:IE-1,:,:))&
+                   * (0.5+SIGN(0.5,PRUCT(IW:IE-1,:,:)))        &
+                  + (ZOMN2(IW:IE-1,:,:)/(ZOMN1(IW:IE-1,:,:)+ZOMN2(IW:IE-1,:,:)+&
+                     ZOMN3(IW:IE-1,:,:)) * ZFNEG2(IW:IE-1,:,:) &
+                   + ZOMN1(IW:IE-1,:,:)/(ZOMN1(IW:IE-1,:,:)+ZOMN2(IW:IE-1,:,:)+&
+                     ZOMN3(IW:IE-1,:,:)) * ZFNEG1(IW:IE-1,:,:) &
+                   + ZOMN3(IW:IE-1,:,:)/(ZOMN1(IW:IE-1,:,:)+ZOMN2(IW:IE-1,:,:)+&
+                     ZOMN3(IW:IE-1,:,:)) * ZFNEG3(IW:IE-1,:,:))&
+                   * (0.5-SIGN(0.5,PRUCT(IW:IE-1,:,:)))
+!
+! WENO fluxes (3rd order)
+!
+  PR(IW-1,:,:) = (ZOMN2(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) * & 
+                  ZFNEG2(IW-1,:,:)     &
+               + (ZOMN1(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) * &
+                  ZFNEG1(IW-1,:,:))) * &
+               (0.5-SIGN(0.5,PRUCT(IW-1,:,:)))                        &
+               + (ZOMP2(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) * &
+               ZFPOS2(IW-1,:,:)     &
+               + (ZOMP1(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) * &
+               ZFPOS1(IW-1,:,:))) * &
+               (0.5+SIGN(0.5,PRUCT(IW-1,:,:)))
+!
+  PR(IE,  :,:) = (ZOMN2(IE,  :,:)/(ZOMN1(IE,  :,:)+ZOMN2(IE,  :,:)) * &
+               ZFNEG2(IE,  :,:)     &
+               + (ZOMN1(IE,  :,:)/(ZOMN1(IE,  :,:)+ZOMN2(IE,  :,:)) * &
+               ZFNEG1(IE,  :,:))) * &
+               (0.5-SIGN(0.5,PRUCT(IE,  :,:)))                        &
+               + (ZOMP2(IE,  :,:)/(ZOMP1(IE,  :,:)+ZOMP2(IE,  :,:)) * &
+               ZFPOS2(IE,  :,:)     &
+               + (ZOMP1(IE,  :,:)/(ZOMP1(IE,  :,:)+ZOMP2(IE,  :,:)) * &
+               ZFPOS1(IE,  :,:))) * &
+               (0.5+SIGN(0.5,PRUCT(IE,  :,:)))
+!
+  PR(IE+1,:,:) = (ZOMN2(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) * &
+               ZFNEG2(IE+1,:,:)     &
+               + (ZOMN1(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) * &
+               ZFNEG1(IE+1,:,:))) * &
+               (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))                        &
+               + (ZOMP2(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) * &
+               ZFPOS2(IE+1,:,:)     &
+               + (ZOMP1(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) * &
+               ZFPOS1(IE+1,:,:))) * &
+               (0.5+SIGN(0.5,PRUCT(IE+1,:,:)))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE X DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IW=IIB
+  IE=IIE
+!
+!  LATERAL BOUNDARY CONDITIONS
+!  AT THE PHYSICAL BORDER: USE A FIRST ORDER UPSTREAM WENO SCHEME AT THE POINTS: IW-1, 
+! IE /AND/ A THIRD ORDER WENO SCHEME AT THE POINTS: IW, IE-1
+!  AT THE PROC. BORDER: A THIRD ORDER UPSTREAM WENO SCHEME AT THE POINTS: IW-1, IE  /AND/ 
+! A FIFTH ORDER WENO SCHEME AT THE POINTS: IW, IE-1
+!
+!   PHYSICAL BORDER (WEST)
+!
+  IF(LWEST_ll()) THEN
+!
+!   FISRT ORDER WENO SCHEME
+!
+    PR(IW-1,:,:) = PSRC(IW-1,:,:) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) + &
+                   PSRC(IW,:,:) * &
+                   (0.5-SIGN(0.5,PRUCT(IW-1,:,:)))
+!
+!   THIRD ORDER WENO SCHEME
+!
+    ZFPOS1(IW,:,:) = 0.5  * (3.0*PSRC(IW,:,:) - PSRC(IW-1,:,:))
+    ZFPOS2(IW,:,:) = 0.5 * (PSRC(IW     ,:,:) + PSRC(IW+1,:,:))
+    ZBPOS1(IW,:,:) = (PSRC(IW,:,:) - PSRC(IW-1,:,:))**2
+    ZBPOS2(IW,:,:) = (PSRC(IW+1,  :,:) - PSRC(IW,:,:))**2
+!
+    ZFNEG1(IW,:,:) = 0.5 * (3.0*PSRC(IW+1,:,:) - PSRC(IW+2,:,:))
+    ZFNEG2(IW,:,:) = 0.5 * (PSRC(IW,      :,:) + PSRC(IW+1,:,:))
+    ZBNEG1(IW,:,:) = (PSRC(IW+1,:,:) - PSRC(IW+2,:,:))**2
+    ZBNEG2(IW,:,:) = (PSRC(IW,  :,:) - PSRC(IW+1,:,:))**2
+!
+    ZOMP1(IW,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IW,:,:))**2
+    ZOMP2(IW,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IW,:,:))**2
+    ZOMN1(IW,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IW,:,:))**2
+    ZOMN2(IW,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IW,:,:))**2
+!
+    PR(IW,:,:) = (ZOMN2(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * &
+      ZFNEG2(IW,:,:) +  &
+       (ZOMN1(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * ZFNEG1(IW,:,:))) *  &
+       (0.5-SIGN(0.5,PRUCT(IW,:,:))) +                                    &
+       (ZOMP2(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS2(IW,:,:) +    &
+       (ZOMP1(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS1(IW,:,:))) *  &
+       (0.5+SIGN(0.5,PRUCT(IW,:,:)))
+!
+!    PROC. BORDER (WEST)
+!
+  ELSEIF(NHALO == 1) THEN
+!
+!   THIRD ORDER WENO SCHEME
+!
+    ZFPOS1(IW-1,:,:) = 0.5  * (3.0*PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))
+    ZFPOS2(IW-1,:,:) = 0.5 * (PSRC(IW-1,     :,:) + PSRC(IW,:,:))
+    ZBPOS1(IW-1,:,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2
+    ZBPOS2(IW-1,:,:) = (PSRC(IW,  :,:) - PSRC(IW-1,:,:))**2
+!
+    ZFNEG1(IW-1,:,:) = 0.5 * (3.0*PSRC(IW,:,:) - PSRC(IW+1,:,:))
+    ZFNEG2(IW-1,:,:) = 0.5 * (PSRC(IW-1,  :,:) + PSRC(IW,  :,:))
+    ZBNEG1(IW-1,:,:) = (PSRC(IW,  :,:) - PSRC(IW+1,:,:))**2
+    ZBNEG2(IW-1,:,:) = (PSRC(IW-1,:,:) - PSRC(IW,  :,:))**2
+!
+    ZOMP1(IW-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IW-1,:,:))**2
+    ZOMP2(IW-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IW-1,:,:))**2
+    ZOMN1(IW-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IW-1,:,:))**2
+    ZOMN2(IW-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IW-1,:,:))**2
+!
+    PR(IW-1,:,:) = (ZOMN2(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) &
+               * ZFNEG2(IW-1,:,:)  &
+               + (ZOMN1(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) * &
+                 ZFNEG1(IW-1,:,:))) *&
+               (0.5-SIGN(0.5,PRUCT(IW-1,:,:)))                        &
+               + (ZOMP2(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) * &
+                 ZFPOS2(IW-1,:,:)    &
+               + (ZOMP1(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) * &
+                 ZFPOS1(IW-1,:,:))) *&
+               (0.5+SIGN(0.5,PRUCT(IW-1,:,:)))
+!
+!   FIFTH ORDER WENO SCHEME
+!
+    ZFPOS1(IW,:,:) = 1./6 * (2.0*TPHALO2%WEST(:,:) - 7.0*PSRC(IW-1,:,:) + &
+                     11.0*PSRC(IW, :,:))
+    ZFPOS2(IW,:,:) = 1./6 * (-1.0*PSRC(IW-1,  :,:) + 5.0*PSRC(IW,  :,:) + &
+                     2.0*PSRC(IW+1,:,:))
+    ZFPOS3(IW,:,:) = 1./6 * (2.0*PSRC(IW,     :,:) + 5.0*PSRC(IW+1,:,:) - &
+                     PSRC(IW+2,:,:))
+!
+    ZFNEG1(IW,:,:) = 1./6 * (11.0*PSRC(IW+1,:,:) - 7.0*PSRC(IW+2,:,:) + &
+                     2.0*PSRC(IW+3,:,:))
+    ZFNEG2(IW,:,:) = 1./6 * ( 2.0*PSRC(IW,  :,:) + 5.0*PSRC(IW+1,:,:) - &
+                     PSRC(IW+2,:,:))
+    ZFNEG3(IW,:,:) = 1./6 * (-1.0*PSRC(IW-1,:,:) + 5.0*PSRC(IW,  :,:) + &
+                     2.0*PSRC(IW+1,:,:))  
+!
+    ZBPOS1(IW,:,:) = 13./12 * (TPHALO2%WEST(:,:) - 2.0*PSRC(IW-1,:,:) + &
+                     PSRC(IW,:,:))**2 + &
+                     1./4 * (TPHALO2%WEST(:,:) - 4.0*PSRC(IW-1,:,:) + &
+                     3.0*PSRC(IW,:,:))**2
+    ZBPOS2(IW,:,:) = 13./12 * (PSRC(IW-1,:,:) - 2.0*PSRC(IW,:,:) + &
+                     PSRC(IW+1,:,:))**2 + &
+                     1./4 * (PSRC(IW-1,:,:) - PSRC(IW+1,:,:))**2
+    ZBPOS3(IW,:,:) = 13./12 * (PSRC(IW,:,:) - 2.0*PSRC(IW+1,:,:) + &
+                     PSRC(IW+2,:,:))**2 + &
+                     1./4 * ( 3.0*PSRC(IW,:,:) - 4.0*PSRC(IW+1,:,:) + &
+                     PSRC(IW+2,:,:))**2
+!
+    ZBNEG1(IW,:,:) = 13./12 * (PSRC(IW+1,:,:) - 2.0*PSRC(IW+2,:,:) + &
+                     PSRC(IW+3,:,:))**2 + &
+                     1./4 * ( 3.0*PSRC(IW+1,:,:) - 4.0*PSRC(IW+2,:,:) + &
+                     PSRC(IW+3,:,:))**2
+    ZBNEG2(IW,:,:) = 13./12 * (PSRC(IW,:,:) - 2.0*PSRC(IW+1,:,:) + &
+                     PSRC(IW+2,:,:))**2 + &
+                     1./4 * (PSRC(IW,:,:) - PSRC(IW+2,:,:))**2    
+    ZBNEG3(IW,:,:) = 13./12 * (PSRC(IW-1,:,:) - 2.0*PSRC(IW,:,:) + &
+                     PSRC(IW+1,:,:))**2 + &
+                     1./4 * ( PSRC(IW-1,:,:) - 4.0*PSRC(IW,:,:) + &
+                     3.0*PSRC(IW+1,:,:))**2
+!
+    ZOMP1(IW,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW,:,:))**2
+    ZOMP2(IW,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW,:,:))**2
+    ZOMP3(IW,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IW,:,:))**2
+    ZOMN1(IW,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW,:,:))**2
+    ZOMN2(IW,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW,:,:))**2
+    ZOMN3(IW,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IW,:,:))**2
+!
+    PR(IW,:,:) = (ZOMP2(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)+ &
+                  ZOMP3(IW,:,:)) * ZFPOS2(IW,:,:)      &
+                   + ZOMP1(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)+ &
+                   ZOMP3(IW,:,:)) * ZFPOS1(IW,:,:)   &
+                   + ZOMP3(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)+ &
+                   ZOMP3(IW,:,:)) * ZFPOS3(IW,:,:)) *&
+                   (0.5+SIGN(0.5,PRUCT(IW,:,:)))                 &
+                   + (ZOMN2(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)+&
+                   ZOMN3(IW,:,:)) * ZFNEG2(IW,:,:)  &
+                   + ZOMN1(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)+ &
+                   ZOMN3(IW,:,:)) * ZFNEG1(IW,:,:)   &
+                   + ZOMN3(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)+ &
+                   ZOMN3(IW,:,:)) * ZFNEG3(IW,:,:)) *&
+                   (0.5-SIGN(0.5,PRUCT(IW,:,:)))
+!
+  ENDIF
+!
+! PHYSICAL BORDER (EAST)
+!
+  IF(LEAST_ll()) THEN
+    PR(IE,:,:) = PSRC(IE,:,:) * (0.5+SIGN(0.5,PRUCT(IE,:,:))) + &
+                 PSRC(IE+1,:,:) * &
+                 (0.5-SIGN(0.5,PRUCT(IE,:,:)))
+!
+    ZFPOS1(IE-1,:,:) = 0.5 * (3.0*PSRC(IE-1,:,:) - PSRC(IE-2,:,:))
+    ZFPOS2(IE-1,:,:) = 0.5 * (PSRC(IE-1,    :,:) + PSRC(IE,  :,:))
+    ZBPOS1(IE-1,:,:) = (PSRC(IE-1,:,:) - PSRC(IE-2,:,:))**2
+    ZBPOS2(IE-1,:,:) = (PSRC(IE,  :,:) - PSRC(IE-1,:,:))**2
+!
+    ZFNEG1(IE-1,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE+1,:,:))
+    ZFNEG2(IE-1,:,:) = 0.5 * (PSRC(IE-1,  :,:) + PSRC(IE,  :,:))
+    ZBNEG1(IE-1,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,:,:))**2
+    ZBNEG2(IE-1,:,:) = (PSRC(IE-1,:,:) - PSRC(IE,  :,:))**2
+!
+    ZOMP1(IE-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IE-1,:,:))**2
+    ZOMP2(IE-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IE-1,:,:))**2
+    ZOMN1(IE-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IE-1,:,:))**2
+    ZOMN2(IE-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IE-1,:,:))**2
+!    
+      PR(IE-1,:,:) = (ZOMN2(IE-1,:,:)/(ZOMN1(IE-1,:,:)+ZOMN2(IE-1,:,:)) * &
+               ZFNEG2(IE-1,:,:)&
+               + (ZOMN1(IE-1,:,:)/(ZOMN1(IE-1,:,:)+ZOMN2(IE-1,:,:)) * &
+               ZFNEG1(IE-1,:,:))) *&
+               (0.5-SIGN(0.5,PRUCT(IE-1,:,:)))                        &
+               + (ZOMP2(IE-1,:,:)/(ZOMP1(IE-1,:,:)+ZOMP2(IE-1,:,:)) * &
+               ZFPOS2(IE-1,:,:)    &
+               + (ZOMP1(IE-1,:,:)/(ZOMP1(IE-1,:,:)+ZOMP2(IE-1,:,:)) * &
+               ZFPOS1(IE-1,:,:))) *&
+               (0.5+SIGN(0.5,PRUCT(IE-1,:,:)))
+!
+! PROC. BORDER (EAST)
+!
+  ELSEIF(NHALO == 1) THEN
+!
+    ZFPOS1(IE,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE-1,:,:))
+    ZFPOS2(IE,:,:) = 0.5 * (PSRC(IE,    :,:) + PSRC(IE+1,:,:))
+    ZBPOS1(IE,:,:) = (PSRC(IE,  :,:) - PSRC(IE-1,:,:))**2
+    ZBPOS2(IE,:,:) = (PSRC(IE+1,:,:) - PSRC(IE,  :,:))**2
+!
+    ZFNEG1(IE,:,:) = 0.5 * (3.0*PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))
+    ZFNEG2(IE,:,:) = 0.5 * (PSRC(IE,      :,:) + PSRC(IE+1,:,:))
+    ZBNEG1(IE,:,:) = (PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))**2
+    ZBNEG2(IE,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,:,:))**2
+!
+    ZOMP1(IE,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IE,:,:))**2
+    ZOMP2(IE,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IE,:,:))**2
+    ZOMN1(IE,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IE,:,:))**2
+    ZOMN2(IE,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IE,:,:))**2
+!
+    PR(IE,:,:) = (ZOMN2(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)) * ZFNEG2(IE,:,:)&
+               + (ZOMN1(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)) * ZFNEG1(IE,:,:))) *&
+               (0.5-SIGN(0.5,PRUCT(IE,:,:)))                                      &
+               + (ZOMP2(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)) * ZFPOS2(IE,:,:)    &
+               + (ZOMP1(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)) * ZFPOS1(IE,:,:))) *&
+               (0.5+SIGN(0.5,PRUCT(IE,:,:)))
+!
+!
+    ZFPOS1(IE-1,:,:) = 1./6 * (2.0 *PSRC(IE-3,:,:) - 7.0*PSRC(IE-2,:,:) + &
+                              11.0*PSRC(IE-1,:,:))
+    ZFPOS2(IE-1,:,:) = 1./6 * (-1.0*PSRC(IE-2,:,:) + 5.0*PSRC(IE-1,:,:) + &
+                              2.0*PSRC(IE,:,:))
+    ZFPOS3(IE-1,:,:) = 1./6 * (2.0 *PSRC(IE-1,:,:) + 5.0*PSRC(IE,  :,:) - &
+                              PSRC(IE+1,  :,:))
+!
+    ZFNEG1(IE-1,:,:) = 1./6 * (11.0*PSRC(IE,:,:) - 7.0*PSRC(IE+1,:,:) + &
+                              2.0*TPHALO2%EAST(:,:))
+    ZFNEG2(IE-1,:,:) = 1./6 * (2.0*PSRC(IE-1,:,:) + 5.0*PSRC(IE,:,:) - &
+                              PSRC(IE+1,:,:))
+    ZFNEG3(IE-1,:,:) = 1./6 * (-1.0*PSRC(IE-2,:,:) + 5.0*PSRC(IE-1,:,:) + &
+                              2.0*PSRC(IE,:,:))
+!
+    ZBPOS1(IE-1,:,:) = 13./12 * (PSRC(IE-3,:,:) - 2.0*PSRC(IE-2,:,:) + &
+                       PSRC(IE-1,:,:))**2 + &
+                       1./4 * (PSRC(IE-3,:,:) - 4.0*PSRC(IE-2,:,:) + &
+                       3.0*PSRC(IE-1,:,:))**2
+    ZBPOS2(IE-1,:,:) = 13./12 * (PSRC(IE-2,:,:) - 2.0*PSRC(IE-1,:,:) + &
+                       PSRC(IE,:,:))**2 + &
+                       1./4 * (PSRC(IE-2,:,:) - PSRC(IE,:,:))**2
+    ZBPOS3(IE-1,:,:) = 13./12 * (PSRC(IE-1,:,:) - 2.0*PSRC(IE,:,:) + &
+                       PSRC(IE+1,:,:))**2 + &
+                       1./4 * ( 3.0*PSRC(IE-1,:,:) - 4.0*PSRC(IE,:,:) + &
+                       PSRC(IE+1,:,:))**2!
+    ZBNEG1(IE-1,:,:) = 13./12 * (PSRC(IE,:,:) - 2.0*PSRC(IE+1,:,:) + &
+                       TPHALO2%EAST(:,:))**2 + &
+                       1./4 * ( 3.0*PSRC(IE,:,:) - 4.0*PSRC(IE+1,:,:) + &
+                       TPHALO2%EAST(:,:))**2
+    ZBNEG2(IE-1,:,:) = 13./12 * (PSRC(IE-1,:,:) - 2.0*PSRC(IE,:,:) + &
+                       PSRC(IE+1,:,:))**2 + &
+                       1./4 * (PSRC(IE-1,:,:) - PSRC(IE+1,:,:))**2
+    ZBNEG3(IE-1,:,:) = 13./12 * (PSRC(IE-2,:,:) - 2.0*PSRC(IE-1,:,:) + &
+                       PSRC(IE,:,:))**2 + &
+                       1./4 * ( PSRC(IE-2,:,:) - 4.0*PSRC(IE-1,:,:) + &
+                       3.0*PSRC(IE,:,:))**2
+!
+    ZOMP1(IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IE-1,:,:))**2
+    ZOMP2(IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IE-1,:,:))**2
+    ZOMP3(IE-1,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IE-1,:,:))**2
+    ZOMN1(IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IE-1,:,:))**2
+    ZOMN2(IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IE-1,:,:))**2
+    ZOMN3(IE-1,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IE-1,:,:))**2
+!
+      PR(IE-1,:,:) = (ZOMP2(IE-1,:,:)/(ZOMP1(IE-1,:,:)+ZOMP2(IE-1,:,:)+ &
+                   ZOMP3(IE-1,:,:)) * ZFPOS2(IE-1,:,:)   &
+                   + ZOMP1(IE-1,:,:)/(ZOMP1(IE-1,:,:)+ZOMP2(IE-1,:,:)+ &
+                   ZOMP3(IE-1,:,:)) * ZFPOS1(IE-1,:,:)    &
+                   + ZOMP3(IE-1,:,:)/(ZOMP1(IE-1,:,:)+ZOMP2(IE-1,:,:)+ &
+                   ZOMP3(IE-1,:,:)) * ZFPOS3(IE-1,:,:)) * &
+                   (0.5+SIGN(0.5,PRUCT(IE-1,:,:))) &
+                  + (ZOMN2(IE-1,:,:)/(ZOMN1(IE-1,:,:)+ZOMN2(IE-1,:,:)+ &
+                  ZOMN3(IE-1,:,:)) * ZFNEG2(IE-1,:,:)    &
+                   + ZOMN1(IE-1,:,:)/(ZOMN1(IE-1,:,:)+ZOMN2(IE-1,:,:)+ &
+                   ZOMN3(IE-1,:,:)) * ZFNEG1(IE-1,:,:)    &
+                   + ZOMN3(IE-1,:,:)/(ZOMN1(IE-1,:,:)+ZOMN2(IE-1,:,:)+ &
+                   ZOMN3(IE-1,:,:)) * ZFNEG3(IE-1,:,:)) * &
+                   (0.5-SIGN(0.5,PRUCT(IE-1,:,:)))
+!
+  ENDIF
+!
+!      USE A FIFTH ORDER UPSTREAM WENO SCHEME ELSEWHERE (IW+1 --> IE-2) 
+!
+  ZFPOS1(IW+1:IE-2,:,:) = 1./6 * (2.0*PSRC(IW-1:IE-4,:,:) - &
+   7.0*PSRC(IW:IE-3,:,:) + 11.0*PSRC(IW+1:IE-2,:,:))
+  ZFPOS2(IW+1:IE-2,:,:) = 1./6 * (-1.0*PSRC(IW:IE-3,:,:) + &
+   5.0*PSRC(IW+1:IE-2,:,:) + 2.0*PSRC(IW+2:IE-1,:,:))
+  ZFPOS3(IW+1:IE-2,:,:) = 1./6 * (2.0*PSRC(IW+1:IE-2,:,:) + &
+   5.0*PSRC(IW+2:IE-1,:,:) - PSRC(IW+3:IE,:,:))
+!
+  ZFNEG1(IW+1:IE-2,:,:) = 1./6 * (11.0*PSRC(IW+2:IE-1,:,:) - &
+   7.0*PSRC(IW+3:IE,:,:) + 2.0*PSRC(IW+4:IE+1,:,:))
+  ZFNEG2(IW+1:IE-2,:,:) = 1./6 * (2.0*PSRC(IW+1:IE-2,:,:) + &
+   5.0*PSRC(IW+2:IE-1,:,:) - PSRC(IW+3:IE,:,:))
+  ZFNEG3(IW+1:IE-2,:,:) = 1./6 * (-1.0*PSRC(IW:IE-3,:,:) + &
+   5.0*PSRC(IW+1:IE-2,:,:) + 2.0*PSRC(IW+2:IE-1,:,:))
+!
+  ZBPOS1(IW+1:IE-2,:,:) = 13./12 * (PSRC(IW-1:IE-4,:,:) - &
+    2.0*PSRC(IW:IE-3,:,:) + PSRC(IW+1:IE-2,:,:))**2 + &
+    1./4 * (PSRC(IW-1:IE-4,:,:) - 4.0*PSRC(IW:IE-3,:,:) + &
+    3.0*PSRC(IW+1:IE-2,:,:))**2
+  ZBPOS2(IW+1:IE-2,:,:) = 13./12 * (PSRC(IW:IE-3,:,:) - &
+    2.0*PSRC(IW+1:IE-2,:,:) + PSRC(IW+2:IE-1,:,:))**2 + &
+    1./4 * (PSRC(IW:IE-3,:,:) - PSRC(IW+2:IE-1,:,:))**2
+  ZBPOS3(IW+1:IE-2,:,:) = 13./12 * (PSRC(IW+1:IE-2,:,:) - &
+    2.0*PSRC(IW+2:IE-1,:,:) + PSRC(IW+3:IE,:,:))**2 + &
+    1./4 * ( 3.0*PSRC(IW+1:IE-2,:,:) - 4.0*PSRC(IW+2:IE-1,:,:) &
+    + PSRC(IW+3:IE,:,:))**2
+!
+  ZBNEG1(IW+1:IE-2,:,:) = 13./12 * (PSRC(IW+2:IE-1,:,:) - &
+    2.0*PSRC(IW+3:IE,:,:) + PSRC(IW+4:IE+1,:,:))**2 + &
+    1./4 * ( 3.0*PSRC(IW+2:IE-1,:,:) - 4.0*PSRC(IW+3:IE,:,:) + &
+    PSRC(IW+4:IE+1,:,:))**2
+  ZBNEG2(IW+1:IE-2,:,:) = 13./12 * (PSRC(IW+1:IE-2,:,:) - &
+    2.0*PSRC(IW+2:IE-1,:,:) + PSRC(IW+3:IE,:,:))**2 + &
+    1./4 * (PSRC(IW+1:IE-2,:,:) - PSRC(IW+3:IE,:,:))**2
+  ZBNEG3(IW+1:IE-2,:,:) = 13./12 * (PSRC(IW:IE-3,:,:) - &
+    2.0*PSRC(IW+1:IE-2,:,:) + PSRC(IW+2:IE-1,:,:))**2 + &
+    1./4 * ( PSRC(IW:IE-3,:,:) - 4.0*PSRC(IW+1:IE-2,:,:) + &
+    3.0*PSRC(IW+2:IE-1,:,:))**2
+!
+  ZOMP1(IW+1:IE-2,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW+1:IE-2,:,:))**2
+  ZOMP2(IW+1:IE-2,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW+1:IE-2,:,:))**2
+  ZOMP3(IW+1:IE-2,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IW+1:IE-2,:,:))**2
+  ZOMN1(IW+1:IE-2,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW+1:IE-2,:,:))**2
+  ZOMN2(IW+1:IE-2,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW+1:IE-2,:,:))**2
+  ZOMN3(IW+1:IE-2,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IW+1:IE-2,:,:))**2
+!
+    PR(IW+1:IE-2,:,:) = (ZOMP2(IW+1:IE-2,:,:)/(ZOMP1(IW+1:IE-2,:,:)+ &
+      ZOMP2(IW+1:IE-2,:,:)+ &
+      ZOMP3(IW+1:IE-2,:,:)) * ZFPOS2(IW+1:IE-2,:,:)  +                 &
+      ZOMP1(IW+1:IE-2,:,:)/(ZOMP1(IW+1:IE-2,:,:)+ZOMP2(IW+1:IE-2,:,:)+ &
+      ZOMP3(IW+1:IE-2,:,:)) * ZFPOS1(IW+1:IE-2,:,:)  +                 &
+      ZOMP3(IW+1:IE-2,:,:)/(ZOMP1(IW+1:IE-2,:,:)+ZOMP2(IW+1:IE-2,:,:)+ &
+      ZOMP3(IW+1:IE-2,:,:)) * ZFPOS3(IW+1:IE-2,:,:)) *                 &
+      (0.5+SIGN(0.5,PRUCT(IW+1:IE-2,:,:))) +                           &
+      (ZOMN2(IW+1:IE-2,:,:)/(ZOMN1(IW+1:IE-2,:,:)+ZOMN2(IW+1:IE-2,:,:)+&
+      ZOMN3(IW+1:IE-2,:,:)) * ZFNEG2(IW+1:IE-2,:,:) +                  &
+      ZOMN1(IW+1:IE-2,:,:)/(ZOMN1(IW+1:IE-2,:,:)+ZOMN2(IW+1:IE-2,:,:)+ &
+      ZOMN3(IW+1:IE-2,:,:)) * ZFNEG1(IW+1:IE-2,:,:)   +                &
+      ZOMN3(IW+1:IE-2,:,:)/(ZOMN1(IW+1:IE-2,:,:)+ZOMN2(IW+1:IE-2,:,:)+ &
+      ZOMN3(IW+1:IE-2,:,:)) * ZFNEG3(IW+1:IE-2,:,:)) *                 &
+      (0.5-SIGN(0.5,PRUCT(IW+1:IE-2,:,:)))
+!
+END SELECT
+!
+PR = PR * PRUCT
+!
+END SUBROUTINE ADVEC_WENO_K_3_UX
+!
+!------------------------------------------------------------------------------
+!
+!     ############################################################
+      SUBROUTINE ADVEC_WENO_K_3_MX(HLBCX,PSRC, PRUCT, PR, TPHALO2)
+!     ############################################################
+!!
+!!**** Computes PRUCT * PWT (or PRUCT * PVT). Upstream fluxes of W (or V)
+!!     variables in X direction.  
+!!     Input PWT is on W Grid 'ie' (i,j,k) based on WGRID reference
+!!     Output PR is on mass Grid 'ie' (i-1/2,j,k) based on WGRID reference  
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*                
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRUCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER::  IW,IE   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+!
+! intermediate reconstruction fluxes for positive wind case
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFPOS1, ZFPOS2, ZFPOS3
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFNEG1, ZFNEG2, ZFNEG3
+!
+! smoothness indicators for positive wind case
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBPOS1, ZBPOS2, ZBPOS3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBNEG1, ZBNEG2, ZBNEG3
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2, ZOMP3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2, ZOMN3
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./10.
+REAL, PARAMETER :: ZGAMMA2 = 3./5.
+REAL, PARAMETER :: ZGAMMA3 = 3./10.
+REAL, PARAMETER :: ZGAMMA1_PRIM = 1./3.
+REAL, PARAMETER :: ZGAMMA2_PRIM = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!-----------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFPOS3 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0
+ZFNEG3 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBPOS3 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZBNEG3 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMP3  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0
+ZOMN3  = 0.0 
+!
+!------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE X DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IW=IIB
+    IE=IIE
+  ELSE
+    CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+    WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case '
+    WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+    CALL ABORT
+    STOP
+  END IF  
+!
+! r: many left cells in regard to 'i-1' cell for each stencil
+! 
+! intermediate fluxes at the mass point on Ugrid u(i-1/2,j,k)=((i-1)+1/2,j,k) 
+! for positive wind case (left to the right)
+! (r=2 for the first stencil ZFPOS1, r=1 for the second ZFPOS2 and
+!  r=0 for the last ZFPOS3)
+!
+  ZFPOS1(IW+2:IE,:,:) = 1./6 * (2.0*PSRC(IW-1:IE-3,:,:) - 7.0*PSRC(IW:IE-2,:,:) + &
+                        11.0*PSRC(IW+1:IE-1,:,:))
+  ZFPOS1(IW+1,   :,:) = 1./6 * (2.0*TPHALO2%WEST(:,:)   - 7.0*PSRC(IW-1,   :,:) + &
+                        11.0*PSRC(IW,       :,:))
+  ZFPOS1(IE+1,:,:) = 0.5 * (3.0*PSRC(IE,  :,:) - PSRC(IE-1,:,:))
+  ZFPOS1(IW,  :,:) = 0.5 * (3.0*PSRC(IW-1,:,:) - TPHALO2%WEST(:,:) )
+  ZFPOS1(IW-1,:,:) = - 999.
+!
+!
+  ZFPOS2(IW+1:IE,:,:) = 1./6 * (-1.0*PSRC(IW-1:IE-2,:,:) + 5.0*PSRC(IW:IE-1,:,:) + &
+                        2.0*PSRC(IW+1:IE,:,:))
+  ZFPOS2(IE+1,:,:) = 0.5 * (PSRC(IE+1,:,:)    + PSRC(IE,  :,:)) 
+  ZFPOS2(IW,  :,:) = 0.5 * (PSRC(IW-1,:,:)    + PSRC(IW,  :,:))
+  ZFPOS2(IW-1,:,:) = 0.5 * (TPHALO2%WEST(:,:) + PSRC(IW-1,:,:))
+!
+!
+  ZFPOS3(IW+1:IE,:,:) = 1./6 * (2.0*PSRC(IW:IE-1,:,:) + 5.0*PSRC(IW+1:IE,:,:) - &
+                        PSRC(IW+2:IE+1,:,:))
+!
+! r: many left cells in regard to 'i' cell for each stencil
+!
+! intermediate fluxes at the mass point on Ugrid u(i-1/2,j,k) for negative wind
+! case (R. to the L.)
+! (r=2 for the third stencil ZFNEG3=ZFPOS2, r=1 for the second ZFNEG2=ZFPOS3 
+!  and r=0 for the first ZFNEG1)
+!
+  ZFNEG1(IW+1:IE-1,:,:) = 1./6 * (11.0*PSRC(IW+1:IE-1,:,:) - 7.0*PSRC(IW+2:IE,:,:)&
+                          + 2.0*PSRC(IW+3:IE+1,:,:))
+  ZFNEG1(IE,       :,:) = 1./6 * (11.0*PSRC(IE,       :,:) - 7.0*PSRC(IE+1,   :,:)&
+                          + 2.0*TPHALO2%EAST(:,:))
+  ZFNEG1(IW,  :,:) = 0.5 * (3.0*PSRC(IW,  :,:) - PSRC(IW+1,   :,:))
+  ZFNEG1(IW-1,:,:) = 0.5 * (3.0*PSRC(IW-1,:,:) - PSRC(IW,     :,:))
+  ZFNEG1(IE+1,:,:) = 0.5 * (3.0*PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))
+!
+!
+  ZFNEG2(IW+1:IE,:,:) = 1./6 * (2.0*PSRC(IW:IE-1,:,:) + 5.0*PSRC(IW+1:IE,:,:) - &
+                        PSRC(IW+2:IE+1,:,:))
+  ZFNEG2(IW,  :,:) = 0.5 * (PSRC(IW,  :,:) + PSRC(IW-1,   :,:))
+  ZFNEG2(IW-1,:,:) = 0.5 * (PSRC(IW-1,:,:) + TPHALO2%WEST(:,:))
+  ZFNEG2(IE+1,:,:) = 0.5 * (PSRC(IE+1,:,:) + PSRC(IE,     :,:))
+! 
+!
+  ZFNEG3(IW+1:IE,:,:) = 1./6 * (-1.0*PSRC(IW-1:IE-2,:,:) + 5.0*PSRC(IW:IE-1,:,:) + &
+                        2.0*PSRC(IW+1:IE,:,:))
+!
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(IW+2:IE,:,:) = 13./12 * (PSRC(IW-1:IE-3,:,:) - 2.0*PSRC(IW:IE-2,:,:) + &
+                        PSRC(IW+1:IE-1,:,:))**2 + &
+                        1./4 * (PSRC(IW-1:IE-3,:,:) - 4.0*PSRC(IW:IE-2,:,:) + &
+                        3.0*PSRC(IW+1:IE-1,:,:))**2
+  ZBPOS1(IW+1,   :,:) = 13./12 * (TPHALO2%WEST(:,:) - 2.0*PSRC(IW-1,:,:) + &
+                        PSRC(IW,:,:))**2 + &
+                        1./4 * (TPHALO2%WEST(:,:) - 4.0*PSRC(IW-1,:,:) + &
+                        3.0*PSRC(IW,:,:))**2
+  ZBPOS1(IE+1,:,:) = (PSRC(IE,  :,:) - PSRC(IE-1,:,:))**2
+  ZBPOS1(IW,  :,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2
+  ZBPOS1(IW-1,:,:) = - 999.
+!
+!
+  ZBPOS2(IW+1:IE,:,:) = 13./12 * (PSRC(IW-1:IE-2,:,:) - 2.0*PSRC(IW:IE-1,:,:) + &
+                        PSRC(IW+1:IE,:,:))**2 + &
+                        1./4 * (PSRC(IW-1:IE-2,:,:) - PSRC(IW+1:IE,:,:))**2
+  ZBPOS2(IE+1,:,:) = (PSRC(IE+1,:,:) - PSRC(IE,:,:))**2
+  ZBPOS2(IW,  :,:) = (PSRC(IW,  :,:) - PSRC(IW-1,:,:))**2
+  ZBPOS2(IW-1,:,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2
+!
+!
+  ZBPOS3(IW+1:IE,:,:) = 13./12 * (PSRC(IW:IE-1,:,:) - 2.0*PSRC(IW+1:IE,:,:) + &
+                        PSRC(IW+2:IE+1,:,:))**2 + &
+                        1./4 * ( 3.0*PSRC(IW:IE-1,:,:) - 4.0*PSRC(IW+1:IE,:,:) + &
+                        PSRC(IW+2:IE+1,:,:))**2
+!
+! smoothness indicators for negative wind case
+!       
+  ZBNEG1(IW+1:IE-1,:,:) = 13./12 * (PSRC(IW+1:IE-1,:,:) - 2.0*PSRC(IW+2:IE,:,:) + &
+                          PSRC(IW+3:IE+1,:,:))**2 + &
+                          1./4 * ( 3.0*PSRC(IW+1:IE-1,:,:) - 4.0*PSRC(IW+2:IE,:,:)&
+                          + PSRC(IW+3:IE+1,:,:))**2
+  ZBNEG1(IE,       :,:) = 13./12 * (PSRC(IE,:,:) - 2.0*PSRC(IE+1,:,:) + &
+                          TPHALO2%EAST(:,:))**2 + &
+                          1./4 * ( 3.0*PSRC(IE,:,:) - 4.0*PSRC(IE+1,:,:) + &
+                          TPHALO2%EAST(:,:))**2
+  ZBNEG1(IW,  :,:) = (PSRC(IW,  :,:) - PSRC(IW+1,:,:))**2
+  ZBNEG1(IW-1,:,:) = (PSRC(IW-1,:,:) - PSRC(IW,  :,:))**2
+  ZBNEG1(IE+1,:,:) = (PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))**2
+!
+!
+  ZBNEG2(IW+1:IE,:,:) = 13./12 * (PSRC(IW:IE-1,:,:) - 2.0*PSRC(IW+1:IE,:,:) + &
+                        PSRC(IW+2:IE+1,:,:))**2 + &
+                        1./4 * (PSRC(IW:IE-1,:,:) - PSRC(IW+2:IE+1,:,:))**2
+  ZBNEG2(IW,  :,:) = (PSRC(IW-1,:,:) - PSRC(IW,  :,:))**2
+  ZBNEG2(IE+1,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,:,:))**2
+  ZBNEG2(IW-1,:,:) = (TPHALO2%WEST(:,:) - PSRC(IW-1,:,:))**2
+!
+!
+  ZBNEG3(IW+1:IE,:,:) = 13./12 * (PSRC(IW-1:IE-2,:,:) - 2.0*PSRC(IW:IE-1,:,:) + &
+                        PSRC(IW+1:IE,:,:))**2 + &
+                        1./4 * ( PSRC(IW-1:IE-2,:,:) - 4.0*PSRC(IW:IE-1,:,:) + &
+                        3.0*PSRC(IW+1:IE,:,:))**2
+!
+! WENO weights
+!
+  ZOMP1(IW+1:IE,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW+1:IE,:,:))**2
+  ZOMP2(IW+1:IE,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW+1:IE,:,:))**2
+  ZOMP3(IW+1:IE,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IW+1:IE,:,:))**2
+  ZOMN1(IW+1:IE,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW+1:IE,:,:))**2
+  ZOMN2(IW+1:IE,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW+1:IE,:,:))**2
+  ZOMN3(IW+1:IE,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IW+1:IE,:,:))**2
+!
+  ZOMP1(IW,  :,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IW,  :,:))**2
+  ZOMP2(IW,  :,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IW,  :,:))**2
+  ZOMN1(IW,  :,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IW,  :,:))**2
+  ZOMN2(IW,  :,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IW,  :,:))**2
+  ZOMP1(IW-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IW-1,:,:))**2
+  ZOMP2(IW-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IW-1,:,:))**2
+  ZOMN1(IW-1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IW-1,:,:))**2
+  ZOMN2(IW-1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IW-1,:,:))**2
+  ZOMP1(IE+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IE+1,:,:))**2
+  ZOMP2(IE+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IE+1,:,:))**2
+  ZOMN1(IE+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IE+1,:,:))**2
+  ZOMN2(IE+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IE+1,:,:))**2 
+!
+! WENO fluxes (5th order)
+!
+  PR(IW+1:IE,:,:) = (ZOMP2(IW+1:IE,:,:)/(ZOMP1(IW+1:IE,:,:)+ZOMP2(IW+1:IE,:,:)+&
+                    ZOMP3(IW+1:IE,:,:)) * ZFPOS2(IW+1:IE,:,:) +                &
+                    ZOMP1(IW+1:IE,:,:)/(ZOMP1(IW+1:IE,:,:)+ZOMP2(IW+1:IE,:,:) +&
+                    ZOMP3(IW+1:IE,:,:)) * ZFPOS1(IW+1:IE,:,:) +                &
+                    ZOMP3(IW+1:IE,:,:)/(ZOMP1(IW+1:IE,:,:)+ZOMP2(IW+1:IE,:,:)+ &
+                    ZOMP3(IW+1:IE,:,:)) *                                      &
+                    ZFPOS3(IW+1:IE,:,:)) * (0.5+SIGN(0.5,PRUCT(IW+1:IE,:,:)))  &
+                  + (ZOMN2(IW+1:IE,:,:)/(ZOMN1(IW+1:IE,:,:)+ZOMN2(IW+1:IE,:,:)+&
+                     ZOMN3(IW+1:IE,:,:)) *                                     &
+                     ZFNEG2(IW+1:IE,:,:)                                       &
+                   + ZOMN1(IW+1:IE,:,:)/(ZOMN1(IW+1:IE,:,:)+ZOMN2(IW+1:IE,:,:)+&
+                     ZOMN3(IW+1:IE,:,:)) * ZFNEG1(IW+1:IE,:,:)                 &
+                   + ZOMN3(IW+1:IE,:,:)/(ZOMN1(IW+1:IE,:,:)+ZOMN2(IW+1:IE,:,:)+&
+                     ZOMN3(IW+1:IE,:,:)) * ZFNEG3(IW+1:IE,:,:))                &
+                   * (0.5-SIGN(0.5,PRUCT(IW+1:IE,:,:)))
+!
+! WENO fluxes (3rd order)
+!
+  PR(IW,:,:) = (ZOMP2(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS2(IW,:,:)    &
+              + ZOMP1(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS1(IW,:,:)) * &
+              (0.5+SIGN(0.5,PRUCT(IW,:,:)))                                     &
+             + (ZOMN2(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * ZFNEG2(IW,:,:)    &
+              + ZOMN1(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * ZFNEG1(IW,:,:)) * &
+              (0.5-SIGN(0.5,PRUCT(IW,:,:)))
+!
+  PR(IW-1,:,:) = (ZOMP2(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) *        &
+     ZFPOS2(IW-1,:,:)                                                        &
+     + ZOMP1(IW-1,:,:)/(ZOMP1(IW-1,:,:)+ZOMP2(IW-1,:,:)) * ZFPOS1(IW-1,:,:)) &
+     * (0.5+SIGN(0.5,PRUCT(IW-1,:,:)))                                       &
+     + (ZOMN2(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) * ZFNEG2(IW-1,:,:) &
+     + ZOMN1(IW-1,:,:)/(ZOMN1(IW-1,:,:)+ZOMN2(IW-1,:,:)) * ZFNEG1(IW-1,:,:)) &
+     * (0.5-SIGN(0.5,PRUCT(IW-1,:,:)))
+!
+  PR(IE+1,:,:) = (ZOMP2(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) *        &
+     ZFPOS2(IE+1,:,:) +                                                      &
+     ZOMP1(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) * ZFPOS1(IE+1,:,:))   &
+     * (0.5+SIGN(0.5,PRUCT(IE+1,:,:)))                                       &
+     + (ZOMN2(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) * ZFNEG2(IE+1,:,:)+&
+     ZOMN1(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) * ZFNEG1(IE+1,:,:))   &
+     * (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE X DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IW=IIB
+  IE=IIE
+!
+!  LATERAL BOUNDARY CONDITIONS
+!  AT THE PHYSICAL BORDER: USE A FIRST ORDER UPSTREAM WENO SCHEME AT THE POINTS: IW, IE+1 /AND/ A THIRD ORDER WENO SCHEME AT THE POINTS: IW+1, IE
+!  AT THE PROC. BORDER: A THIRD ORDER UPSTREAM WENO SCHEME AT THE POINTS: IW, IE+1  /AND/ A FIFTH ORDER WENO SCHEME AT THE POINTS: IW+1, IE
+!
+!
+!   PHYSICAL BORDER (WEST)
+!
+  IF(LWEST_ll()) THEN
+!
+!   FIRST ORDER UPSTREAM WENO SCHEME
+!
+    PR(IW,:,:) = PSRC(IW-1,:,:) * (0.5+SIGN(0.5,PRUCT(IW,:,:))) + &
+                 PSRC(IW,:,:) * (0.5-SIGN(0.5,PRUCT(IW,:,:)))
+!
+!   THIRD ORDER UPSTREAM WENO SCHEME
+!
+    ZFPOS1(IW+1,:,:) = 0.5 * (3.0*PSRC(IW,:,:) - PSRC(IW-1,:,:))
+    ZFPOS2(IW+1,:,:) = 0.5 * (PSRC(IW,    :,:) + PSRC(IW+1,:,:))
+    ZBPOS1(IW+1,:,:) = (PSRC(IW,  :,:) - PSRC(IW-1,:,:))**2
+    ZBPOS2(IW+1,:,:) = (PSRC(IW+1,:,:) - PSRC(IW,  :,:))**2
+!
+    ZFNEG1(IW+1,:,:) = 0.5 * (3.0*PSRC(IW+1,:,:) - PSRC(IW+2,:,:))
+    ZFNEG2(IW+1,:,:) = 0.5 * (PSRC(IW+1,    :,:) + PSRC(IW,  :,:))
+    ZBNEG1(IW+1,:,:) = (PSRC(IW+1,:,:) - PSRC(IW+2,:,:))**2
+    ZBNEG2(IW+1,:,:) = (PSRC(IW,  :,:) - PSRC(IW+1,:,:))**2
+!
+    ZOMP1(IW+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IW+1,:,:))**2
+    ZOMP2(IW+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IW+1,:,:))**2
+    ZOMN1(IW+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IW+1,:,:))**2
+    ZOMN2(IW+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IW+1,:,:))**2
+!
+    PR(IW+1,:,:) = (ZOMP2(IW+1,:,:)/(ZOMP1(IW+1,:,:)+ZOMP2(IW+1,:,:)) *         & 
+      ZFPOS2(IW+1,:,:)                                                          & 
+      + ZOMP1(IW+1,:,:)/(ZOMP1(IW+1,:,:)+ZOMP2(IW+1,:,:)) * ZFPOS1(IW+1,:,:)) * &
+      (0.5+SIGN(0.5,PRUCT(IW+1,:,:)))                                           &
+      + (ZOMN2(IW+1,:,:)/(ZOMN1(IW+1,:,:)+ZOMN2(IW+1,:,:)) * ZFNEG2(IW+1,:,:)   &
+      + ZOMN1(IW+1,:,:)/(ZOMN1(IW+1,:,:)+ZOMN2(IW+1,:,:)) * ZFNEG1(IW+1,:,:)) * &
+      (0.5-SIGN(0.5,PRUCT(IW+1,:,:)))
+!
+! PROC. BORDER (WEST) 
+!
+  ELSEIF (NHALO == 1) THEN
+!
+!   THIRD ORDER UPSTREAM WENO SCHEME
+!
+    ZFPOS1(IW,:,:) = 0.5 * (3.0*PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))
+    ZFPOS2(IW,:,:) = 0.5 * (PSRC(IW-1,    :,:)    + PSRC(IW,:,:))
+    ZBPOS1(IW,:,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2
+    ZBPOS2(IW,:,:) = (PSRC(IW,  :,:) - PSRC(IW-1,:,:))**2
+!
+    ZFNEG1(IW,:,:) = 0.5 * (3.0*PSRC(IW,:,:) - PSRC(IW+1,:,:))
+    ZFNEG2(IW,:,:) = 0.5 * (PSRC(IW,    :,:) + PSRC(IW-1,:,:))
+    ZBNEG1(IW,:,:) = (PSRC(IW,  :,:) - PSRC(IW+1,:,:))**2
+    ZBNEG2(IW,:,:) = (PSRC(IW-1,:,:) - PSRC(IW,  :,:))**2
+!
+    ZOMP1(IW,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IW,:,:))**2
+    ZOMP2(IW,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IW,:,:))**2
+    ZOMN1(IW,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IW,:,:))**2
+    ZOMN2(IW,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IW,:,:))**2
+!
+    PR(IW,:,:) = (ZOMP2(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS2(IW,:,:) &
+                + ZOMP1(IW,:,:)/(ZOMP1(IW,:,:)+ZOMP2(IW,:,:)) * ZFPOS1(IW,:,:))&
+                                               * (0.5+SIGN(0.5,PRUCT(IW,:,:))) &
+               + (ZOMN2(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * ZFNEG2(IW,:,:) &
+                + ZOMN1(IW,:,:)/(ZOMN1(IW,:,:)+ZOMN2(IW,:,:)) * ZFNEG1(IW,:,:))&
+                                               * (0.5-SIGN(0.5,PRUCT(IW,:,:)))
+!
+!   FIFTH ORDER UPSTREAM WENO SCHEME
+!
+    ZFPOS1(IW+1,:,:) = 1./6. *(2.0*TPHALO2%WEST(:,:)-7.0*PSRC(IW-1,:,:)+ &
+                       11.0*PSRC(IW, :,:))
+    ZFPOS2(IW+1,:,:) = 1./6. *(-PSRC(IW-1,  :,:)+ 5.0*PSRC(IW,  :,:)+    &
+                       2.0*PSRC(IW+1,:,:))
+    ZFPOS3(IW+1,:,:) = 1./6. *(2.0*PSRC(IW,  :,:)+5.0*PSRC(IW+1,:,:)-    &
+                       PSRC(IW+2,    :,:))
+!
+    ZBPOS1(IW+1,:,:) = 13./12. *(TPHALO2%WEST(:,:)-2.0*PSRC(IW-1,:,:)+   &
+                       PSRC(IW,:,:))**2 &
+                       + 1./4. *(TPHALO2%WEST(:,:)-4.0*PSRC(IW-1,:,:)+   &
+                       3.0*PSRC(IW,:,:))**2    
+    ZBPOS2(IW+1,:,:) = 13./12. *(PSRC(IW-1,:,:)   -2.0*PSRC(IW,:,:)+     &
+                       PSRC(IW+1,:,:))**2 &
+                       + 1./4. *(PSRC(IW-1,:,:) - PSRC(IW+1,:,:))**2
+    ZBPOS3(IW+1,:,:) = 13./12. *(PSRC(IW,:,:) - 2.0*PSRC(IW+1,:,:) +     &
+                       PSRC(IW+2,:,:))**2 &
+                       + 1./4. *(3.0*PSRC(IW,:,:) - 4.0*PSRC(IW+1,:,:) + &
+                       PSRC(IW+2,:,:))**2
+!
+    ZFNEG1(IW+1,:,:) = 1./6 * (11.0*PSRC(IW+1,:,:) - 7.0*PSRC(IW+2,:,:) + &
+                       2.0*PSRC(IW+3,:,:))
+    ZFNEG2(IW+1,:,:) = 1./6 * (2.0*PSRC(IW, :,:) + 5.0*PSRC(IW+1,:,:) -   &
+                       PSRC(IW+2,    :,:))
+    ZFNEG3(IW+1,:,:) = 1./6 * (-PSRC(IW-1  ,:,:) + 5.0*PSRC(IW,  :,:) +   &
+                       2.0*PSRC(IW+1,:,:))
+!
+    ZBNEG1(IW+1,:,:) = 13./12 * (PSRC(IW+1,:,:) - 2.0*PSRC(IW+2,:,:) +    &
+                       PSRC(IW+3,:,:))**2 &
+                       + 1./4 * (3.0*PSRC(IW+1,:,:) - 4.0*PSRC(IW+2,:,:) +&
+                       PSRC(IW+3,:,:))**2
+    ZBNEG2(IW+1,:,:) = 13./12 * (PSRC(IW,:,:) - 2.0*PSRC(IW+1,:,:) +      &
+                       PSRC(IW+2,:,:))**2 &
+                       + 1./4 * (PSRC(IW,:,:) - PSRC(IW+2,:,:))**2
+    ZBNEG3(IW+1,:,:) = 13./12 * (PSRC(IW-1,:,:) - 2.0*PSRC(IW,:,:) +      &
+                       PSRC(IW+1,:,:))**2 &
+                       + 1./4 * (PSRC(IW-1,:,:) - 4.0*PSRC(IW,:,:) +      &
+                       3.0*PSRC(IW+1,:,:))**2
+!
+    ZOMP1(IW+1,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW+1,:,:))**2
+    ZOMP2(IW+1,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW+1,:,:))**2
+    ZOMP3(IW+1,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IW+1,:,:))**2
+    ZOMN1(IW+1,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW+1,:,:))**2
+    ZOMN2(IW+1,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW+1,:,:))**2
+    ZOMN3(IW+1,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IW+1,:,:))**2
+!
+      PR(IW+1,:,:) = (ZOMP2(IW+1,:,:)/(ZOMP1(IW+1,:,:)+ZOMP2(IW+1,:,:)+ &
+                     ZOMP3(IW+1,:,:)) * ZFPOS2(IW+1,:,:)   &
+                   + ZOMP1(IW+1,:,:)/(ZOMP1(IW+1,:,:)+ZOMP2(IW+1,:,:)+ &
+                     ZOMP3(IW+1,:,:)) * ZFPOS1(IW+1,:,:)    &
+                   + ZOMP3(IW+1,:,:)/(ZOMP1(IW+1,:,:)+ZOMP2(IW+1,:,:)+ &
+                     ZOMP3(IW+1,:,:)) * ZFPOS3(IW+1,:,:)) * &
+                   (0.5+SIGN(0.5,PRUCT(IW+1,:,:)))                     &
+                  + (ZOMN2(IW+1,:,:)/(ZOMN1(IW+1,:,:)+ZOMN2(IW+1,:,:)+ &
+                     ZOMN3(IW+1,:,:)) * ZFNEG2(IW+1,:,:)    &
+                   + ZOMN1(IW+1,:,:)/(ZOMN1(IW+1,:,:)+ZOMN2(IW+1,:,:)+ &
+                     ZOMN3(IW+1,:,:)) * ZFNEG1(IW+1,:,:)    &
+                   + ZOMN3(IW+1,:,:)/(ZOMN1(IW+1,:,:)+ZOMN2(IW+1,:,:)+ &
+                     ZOMN3(IW+1,:,:)) * ZFNEG3(IW+1,:,:)) * &
+                   (0.5-SIGN(0.5,PRUCT(IW+1,:,:)))
+!
+  ENDIF
+!
+! PHYSICAL BORDER (EAST)
+!
+  IF(LEAST_ll()) THEN
+    PR(IE+1,:,:) = PSRC(IE,:,:) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) + &
+                   PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))
+!
+    ZFPOS1(IE,:,:) = 0.5 * (3.0*PSRC(IE-1,:,:) - PSRC(IE-2,:,:))
+    ZFPOS2(IE,:,:) = 0.5 * (PSRC(IE,      :,:) + PSRC(IE-1,:,:))
+    ZBPOS1(IE,:,:) = (PSRC(IE-1,:,:) - PSRC(IE-2,:,:))**2
+    ZBPOS2(IE,:,:) = (PSRC(IE,  :,:) - PSRC(IE-1,:,:))**2
+!
+    ZFNEG1(IE,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE+1,:,:))
+    ZFNEG2(IE,:,:) = 0.5 * (PSRC(IE,    :,:) + PSRC(IE-1,:,:))
+    ZBNEG1(IE,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,:,:))**2
+    ZBNEG2(IE,:,:) = (PSRC(IE-1,:,:) - PSRC(IE,  :,:))**2
+!
+    ZOMP1(IE,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IE,:,:))**2
+    ZOMP2(IE,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IE,:,:))**2
+    ZOMN1(IE,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IE,:,:))**2
+    ZOMN2(IE,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IE,:,:))**2
+!
+    PR(IE,:,:) = (ZOMP2(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)) * ZFPOS2(IE,:,:) + &
+                  ZOMP1(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)) * ZFPOS1(IE,:,:)) *&
+                  (0.5+SIGN(0.5,PRUCT(IE,:,:))) &
+               + (ZOMN2(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)) * ZFNEG2(IE,:,:) + &
+                  ZOMN1(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)) * ZFNEG1(IE,:,:)) *&
+                  (0.5-SIGN(0.5,PRUCT(IE,:,:)))
+!
+! PROC. BORDER (EAST) 
+!
+  ELSEIF(NHALO == 1) THEN
+    ZFPOS1(IE+1,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE-1,:,:))
+    ZFPOS2(IE+1,:,:) = 0.5 * (PSRC(IE+1,  :,:) + PSRC(IE,  :,:))
+    ZBPOS1(IE+1,:,:) = (PSRC(IE,  :,:) - PSRC(IE-1,:,:))**2
+    ZBPOS2(IE+1,:,:) = (PSRC(IE+1,:,:) - PSRC(IE,  :,:))**2
+!
+    ZFNEG1(IE+1,:,:) = 0.5 * (3.0*PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))
+    ZFNEG2(IE+1,:,:) = 0.5 * (PSRC(IE+1,    :,:) + PSRC(IE,     :,:))
+    ZBNEG1(IE+1,:,:) = (PSRC(IE+1,:,:) - TPHALO2%EAST(:,:))**2
+    ZBNEG2(IE+1,:,:) = (PSRC(IE,  :,:) - PSRC(IE+1,   :,:))**2
+!
+    ZOMP1(IE+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(IE+1,:,:))**2
+    ZOMP2(IE+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(IE+1,:,:))**2
+    ZOMN1(IE+1,:,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(IE+1,:,:))**2
+    ZOMN2(IE+1,:,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(IE+1,:,:))**2
+!
+    PR(IE+1,:,:) = (ZOMP2(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) * &
+                    ZFPOS2(IE+1,:,:) +                                  &
+                  ZOMP1(IE+1,:,:)/(ZOMP1(IE+1,:,:)+ZOMP2(IE+1,:,:)) *   &
+                  ZFPOS1(IE+1,:,:)) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:)))   &
+               + (ZOMN2(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) *   &
+                ZFNEG2(IE+1,:,:) +                                      &
+                  ZOMN1(IE+1,:,:)/(ZOMN1(IE+1,:,:)+ZOMN2(IE+1,:,:)) *   &
+                  ZFNEG1(IE+1,:,:)) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:)))
+!
+     ZFPOS1(IE,:,:) = 1./6 * (2.0*PSRC(IE-3,:,:) - 7.0*PSRC(IE-2,:,:) + &
+                      11.0*PSRC(IE-1,:,:))
+     ZFPOS2(IE,:,:) = 1./6 * (-1.0*PSRC(IE-2,:,:) + 5.0*PSRC(IE-1,:,:) + &
+                      2.0*PSRC(IE,:,:))
+     ZFPOS3(IE,:,:) = 1./6 * (2.0*PSRC(IE-1,:,:) + 5.0*PSRC(IE,:,:) -    &
+                      PSRC(IE+1,:,:))
+!
+     ZBPOS1(IE,:,:) = 13./12 * (PSRC(IE-3,:,:) - 2.0*PSRC(IE-2,:,:) + &
+                      PSRC(IE-1,:,:))**2 + 1./4 * (PSRC(IE-3,:,:) &
+                      - 4.0*PSRC(IE-2,:,:) + 3.0*PSRC(IE-1,:,:))**2
+     ZBPOS2(IE,:,:) = 13./12 * (PSRC(IE-2,:,:) - 2.0*PSRC(IE-1,:,:) + &
+                      PSRC(IE,:,:))**2 + 1./4 * &
+                     (PSRC(IE-2,:,:) - PSRC(IE,:,:))**2
+     ZBPOS3(IE,:,:) = 13./12 * (PSRC(IE-1,:,:) - 2.0*PSRC(IE,:,:) + &
+                      PSRC(IE+1,:,:))**2 + 1./4 * &
+                     ( 3.0*PSRC(IE-1,:,:) - 4.0*PSRC(IE,:,:) + PSRC(IE+1,:,:))**2
+!
+     ZFNEG1(IE,:,:) = 1./6 * (11.0*PSRC(IE,  :,:) - 7.0*PSRC(IE+1,:,:) + &
+                      2.0*TPHALO2%EAST(:,:))
+     ZFNEG2(IE,:,:) = 1./6 * (2.0*PSRC(IE-1, :,:) + 5.0*PSRC(IE,  :,:) - &
+                      PSRC(IE+1,:,:))
+     ZFNEG3(IE,:,:) = 1./6 * (-1.0*PSRC(IE-2,:,:) + 5.0*PSRC(IE-1,:,:) + &
+                      2.0*PSRC(IE,:,:))
+!
+     ZBNEG1(IE,:,:) = 13./12 * (PSRC(IE,:,:) - 2.0*PSRC(IE+1,:,:) +      &
+       TPHALO2%EAST(:,:))**2 + 1./4 * &
+       ( 3.0*PSRC(IE,:,:) - 4.0*PSRC(IE+1,:,:) + TPHALO2%EAST(:,:))**2
+     ZBNEG2(IE,:,:) = 13./12 * (PSRC(IE-1,:,:) - 2.0*PSRC(IE,:,:) +      &
+        PSRC(IE+1,:,:))**2 + 1./4 * &
+        (PSRC(IE-1,:,:) - PSRC(IE+1,:,:))**2
+     ZBNEG3(IE,:,:) = 13./12 * (PSRC(IE-2,:,:) - 2.0*PSRC(IE-1,:,:) +    &
+        PSRC(IE,:,:))**2 + 1./4 * &
+                      ( PSRC(IE-2,:,:) - 4.0*PSRC(IE-1,:,:) +            &
+                      3.0*PSRC(IE,:,:))**2
+!
+     ZOMP1(IE,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IE,:,:))**2
+     ZOMP2(IE,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IE,:,:))**2
+     ZOMP3(IE,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IE,:,:))**2
+     ZOMN1(IE,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IE,:,:))**2
+     ZOMN2(IE,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IE,:,:))**2
+     ZOMN3(IE,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IE,:,:))**2
+!
+       PR(IE,:,:) = (ZOMP2(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)+ &
+                   ZOMP3(IE,:,:)) * ZFPOS2(IE,:,:)    &
+                   + ZOMP1(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)+ &
+                   ZOMP3(IE,:,:)) * ZFPOS1(IE,:,:)    &
+                   + ZOMP3(IE,:,:)/(ZOMP1(IE,:,:)+ZOMP2(IE,:,:)+ &
+                   ZOMP3(IE,:,:)) * ZFPOS3(IE,:,:)) * &
+                   (0.5+SIGN(0.5,PRUCT(IE,:,:)))                 &
+                  + (ZOMN2(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)+ &
+                   ZOMN3(IE,:,:)) * ZFNEG2(IE,:,:)    &
+                   + ZOMN1(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)+ &
+                   ZOMN3(IE,:,:)) * ZFNEG1(IE,:,:)    &
+                   + ZOMN3(IE,:,:)/(ZOMN1(IE,:,:)+ZOMN2(IE,:,:)+ &
+                   ZOMN3(IE,:,:)) * ZFNEG3(IE,:,:)) * &
+                   (0.5-SIGN(0.5,PRUCT(IE,:,:)))
+!
+  ENDIF
+!
+!        USE A FIFTH ORDER UPSTREAM WENO SCHEME ELSEWHERE (IW+2 --> IE-1)
+!
+  ZFPOS1(IW+2:IE-1,:,:) = 1./6 * (2.0*PSRC(IW-1:IE-4,:,:) - &
+          7.0*PSRC(IW:IE-3,  :,:) + 11.0*PSRC(IW+1:IE-2,:,:))
+  ZFPOS2(IW+2:IE-1,:,:) = 1./6 * (-1.0*PSRC(IW:IE-3, :,:) + &
+          5.0*PSRC(IW+1:IE-2,:,:) + 2.0*PSRC(IW+2:IE-1, :,:))
+  ZFPOS3(IW+2:IE-1,:,:) = 1./6 * (2.0*PSRC(IW+1:IE-2,:,:) + &
+          5.0*PSRC(IW+2:IE-1,:,:) - PSRC(IW+3:IE,       :,:))
+!
+  ZBPOS1(IW+2:IE-1,:,:) = 13./12 * (PSRC(IW-1:IE-4,:,:) -   &
+          2.0*PSRC(IW:IE-3,:,:) + PSRC(IW+1:IE-2,:,:))**2 + &
+          1./4 * (PSRC(IW-1:IE-4,:,:) - 4.0*PSRC(IW:IE-3,:,:) + &
+          3.0*PSRC(IW+1:IE-2,:,:))**2
+  ZBPOS2(IW+2:IE-1,:,:) = 13./12 * (PSRC(IW:IE-3,:,:) -     &
+          2.0*PSRC(IW+1:IE-2,:,:) + PSRC(IW+2:IE-1,:,:))**2 + &
+          1./4 * (PSRC(IW:IE-3,:,:) - PSRC(IW+2:IE-1,:,:))**2
+  ZBPOS3(IW+2:IE-1,:,:) = 13./12 * (PSRC(IW+1:IE-2,:,:) -   &
+          2.0*PSRC(IW+2:IE-1,:,:) + PSRC(IW+3:IE,:,:))**2 + &
+          1./4 * (3.0*PSRC(IW+1:IE-2,:,:) - 4.0*PSRC(IW+2:IE-1,:,:) + &
+          PSRC(IW+3:IE,:,:))**2
+!
+  ZFNEG1(IW+2:IE-1,:,:) = 1./6 * (11.0*PSRC(IW+2:IE-1,:,:) - &
+          7.0*PSRC(IW+3:IE,:,:) + 2.0*PSRC(IW+4:IE+1,:,:))
+  ZFNEG2(IW+2:IE-1,:,:) = 1./6 * (2.0*PSRC(IW+1:IE-2,:,:) +  &
+          5.0*PSRC(IW+2:IE-1,:,:) - PSRC(IW+3:IE,:,:))
+  ZFNEG3(IW+2:IE-1,:,:) = 1./6 * (-1.0*PSRC(IW:IE-3,:,:) +   &
+          5.0*PSRC(IW+1:IE-2,:,:) + 2.0*PSRC(IW+2:IE-1,:,:))
+!
+  ZBNEG1(IW+2:IE-1,:,:) = 13./12 * (PSRC(IW+2:IE-1,:,:) -    &
+          2.0*PSRC(IW+3:IE,:,:) + PSRC(IW+4:IE+1,:,:))**2 + &
+          1./4 * ( 3.0*PSRC(IW+2:IE-1,:,:) - 4.0*PSRC(IW+3:IE,:,:) + &
+          PSRC(IW+4:IE+1,:,:))**2
+  ZBNEG2(IW+2:IE-1,:,:) = 13./12 * (PSRC(IW+1:IE-2,:,:) - &
+          2.0*PSRC(IW+2:IE-1,:,:) + PSRC(IW+3:IE,:,:))**2 + &
+          1./4 * (PSRC(IW+1:IE-2,:,:) - PSRC(IW+3:IE,:,:))**2
+  ZBNEG3(IW+2:IE-1,:,:) = 13./12 * (PSRC(IW:IE-3,:,:) - &
+          2.0*PSRC(IW+1:IE-2,:,:) + PSRC(IW+2:IE-1,:,:))**2 + &
+          1./4 * ( PSRC(IW:IE-3,:,:) - 4.0*PSRC(IW+1:IE-2,:,:) + &
+          3.0*PSRC(IW+2:IE-1,:,:))**2
+!
+  ZOMP1(IW+2:IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBPOS1(IW+2:IE-1,:,:))**2
+  ZOMP2(IW+2:IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBPOS2(IW+2:IE-1,:,:))**2
+  ZOMP3(IW+2:IE-1,:,:) = ZGAMMA3 / (ZEPS + ZBPOS3(IW+2:IE-1,:,:))**2
+  ZOMN1(IW+2:IE-1,:,:) = ZGAMMA1 / (ZEPS + ZBNEG1(IW+2:IE-1,:,:))**2
+  ZOMN2(IW+2:IE-1,:,:) = ZGAMMA2 / (ZEPS + ZBNEG2(IW+2:IE-1,:,:))**2
+  ZOMN3(IW+2:IE-1,:,:) = ZGAMMA3 / (ZEPS + ZBNEG3(IW+2:IE-1,:,:))**2
+!
+    PR(IW+2:IE-1,:,:) = (ZOMP2(IW+2:IE-1,:,:)/(ZOMP1(IW+2:IE-1,:,:)+   &
+      ZOMP2(IW+2:IE-1,:,:)+                                            &
+      ZOMP3(IW+2:IE-1,:,:)) * ZFPOS2(IW+2:IE-1,:,:) +                  &
+      ZOMP1(IW+2:IE-1,:,:)/(ZOMP1(IW+2:IE-1,:,:)+ZOMP2(IW+2:IE-1,:,:)+ &
+      ZOMP3(IW+2:IE-1,:,:)) * ZFPOS1(IW+2:IE-1,:,:)  +                 &
+      ZOMP3(IW+2:IE-1,:,:)/(ZOMP1(IW+2:IE-1,:,:)+ZOMP2(IW+2:IE-1,:,:)+ &
+      ZOMP3(IW+2:IE-1,:,:)) * ZFPOS3(IW+2:IE-1,:,:)) *                 &
+      (0.5+SIGN(0.5,PRUCT(IW+2:IE-1,:,:))) +                           &
+      (ZOMN2(IW+2:IE-1,:,:)/(ZOMN1(IW+2:IE-1,:,:)+ZOMN2(IW+2:IE-1,:,:)+&
+      ZOMN3(IW+2:IE-1,:,:)) * ZFNEG2(IW+2:IE-1,:,:)  +                 &
+      ZOMN1(IW+2:IE-1,:,:)/(ZOMN1(IW+2:IE-1,:,:)+ZOMN2(IW+2:IE-1,:,:)+ &
+      ZOMN3(IW+2:IE-1,:,:)) * ZFNEG1(IW+2:IE-1,:,:) +                  &
+      ZOMN3(IW+2:IE-1,:,:)/(ZOMN1(IW+2:IE-1,:,:)+ZOMN2(IW+2:IE-1,:,:)+ &
+      ZOMN3(IW+2:IE-1,:,:)) * ZFNEG3(IW+2:IE-1,:,:)) *                 &
+      (0.5-SIGN(0.5,PRUCT(IW+2:IE-1,:,:)))
+!
+END SELECT
+!
+PR = PR * PRUCT
+!
+END SUBROUTINE ADVEC_WENO_K_3_MX
+!
+!-------------------------------------------------------------------------------
+!
+!     ########################################################################
+      SUBROUTINE ADVEC_WENO_K_3_MY(HLBCY,PSRC, PRVCT, PR, TPHALO2)
+!     ########################################################################
+!!
+!!****  Computes PRVCT * PUT (or PRVCT * PWT). Upstream fluxes of U (or W) 
+!!      variables in Y direction.  
+!!      Input PUT is on U Grid 'ie' (i,j,k) based on UGRID reference
+!!      Output PR is on mass Grid 'ie' (i,j-1/2,k) based on UGRID reference 
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*                 
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER::  IS,IN      ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFPOS1, ZFPOS2, ZFPOS3
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFNEG1, ZFNEG2, ZFNEG3
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBPOS1, ZBPOS2, ZBPOS3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBNEG1, ZBNEG2, ZBNEG3
+!
+! WENO weights 
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZOMP1, ZOMP2, ZOMP3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZOMN1, ZOMN2, ZOMN3
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./10.
+REAL, PARAMETER :: ZGAMMA2 = 3./5.
+REAL, PARAMETER :: ZGAMMA3 = 3./10.
+REAL, PARAMETER :: ZGAMMA1_PRIM = 1./3.
+REAL, PARAMETER :: ZGAMMA2_PRIM = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-----------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!---------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFPOS3 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0
+ZFNEG3 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBPOS3 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZBNEG3 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMP3  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0
+ZOMN3  = 0.0 
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCY(1) ) ! 
+!
+!*       1.1    CYCLIC CASE IN THE Y DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCY(1) == HLBCY(2)
+!
+  IF(NHALO == 1) THEN
+    IS=IJB
+    IN=IJE
+  ELSE
+      CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+      WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+      WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+      CALL ABORT
+      STOP
+  END IF
+!
+! Same explanation than for the subroutine ADVEC_WENO_K_3_MX
+!
+! intermediate fluxes for positive wind case
+!
+  ZFPOS1(:,IS+2:IN,:) = 1./6 * (2.0*PSRC(:,IS-1:IN-3,:) - &
+   7.0*PSRC(:,IS:IN-2,:) + 11.0*PSRC(:,IS+1:IN-1,:))
+  ZFPOS1(:,IS+1,   :) = 1./6 * (2.0*TPHALO2%SOUTH(:,:)  - &
+   7.0*PSRC(:,IS-1,   :) + 11.0*PSRC(:,IS,       :))
+  ZFPOS1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN-1,:))
+  ZFPOS1(:,IS,       :) = 0.5 * (3.0*PSRC(:,IS-1, :) - TPHALO2%SOUTH(:,:))
+  ZFPOS1(:,IS-1,     :) = - 999.
+!
+!
+  ZFPOS2(:,IS+1:IN,:) = 1./6 * (-1.0*PSRC(:,IS-1:IN-2,:) + &
+   5.0*PSRC(:,IS:IN-1,:) + 2.0*PSRC(:,IS+1:IN,:))
+  ZFPOS2(:,IN+1,:) = 0.5 * (PSRC(:,IN,  :) + PSRC(:,IN+1,:))
+  ZFPOS2(:,IS,  :) = 0.5 * (PSRC(:,IS-1,:) + PSRC(:,IS,  :))
+  ZFPOS2(:,IS-1,:) = 0.5 * (TPHALO2%SOUTH(:,:) + PSRC(:,IS-1,:))
+!
+!
+  ZFPOS3(:,IS+1:IN,:) = 1./6 * (2.0*PSRC(:,IS:IN-1,:) + &
+   5.0*PSRC(:,IS+1:IN,:) - 1.0*PSRC(:,IS+2:IN+1,:))
+!
+! intermediate flux for negative wind case
+!
+  ZFNEG1(:,IS+1:IN-1,:) = 1./6 * (11.0*PSRC(:,IS+1:IN-1,:) - &
+   7.0*PSRC(:,IS+2:IN,:) + 2.0*PSRC(:,IS+3:IN+1,:)) 
+  ZFNEG1(:,IN,       :) = 1./6 * (11.0*PSRC(:,IN,       :) - &
+   7.0*PSRC(:,IN+1,   :) + 2.0*TPHALO2%NORTH(:,:))
+  ZFNEG1(:,IS,  :) = 0.5 * (3.0*PSRC(:,IS,  :) - PSRC(:,IS+1,:))
+  ZFNEG1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS-1,:) - PSRC(:,IS,  :))
+  ZFNEG1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))
+!
+!
+  ZFNEG2(:,IS+1:IN,:) = 1./6 * (2.0*PSRC(:,IS:IN-1,:) + &
+   5.0*PSRC(:,IS+1:IN,:) - 1.0*PSRC(:,IS+2:IN+1,:))
+  ZFNEG2(:,IN+1,:) = 0.5 * (PSRC(:,IN+1,:) + PSRC(:,IN,  :))
+  ZFNEG2(:,IS,  :) = 0.5 * (PSRC(:,IS,  :) + PSRC(:,IS-1,:))
+  ZFNEG2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1,:) + TPHALO2%SOUTH(:,:))
+! 
+!
+  ZFNEG3(:,IS+1:IN,:) = 1./6 * (-1.0*PSRC(:,IS-1:IN-2,:) + &
+   5.0*PSRC(:,IS:IN-1,:) + 2.0*PSRC(:,IS+1:IN,:))
+!
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(:,IS+2:IN,:) = 13./12 * (PSRC(:,IS-1:IN-3,:) - 2.0*PSRC(:,IS:IN-2,:) + &
+   PSRC(:,IS+1:IN-1,:))**2 + 1./4 * (PSRC(:,IS-1:IN-3,:) - 4.0*PSRC(:,IS:IN-2,:) +&
+   3.0*PSRC(:,IS+1:IN-1,:))**2
+  ZBPOS1(:,IS+1,:) = 13./12 * (TPHALO2%SOUTH(:,:) - 2.0*PSRC(:,IS-1,:) + &
+   PSRC(:,IS,:))**2 + &
+   1./4 * (TPHALO2%SOUTH(:,:) - 4.0*PSRC(:,IS-1,:) + 3.0*PSRC(:,IS,:))**2
+  ZBPOS1(:,IN+1,:) = (PSRC(:,IN,  :) - PSRC(:,IN-1,:))**2
+  ZBPOS1(:,IS,  :) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2
+  ZBPOS1(:,IS-1,:) = - 999. 
+!
+  ZBPOS2(:,IS+1:IN,:) = 13./12 * (PSRC(:,IS-1:IN-2,:) - 2.0*PSRC(:,IS:IN-1,:) + &
+   PSRC(:,IS+1:IN,:))**2 + 1./4 * (PSRC(:,IS-1:IN-2,:) - PSRC(:,IS+1:IN,:))**2
+  ZBPOS2(:,IN+1,:) = (PSRC(:,IN+1,:) - PSRC(:,IN,  :))**2
+  ZBPOS2(:,IS-1,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2
+  ZBPOS2(:,IS,  :) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+!
+!
+  ZBPOS3(:,IS+1:IN,:) = 13./12 * (PSRC(:,IS:IN-1,:) - 2.0*PSRC(:,IS+1:IN,:) + &
+   PSRC(:,IS+2:IN+1,:))**2 + 1./4 * ( 3.0*PSRC(:,IS:IN-1,:) - 4.0*PSRC(:,IS+1:IN,:) + PSRC(:,IS+2:IN+1,:))**2
+!
+! smoothness indicators for negative wind case
+!
+  ZBNEG1(:,IS+1:IN-1,:) = 13./12 * (PSRC(:,IS+1:IN-1,:) - 2.0*PSRC(:,IS+2:IN,:) + &
+   PSRC(:,IS+3:IN+1,:))**2 + 1./4 * ( 3.0*PSRC(:,IS+1:IN-1,:) -                   &
+   4.0*PSRC(:,IS+2:IN,:) + PSRC(:,IS+3:IN+1,:))**2 
+  ZBNEG1(:,IN,       :) = 13./12 * (PSRC(:,IN,:) - 2.0*PSRC(:,IN+1,:) +           &
+   TPHALO2%NORTH(:,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IN,:) - 4.0*PSRC(:,IN+1,:) + TPHALO2%NORTH(:,:))**2
+  ZBNEG1(:,IS-1,:) = (PSRC(:,IS-1,:) - PSRC(:,IS,:))**2
+  ZBNEG1(:,IS,  :) = (PSRC(:,IS,  :) - PSRC(:,IS+1,:))**2
+  ZBNEG1(:,IN+1,:) = (PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))**2
+!
+!
+  ZBNEG2(:,IS+1:IN,:) = 13./12 * (PSRC(:,IS:IN-1,:) - 2.0*PSRC(:,IS+1:IN,:) + &
+   PSRC(:,IS+2:IN+1,:))**2 + &
+   1./4 * (PSRC(:,IS:IN-1,:) - PSRC(:,IS+2:IN+1,:))**2
+  ZBNEG2(:,IN+1,:) = (PSRC(:,IN  ,:) - PSRC(:,IN+1,:))**2
+  ZBNEG2(:,IS,  :) = (PSRC(:,IS-1,:) - PSRC(:,IS,  :))**2
+  ZBNEG2(:,IS-1,:) = (TPHALO2%SOUTH(:,:) - PSRC(:,IS-1,:))**2
+!
+!
+  ZBNEG3(:,IS+1:IN,:) = 13./12 * (PSRC(:,IS-1:IN-2,:) - 2.0*PSRC(:,IS:IN-1,:) + &
+   PSRC(:,IS+1:IN,:))**2 + &
+   1./4 * ( PSRC(:,IS-1:IN-2,:) - 4.0*PSRC(:,IS:IN-1,:) + 3.0*PSRC(:,IS+1:IN,:))**2 
+!
+! WENO weights
+!
+  ZOMP1(:,IS+1:IN,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS+1:IN,:))**2
+  ZOMP2(:,IS+1:IN,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS+1:IN,:))**2
+  ZOMP3(:,IS+1:IN,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IS+1:IN,:))**2
+  ZOMN1(:,IS+1:IN,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS+1:IN,:))**2
+  ZOMN2(:,IS+1:IN,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS+1:IN,:))**2
+  ZOMN3(:,IS+1:IN,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IS+1:IN,:))**2
+!
+  ZOMP1(:,IN+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IN+1,:))**2
+  ZOMP2(:,IN+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IN+1,:))**2
+  ZOMN1(:,IN+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IN+1,:))**2
+  ZOMN2(:,IN+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IN+1,:))**2
+  ZOMP1(:,IS,  :) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IS,  :))**2
+  ZOMP2(:,IS,  :) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IS,  :))**2
+  ZOMN1(:,IS,  :) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IS,  :))**2
+  ZOMN2(:,IS,  :) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IS,  :))**2
+  ZOMP1(:,IS-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IS-1,:))**2
+  ZOMP2(:,IS-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IS-1,:))**2
+  ZOMN1(:,IS-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IS-1,:))**2
+  ZOMN2(:,IS-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IS-1,:))**2
+!
+! WENO fluxes (5th order)
+!
+  PR(:,IS+1:IN,:) = (ZOMP2(:,IS+1:IN,:)/(ZOMP1(:,IS+1:IN,:)+ZOMP2(:,IS+1:IN,:)+&
+                     ZOMP3(:,IS+1:IN,:)) * ZFPOS2(:,IS+1:IN,:)                 &
+                   + ZOMP1(:,IS+1:IN,:)/(ZOMP1(:,IS+1:IN,:)+ZOMP2(:,IS+1:IN,:)+&
+                     ZOMP3(:,IS+1:IN,:)) * ZFPOS1(:,IS+1:IN,:)                 &
+                   + ZOMP3(:,IS+1:IN,:)/(ZOMP1(:,IS+1:IN,:)+ZOMP2(:,IS+1:IN,:)+&
+                     ZOMP3(:,IS+1:IN,:)) * ZFPOS3(:,IS+1:IN,:)) *              &
+                   (0.5+SIGN(0.5,PRVCT(:,IS+1:IN,:)))                          &
+                  + (ZOMN2(:,IS+1:IN,:)/(ZOMN1(:,IS+1:IN,:)+ZOMN2(:,IS+1:IN,:)+&
+                     ZOMN3(:,IS+1:IN,:)) * ZFNEG2(:,IS+1:IN,:)                 &
+                   + ZOMN1(:,IS+1:IN,:)/(ZOMN1(:,IS+1:IN,:)+ZOMN2(:,IS+1:IN,:)+&
+                     ZOMN3(:,IS+1:IN,:)) * ZFNEG1(:,IS+1:IN,:)                 &
+                   + ZOMN3(:,IS+1:IN,:)/(ZOMN1(:,IS+1:IN,:)+ZOMN2(:,IS+1:IN,:)+&
+                     ZOMN3(:,IS+1:IN,:)) * ZFNEG3(:,IS+1:IN,:)) *              &
+                   (0.5-SIGN(0.5,PRVCT(:,IS+1:IN,:)))
+!
+! WENO fluxes (3rd order)
+!
+  PR(:,IS-1,:) =  (ZOMP2(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * &
+                  ZFPOS2(:,IS-1,:)                                     &
+                 + ZOMP1(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * &
+                  ZFPOS1(:,IS-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:)))  &
+                + (ZOMN2(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * &
+                  ZFNEG2(:,IS-1,:)                                     &
+                 + ZOMN1(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * &
+                  ZFNEG1(:,IS-1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
+!
+  PR(:,IS,  :) =  (ZOMP2(:,IS,  :)/(ZOMP1(:,IS,  :)+ZOMP2(:,IS,  :)) * &
+                  ZFPOS2(:,IS,  :)                                     &
+                 + ZOMP1(:,IS,  :)/(ZOMP1(:,IS,  :)+ZOMP2(:,IS,  :)) * &
+                  ZFPOS1(:,IS,  :)) * (0.5+SIGN(0.5,PRVCT(:,IS,  :)))  &
+                + (ZOMN2(:,IS,  :)/(ZOMN1(:,IS,  :)+ZOMN2(:,IS,  :)) * &
+                 ZFNEG2(:,IS,  :)                                      &
+                 + ZOMN1(:,IS,  :)/(ZOMN1(:,IS,  :)+ZOMN2(:,IS,  :)) * &
+                  ZFNEG1(:,IS,  :)) * (0.5-SIGN(0.5,PRVCT(:,IS,  :)))
+!
+  PR(:,IN+1,:) =  (ZOMP2(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:)) * &
+                  ZFPOS2(:,IN+1,:)                                     &
+                 + ZOMP1(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:)) * &
+                  ZFPOS1(:,IN+1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:)))  &
+                + (ZOMN2(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * &
+                  ZFNEG2(:,IN+1,:)                                     &
+                 + ZOMN1(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * &
+                  ZFNEG1(:,IN+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE Y DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IS=IJB
+  IN=IJE
+!
+  IF(LSOUTH_ll()) THEN
+    PR(:,IS,:) = PSRC(:,IS-1,:) * (0.5+SIGN(0.5,PRVCT(:,IS,:))) + &
+                 PSRC(:,IS,:) * (0.5-SIGN(0.5,PRVCT(:,IS,:)))
+!
+    ZFPOS1(:,IS+1,:) = 0.5 * (3.0*PSRC(:,IS,:) - PSRC(:,IS-1,:))
+    ZFPOS2(:,IS+1,:) = 0.5 * (PSRC(:,IS,    :) + PSRC(:,IS+1,:))
+    ZBPOS1(:,IS+1,:) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+    ZBPOS2(:,IS+1,:) = (PSRC(:,IS+1,:) - PSRC(:,IS,  :))**2
+!
+    ZFNEG1(:,IS+1,:) = 0.5 * (3.0*PSRC(:,IS+1,:) - PSRC(:,IS+2,:))
+    ZFNEG2(:,IS+1,:) = 0.5 * (PSRC(:,IS+1,    :) + PSRC(:,IS,:))
+    ZBNEG1(:,IS+1,:) = (PSRC(:,IS+1,:) - PSRC(:,IS+2,:))**2
+    ZBNEG2(:,IS+1,:) = (PSRC(:,IS,  :) - PSRC(:,IS+1,:))**2
+!
+    ZOMP1(:,IS+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IS+1,:))**2
+    ZOMP2(:,IS+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IS+1,:))**2
+    ZOMN1(:,IS+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IS+1,:))**2
+    ZOMN2(:,IS+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IS+1,:))**2
+!
+    PR(:,IS+1,  :) =  (ZOMP2(:,IS+1,:)/(ZOMP1(:,IS+1,:)+ZOMP2(:,IS+1,:)) * &
+                   ZFPOS2(:,IS+1,:)                                        &
+                 + ZOMP1(:,IS+1,:)/(ZOMP1(:,IS+1,:)+ZOMP2(:,IS+1,:)) *     & 
+                   ZFPOS1(:,IS+1,:)) * (0.5+SIGN(0.5,PRVCT(:,IS+1,:)))     &
+                + (ZOMN2(:,IS+1,:)/(ZOMN1(:,IS+1,:)+ZOMN2(:,IS+1,:)) *     &
+                   ZFNEG2(:,IS+1,:)                                        &
+                 + ZOMN1(:,IS+1,:)/(ZOMN1(:,IS+1,:)+ZOMN2(:,IS+1,:)) *     &
+                   ZFNEG1(:,IS+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS+1,:)))
+!
+  ELSEIF(NHALO == 1) THEN
+    ZFPOS1(:,IS,:) = 0.5 * (3.0*PSRC(:,IS-1, :) - TPHALO2%SOUTH(:,:))
+    ZFPOS2(:,IS,:) = 0.5 * (PSRC(:,IS-1,     :) + PSRC(:,IS,:))
+    ZBPOS1(:,IS,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2
+    ZBPOS2(:,IS,:) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+!
+    ZFNEG1(:,IS,:) = 0.5 * (3.0*PSRC(:,IS,  :) - PSRC(:,IS+1,:))
+    ZFNEG2(:,IS,:) = 0.5 * (PSRC(:,IS,      :) + PSRC(:,IS-1,:))
+    ZBNEG1(:,IS,:) = (PSRC(:,IS,  :) - PSRC(:,IS+1,:))**2
+    ZBNEG2(:,IS,:) = (PSRC(:,IS-1,:) - PSRC(:,IS,  :))**2
+!
+    ZOMP1(:,IS,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IS,:))**2
+    ZOMP2(:,IS,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IS,:))**2
+    ZOMN1(:,IS,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IS,:))**2
+    ZOMN2(:,IS,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IS,:))**2
+!
+    PR(:,IS,:) =  (ZOMP2(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)) * ZFPOS2(:,IS,:)   &
+                 + ZOMP1(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)) * ZFPOS1(:,IS,:)) *&
+                 (0.5+SIGN(0.5,PRVCT(:,IS,:)))  &
+                + (ZOMN2(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)) * ZFNEG2(:,IS,:)   &
+                 + ZOMN1(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)) * ZFNEG1(:,IS,:)) *&
+                 (0.5-SIGN(0.5,PRVCT(:,IS,:)))
+!
+    ZFPOS1(:,IS+1,:) = 1./6 * (2.0*TPHALO2%SOUTH(:,:) - 7.0*PSRC(:,IS-1,:) + &
+                       11.0*PSRC(:,IS,:))
+    ZFPOS2(:,IS+1,:) = 1./6 * (-1.0*PSRC(:,IS-1,:) + 5.0*PSRC(:,IS,:) +      &
+                       2.0*PSRC(:,IS+1,:))
+    ZFPOS3(:,IS+1,:) = 1./6 * (2.0*PSRC(:,IS,:) + 5.0*PSRC(:,IS+1,:) -       &
+                       1.0*PSRC(:,IS+2,:))
+!
+    ZBPOS1(:,IS+1,:) = 13./12 * (TPHALO2%SOUTH(:,:) - 2.0*PSRC(:,IS-1,:) +   &
+                       PSRC(:,IS,:))**2 + &
+     1./4 * (TPHALO2%SOUTH(:,:) - 4.0*PSRC(:,IS-1,:) + 3.0*PSRC(:,IS,:))**2
+    ZBPOS2(:,IS+1,:) = 13./12 * (PSRC(:,IS-1,:) - 2.0*PSRC(:,IS,:) +         &
+     PSRC(:,IS+1,:))**2 +     &
+     1./4 * (PSRC(:,IS-1,:) - PSRC(:,IS+1,:))**2
+    ZBPOS3(:,IS+1,:) = 13./12 * (PSRC(:,IS,:) - 2.0*PSRC(:,IS+1,:) +         &
+     PSRC(:,IS+2,:))**2 +     &
+     1./4 * ( 3.0*PSRC(:,IS,:) - 4.0*PSRC(:,IS+1,:) + PSRC(:,IS+2,:))**2
+!
+    ZFNEG1(:,IS+1,:) = 1./6 * (11.0*PSRC(:,IS+1,:) - 7.0*PSRC(:,IS+2,:) +    &
+     2.0*PSRC(:,IS+3,:))
+    ZFNEG2(:,IS+1,:) = 1./6 * (2.0*PSRC(:,IS,:) + 5.0*PSRC(:,IS+1,:) -       &
+     1.0*PSRC(:,IS+2,:))
+    ZFNEG3(:,IS+1,:) = 1./6 * (-1.0*PSRC(:,IS-1,:) + 5.0*PSRC(:,IS,:) +      &
+     2.0*PSRC(:,IS+1,:))
+!
+    ZBNEG1(:,IS+1,:) = 13./12 * (PSRC(:,IS+1,:) - 2.0*PSRC(:,IS+2,:) +       &
+     PSRC(:,IS+3,:))**2 +   &
+     1./4 * ( 3.0*PSRC(:,IS+1,:) - 4.0*PSRC(:,IS+2,:) + PSRC(:,IS+3,:))**2
+    ZBNEG2(:,IS+1,:) = 13./12 * (PSRC(:,IS,:) - 2.0*PSRC(:,IS+1,:) +         &
+     PSRC(:,IS+2,:))**2 +     &
+     1./4 * (PSRC(:,IS,:) - PSRC(:,IS+2,:))**2
+    ZBNEG3(:,IS+1,:) = 13./12 * (PSRC(:,IS-1,:) - 2.0*PSRC(:,IS,:) +         &
+     PSRC(:,IS+1,:))**2 +     &
+     1./4 * ( PSRC(:,IS-1,:) - 4.0*PSRC(:,IS,:) + 3.0*PSRC(:,IS+1,:))**2
+!
+    ZOMP1(:,IS+1,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS+1,:))**2
+    ZOMP2(:,IS+1,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS+1,:))**2
+    ZOMP3(:,IS+1,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IS+1,:))**2
+    ZOMN1(:,IS+1,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS+1,:))**2
+    ZOMN2(:,IS+1,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS+1,:))**2
+    ZOMN3(:,IS+1,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IS+1,:))**2
+!
+    PR(:,IS+1,:) = (ZOMP2(:,IS+1,:)/(ZOMP1(:,IS+1,:)+ZOMP2(:,IS+1,:)+ &
+                   ZOMP3(:,IS+1,:)) * ZFPOS2(:,IS+1,:)    &
+                   + ZOMP1(:,IS+1,:)/(ZOMP1(:,IS+1,:)+ZOMP2(:,IS+1,:)+ &
+                   ZOMP3(:,IS+1,:)) * ZFPOS1(:,IS+1,:)   &
+                   + ZOMP3(:,IS+1,:)/(ZOMP1(:,IS+1,:)+ZOMP2(:,IS+1,:)+ &
+                   ZOMP3(:,IS+1,:)) * ZFPOS3(:,IS+1,:)) *&
+                   (0.5+SIGN(0.5,PRVCT(:,IS+1,:)))                     &
+                  + (ZOMN2(:,IS+1,:)/(ZOMN1(:,IS+1,:)+ZOMN2(:,IS+1,:)+ &
+                   ZOMN3(:,IS+1,:)) * ZFNEG2(:,IS+1,:)   &
+                   + ZOMN1(:,IS+1,:)/(ZOMN1(:,IS+1,:)+ZOMN2(:,IS+1,:)+ &
+                   ZOMN3(:,IS+1,:)) * ZFNEG1(:,IS+1,:)   &
+                   + ZOMN3(:,IS+1,:)/(ZOMN1(:,IS+1,:)+ZOMN2(:,IS+1,:)+ &
+                   ZOMN3(:,IS+1,:)) * ZFNEG3(:,IS+1,:)) *&
+                   (0.5-SIGN(0.5,PRVCT(:,IS+1,:)))
+!
+  ENDIF
+!
+  IF(LNORTH_ll()) THEN
+    PR(:,IN+1,:) = PSRC(:,IN,:) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) + &
+                   PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
+!
+    ZFPOS1(:,IN,:) = 0.5 * (3.0*PSRC(:,IN-1,:) - PSRC(:,IN-2,:))
+    ZFPOS2(:,IN,:) = 0.5 * (PSRC(:,IN-1,    :) + PSRC(:,IN,  :))
+    ZBPOS1(:,IN,:) = (PSRC(:,IN-1,:) - PSRC(:,IN-2,:))**2
+    ZBPOS2(:,IN,:) = (PSRC(:,IN,  :) - PSRC(:,IN-1,:))**2
+!
+    ZFNEG1(:,IN,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN+1,:)) 
+    ZFNEG2(:,IN,:) = 0.5 * (PSRC(:,IN,    :) + PSRC(:,IN-1,:))
+    ZBNEG1(:,IN,:) = (PSRC(:,IN,  :) - PSRC(:,IN+1,:))**2
+    ZBNEG2(:,IN,:) = (PSRC(:,IN-1,:) - PSRC(:,IN,  :))**2   
+!
+    ZOMP1(:,IN,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IN,:))**2
+    ZOMP2(:,IN,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IN,:))**2
+    ZOMN1(:,IN,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IN,:))**2
+    ZOMN2(:,IN,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IN,:))**2
+!
+    PR(:,IN,:) =  (ZOMP2(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)) * ZFPOS2(:,IN,:)   &
+                 + ZOMP1(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)) * ZFPOS1(:,IN,:)) *&
+                 (0.5+SIGN(0.5,PRVCT(:,IN,:)))   &
+                + (ZOMN2(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)) * ZFNEG2(:,IN,:)   &
+                 + ZOMN1(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)) * ZFNEG1(:,IN,:)) *&
+                 (0.5-SIGN(0.5,PRVCT(:,IN,:)))
+!
+  ELSEIF(NHALO == 1) THEN
+    ZFPOS1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN-1,:))
+    ZFPOS2(:,IN+1,:) = 0.5 * (PSRC(:,IN,    :) + PSRC(:,IN+1,:))
+    ZBPOS1(:,IN+1,:) = (PSRC(:,IN,  :) - PSRC(:,IN-1,:))**2
+    ZBPOS2(:,IN+1,:) = (PSRC(:,IN+1,:) - PSRC(:,IN,  :))**2
+!
+    ZFNEG1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))
+    ZFNEG2(:,IN+1,:) = 0.5 * (PSRC(:,IN+1,    :) + PSRC(:,IN,  :))
+    ZBNEG1(:,IN+1,:) = (PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))**2
+    ZBNEG2(:,IN+1,:) = (PSRC(:,IN  ,:) - PSRC(:,IN+1,:))**2
+!
+    ZOMP1(:,IN+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IN+1,:))**2
+    ZOMP2(:,IN+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IN+1,:))**2
+    ZOMN1(:,IN+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IN+1,:))**2
+    ZOMN2(:,IN+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IN+1,:))**2
+!
+    PR(:,IN+1,:) =  (ZOMP2(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:))*&
+                   ZFPOS2(:,IN+1,:)                                    &
+                 + ZOMP1(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:)) * &
+                   ZFPOS1(:,IN+1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) &
+                + (ZOMN2(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * &
+                   ZFNEG2(:,IN+1,:)                                    &
+                 + ZOMN1(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * &
+                   ZFNEG1(:,IN+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
+!
+    ZFPOS1(:,IN,:) = 1./6 * (2.0*PSRC(:,IN-3,:) - 7.0*PSRC(:,IN-2,:) + &
+     11.0*PSRC(:,IN-1,:))
+    ZFPOS2(:,IN,:) = 1./6 * (-1.0*PSRC(:,IN-2,:) + 5.0*PSRC(:,IN-1,:) + &
+     2.0*PSRC(:,IN,:))
+    ZFPOS3(:,IN,:) = 1./6 * (2.0*PSRC(:,IN-1,:) + 5.0*PSRC(:,IN,:) - &
+     1.0*PSRC(:,IN+1,:))
+!
+    ZBPOS1(:,IN,:) = 13./12 * (PSRC(:,IN-3,:) - 2.0*PSRC(:,IN-2,:) + &
+    PSRC(:,IN-1,:))**2 + &
+     1./4 * (PSRC(:,IN-3,:) - 4.0*PSRC(:,IN-2,:) + 3.0*PSRC(:,IN-1,:))**2
+    ZBPOS2(:,IN,:) = 13./12 * (PSRC(:,IN-2,:) - 2.0*PSRC(:,IN-1,:) + &
+    PSRC(:,IN,:))**2 + &
+     1./4 * (PSRC(:,IN-2,:) - PSRC(:,IN,:))**2
+    ZBPOS3(:,IN,:) = 13./12 * (PSRC(:,IN-1,:) - 2.0*PSRC(:,IN,:) + &
+    PSRC(:,IN+1,:))**2 + &
+     1./4 * ( 3.0*PSRC(:,IN-1,:) - 4.0*PSRC(:,IN,:) + PSRC(:,IN+1,:))**2
+!
+    ZFNEG1(:,IN,:) = 1./6 * (11.0*PSRC(:,IN,:) - 7.0*PSRC(:,IN+1,:) + &
+    2.0*TPHALO2%NORTH(:,:))
+    ZFNEG2(:,IN,:) = 1./6 * (2.0*PSRC(:,IN-1,:) + 5.0*PSRC(:,IN,:) - &
+    1.0*PSRC(:,IN+1,:))
+    ZFNEG3(:,IN,:) = 1./6 * (-1.0*PSRC(:,IN-2,:) + 5.0*PSRC(:,IN-1,:) + &
+    2.0*PSRC(:,IN,:))
+!
+    ZBNEG1(:,IN,:) = 13./12 * (PSRC(:,IN,:) - 2.0*PSRC(:,IN+1,:) + &
+    TPHALO2%NORTH(:,:))**2 + &
+     1./4 * ( 3.0*PSRC(:,IN,:) - 4.0*PSRC(:,IN+1,:) + TPHALO2%NORTH(:,:))**2
+    ZBNEG2(:,IN,:) = 13./12 * (PSRC(:,IN-1,:) - 2.0*PSRC(:,IN,:) + &
+    PSRC(:,IN+1,:))**2 + &
+     1./4 * (PSRC(:,IN-1,:) - PSRC(:,IN+1,:))**2
+    ZBNEG3(:,IN,:) = 13./12 * (PSRC(:,IN-2,:) - 2.0*PSRC(:,IN-1,:) +&
+    PSRC(:,IN,:))**2 + &
+     1./4 * ( PSRC(:,IN-2,:) - 4.0*PSRC(:,IN-1,:) + 3.0*PSRC(:,IN,:))**2
+!
+    ZOMP1(:,IN,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IN,:))**2
+    ZOMP2(:,IN,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IN,:))**2
+    ZOMP3(:,IN,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IN,:))**2
+    ZOMN1(:,IN,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IN,:))**2
+    ZOMN2(:,IN,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IN,:))**2
+    ZOMN3(:,IN,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IN,:))**2
+!
+    PR(:,IN,:) = (ZOMP2(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)+ZOMP3(:,IN,:)) * &
+    ZFPOS2(:,IN,:)     &
+    + ZOMP1(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)+ZOMP3(:,IN,:)) * ZFPOS1(:,IN,:)  &
+    + ZOMP3(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)+ZOMP3(:,IN,:)) * ZFPOS3(:,IN,:)) &
+    * (0.5+SIGN(0.5,PRVCT(:,IN,:))) &
+    + (ZOMN2(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)+ZOMN3(:,IN,:)) * ZFNEG2(:,IN,:)  &
+    + ZOMN1(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)+ZOMN3(:,IN,:)) * ZFNEG1(:,IN,:)  &
+    + ZOMN3(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)+ZOMN3(:,IN,:)) * ZFNEG3(:,IN,:)) &
+    * (0.5-SIGN(0.5,PRVCT(:,IN,:)))
+!
+  ENDIF
+!
+!        USE A FIFTH ORDER UPSTREAM WENO SCHEME ELSEWHERE (IS+2 --> IN-1)
+!
+  ZFPOS1(:,IS+2:IN-1,:) = 1./6 * (2.0*PSRC(:,IS-1:IN-4,:) - &
+  7.0*PSRC(:,IS:IN-3,  :) + 11.0*PSRC(:,IS+1:IN-2,:))
+  ZFPOS2(:,IS+2:IN-1,:) = 1./6 * (-1.0*PSRC(:,IS:IN-3, :) + &
+  5.0*PSRC(:,IS+1:IN-2,:) + 2.0*PSRC(:,IS+2:IN-1, :))
+  ZFPOS3(:,IS+2:IN-1,:) = 1./6 * (2.0*PSRC(:,IS+1:IN-2,:) + &
+  5.0*PSRC(:,IS+2:IN-1,:) - 1.0*PSRC(:,IS+3:IN,   :))
+!
+  ZBPOS1(:,IS+2:IN-1,:) = 13./12 * (PSRC(:,IS-1:IN-4,:) - &
+  2.0*PSRC(:,IS:IN-3,:) + PSRC(:,IS+1:IN-2,:))**2 + &
+   1./4 * (PSRC(:,IS-1:IN-4,:) - 4.0*PSRC(:,IS:IN-3,:) + &
+   3.0*PSRC(:,IS+1:IN-2,:))**2
+  ZBPOS2(:,IS+2:IN-1,:) = 13./12 * (PSRC(:,IS:IN-3,:) - &
+  2.0*PSRC(:,IS+1:IN-2,:) + PSRC(:,IS+2:IN-1,:))**2 + &
+   1./4 * (PSRC(:,IS:IN-3,:) - PSRC(:,IS+2:IN-1,:))**2
+  ZBPOS3(:,IS+2:IN-1,:) = 13./12 * (PSRC(:,IS+1:IN-2,:) - &
+  2.0*PSRC(:,IS+2:IN-1,:) + PSRC(:,IS+3:IN,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IS+1:IN-2,:) - 4.0*PSRC(:,IS+2:IN-1,:) +&
+   PSRC(:,IS+3:IN,:))**2
+!
+  ZFNEG1(:,IS+2:IN-1,:) = 1./6 * (11.0*PSRC(:,IS+2:IN-1,:) - &
+  7.0*PSRC(:,IS+3:IN,:) + 2.0*PSRC(:,IS+4:IN+1,:))
+  ZFNEG2(:,IS+2:IN-1,:) = 1./6 * (2.0*PSRC(:,IS+1:IN-2,:) + &
+  5.0*PSRC(:,IS+2:IN-1,:) - 1.0*PSRC(:,IS+3:IN,:))
+  ZFNEG3(:,IS+2:IN-1,:) = 1./6 * (-1.0*PSRC(:,IS:IN-3,:) + &
+  5.0*PSRC(:,IS+1:IN-2,:) + 2.0*PSRC(:,IS+2:IN-1,:))
+!
+  ZBNEG1(:,IS+2:IN-1,:) = 13./12 * (PSRC(:,IS+2:IN-1,:) - &
+  2.0*PSRC(:,IS+3:IN,:) + PSRC(:,IS+4:IN+1,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IS+2:IN-1,:) - 4.0*PSRC(:,IS+3:IN,:) + &
+   PSRC(:,IS+4:IN+1,:))**2
+  ZBNEG2(:,IS+2:IN-1,:) = 13./12 * (PSRC(:,IS+1:IN-2,:) - &
+  2.0*PSRC(:,IS+2:IN-1,:) + PSRC(:,IS+3:IN,:))**2 + &
+  1./4 * (PSRC(:,IS+1:IN-2,:) - PSRC(:,IS+3:IN,:))**2
+  ZBNEG3(:,IS+2:IN-1,:) = 13./12 * (PSRC(:,IS:IN-3,:) - &
+  2.0*PSRC(:,IS+1:IN-2,:) + PSRC(:,IS+2:IN-1,:))**2 + &
+  1./4 * ( PSRC(:,IS:IN-3,:) - 4.0*PSRC(:,IS+1:IN-2,:) + &
+  3.0*PSRC(:,IS+2:IN-1,:))**2
+!
+  ZOMP1(:,IS+2:IN-1,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS+2:IN-1,:))**2
+  ZOMP2(:,IS+2:IN-1,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS+2:IN-1,:))**2
+  ZOMP3(:,IS+2:IN-1,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IS+2:IN-1,:))**2
+  ZOMN1(:,IS+2:IN-1,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS+2:IN-1,:))**2
+  ZOMN2(:,IS+2:IN-1,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS+2:IN-1,:))**2
+  ZOMN3(:,IS+2:IN-1,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IS+2:IN-1,:))**2
+!
+    PR(:,IS+2:IN-1,:) = (ZOMP2(:,IS+2:IN-1,:)/(ZOMP1(:,IS+2:IN-1,:)+&
+     ZOMP2(:,IS+2:IN-1,:)+ZOMP3(:,IS+2:IN-1,:)) * ZFPOS2(:,IS+2:IN-1,:)  &
+     + ZOMP1(:,IS+2:IN-1,:)/(ZOMP1(:,IS+2:IN-1,:)+&
+     ZOMP2(:,IS+2:IN-1,:)+ZOMP3(:,IS+2:IN-1,:)) * ZFPOS1(:,IS+2:IN-1,:)  &
+     + ZOMP3(:,IS+2:IN-1,:)/(ZOMP1(:,IS+2:IN-1,:)+ZOMP2(:,IS+2:IN-1,:)+ &
+     ZOMP3(:,IS+2:IN-1,:)) * ZFPOS3(:,IS+2:IN-1,:)) &
+     * (0.5+SIGN(0.5,PRVCT(:,IS+2:IN-1,:))) &
+     + (ZOMN2(:,IS+2:IN-1,:)/(ZOMN1(:,IS+2:IN-1,:)+ZOMN2(:,IS+2:IN-1,:)+ &
+     ZOMN3(:,IS+2:IN-1,:)) * ZFNEG2(:,IS+2:IN-1,:)                 &
+     + ZOMN1(:,IS+2:IN-1,:)/(ZOMN1(:,IS+2:IN-1,:)+ZOMN2(:,IS+2:IN-1,:)+ &
+     ZOMN3(:,IS+2:IN-1,:)) * ZFNEG1(:,IS+2:IN-1,:)                     &
+     + ZOMN3(:,IS+2:IN-1,:)/(ZOMN1(:,IS+2:IN-1,:)+ZOMN2(:,IS+2:IN-1,:)+&
+     ZOMN3(:,IS+2:IN-1,:)) * ZFNEG3(:,IS+2:IN-1,:)) &
+     * (0.5-SIGN(0.5,PRVCT(:,IS+2:IN-1,:)))
+!
+END SELECT
+!
+PR = PR * PRVCT
+!
+END SUBROUTINE ADVEC_WENO_K_3_MY
+!
+!-------------------------------------------------------------------------------
+!
+!     #############################################################
+      SUBROUTINE ADVEC_WENO_K_3_VY(HLBCY, PSRC, PRVCT, PR, TPHALO2)
+!     #############################################################
+!!
+!!**** Computes PRVCT * PVT. Upstream fluxes of V in Y direction.  
+!!     Input PVT is on V Grid 'ie' (i,j,k) based on VGRID reference
+!!     Output PR is on mass Grid 'ie' (i,j+1/2,k) based on VGRID reference
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_LUNIT
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on U grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRVCT ! contrav. comp. on MASS GRID
+!
+! output source term
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2      ! halo2 for the field at t
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IIB,IJB    ! Begining useful area in x,y,z directions
+INTEGER :: IIE,IJE    ! End useful area in x,y,z directions
+INTEGER::  IS,IN   ! Coordinate of third order diffusion area
+!
+INTEGER:: ILUOUT,IRESP   ! for prints
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFPOS1, ZFPOS2, ZFPOS3
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFNEG1, ZFNEG2, ZFNEG3
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBPOS1, ZBPOS2, ZBPOS3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBNEG1, ZBNEG2, ZBNEG3
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMP1, ZOMP2, ZOMP3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: ZOMN1, ZOMN2, ZOMN3
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./10.
+REAL, PARAMETER :: ZGAMMA2 = 3./5.
+REAL, PARAMETER :: ZGAMMA3 = 3./10.
+REAL, PARAMETER :: ZGAMMA1_PRIM = 1./3.
+REAL, PARAMETER :: ZGAMMA2_PRIM = 2./3.
+!
+    REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!----------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+!
+!--------------------------------------------------------------------------
+!
+!*       0.4.   INITIALIZE THE FIELD 
+!               ---------------------
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFPOS3 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0
+ZFNEG3 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBPOS3 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZBNEG3 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMP3  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0
+ZOMN3  = 0.0
+!
+!-------------------------------------------------------------------------------
+!
+SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side
+!
+!*       1.1    CYCLIC CASE IN THE Y DIRECTION:
+!
+CASE ('CYCL')          ! In that case one must have HLBCX(1) == HLBCX(2)
+!
+  IF(NHALO == 1) THEN
+    IS=IJB
+    IN=IJE
+  ELSE
+      CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP)
+      WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case '
+      WRITE(ILUOUT,*) 'cannot be used with NHALO=2'
+      CALL ABORT
+      STOP
+  END IF
+!
+! Same explanation than for the subroutine ADVEC_WENO_K_3_UX
+!
+! intermediate fluxes for positive wind case
+!
+  ZFPOS1(:,IS+1:IN-1,:) = 1./6 * (2.0*PSRC(:,IS-1:IN-3,:) - 7.0*PSRC(:,IS:IN-2,:) +&
+  11.0*PSRC(:,IS+1:IN-1,:))
+  ZFPOS1(:,IS,       :) = 1./6 * (2.0*TPHALO2%SOUTH(:,:)  - 7.0*PSRC(:,IS-1,   :) +&
+  11.0*PSRC(:,IS,       :))
+  ZFPOS1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))
+  ZFPOS1(:,IN,  :) = 0.5 * (3.0*PSRC(:,IN,  :) - PSRC(:,IN-1,:))
+  ZFPOS1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN+1,:) - PSRC(:,IN,  :))
+!
+!  
+  ZFPOS2(:,IS:IN-1,:) = 1./6 * (-1.0*PSRC(:,IS-1:IN-2,:) + 5.0*PSRC(:,IS:IN-1,:) +&
+  2.0*PSRC(:,IS+1:IN,:))
+  ZFPOS2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1,:) + PSRC(:,IS,  :))
+  ZFPOS2(:,IN,  :) = 0.5 * (PSRC(:,IN,  :) + PSRC(:,IN+1,:)) 
+  ZFPOS2(:,IN+1,:) = 0.5 * (PSRC(:,IN+1,:) + TPHALO2%NORTH(:,:))
+!
+!
+  ZFPOS3(:,IS:IN-1,:) = 1./6 * (2.0*PSRC(:,IS:IN-1,:) + 5.0*PSRC(:,IS+1:IN,:) - &
+  1.0*PSRC(:,IS+2:IN+1,:))
+!
+! intermediate flux for negative wind case
+!
+  ZFNEG1(:,IS:IN-2,:) = 1./6 * (11.0*PSRC(:,IS+1:IN-1,:) - 7.0*PSRC(:,IS+2:IN,:) +&
+  2.0*PSRC(:,IS+3:IN+1,:))
+  ZFNEG1(:,IN-1,   :) = 1./6 * (11.0*PSRC(:,IN,       :) - 7.0*PSRC(:,IN+1,   :) +&
+  2.0*TPHALO2%NORTH(:,:))
+  ZFNEG1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS,:) - PSRC(:,IS+1,:))
+  ZFNEG1(:,IN+1,:) = - 999.
+  ZFNEG1(:,IN,  :) = 0.5 * (3.0*PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))
+!
+!
+  ZFNEG2(:,IS:IN-1,:) = 1./6 * (2.0*PSRC(:,IS:IN-1,:) + 5.0*PSRC(:,IS+1:IN,:) - &
+  1.0*PSRC(:,IS+2:IN+1,:))
+  ZFNEG2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1,:) + PSRC(:,IS,  :))
+  ZFNEG2(:,IN,  :) = 0.5 * (PSRC(:,IN,  :) + PSRC(:,IN+1,:))
+  ZFNEG2(:,IN+1,:) = 0.5 * (PSRC(:,IN+1,:) + TPHALO2%NORTH(:,:))
+!
+!
+  ZFNEG3(:,IS:IN-1,:) = 1./6 * (-1.0*PSRC(:,IS-1:IN-2,:) + 5.0*PSRC(:,IS:IN-1,:) + &
+  2.0*PSRC(:,IS+1:IN,:))
+!
+! smoothness indicators for positive wind case
+!
+  ZBPOS1(:,IS+1:IN-1,:) = 13./12 * (PSRC(:,IS-1:IN-3,:) - 2.0*PSRC(:,IS:IN-2,:) +&
+  PSRC(:,IS+1:IN-1,:))**2 + &
+   1./4 * (PSRC(:,IS-1:IN-3,:) - 4.0*PSRC(:,IS:IN-2,:) + 3.0*PSRC(:,IS+1:IN-1,:))**2
+  ZBPOS1(:,IS,       :) = 13./12 * (TPHALO2%SOUTH(:,:) - 2.0*PSRC(:,IS-1,:) +&
+  PSRC(:,IS,:))**2 + &
+   1./4 * (TPHALO2%SOUTH(:,:) - 4.0*PSRC(:,IS-1,:) + 3.0*PSRC(:,IS,:))**2
+  ZBPOS1(:,IN+1,:) = (PSRC(:,IN+1,:) - PSRC(:,IN,  :))**2
+  ZBPOS1(:,IN,  :) = (PSRC(:,IN,  :) - PSRC(:,IN-1,:))**2
+  ZBPOS1(:,IS-1,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2
+!
+!
+  ZBPOS2(:,IS:IN-1,:) = 13./12 * (PSRC(:,IS-1:IN-2,:) - 2.0*PSRC(:,IS:IN-1,:) + &
+  PSRC(:,IS+1:IN,:))**2 + &
+   1./4 * (PSRC(:,IS-1:IN-2,:) - PSRC(:,IS+1:IN,:))**2
+  ZBPOS2(:,IS-1,:) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+  ZBPOS2(:,IN,  :) = (PSRC(:,IN+1,:) - PSRC(:,IN,  :))**2
+  ZBPOS2(:,IN+1,:) = (TPHALO2%NORTH(:,:) - PSRC(:,IN+1,:))**2
+!
+  ZBPOS3(:,IS:IN-1,:) = 13./12 * (PSRC(:,IS:IN-1,:) - 2.0*PSRC(:,IS+1:IN,:) + &
+  PSRC(:,IS+2:IN+1,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IS:IN-1,:) - 4.0*PSRC(:,IS+1:IN,:) + PSRC(:,IS+2:IN+1,:))**2
+!
+! smoothness indicators for negative wind case
+!
+  ZBNEG1(:,IS:IN-2,:) = 13./12 * (PSRC(:,IS+1:IN-1,:) - 2.0*PSRC(:,IS+2:IN,:) + &
+  PSRC(:,IS+3:IN+1,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IS+1:IN-1,:) - 4.0*PSRC(:,IS+2:IN,:) + &
+   PSRC(:,IS+3:IN+1,:))**2
+  ZBNEG1(:,IN-1,:) = 13./12 * (PSRC(:,IN,:) - 2.0*PSRC(:,IN+1,:) + &
+  TPHALO2%NORTH(:,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IN,:) - 4.0*PSRC(:,IN+1,:) + TPHALO2%NORTH(:,:))**2
+  ZBNEG1(:,IS-1,:) = (PSRC(:,IS,:) - PSRC(:,IS+1,:))**2
+  ZBNEG1(:,IN+1,:) = - 999.
+  ZBNEG1(:,IN,  :) = (PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))**2
+!
+  ZBNEG2(:,IS:IN-1,:) = 13./12 * (PSRC(:,IS:IN-1,:) - 2.0*PSRC(:,IS+1:IN,:) + &
+  PSRC(:,IS+2:IN+1,:))**2 + &
+   1./4 * (PSRC(:,IS:IN-1,:) - PSRC(:,IS+2:IN+1,:))**2
+  ZBNEG2(:,IS-1,:) = (PSRC(:,IS-1,:) - PSRC(:,IS  ,:))**2
+  ZBNEG2(:,IN,  :) = (PSRC(:,IN,  :) - PSRC(:,IN+1,:))**2
+  ZBNEG2(:,IN+1,:) = (PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))**2 
+!
+!
+  ZBNEG3(:,IS:IN-1,:) = 13./12 * (PSRC(:,IS-1:IN-2,:) - 2.0*PSRC(:,IS:IN-1,:) + &
+  PSRC(:,IS+1:IN,:))**2 + &
+   1./4 * ( PSRC(:,IS-1:IN-2,:) - 4.0*PSRC(:,IS:IN-1,:) + 3.0*PSRC(:,IS+1:IN,:))**2
+!
+! WENO weights
+!
+  ZOMP1(:,IS:IN-1,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS:IN-1,:))**2
+  ZOMP2(:,IS:IN-1,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS:IN-1,:))**2
+  ZOMP3(:,IS:IN-1,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IS:IN-1,:))**2
+  ZOMN1(:,IS:IN-1,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS:IN-1,:))**2
+  ZOMN2(:,IS:IN-1,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS:IN-1,:))**2
+  ZOMN3(:,IS:IN-1,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IS:IN-1,:))**2
+!
+  ZOMP1(:,IS-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IS-1,:))**2
+  ZOMP1(:,IN,  :) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IN,  :))**2
+  ZOMP1(:,IN+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IN+1,:))**2
+  ZOMN1(:,IS-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IS-1,:))**2
+  ZOMN1(:,IN,  :) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IN,  :))**2
+  ZOMN1(:,IN+1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IN+1,:))**2
+  ZOMP2(:,IS-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IS-1,:))**2
+  ZOMP2(:,IN,  :) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IN,  :))**2
+  ZOMP2(:,IN+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IN+1,:))**2
+  ZOMN2(:,IS-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IS-1,:))**2
+  ZOMN2(:,IN,  :) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IN,  :))**2
+  ZOMN2(:,IN+1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IN+1,:))**2
+!
+! WENO fluxes (5th order)
+!
+  PR(:,IS:IN-1,:) = (ZOMP2(:,IS:IN-1,:)/(ZOMP1(:,IS:IN-1,:)+ZOMP2(:,IS:IN-1,:)+&
+  ZOMP3(:,IS:IN-1,:)) * ZFPOS2(:,IS:IN-1,:)                                    &
+                   + ZOMP1(:,IS:IN-1,:)/(ZOMP1(:,IS:IN-1,:)+ZOMP2(:,IS:IN-1,:)+&
+                   ZOMP3(:,IS:IN-1,:)) * ZFPOS1(:,IS:IN-1,:)                   &
+                   + ZOMP3(:,IS:IN-1,:)/(ZOMP1(:,IS:IN-1,:)+ZOMP2(:,IS:IN-1,:)+&
+                   ZOMP3(:,IS:IN-1,:)) * ZFPOS3(:,IS:IN-1,:))&
+                   * (0.5+SIGN(0.5,PRVCT(:,IS:IN-1,:))) &
+                  + (ZOMN2(:,IS:IN-1,:)/(ZOMN1(:,IS:IN-1,:)+ZOMN2(:,IS:IN-1,:)+&
+                  ZOMN3(:,IS:IN-1,:)) * ZFNEG2(:,IS:IN-1,:)                  &
+                   + ZOMN1(:,IS:IN-1,:)/(ZOMN1(:,IS:IN-1,:)+ZOMN2(:,IS:IN-1,:)+&
+                   ZOMN3(:,IS:IN-1,:)) * ZFNEG1(:,IS:IN-1,:)                   &
+                   + ZOMN3(:,IS:IN-1,:)/(ZOMN1(:,IS:IN-1,:)+ZOMN2(:,IS:IN-1,:)+&
+                   ZOMN3(:,IS:IN-1,:)) * ZFNEG3(:,IS:IN-1,:))&
+                   * (0.5-SIGN(0.5,PRVCT(:,IS:IN-1,:)))
+!       
+  PR(:,IS-1,:) = (ZOMP2(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * &
+                  ZFPOS2(:,IS-1,:)                                    &
+                + ZOMP1(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * &
+                  ZFPOS1(:,IS-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) &
+               + (ZOMN2(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * &
+                  ZFNEG2(:,IS-1,:)                                    &
+                + ZOMN1(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * &
+                ZFNEG1(:,IS-1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
+!
+  PR(:,IN,  :) = (ZOMP2(:,IN,  :)/(ZOMP1(:,IN,  :)+ZOMP2(:,IN,  :)) * &
+                  ZFPOS2(:,IN,  :)                                    &
+                + ZOMP1(:,IN,  :)/(ZOMP1(:,IN,  :)+ZOMP2(:,IN,  :)) * &
+                  ZFPOS1(:,IN,  :)) * (0.5+SIGN(0.5,PRVCT(:,IN,  :))) &
+               + (ZOMN2(:,IN,  :)/(ZOMN1(:,IN,  :)+ZOMN2(:,IN,  :)) * &
+                  ZFNEG2(:,IN,  :)                                    &
+                + ZOMN1(:,IN,  :)/(ZOMN1(:,IN,  :)+ZOMN2(:,IN,  :)) * &
+                ZFNEG1(:,IN,  :)) * (0.5-SIGN(0.5,PRVCT(:,IN,  :)))
+!
+  PR(:,IN+1,:) = (ZOMP2(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:)) * &
+                  ZFPOS2(:,IN+1,:)                                    &
+                + ZOMP1(:,IN+1,:)/(ZOMP1(:,IN+1,:)+ZOMP2(:,IN+1,:)) * &
+                  ZFPOS1(:,IN+1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) &
+               + (ZOMN2(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * &
+                  ZFNEG2(:,IN+1,:)                                    &
+                + ZOMN1(:,IN+1,:)/(ZOMN1(:,IN+1,:)+ZOMN2(:,IN+1,:)) * &
+                  ZFNEG1(:,IN+1,:)) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:)))
+!
+!
+!       OPEN, WALL, NEST CASE IN THE Y DIRECTION
+!
+CASE ('OPEN','WALL','NEST')
+!
+  IS=IJB
+  IN=IJE
+!
+!       USE A FIRST ORDER UPSTREAM SCHEME AT THE PHYSICAL BORDER
+!
+  IF(LSOUTH_ll()) THEN
+    PR(:,IS-1,:) = PSRC(:,IS-1,:) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) + &
+                   PSRC(:,IS,:) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
+!
+    ZFPOS1(:,IS,:) = 0.5 * (3.0*PSRC(:,IS,:) - PSRC(:,IS-1,:))
+    ZFPOS2(:,IS,:) = 0.5 * (PSRC(:,IS,    :) + PSRC(:,IS+1,:))
+    ZBPOS1(:,IS,:) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+    ZBPOS2(:,IS,:) = (PSRC(:,IS+1,:) - PSRC(:,IS,  :))**2
+!
+    ZFNEG1(:,IS,:) = 0.5 * (3.0*PSRC(:,IS+1,:) - PSRC(:,IS+2,:))
+    ZFNEG2(:,IS,:) = 0.5 * (PSRC(:,IS,      :) + PSRC(:,IS+1,:))
+    ZBNEG1(:,IS,:) = (PSRC(:,IS+1,:) - PSRC(:,IS+2,:))**2
+    ZBNEG2(:,IS,:) = (PSRC(:,IS,  :) - PSRC(:,IS+1,:))**2
+!
+    ZOMP1(:,IS,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IS,:))**2
+    ZOMP2(:,IS,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IS,:))**2
+    ZOMN1(:,IS,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IS,:))**2
+    ZOMN2(:,IS,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IS,:))**2
+!
+      PR(:,IS,:) = (ZOMP2(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)) * ZFPOS2(:,IS,:) &
+                + ZOMP1(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)) * ZFPOS1(:,IS,:)) *&
+                (0.5+SIGN(0.5,PRVCT(:,IS,:))) &
+               + (ZOMN2(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)) * ZFNEG2(:,IS,:)   &
+                + ZOMN1(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)) * ZFNEG1(:,IS,:)) *&
+                (0.5-SIGN(0.5,PRVCT(:,IS,:)))
+!
+  ELSEIF(NHALO == 1) THEN
+    ZFPOS1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))
+    ZFPOS2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1,    :) + PSRC(:,IS,:))
+    ZBPOS1(:,IS-1,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2
+    ZBPOS2(:,IS-1,:) = (PSRC(:,IS,  :) - PSRC(:,IS-1,:))**2
+!
+    ZFNEG1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS,:) - PSRC(:,IS+1,:))
+    ZFNEG2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1,  :) + PSRC(:,IS,  :))
+    ZBNEG1(:,IS-1,:) = (PSRC(:,IS,  :) - PSRC(:,IS+1,:))**2
+    ZBNEG2(:,IS-1,:) = (PSRC(:,IS-1,:) - PSRC(:,IS,  :))**2
+!
+    ZOMP1(:,IS-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IS-1,:))**2
+    ZOMN1(:,IS-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IS-1,:))**2
+    ZOMP2(:,IS-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IS-1,:))**2
+    ZOMN2(:,IS-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IS-1,:))**2
+!
+    PR(:,IS-1,:) = (ZOMP2(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * &
+                  ZFPOS2(:,IS-1,:)                                  &
+                + ZOMP1(:,IS-1,:)/(ZOMP1(:,IS-1,:)+ZOMP2(:,IS-1,:)) * &
+                  ZFPOS1(:,IS-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) &
+               + (ZOMN2(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * &
+                  ZFNEG2(:,IS-1,:)                                    &
+                + ZOMN1(:,IS-1,:)/(ZOMN1(:,IS-1,:)+ZOMN2(:,IS-1,:)) * &
+                  ZFNEG1(:,IS-1,:)) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:)))
+!
+    ZFPOS1(:,IS,:) = 1./6 * (2.0*TPHALO2%SOUTH(:,:) - 7.0*PSRC(:,IS-1,:) + &
+                     11.0*PSRC(:,IS,:))
+    ZFPOS2(:,IS,:) = 1./6 * (-1.0*PSRC(:,IS-1,:) + 5.0*PSRC(:,IS,  :) + &
+                     2.0*PSRC(:,IS+1,:))
+    ZFPOS3(:,IS,:) = 1./6 * (2.0*PSRC(:,IS,   :) + 5.0*PSRC(:,IS+1,:) - &
+                     1.0*PSRC(:,IS+2,:))
+!
+    ZFNEG1(:,IS,:) = 1./6 * (11.0*PSRC(:,IS+1,:) - 7.0*PSRC(:,IS+2,:) + &
+                     2.0*PSRC(:,IS+3,:))
+    ZFNEG2(:,IS,:) = 1./6 * (2.0*PSRC(:,IS,   :) + 5.0*PSRC(:,IS+1,:) - &
+                     1.0*PSRC(:,IS+2,:))
+    ZFNEG3(:,IS,:) = 1./6 * (-1.0*PSRC(:,IS-1,:) + 5.0*PSRC(:,IS,  :) + &
+                     2.0*PSRC(:,IS+1,:))
+!
+    ZBPOS1(:,IS,:) = 13./12 * (TPHALO2%SOUTH(:,:) - 2.0*PSRC(:,IS-1,:) + &
+                     PSRC(:,IS,:))**2 + &
+     1./4 * (TPHALO2%SOUTH(:,:) - 4.0*PSRC(:,IS-1,:) + 3.0*PSRC(:,IS,:))**2
+    ZBPOS2(:,IS,:) = 13./12 * (PSRC(:,IS-1,:) - 2.0*PSRC(:,IS,:) + &
+                     PSRC(:,IS+1,:))**2 + &
+     1./4 * (PSRC(:,IS-1,:) - PSRC(:,IS+1,:))**2
+    ZBPOS3(:,IS,:) = 13./12 * (PSRC(:,IS,:) - 2.0*PSRC(:,IS+1,:) + &
+     PSRC(:,IS+2,:))**2 + &
+     1./4 * ( 3.0*PSRC(:,IS,:) - 4.0*PSRC(:,IS+1,:) + PSRC(:,IS+2,:))**2
+!
+    ZBNEG1(:,IS,:) = 13./12 * (PSRC(:,IS+1,:) - 2.0*PSRC(:,IS+2,:) + &
+     PSRC(:,IS+3,:))**2 + &
+     1./4 * ( 3.0*PSRC(:,IS+1,:) - 4.0*PSRC(:,IS+2,:) + PSRC(:,IS+3,:))**2
+    ZBNEG2(:,IS,:) = 13./12 * (PSRC(:,IS,:) - 2.0*PSRC(:,IS+1,:) + &
+     PSRC(:,IS+2,:))**2 + &
+     1./4 * (PSRC(:,IS,:) - PSRC(:,IS+2,:))**2
+    ZBNEG3(:,IS,:) = 13./12 * (PSRC(:,IS-1,:) - 2.0*PSRC(:,IS,:) + &
+     PSRC(:,IS+1,:))**2 + &
+     1./4 * ( PSRC(:,IS-1,:) - 4.0*PSRC(:,IS,:) + 3.0*PSRC(:,IS+1,:))**2
+!
+    ZOMP1(:,IS,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS,:))**2
+    ZOMP2(:,IS,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS,:))**2
+    ZOMP3(:,IS,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IS,:))**2
+    ZOMN1(:,IS,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS,:))**2
+    ZOMN2(:,IS,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS,:))**2
+    ZOMN3(:,IS,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IS,:))**2
+!
+    PR(:,IS,:) = (ZOMP2(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)+ZOMP3(:,IS,:)) * &
+     ZFPOS2(:,IS,:)                                  &
+     + ZOMP1(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)+ZOMP3(:,IS,:)) * ZFPOS1(:,IS,:)&
+     + ZOMP3(:,IS,:)/(ZOMP1(:,IS,:)+ZOMP2(:,IS,:)+ZOMP3(:,IS,:)) * ZFPOS3(:,IS,:))&
+     * (0.5+SIGN(0.5,PRVCT(:,IS,:))) &
+     + (ZOMN2(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)+ZOMN3(:,IS,:)) * ZFNEG2(:,IS,:)&
+     + ZOMN1(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)+ZOMN3(:,IS,:)) * ZFNEG1(:,IS,:)&
+     + ZOMN3(:,IS,:)/(ZOMN1(:,IS,:)+ZOMN2(:,IS,:)+ZOMN3(:,IS,:)) * ZFNEG3(:,IS,:))&
+     * (0.5-SIGN(0.5,PRVCT(:,IS,:)))
+!       
+  ENDIF
+!
+  IF(LNORTH_ll()) THEN
+    PR(:,IN,:) = PSRC(:,IN,:) * (0.5+SIGN(0.5,PRVCT(:,IN,:))) + PSRC(:,IN+1,:) *&
+     (0.5-SIGN(0.5,PRVCT(:,IN,:)))
+!
+    ZFPOS1(:,IN-1,:) = 0.5 * (3.0*PSRC(:,IN-1,:) - PSRC(:,IN-2,:))
+    ZFPOS2(:,IN-1,:) = 0.5 * (PSRC(:,IN-1,    :) + PSRC(:,IN,  :))
+    ZBPOS1(:,IN-1,:) = (PSRC(:,IN-1,:) - PSRC(:,IN-2,:))**2
+    ZBPOS2(:,IN-1,:) = (PSRC(:,IN,  :) - PSRC(:,IN-1,:))**2
+!
+    ZFNEG1(:,IN-1,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN+1,:))
+    ZFNEG2(:,IN-1,:) = 0.5 * (PSRC(:,IN-1,  :) + PSRC(:,IN,  :))
+    ZBNEG1(:,IN-1,:) = (PSRC(:,IN,:) - PSRC(:,IN+1,:))**2
+    ZBNEG2(:,IN-1,:) = (PSRC(:,IN-1,:) - PSRC(:,IN,:))**2
+!
+    ZOMP1(:,IN-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IN-1,:))**2
+    ZOMN1(:,IN-1,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IN-1,:))**2
+    ZOMP2(:,IN-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IN-1,:))**2
+    ZOMN2(:,IN-1,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IN-1,:))**2
+!
+      PR(:,IN-1,:) = (ZOMP2(:,IN-1,:)/(ZOMP1(:,IN-1,:)+ZOMP2(:,IN-1,:)) * &
+                ZFPOS2(:,IN-1,:)                                   &
+                + ZOMP1(:,IN-1,:)/(ZOMP1(:,IN-1,:)+ZOMP2(:,IN-1,:)) * &
+                ZFPOS1(:,IN-1,:)) * (0.5+SIGN(0.5,PRVCT(:,IN-1,:)))    &
+               + (ZOMN2(:,IN-1,:)/(ZOMN1(:,IN-1,:)+ZOMN2(:,IN-1,:)) *  &
+                ZFNEG2(:,IN-1,:)                                       &
+                + ZOMN1(:,IN-1,:)/(ZOMN1(:,IN-1,:)+ZOMN2(:,IN-1,:)) *  &
+                ZFNEG1(:,IN-1,:)) * (0.5-SIGN(0.5,PRVCT(:,IN-1,:)))
+!
+  ELSEIF(NHALO == 1) THEN
+    ZFPOS1(:,IN,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN-1,:))
+    ZFPOS2(:,IN,:) = 0.5 * (PSRC(:,IN,    :) + PSRC(:,IN+1,:))
+    ZBPOS1(:,IN,:) = (PSRC(:,IN,  :) - PSRC(:,IN-1,:))**2
+    ZBPOS2(:,IN,:) = (PSRC(:,IN+1,:) - PSRC(:,IN,  :))**2
+!
+    ZFNEG1(:,IN,:) = 0.5 * (3.0*PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))
+    ZFNEG2(:,IN,:) = 0.5 * (PSRC(:,IN,      :) + PSRC(:,IN+1,:))
+    ZBNEG1(:,IN,:) = (PSRC(:,IN+1,:) - TPHALO2%NORTH(:,:))**2
+    ZBNEG2(:,IN,:) = (PSRC(:,IN,  :) - PSRC(:,IN+1,:))**2
+ !
+    ZOMP1(:,IN,:) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,IN,:))**2
+    ZOMN1(:,IN,:) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,IN,:))**2
+    ZOMP2(:,IN,:) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,IN,:))**2
+    ZOMN2(:,IN,:) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,IN,:))**2
+!
+      PR(:,IN,:) = (ZOMP2(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)) * ZFPOS2(:,IN,:) &
+                + ZOMP1(:,IN,:)/(ZOMP1(:,IN,:)+ZOMP2(:,IN,:)) * ZFPOS1(:,IN,:)) *&
+                (0.5+SIGN(0.5,PRVCT(:,IN,:))) &
+               + (ZOMN2(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)) * ZFNEG2(:,IN,:)   &
+                + ZOMN1(:,IN,:)/(ZOMN1(:,IN,:)+ZOMN2(:,IN,:)) * ZFNEG1(:,IN,:)) *&
+                (0.5-SIGN(0.5,PRVCT(:,IN,:)))
+!
+    ZFPOS1(:,IN-1,:) = 1./6 * (2.0*PSRC(:,IN-3,:) - 7.0*PSRC(:,IN-2,:) + &
+                       11.0*PSRC(:,IN-1,:))
+    ZFPOS2(:,IN-1,:) = 1./6 * (-1.0*PSRC(:,IN-2,:) + 5.0*PSRC(:,IN-1,:) + &
+                       2.0*PSRC(:,IN,:))
+    ZFPOS3(:,IN-1,:) = 1./6 * (2.0*PSRC(:,IN-1,:) + 5.0*PSRC(:,IN,:) - &
+                       1.0*PSRC(:,IN+1,:))
+!
+    ZFNEG1(:,IN-1,:) = 1./6 * (11.0*PSRC(:,IN,  :) - 7.0*PSRC(:,IN+1,:) + &
+                       2.0*TPHALO2%NORTH(:,:))
+    ZFNEG2(:,IN-1,:) = 1./6 * (2.0*PSRC(:,IN-1, :) + 5.0*PSRC(:,IN,  :) - &
+                       1.0*PSRC(:,IN+1,:))
+    ZFNEG3(:,IN-1,:) = 1./6 * (-1.0*PSRC(:,IN-2,:) + 5.0*PSRC(:,IN-1,:) + &
+                       2.0*PSRC(:,IN,  :))
+!
+    ZBPOS1(:,IN-1,:) = 13./12 * (PSRC(:,IN-3,:) - 2.0*PSRC(:,IN-2,:) + &
+                       PSRC(:,IN-1,:))**2 + &
+     1./4 * (PSRC(:,IN-3,:) - 4.0*PSRC(:,IN-2,:) + 3.0*PSRC(:,IN-1,:))**2
+    ZBPOS2(:,IN-1,:) = 13./12 * (PSRC(:,IN-2,:) - 2.0*PSRC(:,IN-1,:) + &
+                       PSRC(:,IN,:))**2 + &
+     1./4 * (PSRC(:,IN-2,:) - PSRC(:,IN,:))**2
+    ZBPOS3(:,IN-1,:) = 13./12 * (PSRC(:,IN-1,:) - 2.0*PSRC(:,IN,:) + &
+    PSRC(:,IN+1,:))**2 + &
+     1./4 * ( 3.0*PSRC(:,IN-1,:) - 4.0*PSRC(:,IN,:) + PSRC(:,IN+1,:))**2
+!
+    ZBNEG1(:,IN-1,:) = 13./12 * (PSRC(:,IN,:) - 2.0*PSRC(:,IN+1,:) + &
+     TPHALO2%NORTH(:,:))**2 + &
+     1./4 * ( 3.0*PSRC(:,IN,:) - 4.0*PSRC(:,IN+1,:) + TPHALO2%NORTH(:,:))**2
+    ZBNEG2(:,IN-1,:) = 13./12 * (PSRC(:,IN-1,:) - 2.0*PSRC(:,IN,:) + &
+     PSRC(:,IN+1,:))**2 + &
+     1./4 * (PSRC(:,IN-1,:) - PSRC(:,IN+1,:))**2
+    ZBNEG3(:,IN-1,:) = 13./12 * (PSRC(:,IN-2,:) - 2.0*PSRC(:,IN-1,:) + &
+     PSRC(:,IN,:))**2 + &
+     1./4 * ( PSRC(:,IN-2,:) - 4.0*PSRC(:,IN-1,:) + 3.0*PSRC(:,IN,:))**2
+!
+    ZOMP1(:,IN-1,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IN-1,:))**2
+    ZOMP2(:,IN-1,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IN-1,:))**2
+    ZOMP3(:,IN-1,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IN-1,:))**2
+    ZOMN1(:,IN-1,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IN-1,:))**2
+    ZOMN2(:,IN-1,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IN-1,:))**2
+    ZOMN3(:,IN-1,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IN-1,:))**2
+!
+    PR(:,IN-1,:) = (ZOMP2(:,IN-1,:)/(ZOMP1(:,IN-1,:)+ZOMP2(:,IN-1,:)+ &
+      ZOMP3(:,IN-1,:)) * ZFPOS2(:,IN-1,:)                             &
+                   + ZOMP1(:,IN-1,:)/(ZOMP1(:,IN-1,:)+ZOMP2(:,IN-1,:)+&
+                   ZOMP3(:,IN-1,:)) * ZFPOS1(:,IN-1,:)                &
+                   + ZOMP3(:,IN-1,:)/(ZOMP1(:,IN-1,:)+ZOMP2(:,IN-1,:)+&
+                   ZOMP3(:,IN-1,:)) * ZFPOS3(:,IN-1,:))               &
+                   * (0.5+SIGN(0.5,PRVCT(:,IN-1,:)))                  &
+                  + (ZOMN2(:,IN-1,:)/(ZOMN1(:,IN-1,:)+ZOMN2(:,IN-1,:)+&
+                  ZOMN3(:,IN-1,:)) * ZFNEG2(:,IN-1,:)                 &
+                   + ZOMN1(:,IN-1,:)/(ZOMN1(:,IN-1,:)+ZOMN2(:,IN-1,:)+&
+                   ZOMN3(:,IN-1,:)) * ZFNEG1(:,IN-1,:)                &
+                   + ZOMN3(:,IN-1,:)/(ZOMN1(:,IN-1,:)+ZOMN2(:,IN-1,:)+&
+                   ZOMN3(:,IN-1,:)) * ZFNEG3(:,IN-1,:))               &
+                   * (0.5-SIGN(0.5,PRVCT(:,IN-1,:)))
+!       
+  ENDIF
+!
+  ZFPOS1(:,IS+1:IN-2,:) = 1./6 * (2.0*PSRC(:,IS-1:IN-4,:) - 7.0*PSRC(:,IS:IN-3,:) +&
+   11.0*PSRC(:,IS+1:IN-2,:))
+  ZFPOS2(:,IS+1:IN-2,:) = 1./6 * (-1.0*PSRC(:,IS:IN-3,:) + 5.0*PSRC(:,IS+1:IN-2,:)+&
+   2.0*PSRC(:,IS+2:IN-1,:))
+  ZFPOS3(:,IS+1:IN-2,:) = 1./6 * (2.0*PSRC(:,IS+1:IN-2,:) + 5.0*PSRC(:,IS+2:IN-1,:)&
+  - 1.0*PSRC(:,IS+3:IN,:))
+!
+  ZBPOS1(:,IS+1:IN-2,:) = 13./12 * (PSRC(:,IS-1:IN-4,:) - 2.0*PSRC(:,IS:IN-3,:) + &
+   PSRC(:,IS+1:IN-2,:))**2 + &
+   1./4 * (PSRC(:,IS-1:IN-4,:) - 4.0*PSRC(:,IS:IN-3,:) + 3.0*PSRC(:,IS+1:IN-2,:))**2
+  ZBPOS2(:,IS+1:IN-2,:) = 13./12 * (PSRC(:,IS:IN-3,:) - 2.0*PSRC(:,IS+1:IN-2,:) + &
+   PSRC(:,IS+2:IN-1,:))**2 + &
+   1./4 * (PSRC(:,IS:IN-3,:) - PSRC(:,IS+2:IN-1,:))**2
+  ZBPOS3(:,IS+1:IN-2,:) = 13./12 * (PSRC(:,IS+1:IN-2,:) - 2.0*PSRC(:,IS+2:IN-1,:) +&
+   PSRC(:,IS+3:IN,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IS+1:IN-2,:) - 4.0*PSRC(:,IS+2:IN-1,:) + &
+   PSRC(:,IS+3:IN,:))**2
+!
+  ZFNEG1(:,IS+1:IN-2,:) = 1./6 * (11.0*PSRC(:,IS+2:IN-1,:) - &
+   7.0*PSRC(:,IS+3:IN,:) + 2.0*PSRC(:,IS+4:IN+1,:))
+  ZFNEG2(:,IS+1:IN-2,:) = 1./6 * (2.0*PSRC(:,IS+1:IN-2,:) + &
+   5.0*PSRC(:,IS+2:IN-1,:) - 1.0*PSRC(:,IS+3:IN,:))
+  ZFNEG3(:,IS+1:IN-2,:) = 1./6 * (-1.0*PSRC(:,IS:IN-3,:) + &
+   5.0*PSRC(:,IS+1:IN-2,:) + 2.0*PSRC(:,IS+2:IN-1,:))
+!
+  ZBNEG1(:,IS+1:IN-2,:) = 13./12 * (PSRC(:,IS+2:IN-1,:) - &
+   2.0*PSRC(:,IS+3:IN,:) + PSRC(:,IS+4:IN+1,:))**2 + &
+   1./4 * ( 3.0*PSRC(:,IS+2:IN-1,:) - 4.0*PSRC(:,IS+3:IN,:) + &
+   PSRC(:,IS+4:IN+1,:))**2
+  ZBNEG2(:,IS+1:IN-2,:) = 13./12 * (PSRC(:,IS+1:IN-2,:) - &
+   2.0*PSRC(:,IS+2:IN-1,:) + PSRC(:,IS+3:IN,:))**2 + &
+   1./4 * (PSRC(:,IS+1:IN-2,:) - PSRC(:,IS+3:IN,:))**2
+  ZBNEG3(:,IS+1:IN-2,:) = 13./12 * (PSRC(:,IS:IN-3,:) - &
+   2.0*PSRC(:,IS+1:IN-2,:) + PSRC(:,IS+2:IN-1,:))**2 + &
+   1./4 * ( PSRC(:,IS:IN-3,:) - 4.0*PSRC(:,IS+1:IN-2,:) + &
+   3.0*PSRC(:,IS+2:IN-1,:))**2
+!
+  ZOMP1(:,IS+1:IN-2,:) = ZGAMMA1 / (ZEPS + ZBPOS1(:,IS+1:IN-2,:))**2
+  ZOMP2(:,IS+1:IN-2,:) = ZGAMMA2 / (ZEPS + ZBPOS2(:,IS+1:IN-2,:))**2
+  ZOMP3(:,IS+1:IN-2,:) = ZGAMMA3 / (ZEPS + ZBPOS3(:,IS+1:IN-2,:))**2
+  ZOMN1(:,IS+1:IN-2,:) = ZGAMMA1 / (ZEPS + ZBNEG1(:,IS+1:IN-2,:))**2
+  ZOMN2(:,IS+1:IN-2,:) = ZGAMMA2 / (ZEPS + ZBNEG2(:,IS+1:IN-2,:))**2
+  ZOMN3(:,IS+1:IN-2,:) = ZGAMMA3 / (ZEPS + ZBNEG3(:,IS+1:IN-2,:))**2
+!
+  PR(:,IS+1:IN-2,:) = (ZOMP2(:,IS+1:IN-2,:)/(ZOMP1(:,IS+1:IN-2,:)+     &
+   ZOMP2(:,IS+1:IN-2,:)+ZOMP3(:,IS+1:IN-2,:)) * ZFPOS2(:,IS+1:IN-2,:)  &
+   + ZOMP1(:,IS+1:IN-2,:)/(ZOMP1(:,IS+1:IN-2,:)+                       &
+   ZOMP2(:,IS+1:IN-2,:)+ZOMP3(:,IS+1:IN-2,:)) * ZFPOS1(:,IS+1:IN-2,:)  &
+   + ZOMP3(:,IS+1:IN-2,:)/(ZOMP1(:,IS+1:IN-2,:)+ZOMP2(:,IS+1:IN-2,:)+  &
+   ZOMP3(:,IS+1:IN-2,:)) * ZFPOS3(:,IS+1:IN-2,:))                      &
+   * (0.5+SIGN(0.5,PRVCT(:,IS+1:IN-2,:)))                              &
+   + (ZOMN2(:,IS+1:IN-2,:)/(ZOMN1(:,IS+1:IN-2,:)+ZOMN2(:,IS+1:IN-2,:)+ &
+   ZOMN3(:,IS+1:IN-2,:)) * ZFNEG2(:,IS+1:IN-2,:)                       &
+   + ZOMN1(:,IS+1:IN-2,:)/(ZOMN1(:,IS+1:IN-2,:)+ZOMN2(:,IS+1:IN-2,:)+  &
+   ZOMN3(:,IS+1:IN-2,:)) * ZFNEG1(:,IS+1:IN-2,:)                       &
+   + ZOMN3(:,IS+1:IN-2,:)/(ZOMN1(:,IS+1:IN-2,:)+ZOMN2(:,IS+1:IN-2,:)+  &
+   ZOMN3(:,IS+1:IN-2,:)) * ZFNEG3(:,IS+1:IN-2,:))                      &
+   * (0.5-SIGN(0.5,PRVCT(:,IS+1:IN-2,:)))
+!
+END SELECT
+!
+PR = PR * PRVCT
+!
+END SUBROUTINE ADVEC_WENO_K_3_VY
+!
+!-------------------------------------------------------------------------------
+!
+!     ############################################
+      FUNCTION WENO_K_3_WZ(PSRC, PRWCT) RESULT(PR)
+!     ############################################
+!!
+!!* Computes PRWCT * PWT. Upstream fluxes of W in Z direction.  
+!!  Input PWT is on W Grid 'ie' (i,j,k) based on WGRID reference
+!!  Output PR is on mass Grid 'ie' (i,j,k+1/2) based on WGRID reference
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_CONF
+USE MODD_PARAMETERS,ONLY: JPVEXT
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+!CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on W grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on MASS GRID
+!
+! output source term
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IB    ! Begining useful area in x,y,z directions
+INTEGER :: IT    ! End useful area in x,y,z directions
+!
+! WENO-related variables:
+!
+! intermediate reconstruction fluxes for positive wind case
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFPOS1, ZFPOS2, ZFPOS3
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFNEG1, ZFNEG2, ZFNEG3
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBPOS1, ZBPOS2, ZBPOS3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBNEG1, ZBNEG2, ZBNEG3
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZOMP1, ZOMP2, ZOMP3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZOMN1, ZOMN2, ZOMN3
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./10.
+REAL, PARAMETER :: ZGAMMA2 = 3./5.
+REAL, PARAMETER :: ZGAMMA3 = 3./10.
+REAL, PARAMETER :: ZGAMMA1_PRIM = 1./3.
+REAL, PARAMETER :: ZGAMMA2_PRIM = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+IB = 1 + JPVEXT
+IT = SIZE(PSRC,3) - JPVEXT
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFPOS3 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0
+ZFNEG3 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBPOS3 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZBNEG3 = 0.0
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMP3  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0
+ZOMN3  = 0.0 
+! 
+! r: many left cells in regard to 'k' cell for each stencil
+!
+! intermediate fluxes at the mass point on Wgrid u(i,j,k+1/2) for positive wind
+! case (left to the right)
+! (r=2 for the first stencil ZFPOS1, r=1 for the second ZFPOS2 and 
+!  r=0 for the last ZFPOS3)
+! 
+ZFPOS1(:,:,IB+1:IT-2) = 1./6 * (2.0*PSRC(:,:,IB-1:IT-4) - 7.0*PSRC(:,:,IB:IT-3) + &
+ 11.0*PSRC(:,:,IB+1:IT-2))
+ZFPOS1(:,:,IB) = 0.5 * (3.0*PSRC(:,:,IB) - PSRC(:,:,IB-1))
+ZFPOS1(:,:,IT-1) = 0.5 * (3.0*PSRC(:,:,IT-1) - PSRC(:,:,IT-2))
+!
+!
+ZFPOS2(:,:,IB+1:IT-2) = 1./6 * (-1.0*PSRC(:,:,IB:IT-3) + 5.0*PSRC(:,:,IB+1:IT-2) +&
+ 2.0*PSRC(:,:,IB+2:IT-1))
+ZFPOS2(:,:,IB) = 0.5 * (PSRC(:,:,IB) + PSRC(:,:,IB+1))
+ZFPOS2(:,:,IT-1) = 0.5 * (PSRC(:,:,IT) + PSRC(:,:,IT+1))
+!
+ZFPOS3(:,:,IB+1:IT-2) = 1./6 * (2.0*PSRC(:,:,IB+1:IT-2) + 5.0*PSRC(:,:,IB+2:IT-1) -&
+ 1.0*PSRC(:,:,IB+3:IT))
+!
+! r: many left cells in regard to 'k+1' cell for each stencil
+! 
+! intermediate flux at the mass point on Wgrid (i,j,k+1/2)=(i,j,(k+1)-1/2) 
+! for negative wind case (right to the left)
+! (r=2 for the last stencil ZFNEG3=ZFPOS2, r=1 for the second ZFNEG2=ZFPOS3 
+!  and r=0 for the first ZFNEG1)  
+!
+ZFNEG1(:,:,IB+1:IT-2) = 1./6 * (11.0*PSRC(:,:,IB+2:IT-1) - 7.0*PSRC(:,:,IB+3:IT) +&
+ 2.0*PSRC(:,:,IB+4:IT+1))
+ZFNEG1(:,:,IT-1) = 0.5 * (3.0*PSRC(:,:,IT) - PSRC(:,:,IT+1))
+ZFNEG1(:,:,IB) = 0.5 * (3.0*PSRC(:,:,IB+1) - PSRC(:,:,IB+2))
+!
+!
+ZFNEG2(:,:,IB+1:IT-2) = 1./6 * (2.0*PSRC(:,:,IB+1:IT-2) + 5.0*PSRC(:,:,IB+2:IT-1) -&
+ 1.0*PSRC(:,:,IB+3:IT))
+ZFNEG2(:,:,IB) = 0.5 * (PSRC(:,:,IB) + PSRC(:,:,IB+1))
+ZFNEG2(:,:,IT-1) = 0.5 * (PSRC(:,:,IT-1) + PSRC(:,:,IT))
+!
+!
+ZFNEG3(:,:,IB+1:IT-2) = 1./6 * (-1.0*PSRC(:,:,IB:IT-3) + 5.0*PSRC(:,:,IB+1:IT-2) + &
+ 2.0*PSRC(:,:,IB+2:IT-1))
+!
+! smoothness indicators for positive wind case
+!
+ZBPOS1(:,:,IB+1:IT-2) = 13./12 * (PSRC(:,:,IB-1:IT-4) - 2.0*PSRC(:,:,IB:IT-3) + &
+ PSRC(:,:,IB+1:IT-2))**2 + &
+ 1./4 * (PSRC(:,:,IB-1:IT-4) - 4.0*PSRC(:,:,IB:IT-3) + 3.0*PSRC(:,:,IB+1:IT-2))**2
+ZBPOS1(:,:,IB) = (PSRC(:,:,IB) - PSRC(:,:,IB-1))**2
+ZBPOS1(:,:,IT-1) = (PSRC(:,:,IT-1) - PSRC(:,:,IT-2))**2
+!
+!
+ZBPOS2(:,:,IB+1:IT-2) = 13./12 * (PSRC(:,:,IB:IT-3) - 2.0*PSRC(:,:,IB+1:IT-2) + &
+ PSRC(:,:,IB+2:IT-1))**2 + &
+ 1./4 * (PSRC(:,:,IB:IT-3) - PSRC(:,:,IB+2:IT-1))**2
+ZBPOS2(:,:,IB) = (PSRC(:,:,IB+1) - PSRC(:,:,IB))**2
+ZBPOS2(:,:,IT-1) = (PSRC(:,:,IT) - PSRC(:,:,IT-1))**2
+!
+!
+ZBPOS3(:,:,IB+1:IT-2) = 13./12 * (PSRC(:,:,IB+1:IT-2) - 2.0*PSRC(:,:,IB+2:IT-1) + &
+ PSRC(:,:,IB+3:IT))**2 + &
+ 1./4 * ( 3.0*PSRC(:,:,IB+1:IT-2) - 4.0*PSRC(:,:,IB+2:IT-1) + PSRC(:,:,IB+3:IT))**2
+!
+! smoothness indicators for negative wind case
+!
+ZBNEG1(:,:,IB+1:IT-2) = 13./12 * (PSRC(:,:,IB+2:IT-1) - 2.0*PSRC(:,:,IB+3:IT) + &
+ PSRC(:,:,IB+4:IT+1))**2 + &
+ 1./4 * ( 3.0*PSRC(:,:,IB+2:IT-1) - 4.0*PSRC(:,:,IB+3:IT) + PSRC(:,:,IB+4:IT+1))**2
+ZBNEG1(:,:,IB) = (PSRC(:,:,IB+1) - PSRC(:,:,IB+2))**2
+ZBNEG1(:,:,IT-1) = (PSRC(:,:,IT) - PSRC(:,:,IT+1))**2
+!
+ZBNEG2(:,:,IB+1:IT-2) = 13./12 * (PSRC(:,:,IB+1:IT-2) - 2.0*PSRC(:,:,IB+2:IT-1) + &
+ PSRC(:,:,IB+3:IT))**2 + &
+ 1./4 * (PSRC(:,:,IB+1:IT-2) - PSRC(:,:,IB+3:IT))**2
+ZBNEG2(:,:,IB) = (PSRC(:,:,IB) - PSRC(:,:,IB+1))**2
+ZBNEG2(:,:,IT-1) = (PSRC(:,:,IT-1) - PSRC(:,:,IT))**2
+!
+!
+ZBNEG3(:,:,IB+1:IT-2) = 13./12 * (PSRC(:,:,IB:IT-3) - 2.0*PSRC(:,:,IB+1:IT-2) + &
+ PSRC(:,:,IB+2:IT-1))**2 + &
+ 1./4 * ( PSRC(:,:,IB:IT-3) - 4.0*PSRC(:,:,IB+1:IT-2) + 3.0*PSRC(:,:,IB+2:IT-1))**2
+!
+! WENO weights
+!
+ZOMP1(:,:,IB+1:IT-2) = ZGAMMA1 / (ZEPS + ZBPOS1(:,:,IB+1:IT-2))**2
+ZOMP2(:,:,IB+1:IT-2) = ZGAMMA2 / (ZEPS + ZBPOS2(:,:,IB+1:IT-2))**2
+ZOMP3(:,:,IB+1:IT-2) = ZGAMMA3 / (ZEPS + ZBPOS3(:,:,IB+1:IT-2))**2
+ZOMN1(:,:,IB+1:IT-2) = ZGAMMA1 / (ZEPS + ZBNEG1(:,:,IB+1:IT-2))**2
+ZOMN2(:,:,IB+1:IT-2) = ZGAMMA2 / (ZEPS + ZBNEG2(:,:,IB+1:IT-2))**2
+ZOMN3(:,:,IB+1:IT-2) = ZGAMMA3 / (ZEPS + ZBNEG3(:,:,IB+1:IT-2))**2
+!
+ZOMP1(:,:,  IB) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,:,  IB))**2
+ZOMP2(:,:,  IB) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,:,  IB))**2
+ZOMN1(:,:,  IB) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,:,  IB))**2
+ZOMN2(:,:,  IB) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,:,  IB))**2
+ZOMP1(:,:,IT-1) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,:,IT-1))**2
+ZOMP2(:,:,IT-1) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,:,IT-1))**2
+ZOMN1(:,:,IT-1) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,:,IT-1))**2
+ZOMN2(:,:,IT-1) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,:,IT-1))**2
+!
+! WENO fluxes (5th order)
+!
+PR(:,:,IB+1:IT-2) = (ZOMP2(:,:,IB+1:IT-2)/(ZOMP1(:,:,IB+1:IT-2)+&
+ ZOMP2(:,:,IB+1:IT-2)+ZOMP3(:,:,IB+1:IT-2)) * ZFPOS2(:,:,IB+1:IT-2) &
+ + ZOMP1(:,:,IB+1:IT-2)/(ZOMP1(:,:,IB+1:IT-2)+ZOMP2(:,:,IB+1:IT-2)+ &
+ ZOMP3(:,:,IB+1:IT-2)) * ZFPOS1(:,:,IB+1:IT-2)                      &
+ + ZOMP3(:,:,IB+1:IT-2)/(ZOMP1(:,:,IB+1:IT-2)+ZOMP2(:,:,IB+1:IT-2)+ &
+ ZOMP3(:,:,IB+1:IT-2)) * ZFPOS3(:,:,IB+1:IT-2))                     &
+ * (0.5+SIGN(0.5,PRWCT(:,:,IB+1:IT-2)))                             &
+ + (ZOMN2(:,:,IB+1:IT-2)/(ZOMN1(:,:,IB+1:IT-2)+ZOMN2(:,:,IB+1:IT-2)+&
+ ZOMN3(:,:,IB+1:IT-2)) * ZFNEG2(:,:,IB+1:IT-2)                      &
+ + ZOMN1(:,:,IB+1:IT-2)/(ZOMN1(:,:,IB+1:IT-2)+ZOMN2(:,:,IB+1:IT-2)+ &
+ ZOMN3(:,:,IB+1:IT-2)) * ZFNEG1(:,:,IB+1:IT-2)                      &
+ + ZOMN3(:,:,IB+1:IT-2)/(ZOMN1(:,:,IB+1:IT-2)+ZOMN2(:,:,IB+1:IT-2)+ &
+ ZOMN3(:,:,IB+1:IT-2)) * ZFNEG3(:,:,IB+1:IT-2))                     &
+ * (0.5-SIGN(0.5,PRWCT(:,:,IB+1:IT-2)))
+!
+! WENO fluxes (3rd order)
+!
+PR(:,:,IB) = (ZOMP2(:,:,IB)/(ZOMP1(:,:,IB)+ZOMP2(:,:,IB)) * ZFPOS2(:,:,IB)     &
+            + ZOMP1(:,:,IB)/(ZOMP1(:,:,IB)+ZOMP2(:,:,IB)) * ZFPOS1(:,:,IB)) *  &
+            (0.5+SIGN(0.5,PRWCT(:,:,IB) ))                                     &
+           + (ZOMN2(:,:,IB)/(ZOMN1(:,:,IB)+ZOMN2(:,:,IB)) * ZFNEG2(:,:,IB)     &
+            + ZOMN1(:,:,IB)/(ZOMN1(:,:,IB)+ZOMN2(:,:,IB)) * ZFNEG1(:,:,IB)) *  &
+            (0.5-SIGN(0.5,PRWCT(:,:,IB) ))
+!
+PR(:,:,IT-1) = (ZOMP2(:,:,IT-1)/(ZOMP1(:,:,IT-1)+ZOMP2(:,:,IT-1)) * &
+                ZFPOS2(:,:,IT-1)                                    &
+              + ZOMP1(:,:,IT-1)/(ZOMP1(:,:,IT-1)+ZOMP2(:,:,IT-1)) * &
+                ZFPOS1(:,:,IT-1)) * (0.5+SIGN(0.5,PRWCT(:,:,IT-1) ))&
+             + (ZOMN2(:,:,IT-1)/(ZOMN1(:,:,IT-1)+ZOMN2(:,:,IT-1)) * &
+                ZFNEG2(:,:,IT-1)                                    &
+              + ZOMN1(:,:,IT-1)/(ZOMN1(:,:,IT-1)+ZOMN2(:,:,IT-1)) * &
+                ZFNEG1(:,:,IT-1)) * (0.5-SIGN(0.5,PRWCT(:,:,IT-1) ))
+!
+PR(:,:,IB-1) =  PSRC(:,:,IB-1) * (0.5+SIGN(0.5,PRWCT(:,:,IB-1) )) &
+              + PSRC(:,:,IB  ) * (0.5-SIGN(0.5,PRWCT(:,:,IB-1) ))
+!
+PR(:,:,IT) = PSRC(:,:,IT  ) * (0.5+SIGN(0.5,PRWCT(:,:,IT) )) &
+           + PSRC(:,:,IT+1) * (0.5-SIGN(0.5,PRWCT(:,:,IT) ))
+!
+PR(:,:,IT+1) = -999.
+!
+PR = PR * PRWCT
+!
+END FUNCTION WENO_K_3_WZ
+!
+!-----------------------------------------------------------------------------
+!
+!     ########################################################################
+      FUNCTION WENO_K_3_MZ(PSRC, PRWCT) RESULT(PR)
+!     ########################################################################
+!!
+!!* Computes PRWCT * PUT (or PRWCT * PVT). Upstream fluxes of U (or V) 
+!!  variables in Z direction.  
+!!  Input PUT is on U Grid 'ie' (i,j,k) based on UGRID reference                
+!!  Output PR is on mass Grid 'ie' (i,j,k-1/2) based on UGRID reference
+!!
+!!    AUTHOR
+!!    ------
+!!    F. Visentin   *CNRS/LA*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!
+!-------------------------------------------------------------------------------
+!
+USE MODE_ll
+USE MODD_CONF
+USE MODD_PARAMETERS,ONLY: JPVEXT
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+!CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX  ! X direction LBC type
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC  ! variable on MASS grid at t
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRWCT ! contrav. comp. on W grid
+!
+! output source term
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)) :: PR
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IB    ! Begining useful area in x,y,z directions
+INTEGER :: IT    ! End useful area in x,y,z directions
+!
+! WENO-related variables:
+!
+! intermediate reconstruction fluxes for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFPOS1, ZFPOS2, ZFPOS3
+!
+! intermediate reconstruction fluxes for negative wind case
+! we need only one since ZFNEG2 = ZFPOS2
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZFNEG1, ZFNEG2, ZFNEG3
+!
+! smoothness indicators for positive wind case
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBPOS1, ZBPOS2, ZBPOS3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZBNEG1, ZBNEG2, ZBNEG3
+!
+! WENO weights
+!
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZOMP1, ZOMP2, ZOMP3
+REAL, DIMENSION(SIZE(PSRC,1),SIZE(PSRC,2),SIZE(PSRC,3)):: ZOMN1, ZOMN2, ZOMN3
+!
+! standard weights
+!
+REAL, PARAMETER :: ZGAMMA1 = 1./10.
+REAL, PARAMETER :: ZGAMMA2 = 3./5.
+REAL, PARAMETER :: ZGAMMA3 = 3./10.
+REAL, PARAMETER :: ZGAMMA1_PRIM = 1./3.
+REAL, PARAMETER :: ZGAMMA2_PRIM = 2./3.
+!
+REAL, PARAMETER :: ZEPS = 1.0E-15
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.3.     COMPUTES THE DOMAIN DIMENSIONS
+!                 ------------------------------
+!
+IB = 1 + JPVEXT
+IT = SIZE(PSRC,3) - JPVEXT
+!
+PR(:,:,:) = 0.0
+!
+ZFPOS1 = 0.0
+ZFPOS2 = 0.0
+ZFPOS3 = 0.0
+ZFNEG1 = 0.0
+ZFNEG2 = 0.0 
+ZFNEG3 = 0.0
+ZBPOS1 = 0.0
+ZBPOS2 = 0.0
+ZBPOS3 = 0.0
+ZBNEG1 = 0.0
+ZBNEG2 = 0.0
+ZBNEG3 = 0.0 
+ZOMP1  = 0.0
+ZOMP2  = 0.0
+ZOMP3  = 0.0
+ZOMN1  = 0.0
+ZOMN2  = 0.0
+ZOMN3  = 0.0
+!
+! r: many left cells in regard to 'k-1' cell for each stencil
+! 
+! intermediate fluxes at the mass point on Wgrid u(i,j,k-1/2)=(i,j,(k-1)-1/2) 
+! for positive wind case (left to the right)
+! (r=2 for the first stencil ZFPOS1, r=1 for the second ZFPOS2 and 
+! r=0 for the last ZFPOS3)
+!
+ZFPOS1(:,:,IB+2:IT-1) = 1./6 * (2.0*PSRC(:,:,IB-1:IT-4) - 7.0*PSRC(:,:,IB:IT-3) + &
+ 11.0*PSRC(:,:,IB+1:IT-2))
+ZFPOS1(:,:,IB+1) = 0.5 * (3.0*PSRC(:,:,  IB) - PSRC(:,:,IB-1))
+ZFPOS1(:,:,  IT) = 0.5 * (3.0*PSRC(:,:,IT-1) - PSRC(:,:,IT-2))
+!
+!
+ZFPOS2(:,:,IB+2:IT-1) = 1./6 * (-1.0*PSRC(:,:,IB:IT-3) + 5.0*PSRC(:,:,IB+1:IT-2) + &
+ 2.0*PSRC(:,:,IB+2:IT-1))
+ZFPOS2(:,:,IB+1) = 0.5 * (PSRC(:,:,  IB) + PSRC(:,:,IB+1))
+ZFPOS2(:,:,  IT) = 0.5 * (PSRC(:,:,IT-1) + PSRC(:,:,  IT))
+!
+!
+ZFPOS3(:,:,IB+2:IT-1) = 1./6 * (2.0*PSRC(:,:,IB+1:IT-2) + 5.0*PSRC(:,:,IB+2:IT-1) -&
+ 1.0*PSRC(:,:,IB+3:IT)) 
+!
+! r: many left cells in regard to 'k' cell for each stencil
+!
+! intermediate fluxes at the mass point on Ugrid u(i,j,k-1/2) for negative wind
+! case (R. to the L.)
+! (r=2 for the third stencil ZFNEG3=ZFPOS2, r=1 for the second ZFNEG2=ZFPOS3 
+!  and r=0 for the first ZFNEG1)
+!
+ZFNEG1(:,:,IB+2:IT-1) = 1./6 * (11.0*PSRC(:,:,IB+2:IT-1) - 7.0*PSRC(:,:,IB+3:IT) + &
+ 2.0*PSRC(:,:,IB+4:IT+1))
+ZFNEG1(:,:,IB+1) = 0.5 * (3.0*PSRC(:,:,IB+1) - PSRC(:,:,IB+2))
+ZFNEG1(:,:,  IT) = 0.5 * (3.0*PSRC(:,:,  IT) - PSRC(:,:,IT+1))
+!
+ZFNEG2(:,:,IB+2:IT-1) = 1./6 * (2.0*PSRC(:,:,IB+1:IT-2) + 5.0*PSRC(:,:,IB+2:IT-1) -&
+ 1.0*PSRC(:,:,IB+3:IT))
+ZFNEG2(:,:,IB+1) = 0.5 * (PSRC(:,:,  IB) + PSRC(:,:,IB+1))
+ZFNEG2(:,:,  IT) = 0.5 * (PSRC(:,:,IT-1) + PSRC(:,:,  IT))
+!
+!
+ZFNEG3(:,:,IB+2:IT-1) = 1./6 * (-1.0*PSRC(:,:,IB:IT-3) + 5.0*PSRC(:,:,IB+1:IT-2) + &
+ 2.0*PSRC(:,:,IB+2:IT-1))
+!
+! smoothness indicators for positive wind case
+!
+ZBPOS1(:,:,IB+2:IT-1) =  13./12 * (PSRC(:,:,IB-1:IT-4) - 2.0*PSRC(:,:,IB:IT-3) + &
+ PSRC(:,:,IB+1:IT-2))**2 + &
+ 1./4 * (PSRC(:,:,IB-1:IT-4) - 4.0*PSRC(:,:,IB:IT-3) + 3.0*PSRC(:,:,IB+1:IT-2))**2
+ZBPOS1(:,:,IB+1) = (PSRC(:,:,  IB) - PSRC(:,:,IB-1))**2
+ZBPOS1(:,:,  IT) = (PSRC(:,:,IT-1) - PSRC(:,:,IT-2))**2
+!
+!
+ZBPOS2(:,:,IB+2:IT-1) = 13./12 * (PSRC(:,:,IB:IT-3) - 2.0*PSRC(:,:,IB+1:IT-2) + &
+ PSRC(:,:,IB+2:IT-1))**2 + &
+ 1./4 * (PSRC(:,:,IB:IT-3) - PSRC(:,:,IB+2:IT-1))**2
+ZBPOS2(:,:,IB+1) = (PSRC(:,:,IB+1) - PSRC(:,:,  IB))**2
+ZBPOS2(:,:,  IT) = (PSRC(:,:,  IT) - PSRC(:,:,IT-1))**2
+!
+!
+ZBPOS3(:,:,IB+2:IT-1) = 13./12 * (PSRC(:,:,IB+1:IT-2) - 2.0*PSRC(:,:,IB+2:IT-1) + &
+ PSRC(:,:,IB+3:IT))**2 + &
+ 1./4 * ( 3.0*PSRC(:,:,IB+1:IT-2) - 4.0*PSRC(:,:,IB+2:IT-1) + PSRC(:,:,IB+3:IT))**2
+!
+! smoothness indicators for negative wind case
+!
+ZBNEG1(:,:,IB+2:IT-1) = 13./12 * (PSRC(:,:,IB+2:IT-1) - 2.0*PSRC(:,:,IB+3:IT) + &
+ PSRC(:,:,IB+4:IT+1))**2 + &
+ 1./4 * ( 3.0*PSRC(:,:,IB+2:IT-1) - 4.0*PSRC(:,:,IB+3:IT) + PSRC(:,:,IB+4:IT+1))**2
+ZBNEG1(:,:,IB+1) = (PSRC(:,:,IB+1) - PSRC(:,:,IB+2))**2
+ZBNEG1(:,:,  IT) = (PSRC(:,:,  IT) - PSRC(:,:,IT+1))**2
+!
+ZBNEG2(:,:,IB+2:IT-1) = 13./12 * (PSRC(:,:,IB+1:IT-2) - 2.0*PSRC(:,:,IB+2:IT-1) + &
+ PSRC(:,:,IB+3:IT))**2 + &
+ 1./4 * (PSRC(:,:,IB+1:IT-2) - PSRC(:,:,IB+3:IT))**2
+ZBNEG2(:,:,IB+1) = (PSRC(:,:,  IB) - PSRC(:,:,IB+1))**2
+ZBNEG2(:,:,  IT) = (PSRC(:,:,IT-1) - PSRC(:,:,  IT))**2
+!
+!
+ZBNEG3(:,:,IB+2:IT-1) = 13./12 * (PSRC(:,:,IB:IT-3) - 2.0*PSRC(:,:,IB+1:IT-2) + &
+ PSRC(:,:,IB+2:IT-1))**2 + &
+ 1./4 * ( PSRC(:,:,IB:IT-3) - 4.0*PSRC(:,:,IB+1:IT-2) + 3.0*PSRC(:,:,IB+2:IT-1))**2
+!
+! WENO weights
+!
+ZOMP1(:,:,IB+2:IT-1) = ZGAMMA1 / (ZEPS + ZBPOS1(:,:,IB+2:IT-1))**2
+ZOMP2(:,:,IB+2:IT-1) = ZGAMMA2 / (ZEPS + ZBPOS2(:,:,IB+2:IT-1))**2
+ZOMP3(:,:,IB+2:IT-1) = ZGAMMA3 / (ZEPS + ZBPOS3(:,:,IB+2:IT-1))**2
+ZOMN1(:,:,IB+2:IT-1) = ZGAMMA1 / (ZEPS + ZBNEG1(:,:,IB+2:IT-1))**2
+ZOMN2(:,:,IB+2:IT-1) = ZGAMMA2 / (ZEPS + ZBNEG2(:,:,IB+2:IT-1))**2
+ZOMN3(:,:,IB+2:IT-1) = ZGAMMA3 / (ZEPS + ZBNEG3(:,:,IB+2:IT-1))**2
+!
+ZOMP1(:,:,IB+1) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,:,IB+1))**2
+ZOMP2(:,:,IB+1) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,:,IB+1))**2
+ZOMN1(:,:,IB+1) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,:,IB+1))**2
+ZOMN2(:,:,IB+1) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,:,IB+1))**2
+ZOMP1(:,:,  IT) = ZGAMMA1_PRIM / (ZEPS + ZBPOS1(:,:,  IT))**2
+ZOMP2(:,:,  IT) = ZGAMMA2_PRIM / (ZEPS + ZBPOS2(:,:,  IT))**2
+ZOMN1(:,:,  IT) = ZGAMMA1_PRIM / (ZEPS + ZBNEG1(:,:,  IT))**2
+ZOMN2(:,:,  IT) = ZGAMMA2_PRIM / (ZEPS + ZBNEG2(:,:,  IT))**2 
+!
+PR(:,:,IB+2:IT-1) = (ZOMP1(:,:,IB+2:IT-1)/(ZOMP1(:,:,IB+2:IT-1)+ &
+                    ZOMP2(:,:,IB+2:IT-1)+ZOMP3(:,:,IB+2:IT-1)) * &
+                    ZFPOS1(:,:,IB+2:IT-1)                        &
+                   + ZOMP2(:,:,IB+2:IT-1)/(ZOMP1(:,:,IB+2:IT-1)+ &
+                   ZOMP2(:,:,IB+2:IT-1)+ZOMP3(:,:,IB+2:IT-1)) *  &
+                   ZFPOS2(:,:,IB+2:IT-1)                         &
+                   + ZOMP3(:,:,IB+2:IT-1)/(ZOMP1(:,:,IB+2:IT-1)+ &
+                   ZOMP2(:,:,IB+2:IT-1)+ZOMP3(:,:,IB+2:IT-1)) *  &
+                   ZFPOS3(:,:,IB+2:IT-1))                        &
+                   * (0.5+SIGN(0.5,PRWCT(:,:,IB+2:IT-1)))        &
+                  + (ZOMN1(:,:,IB+2:IT-1)/(ZOMN1(:,:,IB+2:IT-1)+ &
+                   ZOMN2(:,:,IB+2:IT-1)+ZOMN3(:,:,IB+2:IT-1)) *  &
+                   ZFNEG1(:,:,IB+2:IT-1)                         &
+                   + ZOMN2(:,:,IB+2:IT-1)/(ZOMN1(:,:,IB+2:IT-1)+ &
+                   ZOMN2(:,:,IB+2:IT-1)+ZOMN3(:,:,IB+2:IT-1)) *  &
+                   ZFNEG2(:,:,IB+2:IT-1)                         &
+                   + ZOMN3(:,:,IB+2:IT-1)/(ZOMN1(:,:,IB+2:IT-1)+ &
+                   ZOMN2(:,:,IB+2:IT-1)+ZOMN3(:,:,IB+2:IT-1)) *  &
+                   ZFNEG3(:,:,IB+2:IT-1))                        &
+                   * (0.5-SIGN(0.5,PRWCT(:,:,IB+2:IT-1) )) 
+!
+PR(:,:,IB+1) = (ZOMP2(:,:,IB+1)/(ZOMP1(:,:,IB+1)+ZOMP2(:,:,IB+1)) * &
+                ZFPOS2(:,:,IB+1)                                    &
+              + ZOMP1(:,:,IB+1)/(ZOMP1(:,:,IB+1)+ZOMP2(:,:,IB+1)) * &
+                ZFPOS1(:,:,IB+1)) * (0.5+SIGN(0.5,PRWCT(:,:,IB+1) ))&
+             + (ZOMN2(:,:,IB+1)/(ZOMN1(:,:,IB+1)+ZOMN2(:,:,IB+1)) * &
+                ZFNEG2(:,:,IB+1)                                    &
+              + ZOMN1(:,:,IB+1)/(ZOMN1(:,:,IB+1)+ZOMN2(:,:,IB+1)) * &
+                ZFNEG1(:,:,IB+1)) * (0.5-SIGN(0.5,PRWCT(:,:,IB+1) ))
+!
+PR(:,:,IT) = (ZOMP2(:,:,IT)/(ZOMP1(:,:,IT)+ZOMP2(:,:,IT)) * ZFPOS2(:,:,IT)     &
+            + ZOMP1(:,:,IT)/(ZOMP1(:,:,IT)+ZOMP2(:,:,IT)) * ZFPOS1(:,:,IT)) *  &
+            (0.5+SIGN(0.5,PRWCT(:,:,IT) ))                                     &
+           + (ZOMN2(:,:,IT)/(ZOMN1(:,:,IT)+ZOMN2(:,:,IT)) * ZFNEG2(:,:,IT)     &
+            + ZOMN1(:,:,IT)/(ZOMN1(:,:,IT)+ZOMN2(:,:,IT)) * ZFNEG1(:,:,IT)) *  &
+            (0.5-SIGN(0.5,PRWCT(:,:,IT) ))
+!
+PR(:,:,IB) = PSRC(:,:,IB-1) * (0.5+SIGN(0.5,PRWCT(:,:,IB) )) &
+           + PSRC(:,:,IB  ) * (0.5-SIGN(0.5,PRWCT(:,:,IB) ))
+!
+PR(:,:,IT+1) = PSRC(:,:,IT  ) * (0.5+SIGN(0.5,PRWCT(:,:,IT+1) )) &
+             + PSRC(:,:,IT+1) * (0.5-SIGN(0.5,PRWCT(:,:,IT+1) ))
+!
+!PR(:,:,IB-1) = - 999.
+!
+PR = PR * PRWCT
+!
+END FUNCTION WENO_K_3_MZ
diff --git a/src/MNH/advection.f90 b/src/MNH/advection.f90
index 04b8f7638..4025bf18f 100644
--- a/src/MNH/advection.f90
+++ b/src/MNH/advection.f90
@@ -10,10 +10,8 @@ INTERFACE
                            PUM, PVM, PWM, PTHM, PRM, PTKEM, PSVM,              &
                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT,              &
                            PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,               &
-                           PRUS,PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS,        &
-                           TPHALO2MLIST, TPHALO2LIST, TPHALO2SLIST )
+                           PRUS,PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS         )
 !
-USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
 !
 CHARACTER(LEN=6),         INTENT(IN)    :: HMET_ADV_SCHEME, & ! Control of the 
                                            HSV_ADV_SCHEME,  & ! scheme applied 
@@ -50,10 +48,6 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS, PRTKES
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS , PRSVS
                                                   ! Sources terms 
 !
-! halo lists for 4th order advection
-TYPE(HALO2LIST_ll), POINTER :: TPHALO2MLIST ! momentum variables
-TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST  ! meteorological scalar variables
-TYPE(HALO2LIST_ll), POINTER :: TPHALO2SLIST ! tracer scalar variables
 !
 END SUBROUTINE ADVECTION
 !
@@ -67,8 +61,7 @@ END MODULE MODI_ADVECTION
                            PUM, PVM, PWM, PTHM, PRM, PTKEM, PSVM,              &
                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT,              &
                            PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,               &
-                           PRUS,PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS,        &
-                           TPHALO2MLIST, TPHALO2LIST, TPHALO2SLIST )
+                           PRUS,PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS         )
 !     ##########################################################################
 !
 !!****  *ADVECTION * - routine to call the specialized advection routines
@@ -132,26 +125,6 @@ END MODULE MODI_ADVECTION
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODE_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
-USE MODD_CONF
-USE MODD_BLANK
-USE MODD_GRID_n
-!
-USE MODI_SHUMAN
-USE MODI_CONTRAV
-USE MODI_ADVECUVW
-USE MODI_ADVECUVW_4TH
-USE MODI_ADVECMET      
-USE MODI_ADVECMET_4TH
-USE MODI_FCT_MET   
-USE MODI_MPDATA
-USE MODI_ADVECSCALAR
-USE MODI_ADVECSCALAR_4TH
-USE MODI_FCT_SCALAR 
-USE MODI_MPDATA_SCALAR
-USE MODI_PPM_MET
-USE MODI_PPM_SCALAR
 !
 !
 !-------------------------------------------------------------------------------
@@ -198,213 +171,7 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS , PRSVS
                                                   ! Sources terms 
 !
 !
-!*       0.2   declarations of local variables
-!
-!
-!  
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUT 
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVT 
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWT
-                                                  ! cartesian 
-                                                  ! components of
-                                                  ! momentum
-!
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUCT 
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVCT
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWCT
-                                                  ! contravariant
-                                                  ! components
-                                                  ! of momentum
-!
-INTEGER                     :: IINFO_ll    ! return code of parallel routine
-TYPE(LIST_ll), POINTER      :: TZFIELDS_ll ! list of fields to exchange
-! halo lists for 4th order advection
-TYPE(HALO2LIST_ll), POINTER :: TPHALO2MLIST ! momentum variables
-TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST  ! meteorological scalar variables
-TYPE(HALO2LIST_ll), POINTER :: TPHALO2SLIST ! tracer scalar variables
-INTEGER :: IKU
-!
-!-------------------------------------------------------------------------------
-!
-!
-IKU=SIZE(XZHAT)
-!*       1.     COMPUTES THE CONTRAVARIANT COMPONENTS
-!	        -------------------------------------
-!
-ZRUT = PUT(:,:,:) * MXM(PRHODJ)
-ZRVT = PVT(:,:,:) * MYM(PRHODJ)
-ZRWT = PWT(:,:,:) * MZM(1,IKU,1,PRHODJ)
-!
-IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
-  CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY, &
-                ZRUCT,ZRVCT,ZRWCT,2)
-ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
-  CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY, &
-                ZRUCT,ZRVCT,ZRWCT,4)
-ENDIF
-!
-NULLIFY(TZFIELDS_ll)
-IF(NHALO == 1) THEN
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRWCT)
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRUCT)
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRVCT)
-  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZFIELDS_ll)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     CALLS THE ADVECTION ROUTINES FOR THE MOMENTUM 
-!	        ---------------------------------------------
-!
-! choose between 2nd and 4th order momentum advection.
-IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
-!
-   CALL ADVECUVW (PUT,PVT,PWT,ZRUCT,ZRVCT,ZRWCT,PRUS,PRVS,PRWS)
-!
-ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
-! 
-   CALL ADVECUVW_4TH ( HLBCX, HLBCY, ZRUCT, ZRVCT, ZRWCT,            &
-                       PUT, PVT, PWT, PRUS, PRVS, PRWS, TPHALO2MLIST )                 
-!
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.     CALLS THE ADVECTION ROUTINES FOR THE METEOROLOGICAL SCALARS 
-!	        -----------------------------------------------------------
-!
-!            3.1. 2nd order scheme
-!
-IF (HMET_ADV_SCHEME=='CEN2ND') THEN
-!
-   CALL ADVECMET (KRR, PTHT,PRT,PTKET,     &
-                  ZRUCT,ZRVCT,ZRWCT,       &
-                  PRTHS,PRRS,PRTKES        )
-!
-!             3.2. 4th order scheme
-!
-ELSEIF (HMET_ADV_SCHEME =='CEN4TH' ) THEN
-!
-   CALL ADVECMET_4TH (HLBCX,HLBCY, KRR,                &
-                      ZRUCT, ZRVCT, ZRWCT,             &
-                      PTHT, PTKET, PRT,                &
-                      PRTHS, PRTKES, PRRS, TPHALO2LIST )
-!
-!             3.3. Flux-Corrected Transport scheme
-!
-ELSEIF ( HMET_ADV_SCHEME=='FCT2ND') THEN
-!
-   CALL FCT_MET  (HLBCX, HLBCY,KRR,                        &
-                  PTSTEP_MET, PRHODJ, PTHM, PRM, PTKEM,    &
-                  PTHT, PRT, PTKET,                        &
-                  ZRUCT, ZRVCT, ZRWCT,                     &
-                  PRTHS, PRRS, PRTKES                      )
-!
-!             3.4. MPDATA scheme
-!
-ELSEIF (HMET_ADV_SCHEME=='MPDATA') THEN
-!
-   CALL MPDATA (KLITER, HLBCX, HLBCY, KRR,                 &
-                PTSTEP_MET, PRHODJ, PTHM, PRM, PTKEM,      &
-                PTHT, PRT, PTKET,                          &
-                ZRUCT, ZRVCT, ZRWCT,                       &
-                PRTHS, PRRS, PRTKES                        )
-!
-!             3.5. PPM schemes
-!   
-ELSEIF (HMET_ADV_SCHEME(1:3)=='PPM') THEN
-!
-! extrapolate velocity field to t+dt/2 to use in forward in time PPM
-! advection scheme
-!
-   ZRUT = (1.5*PUT(:,:,:) - 0.5*PUM(:,:,:))
-   ZRVT = (1.5*PVT(:,:,:) - 0.5*PVM(:,:,:))
-   ZRWT = (1.5*PWT(:,:,:) - 0.5*PWM(:,:,:))
-! calculate Courant numbers
-  IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
-    CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY, &
-                ZRUCT,ZRVCT,ZRWCT,2)
-  ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
-    CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY, &
-                ZRUCT,ZRVCT,ZRWCT,4)
-  ENDIF
-!
-   ZRUCT = ZRUCT*PTSTEP_MET
-   ZRVCT = ZRVCT*PTSTEP_MET
-   ZRWCT = ZRWCT*PTSTEP_MET
-
-   CALL PPM_MET   (HLBCX,HLBCY, KRR, KTCOUNT,                  &
-                   ZRUCT, ZRVCT, ZRWCT, PTSTEP_MET, PRHODJ,    &
-                   PTHT, PTKET, PRT, PRTHS, PRTKES, PRRS,      &
-                   HMET_ADV_SCHEME                             )
-!
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       4.     CALLS THE ADVECTION ROUTINES FOR TRACERS
-!	        ----------------------------------------
-!
-!            4.1. 2nd order scheme
-!
-IF (HSV_ADV_SCHEME=='CEN2ND') THEN
-!
-   CALL ADVECSCALAR  (KSV, PSVT, ZRUCT,ZRVCT,ZRWCT,PRSVS )             
-!
-!             4.2. 4th order scheme
-!
-ELSEIF (HSV_ADV_SCHEME =='CEN4TH' ) THEN
-!
-   CALL ADVECSCALAR_4TH (HLBCX,HLBCY, KSV,          &
-                         ZRUCT, ZRVCT, ZRWCT,       &
-                         PSVT, PRSVS, TPHALO2SLIST   )           
-!
-!             4.3. Flux-Corrected Transport scheme
-!
-ELSEIF ( HSV_ADV_SCHEME=='FCT2ND') THEN
-!
-   CALL FCT_SCALAR  (HLBCX, HLBCY, KSV,             &
-                     PTSTEP_SV, PRHODJ, PSVM,PSVT,  &
-                     ZRUCT, ZRVCT, ZRWCT, PRSVS     ) 
-!
-!             4.4. MPDATA scheme
-!
-ELSEIF (HSV_ADV_SCHEME=='MPDATA') THEN
-!
-   CALL MPDATA_SCALAR ( KLITER, HLBCX, HLBCY, KSV,           &
-                        PTSTEP_SV, PRHODJ, PSVM, PSVT,       &
-                        ZRUCT, ZRVCT, ZRWCT,  PRSVS          )           
-!
-!             4.5. PPM schemes
-!   
-ELSEIF (HSV_ADV_SCHEME(1:3)=='PPM') THEN
-!
-! extrapolate velocity field to t+dt/2 to use in forward in time PPM
-! advection scheme
-!
-   ZRUT = (1.5*PUT(:,:,:) - 0.5*PUM(:,:,:))
-   ZRVT = (1.5*PVT(:,:,:) - 0.5*PVM(:,:,:))
-   ZRWT = (1.5*PWT(:,:,:) - 0.5*PWM(:,:,:))
-! calculate Courant numbers
-  IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
-    CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY, &
-                ZRUCT,ZRVCT,ZRWCT,2)
-  ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
-    CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY, &
-                ZRUCT,ZRVCT,ZRWCT,4)
-  ENDIF
-!
-   ZRUCT = ZRUCT*PTSTEP_SV
-   ZRVCT = ZRVCT*PTSTEP_SV
-   ZRWCT = ZRWCT*PTSTEP_SV
-
-   CALL PPM_SCALAR(HLBCX,HLBCY, KSV, KTCOUNT,               &
-                   ZRUCT, ZRVCT, ZRWCT, PTSTEP_SV, PRHODJ,  &
-                   PSVT, PRSVS, HSV_ADV_SCHEME      )                     
-!
-END IF
-!
+! ROUTINE TO REMOVE
 !-------------------------------------------------------------------------------
 !
 END SUBROUTINE ADVECTION
diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
new file mode 100644
index 000000000..cd246c742
--- /dev/null
+++ b/src/MNH/advection_metsv.f90
@@ -0,0 +1,537 @@
+!-----------------------------------------------------------------
+!     ###########################
+      MODULE MODI_ADVECTION_METSV
+!     ###########################
+!
+INTERFACE
+      SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
+                            HMET_ADV_SCHEME,HSV_ADV_SCHEME, KSPLIT,            &
+                            OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT,                 &
+                            HLBCX, HLBCY, KRR, KSV, KTCOUNT, PTSTEP,           &
+                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT,             &
+                            PTHVREF, PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,     &
+                            PRTHS, PRRS, PRTKES, PRSVS,                        &
+                            PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV         )
+!
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
+                                        HSV_ADV_SCHEME, &  ! scheme applied 
+                                        HUVW_ADV_SCHEME
+!
+INTEGER,                INTENT(INOUT):: KSPLIT       ! Number of time splitting
+                                                     ! for PPM advection
+LOGICAL,                INTENT(IN)   :: OSPLIT_CFL   ! flag to automatically chose number of iterations
+REAL,                   INTENT(IN)   :: PSPLIT_CFL   ! maximum CFL to automatically chose number of iterations
+LOGICAL,                INTENT(IN)   :: OCFL_WRIT    ! flag to write CFL fields in output files            
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+INTEGER,                  INTENT(IN)    :: KRR  ! Number of moist variables
+INTEGER,                  INTENT(IN)    :: KSV  ! Number of Scalar Variables
+!
+INTEGER,                  INTENT(IN)    :: KTCOUNT
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET, PRHODJ
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT , PSVT
+                                                  ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
+                                          ! of the reference state
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS, PRTKES
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS , PRSVS
+                                                  ! Sources terms 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRTHS_CLD
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRRS_CLD,PRSVS_CLD
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRTKES_ADV  ! Advection TKE source term 
+!
+END SUBROUTINE ADVECTION_METSV
+!
+END INTERFACE
+!
+END MODULE MODI_ADVECTION_METSV
+!     ##########################################################################
+      SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
+                            HMET_ADV_SCHEME,HSV_ADV_SCHEME, KSPLIT,            &
+                            OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT,                 &
+                            HLBCX, HLBCY, KRR, KSV, KTCOUNT, PTSTEP,           &
+                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT,             &
+                            PTHVREF, PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,     &
+                            PRTHS, PRRS, PRTKES, PRSVS,                        &
+                            PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV         )
+!     ##########################################################################
+!
+!!****  *ADVECTION_METSV * - routine to call the specialized advection routines
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to control the advection routines.
+!!    For that, it is first necessary to compute the metric coefficients
+!!    and the contravariant components of the momentum.
+!!
+!!**  METHOD
+!!    ------
+!!      Once the scheme is selected, it is applied to the following group of
+!!    variables: METeorologicals (temperature, water substances, TKE,
+!!    dissipation TKE) and Scalar Variables. It is possible to select different
+!!    advection schemes for each group of variables.
+!!
+!!    EXTERNAL
+!!    --------
+!!      CONTRAV              : computes the contravariant components.
+!!      ADVECUVW             : computes the advection terms for momentum.
+!!      ADVECSCALAR          : computes the advection terms for scalar fields.
+!!      ADD3DFIELD_ll        : add a field to 3D-list
+!!      ADVEC_4TH_ORDER      : 4th order advection scheme
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      NONE
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book1 and book2 ( routine ADVECTION )
+!!
+!!    AUTHOR
+!!    ------
+!!	J.-P. Pinty      * Laboratoire d'Aerologie*
+!!	J.-P. Lafore     * Meteo France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    06/07/94 
+!!                  01/04/95 (Ph. Hereil J. Nicolau) add the model number
+!!                  23/10/95 (J. Vila and JP Lafore) advection schemes scalar
+!!                  16/01/97 (JP Pinty)              change presentation 
+!!                  30/04/98 (J. Stein P Jabouille)  extrapolation for the cyclic
+!!                                                   case and parallelisation
+!!                  24/06/99 (P Jabouille)           case of NHALO>1
+!!                  25/10/05 (JP Pinty)              4th order scheme
+!!                  24/04/06 (C.Lac)                 Split scalar and passive
+!!                                                   tracer routines
+!!                  08/06    (T.Maric)               PPM scheme
+!!                  04/2011  (V.Masson & C. Lac)     splits the routine and add time splitting
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODE_ll
+USE MODE_IO_ll
+USE MODD_PARAM_n
+USE MODD_CONF,  ONLY : LNEUTRAL,NHALO
+USE MODD_CTURB, ONLY : XTKEMIN
+USE MODD_BUDGET
+!
+USE MODI_CONTRAV
+USE MODI_PPM_RHODJ
+USE MODI_PPM_MET
+USE MODI_PPM_SCALAR
+USE MODI_ADV_BOUNDARIES
+USE MODI_BUDGET
+!
+USE MODE_FMWRIT
+!-------------------------------------------------------------------------------
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
+                                        HSV_ADV_SCHEME, &  ! scheme applied 
+                                        HUVW_ADV_SCHEME
+!
+INTEGER,                INTENT(INOUT):: KSPLIT       ! Number of time splitting
+                                                     ! for PPM advection
+LOGICAL,                INTENT(IN)   :: OSPLIT_CFL   ! flag to automatically chose number of iterations
+REAL,                   INTENT(IN)   :: PSPLIT_CFL   ! maximum CFL to automatically chose number of iterations
+LOGICAL,                INTENT(IN)   :: OCFL_WRIT    ! flag to write CFL fields in output files            
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+INTEGER,                  INTENT(IN)    :: KRR  ! Number of moist variables
+INTEGER,                  INTENT(IN)    :: KSV  ! Number of Scalar Variables
+!
+INTEGER,                  INTENT(IN)    :: KTCOUNT
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET, PRHODJ
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT , PSVT
+                                                  ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
+                                          ! of the reference state
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS, PRTKES
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS , PRSVS
+                                                  ! Sources terms 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRTHS_CLD
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRRS_CLD, PRSVS_CLD
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRTKES_ADV  ! Advection TKE source term 
+!
+!
+!*       0.2   declarations of local variables
+!
+!
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUCPPM
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVCPPM
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWCPPM
+                                                  ! contravariant
+                                                  ! components
+                                                  ! of momentum
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZCFLU
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZCFLV
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZCFLW
+!                                                 ! CFL numbers on each direction
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZCFL
+!                                                 ! CFL number
+!
+REAL :: ZCFLU_MAX, ZCFLV_MAX, ZCFLW_MAX, ZCFL_MAX ! maximum CFL numbers
+!
+REAL, DIMENSION(SIZE(PTHT,1), SIZE(PTHT,2), SIZE(PTHT,3) ) :: ZTH
+REAL, DIMENSION(SIZE(PTKET,1),SIZE(PTKET,2),SIZE(PTKET,3)) :: ZTKE
+REAL, DIMENSION(SIZE(PTHT,1), SIZE(PTHT,2), SIZE(PTHT,3) ) :: ZRTHS_OTHER
+REAL, DIMENSION(SIZE(PTKET,1),SIZE(PTKET,2),SIZE(PTKET,3)) :: ZRTKES_OTHER
+REAL, DIMENSION(SIZE(PTHT,1), SIZE(PTHT,2), SIZE(PTHT,3) ) :: ZRTHS_PPM
+REAL, DIMENSION(SIZE(PTKET,1),SIZE(PTKET,2),SIZE(PTKET,3)) :: ZRTKES_PPM
+REAL, DIMENSION(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3), SIZE(PRT,4) ) :: ZR
+REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZSV
+! Guess at the sub time step
+REAL, DIMENSION(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3), SIZE(PRT,4) ) :: ZRRS_OTHER
+REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZRSVS_OTHER
+! Tendencie since the beginning of the time step
+REAL, DIMENSION(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3), SIZE(PRT,4) ) :: ZRRS_PPM
+REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZRSVS_PPM
+! Guess at the end of the sub time step
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOX1,ZRHOX2
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOY1,ZRHOY2
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOZ1,ZRHOZ2
+! Temporary advected rhodj for PPM routines
+!
+INTEGER :: JS,JR,JSV,JSPL  ! Loop index
+REAL    :: ZTSTEP_PPM ! Sub Time step 
+LOGICAL :: GTKE
+!
+INTEGER                     :: IINFO_ll    ! return code of parallel routine
+TYPE(LIST_ll), POINTER      :: TZFIELDS0_ll ! list of fields to exchange
+TYPE(LIST_ll), POINTER      :: TZFIELDS1_ll ! list of fields to exchange
+!
+!
+INTEGER             :: IRESP        ! Return code of FM routines
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+INTEGER             :: ILUOUT       ! logical unit
+INTEGER             :: ISPLIT_PPM   ! temporal time splitting 
+
+!-------------------------------------------------------------------------------
+!
+!*       0.     INITIALIZATION                        
+!	        --------------
+!
+!
+!
+GTKE=(SIZE(PTKET)/=0)
+!
+!-------------------------------------------------------------------------------
+!
+!*       2.     COMPUTES THE CONTRAVARIANT COMPONENTS (FOR PPM ONLY)
+!	        --------------------------------------
+!
+!*       2.1 computes contravariant components
+!
+IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN
+ CALL CONTRAV (HLBCX,HLBCY,PUT,PVT,PWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCPPM,ZRVCPPM,ZRWCPPM,2)
+ELSE
+ CALL CONTRAV (HLBCX,HLBCY,PUT,PVT,PWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCPPM,ZRVCPPM,ZRWCPPM,4)
+END IF
+!
+!
+!*       2.2 computes CFL numbers
+!
+ZCFLU = ABS(ZRUCPPM * PTSTEP)
+ZCFLV = ABS(ZRVCPPM * PTSTEP)
+ZCFLW = ABS(ZRWCPPM * PTSTEP)
+ZCFL  = SQRT(ZCFLU**2+ZCFLV**2+ZCFLW**2)
+!
+!* prints in the file the 3D Courant numbers (one should flag this)
+!
+IF (OCLOSE_OUT .AND. OCFL_WRIT) THEN
+    YRECFM  ='CFLU'
+    YCOMMENT='X_Y_Z_CFLU (-)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLU,IGRID,ILENCH,YCOMMENT,IRESP)
+
+    YRECFM  ='CFLV'
+    YCOMMENT='X_Y_Z_CFLV (-)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLV,IGRID,ILENCH,YCOMMENT,IRESP)
+
+    YRECFM  ='CFLW'
+    YCOMMENT='X_Y_Z_CFLW (-)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLW,IGRID,ILENCH,YCOMMENT,IRESP)
+
+    YRECFM  ='CFL'
+    YCOMMENT='X_Y_Z_CFL  (-)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFL,IGRID,ILENCH,YCOMMENT,IRESP)
+END IF
+!
+!* prints in the output file the maximum CFL
+!
+CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
+!
+ZCFLU_MAX = MAX_ll(ZCFLU,IINFO_ll)
+ZCFLV_MAX = MAX_ll(ZCFLV,IINFO_ll)
+ZCFLW_MAX = MAX_ll(ZCFLW,IINFO_ll)
+ZCFL_MAX  = MAX_ll(ZCFL,IINFO_ll)
+!
+WRITE(ILUOUT,FMT='(A24,F5.2,A5,F5.2,A5,F5.2,A9,F5.2)') &
+                'Max. CFL number for U : ',ZCFLU_MAX,  &
+                '  V : ',ZCFLV_MAX,'  W : ', ZCFLW_MAX,&
+                'global : ',ZCFL_MAX
+!
+!
+!*       2.3 updates time step splitting loop
+!
+IF (OSPLIT_CFL) THEN
+!
+ ISPLIT_PPM = INT(ZCFL_MAX/PSPLIT_CFL)+1
+ IF ( KSPLIT /= ISPLIT_PPM )                                    &
+ WRITE(ILUOUT,FMT='(A37,I2,A4,I2,A11)')                         &
+                  'PPM  time spliting loop changed from ',      &
+                  KSPLIT,' to ',ISPLIT_PPM, ' iterations'
+!
+ KSPLIT =     ISPLIT_PPM                      
+!
+END IF
+! ---------------------------------------------------------------
+IF ( (ZCFLU_MAX>=3. .OR. ZCFLV_MAX>=3.) .OR. ZCFLW_MAX>=8. ) THEN
+  WRITE(ILUOUT,*) ' '
+  WRITE(ILUOUT,*) ' +---------------------------------------------------+'
+  WRITE(ILUOUT,*) ' |                   MODEL ERROR                     |'
+  WRITE(ILUOUT,*) ' +---------------------------------------------------+'
+  WRITE(ILUOUT,*) ' |                                                   |'
+  WRITE(ILUOUT,*) ' |       The model wind speed becomes too high       |'
+  WRITE(ILUOUT,*) ' |                                                   |'
+  IF ( ZCFLU_MAX>=3. .OR. ZCFLV_MAX>=3. ) &
+  WRITE(ILUOUT,*) ' |    The  horizontal CFL value reaches 3. or more   |'
+  IF ( ZCFLW_MAX>=8.                    ) &
+  WRITE(ILUOUT,*) ' |    The  vertical   CFL value reaches 8. or more   |'
+  WRITE(ILUOUT,*) ' |                                                   |'
+  WRITE(ILUOUT,*) ' |    This can be due either to :                    |'
+  WRITE(ILUOUT,*) ' |     - a numerical explosion of the model          |'
+  WRITE(ILUOUT,*) ' |     - or a too high wind speed for an             |'
+  WRITE(ILUOUT,*) ' |       acceptable accuracy of the advection        |'
+  WRITE(ILUOUT,*) ' |                                                   |'
+  WRITE(ILUOUT,*) ' |        Please decrease your time-step             |'
+  WRITE(ILUOUT,*) ' |                                                   |'
+  WRITE(ILUOUT,*) ' +---------------------------------------------------+'
+  WRITE(ILUOUT,*) ' '
+  WRITE(ILUOUT,*) ' +---------------------------------------------------+'
+  WRITE(ILUOUT,*) ' |                   MODEL STOPS                     |'
+  WRITE(ILUOUT,*) ' +---------------------------------------------------+'
+! CALL ABORT
+! STOP
+END IF
+!
+!
+ZTSTEP_PPM = PTSTEP / REAL(KSPLIT)
+!
+!
+!*      2.4 normalized contravariant components for splitted PPM time-step
+!
+ZRUCPPM = ZRUCPPM*ZTSTEP_PPM
+ZRVCPPM = ZRVCPPM*ZTSTEP_PPM
+ZRWCPPM = ZRWCPPM*ZTSTEP_PPM
+!
+!
+!-------------------------------------------------------------------------------
+!
+!
+!*       3.     COMPUTES THE TENDENCIES SINCE THE BEGINNING OF THE TIME STEP
+!	        ------------------------------------------------------------
+!
+!* This represent the effects of all OTHER processes
+!  Clouds    related processes from previous time-step are     taken into account in PRTHS_CLD
+!  Advection related processes from previous time-step will be taken into account in ZRTHS_PPM
+!
+ZRTHS_OTHER = PRTHS - PTHT * PRHODJ / PTSTEP                      
+IF (GTKE) ZRTKES_OTHER = PRTKES - PTKET * PRHODJ / PTSTEP                      
+DO JR = 1, KRR
+ ZRRS_OTHER(:,:,:,JR) = PRRS(:,:,:,JR) - PRT(:,:,:,JR) * PRHODJ(:,:,:) / PTSTEP
+END DO
+DO JSV = 1, KSV
+ ZRSVS_OTHER(:,:,:,JSV) = PRSVS(:,:,:,JSV) - PSVT(:,:,:,JSV) * PRHODJ / PTSTEP
+END DO
+!
+! Top and bottom Boundaries 
+!
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRTHS_OTHER)
+IF (GTKE) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRTKES_OTHER)
+DO JR = 1, KRR
+  CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRRS_OTHER(:,:,:,JR))
+END DO
+DO JSV = 1, KSV
+  CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRSVS_OTHER(:,:,:,JSV))
+END DO
+!
+! Exchanges on processors
+!
+NULLIFY(TZFIELDS0_ll)
+IF(NHALO == 1) THEN
+  CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRTHS_OTHER)
+  IF (GTKE) CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRTKES_OTHER)
+  DO JR=1,KRR
+    CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRRS_OTHER(:,:,:,JR))
+  END DO
+  DO JSV=1,KSV
+    CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRSVS_OTHER(:,:,:,JSV))
+  END DO
+  CALL UPDATE_HALO_ll(TZFIELDS0_ll,IINFO_ll)
+  CALL CLEANLIST_ll(TZFIELDS0_ll)
+END IF
+!
+!
+
+!-------------------------------------------------------------------------------
+!
+!*       4.     CALLS THE PPM ADVECTION INSIDE A TIME SPLITTING         
+!	        --------------------------------------
+!
+CALL PPM_RHODJ(HLBCX,HLBCY, ZRUCPPM, ZRVCPPM, ZRWCPPM,              &
+               ZTSTEP_PPM, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,  &
+               ZRHOZ1, ZRHOZ2                                       )
+!
+!* valuesw of the fields at the beginning of the time splitting loop
+ZTH   = PTHT
+ZTKE   = PTKET
+IF (KRR /=0 ) ZR    = PRT
+IF (KSV /=0 ) ZSV   = PSVT
+!
+IF (GTKE)    PRTKES_ADV(:,:,:)  = 0.              
+!
+!* time splitting loop
+DO JSPL=1,KSPLIT
+!
+   ZRTHS_PPM(:,:,:)   = 0.              
+   ZRTKES_PPM(:,:,:)   = 0.              
+   IF (KRR /=0) ZRRS_PPM(:,:,:,:)   = 0.              
+   IF (KSV /=0) ZRSVS_PPM(:,:,:,:)   = 0.              
+!
+   IF (LNEUTRAL) ZTH=ZTH-PTHVREF  !* To be removed with the new PPM scheme ?
+   CALL PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT, ZRUCPPM, ZRVCPPM, ZRWCPPM, ZTSTEP_PPM,    &
+              PRHODJ,  ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,  ZRHOZ1, ZRHOZ2,               &
+              ZTH, ZTKE, ZR, ZRTHS_PPM, ZRTKES_PPM, ZRRS_PPM, HMET_ADV_SCHEME)
+   IF (LNEUTRAL) ZTH=ZTH+PTHVREF  !* To be removed with the new PPM scheme ?
+!
+   CALL PPM_SCALAR (HLBCX,HLBCY, KSV, KTCOUNT, ZRUCPPM, ZRVCPPM, ZRWCPPM,             &
+                 ZTSTEP_PPM, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,  ZRHOZ1, ZRHOZ2, &
+                 ZSV, ZRSVS_PPM, HSV_ADV_SCHEME                                       )
+!
+! Tendencies of PPM
+!
+   PRTHS(:,:,:)                      = PRTHS     (:,:,:)   + ZRTHS_PPM (:,:,:)   / KSPLIT
+   IF (GTKE)     PRTKES_ADV(:,:,:)   = PRTKES_ADV(:,:,:)   + ZRTKES_PPM(:,:,:)   / KSPLIT
+   IF (KRR /=0)  PRRS      (:,:,:,:) = PRRS      (:,:,:,:) + ZRRS_PPM  (:,:,:,:) / KSPLIT
+   IF (KSV /=0 ) PRSVS     (:,:,:,:) = PRSVS     (:,:,:,:) + ZRSVS_PPM (:,:,:,:) / KSPLIT
+!
+!
+!  Guesses of the field inside the time splitting loop
+!
+   ZTH = ZTH + ( ZRTHS_PPM(:,:,:) + ZRTHS_OTHER(:,:,:) + PRTHS_CLD(:,:,:)) * &
+           ZTSTEP_PPM / PRHODJ(:,:,:)
+   IF (GTKE) ZTKE = ZTKE + ( ZRTKES_PPM(:,:,:) + ZRTKES_OTHER(:,:,:) ) * ZTSTEP_PPM / PRHODJ(:,:,:)
+   DO JR = 1, KRR
+    ZR(:,:,:,JR) = ZR(:,:,:,JR) + ( ZRRS_PPM(:,:,:,JR) + ZRRS_OTHER(:,:,:,JR) + PRRS_CLD(:,:,:,JR) ) &
+                    * ZTSTEP_PPM / PRHODJ(:,:,:)
+   END DO
+   DO JSV = 1, KSV
+    ZSV(:,:,:,JSV) = ZSV(:,:,:,JSV) + ( ZRSVS_PPM(:,:,:,JSV) + ZRSVS_OTHER(:,:,:,JSV) +  &
+                     PRSVS_CLD(:,:,:,JSV) ) * ZTSTEP_PPM / PRHODJ(:,:,:)
+   END DO
+!
+! Top and bottom Boundaries and LBC for the guesses
+!
+   CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTH, PTHT )    
+   CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTKE, PTKET)
+   DO JR = 1, KRR
+     CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR))
+   END DO
+   DO JSV = 1, KSV
+     CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZSV(:,:,:,JSV), PSVT(:,:,:,JSV))
+   END DO
+!
+!  Exchanges fields between processors
+!
+   NULLIFY(TZFIELDS1_ll)
+   IF(NHALO == 1) THEN
+    CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTH)
+    IF (GTKE) CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTKE)
+    DO JR=1,KRR
+      CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZR(:,:,:,JR))
+    END DO
+    DO JSV=1,KSV
+      CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZSV(:,:,:,JSV))
+    END DO
+    CALL UPDATE_HALO_ll(TZFIELDS1_ll,IINFO_ll)
+    CALL CLEANLIST_ll(TZFIELDS1_ll)
+   END IF
+!
+END DO
+!
+!-------------------------------------------------------------------------------
+!
+!  TKE special case: advection is the last process for TKE
+!
+! TKE must be greater than its minimum value
+! (previously done in tke_eps_sources)
+!
+IF (GTKE) THEN
+   PRTKES(:,:,:)  = PRTKES(:,:,:) + PRTKES_ADV(:,:,:)
+   PRTKES(:,:,:) = MAX (PRTKES(:,:,:) , XTKEMIN * PRHODJ(:,:,:) / PTSTEP )
+END IF
+!
+!-------------------------------------------------------------------------------
+!
+!*       5.     BUDGETS                                                 
+!	        -------
+!
+IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'ADV_BU_RTH')
+IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADV_BU_RTKE')
+IF (KRR>=1.AND.LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'ADV_BU_RRV') 
+IF (KRR>=2.AND.LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'ADV_BU_RRC') 
+IF (KRR>=3.AND.LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8,'ADV_BU_RRR') 
+IF (KRR>=4.AND.LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'ADV_BU_RRI') 
+IF (KRR>=5.AND.LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADV_BU_RRS') 
+IF (KRR>=6.AND.LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADV_BU_RRG') 
+IF (KRR>=7.AND.LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADV_BU_RRH')
+DO JSV=1,KSV
+  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADV_BU_RSV')
+END DO
+
+
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE ADVECTION_METSV
diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90
new file mode 100644
index 000000000..d3e59b80f
--- /dev/null
+++ b/src/MNH/advection_uvw.f90
@@ -0,0 +1,312 @@
+!-----------------------------------------------------------------
+!     #########################
+      MODULE MODI_ADVECTION_UVW
+!     #########################
+!
+INTERFACE
+      SUBROUTINE ADVECTION_UVW (HUVW_ADV_SCHEME,                               &
+                            HTEMP_SCHEME, KWENO_ORDER, KSPLIT_PPM,             &
+                            HLBCX, HLBCY, PTSTEP,                              &
+                            PUT, PVT, PWT,                                     &
+                            PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,              &
+                            PRUS, PRVS, PRWS,                                  &
+                            PRUS_PRES, PRVS_PRES, PRWS_PRES                    )
+!
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME     ! to the selected
+CHARACTER(LEN=4),         INTENT(IN)    :: HTEMP_SCHEME   ! Temporal scheme
+!
+INTEGER,                  INTENT(IN)    :: KWENO_ORDER   ! Order of the WENO
+                                                         ! scheme (3 or 5)
+INTEGER,                  INTENT(IN)    :: KSPLIT_PPM  ! Number of time splitting
+                                                   ! for PPM advection
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT
+                                                  ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ               
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS , PRVS, PRWS
+                                                  ! Sources terms 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUS_PRES, PRVS_PRES, PRWS_PRES
+!
+END SUBROUTINE ADVECTION_UVW
+!
+END INTERFACE
+!
+END MODULE MODI_ADVECTION_UVW
+!     ##########################################################################
+      SUBROUTINE ADVECTION_UVW (HUVW_ADV_SCHEME,                               &
+                            HTEMP_SCHEME, KWENO_ORDER, KSPLIT_PPM,             &
+                            HLBCX, HLBCY, PTSTEP,                              &
+                            PUT, PVT, PWT,                                     &
+                            PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,              &
+                            PRUS, PRVS, PRWS,                                  &
+                            PRUS_PRES, PRVS_PRES, PRWS_PRES                    )
+!     ##########################################################################
+!
+!!****  *ADVECTION_UVW * - routine to call the specialized advection routines for wind
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      NONE
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book1 and book2 ( routine ADVECTION )
+!!
+!!    AUTHOR
+!!    ------
+!!	J.-P. Pinty      * Laboratoire d'Aerologie*
+!!	J.-P. Lafore     * Meteo France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    06/07/94 
+!!                  01/04/95 (Ph. Hereil J. Nicolau) add the model number
+!!                  23/10/95 (J. Vila and JP Lafore) advection schemes scalar
+!!                  16/01/97 (JP Pinty)              change presentation 
+!!                  30/04/98 (J. Stein P Jabouille)  extrapolation for the cyclic
+!!                                                   case and parallelisation
+!!                  24/06/99 (P Jabouille)           case of NHALO>1
+!!                  25/10/05 (JP Pinty)              4th order scheme
+!!                  04/2011  (V. Masson & C. Lac)    splits the routine and adds
+!!                                                   time splitting
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODE_ll
+USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
+USE MODD_PARAMETERS,  ONLY : JPVEXT
+USE MODD_CONF,        ONLY : NHALO
+USE MODD_BUDGET
+!
+USE MODI_SHUMAN
+USE MODI_CONTRAV
+USE MODI_ADVECUVW_RK
+USE MODI_ADV_BOUNDARIES
+USE MODI_BUDGET
+!
+!-------------------------------------------------------------------------------
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME     ! to the selected
+CHARACTER(LEN=4),         INTENT(IN)    :: HTEMP_SCHEME   ! Temporal scheme
+!
+INTEGER,                  INTENT(IN)    :: KWENO_ORDER   ! Order of the WENO
+                                                         ! scheme (3 or 5)
+INTEGER,                  INTENT(IN)    :: KSPLIT_PPM  ! Number of time splitting
+                                                   ! for PPM advection
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT
+                                                  ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ               
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS , PRVS, PRWS
+                                                  ! Sources terms 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUS_PRES, PRVS_PRES, PRWS_PRES
+!
+!
+!*       0.2   declarations of local variables
+!
+!
+!  
+INTEGER             :: IKE       ! indice K End       in z direction
+!
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUT 
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVT 
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWT
+                                                  ! cartesian 
+                                                  ! components of
+                                                  ! momentum
+!
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUCT
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVCT
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWCT
+                                                  ! contravariant
+                                                  ! components
+                                                  ! of momentum
+!
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZU, ZV, ZW
+! Guesses at the end of the sub time step
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUS_OTHER
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVS_OTHER
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWS_OTHER
+! Contribution of the RK time step            
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUS_ADV
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVS_ADV
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWS_ADV
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZMXM_RHODJ
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZMYM_RHODJ
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZMZM_RHODJ
+!
+! Momentum tendencies due to advection
+INTEGER :: ISPLIT              ! Number of splitting loops
+INTEGER :: JSPL                ! Loop index
+REAL    :: ZTSTEP              ! Sub Time step 
+INTEGER :: IIU, IJU, IKU ! array sizes
+!
+INTEGER                     :: IINFO_ll    ! return code of parallel routine
+TYPE(LIST_ll), POINTER      :: TZFIELD_ll  ! list of fields to exchange
+TYPE(LIST_ll), POINTER      :: TZFIELDS_ll ! list of fields to exchange
+TYPE(LIST_ll), POINTER      :: TZFIELDS0_ll ! list of fields to exchange
+!
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.     INITIALIZATION                        
+!	        --------------
+!
+IKE = SIZE(PWT,3) - JPVEXT
+!
+IIU = SIZE(PWT,1)
+IJU = SIZE(PWT,2)
+IKU = SIZE(PWT,3)
+!
+!
+ZMXM_RHODJ = MXM(PRHODJ)
+ZMYM_RHODJ = MYM(PRHODJ)
+ZMZM_RHODJ = MZM(1,IKU,1,PRHODJ)
+!
+!-------------------------------------------------------------------------------
+!
+!*       1.     COMPUTES THE CONTRAVARIANT COMPONENTS
+!	        -------------------------------------
+!
+ZRUT = PUT(:,:,:) * ZMXM_RHODJ
+ZRVT = PVT(:,:,:) * ZMYM_RHODJ
+ZRWT = PWT(:,:,:) * ZMZM_RHODJ
+!
+NULLIFY(TZFIELD_ll)
+IF(NHALO == 1) THEN
+  CALL ADD3DFIELD_ll(TZFIELD_ll, ZRUT)
+  CALL ADD3DFIELD_ll(TZFIELD_ll, ZRVT)
+  CALL UPDATE_HALO_ll(TZFIELD_ll,IINFO_ll)
+  CALL CLEANLIST_ll(TZFIELD_ll)
+END IF
+!
+CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,4)
+!
+NULLIFY(TZFIELDS_ll)
+IF(NHALO == 1) THEN
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRWCT)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRUCT)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRVCT)
+  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
+  CALL CLEANLIST_ll(TZFIELDS_ll)
+END IF
+!
+!-------------------------------------------------------------------------------
+!
+!
+!*       2.     COMPUTES THE TENDENCIES SINCE THE BEGINNING OF THE TIME STEP
+!	        ------------------------------------------------------------
+!
+ZRUS_OTHER = PRUS - ZRUT / PTSTEP + PRUS_PRES
+ZRVS_OTHER = PRVS - ZRVT / PTSTEP + PRVS_PRES
+ZRWS_OTHER = PRWS - ZRWT / PTSTEP + PRWS_PRES
+!
+! Top and bottom Boundaries 
+!
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRUS_OTHER)
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRVS_OTHER)
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRWS_OTHER)
+ZRWS_OTHER(:,:,IKE+1) = 0.
+
+NULLIFY(TZFIELDS0_ll)
+IF(NHALO == 1) THEN
+  CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRUS_OTHER)
+  CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRVS_OTHER)
+  CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRWS_OTHER)
+  CALL UPDATE_HALO_ll(TZFIELDS0_ll,IINFO_ll)
+  CALL CLEANLIST_ll(TZFIELDS0_ll)
+END IF
+!
+!
+!
+!-------------------------------------------------------------------------------
+!
+ISPLIT = 2 * KSPLIT_PPM
+ZTSTEP     = PTSTEP / REAL(ISPLIT)
+!
+!-------------------------------------------------------------------------------
+!
+ZU    = PUT
+ZV    = PVT
+ZW    = PWT
+!
+!
+!*       3.     TIME SPLITTING
+!	        --------------
+!
+DO JSPL=1,ISPLIT
+!
+  CALL ADVECUVW_RK (HUVW_ADV_SCHEME,                                   &
+                    HTEMP_SCHEME, KWENO_ORDER,                         &
+                    HLBCX, HLBCY, ZTSTEP,                              &
+                    ZU, ZV, ZW,                                        &
+                    PUT, PVT, PWT,                                     &
+                    ZMXM_RHODJ, ZMYM_RHODJ, ZMZM_RHODJ,                &
+                    ZRUCT, ZRVCT, ZRWCT,                               &
+                    ZRUS_ADV, ZRVS_ADV, ZRWS_ADV,                      &
+                    ZRUS_OTHER, ZRVS_OTHER, ZRWS_OTHER                 )
+!
+! Tendencies on wind
+
+  PRUS(:,:,:) = PRUS(:,:,:) + ZRUS_ADV(:,:,:) / ISPLIT
+  PRVS(:,:,:) = PRVS(:,:,:) + ZRVS_ADV(:,:,:) / ISPLIT
+  PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_ADV(:,:,:) / ISPLIT
+
+!
+! Guesses for next time splitting loop
+!
+  ZU(:,:,:) = ZU(:,:,:) + ZTSTEP / ZMXM_RHODJ *  &
+              (ZRUS_OTHER(:,:,:) + ZRUS_ADV(:,:,:))
+  ZV(:,:,:) = ZV(:,:,:) + ZTSTEP / ZMYM_RHODJ *  &
+              (ZRVS_OTHER(:,:,:) + ZRVS_ADV(:,:,:))
+  ZW(:,:,:) = ZW(:,:,:) + ZTSTEP / ZMZM_RHODJ *  &
+              (ZRWS_OTHER(:,:,:) + ZRWS_ADV(:,:,:))
+!
+! Top and bottom Boundaries 
+!
+  CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZU, PUT, 'U' )    
+  CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZV, PVT, 'V' )    
+  CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZW, PWT, 'W' )
+  ZW (:,:,IKE+1 ) = 0.
+!
+! End of the time splitting loop
+END DO
+!
+!
+!*       4.     BUDGETS              
+!	        -------
+!
+IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADV_BU_RU')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADV_BU_RV')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADV_BU_RW')
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE ADVECTION_UVW
diff --git a/src/MNH/advection_uvw_cen.f90 b/src/MNH/advection_uvw_cen.f90
new file mode 100644
index 000000000..cc12e5e7c
--- /dev/null
+++ b/src/MNH/advection_uvw_cen.f90
@@ -0,0 +1,251 @@
+!-----------------------------------------------------------------
+!     #####################
+      MODULE MODI_ADVECTION_UVW_CEN
+!     #####################
+!
+INTERFACE
+      SUBROUTINE ADVECTION_UVW_CEN(HUVW_ADV_SCHEME,                &
+                           HLBCX, HLBCY,                           &
+                           PTSTEP, KTCOUNT,                        &
+                           PUM, PVM, PWM,                          &
+                           PDUM, PDVM, PDWM,                       &
+                           PUT, PVT, PWT,                          &
+                           PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,   &
+                           PRUS,PRVS, PRWS,                        &
+                           TPHALO2MLIST                            )
+!
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+REAL,                     INTENT(IN)    :: PTSTEP!  time step
+INTEGER,                  INTENT(IN)    :: KTCOUNT
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUM, PVM, PWM
+                                                  ! Variables at t-dt
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PDUM, PDVM, PDWM
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT, PRHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS , PRVS  , PRWS
+                                                  ! Sources terms 
+!
+! halo lists for 4th order advection
+TYPE(HALO2LIST_ll), POINTER :: TPHALO2MLIST ! momentum variables
+!
+END SUBROUTINE ADVECTION_UVW_CEN
+!
+END INTERFACE
+!
+END MODULE MODI_ADVECTION_UVW_CEN
+!     ##########################################################################
+      SUBROUTINE ADVECTION_UVW_CEN(HUVW_ADV_SCHEME,                &
+                           HLBCX, HLBCY,                           &
+                           PTSTEP, KTCOUNT,                        &
+                           PUM, PVM, PWM,                          &
+                           PDUM, PDVM, PDWM,                       &
+                           PUT, PVT, PWT,                          &
+                           PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,   &
+                           PRUS,PRVS, PRWS,                        &
+                           TPHALO2MLIST                            )
+!     ##########################################################################
+!
+!!****  *ADVECTION * - routine to call the specialized advection routines
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to control the advection routines.
+!!    For that, it is first necessary to compute the metric coefficients
+!!    and the contravariant components of the momentum.
+!!
+!!**  METHOD
+!!    ------
+!!      The advection of momenta is calculated using a centred (second order) 
+!!    scheme. 
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      NONE
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book1 and book2 ( routine ADVECTION )
+!!
+!!    AUTHOR
+!!    ------
+!!	V. Masson        * Meteo France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    01/2013  (from ADVECTION routine)
+!
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODE_ll
+USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
+USE MODD_CONF
+USE MODD_PARAMETERS
+USE MODD_GRID_n
+!
+USE MODI_SHUMAN
+USE MODI_CONTRAV
+USE MODI_ADVECUVW_2ND
+USE MODI_ADVECUVW_4TH
+!
+USE MODD_BUDGET
+USE MODI_BUDGET
+!
+!-------------------------------------------------------------------------------
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+REAL,                     INTENT(IN)    :: PTSTEP!  time step
+INTEGER,                  INTENT(IN)    :: KTCOUNT
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUM, PVM, PWM
+                                                  ! Variables at t-dt
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PDUM, PDVM, PDWM
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT, PRHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS , PRVS  , PRWS
+                                                  ! Sources terms 
+!
+! halo lists for 4th order advection
+TYPE(HALO2LIST_ll), POINTER :: TPHALO2MLIST ! momentum variables
+!
+!
+!*       0.2   declarations of local variables
+!
+!
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZUS
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZVS 
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZWS
+                                                  ! guess of cartesian components of
+                                                  ! momentum at future (+PTSTEP) timestep
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUS
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVS 
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWS
+                                                  ! cartesian components of
+                                                  ! rhodJ times the tendency of
+                                                  ! momentum from previous (-PTSTEP)
+                                                  ! to future (+PTSTEP) timestep
+!  
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUT 
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVT 
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWT
+                                                  ! cartesian 
+                                                  ! components of
+                                                  ! momentum
+!
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUCT 
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVCT
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWCT
+                                                  ! contravariant
+                                                  ! components
+                                                  ! of momentum
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZMXM_RHODJ
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZMYM_RHODJ
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZMZM_RHODJ
+!
+INTEGER                     :: IINFO_ll    ! return code of parallel routine
+TYPE(LIST_ll), POINTER      :: TZFIELDS_ll ! list of fields to exchange
+INTEGER :: IKU
+INTEGER :: IIB,IIE,IJB,IJE,IKB,IKE ! index values for the physical subdomain
+
+!
+!-------------------------------------------------------------------------------
+!
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
+IKU = SIZE(XZHAT)
+IKB=1+JPVEXT
+IKE=IKU-JPVEXT
+ZMXM_RHODJ = MXM(PRHODJ)
+ZMYM_RHODJ = MYM(PRHODJ)
+ZMZM_RHODJ = MZM(1,IKU,1,PRHODJ)
+!
+!*       1.     COMPUTES THE CONTRAVARIANT COMPONENTS
+!	        -------------------------------------
+!
+ZRUT = PUT(:,:,:) * ZMXM_RHODJ
+ZRVT = PVT(:,:,:) * ZMYM_RHODJ
+ZRWT = PWT(:,:,:) * ZMZM_RHODJ
+!
+IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
+  CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,2)
+ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
+  CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,4)
+END IF
+
+!
+NULLIFY(TZFIELDS_ll)
+IF(NHALO == 1) THEN
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRWCT)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRUCT)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRVCT)
+  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
+  CALL CLEANLIST_ll(TZFIELDS_ll)
+END IF
+!
+!-------------------------------------------------------------------------------
+!
+!*       2.     TERM FROM PREVIOUS TIME-STEP (from initial_guess)
+!	        ----------------------------
+!
+ZRUS(:,:,:)   = PUM(:,:,:)  * ZMXM_RHODJ/(2.*PTSTEP)
+ZRVS(:,:,:)   = PVM(:,:,:)  * ZMYM_RHODJ/(2.*PTSTEP)
+ZRWS(:,:,:)   = PWM(:,:,:)  * ZMZM_RHODJ/(2.*PTSTEP)
+!
+!-------------------------------------------------------------------------------
+!
+!*       3.     CALLS THE ADVECTION ROUTINES FOR THE MOMENTUM 
+!	        ---------------------------------------------
+!
+! choose between 2nd and 4th order momentum advection.
+IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
+!
+   CALL ADVECUVW_2ND (PUT,PVT,PWT,ZRUCT,ZRVCT,ZRWCT,ZRUS,ZRVS,ZRWS)
+!
+ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
+! 
+   CALL ADVECUVW_4TH ( HLBCX, HLBCY, ZRUCT, ZRVCT, ZRWCT,            &
+                       PUT, PVT, PWT, ZRUS, ZRVS, ZRWS, TPHALO2MLIST )                 
+!
+END IF
+!
+ZUS = ZRUS(:,:,:)/ZMXM_RHODJ*2.*PTSTEP
+ZVS = ZRVS(:,:,:)/ZMYM_RHODJ*2.*PTSTEP
+ZWS = ZRWS(:,:,:)/ZMZM_RHODJ*2.*PTSTEP
+!-------------------------------------------------------------------------------
+!
+!*       5.     Extracts the variation between current and future time step
+!	        -----------------------------------------------------------
+!
+PRUS(:,:,:) = PRUS(:,:,:) + ( ZUS(:,:,:) - PUM(:,:,:) - 0.5* PDUM) * ZMXM_RHODJ/(PTSTEP)
+PRVS(:,:,:) = PRVS(:,:,:) + ( ZVS(:,:,:) - PVM(:,:,:) - 0.5* PDVM) * ZMYM_RHODJ/(PTSTEP)
+PRWS(:,:,:) = PRWS(:,:,:) + ( ZWS(:,:,:) - PWM(:,:,:) - 0.5* PDWM) * ZMZM_RHODJ/(PTSTEP)
+!
+PDUM = ZUS(:,:,:) - PUM(:,:,:)
+PDVM = ZVS(:,:,:) - PVM(:,:,:)
+PDWM = ZWS(:,:,:) - PWM(:,:,:)
+!
+IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADV_BU_RU')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADV_BU_RV')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADV_BU_RW')
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE ADVECTION_UVW_CEN
diff --git a/src/MNH/advecuvw_2nd.f90 b/src/MNH/advecuvw_2nd.f90
new file mode 100644
index 000000000..c684a076f
--- /dev/null
+++ b/src/MNH/advecuvw_2nd.f90
@@ -0,0 +1,157 @@
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 adiab 2006/05/18 13:07:25
+!-----------------------------------------------------------------
+!     ####################
+      MODULE MODI_ADVECUVW_2ND 
+!     ####################
+!
+INTERFACE
+!
+      SUBROUTINE ADVECUVW_2ND ( PUT,  PVT,  PWT,                    &
+                            PRUCT, PRVCT, PRWCT,                &
+                            PRUS,  PRVS,  PRWS                  )
+!
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT ! Wind at t
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUCT     ! contravariant 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVCT     !  components
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRWCT     ! of momentum 
+!
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS, PRWS ! Sources of Momentum
+!
+END SUBROUTINE ADVECUVW_2ND
+!
+END INTERFACE
+!
+END MODULE MODI_ADVECUVW_2ND 
+!
+!
+!
+!     ###########################################################
+      SUBROUTINE ADVECUVW_2ND ( PUT,  PVT,  PWT,                    &
+                            PRUCT, PRVCT, PRWCT,                &
+                            PRUS,  PRVS,  PRWS                  )
+!     ###########################################################
+!
+!!****  *ADVECUVW_2ND * - routine to compute the advection terms of momentum
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to compute the three advection terms
+!!    of each component of the momentum, written in flux form.
+!!      The advection velocity is taken as the contravariant form of 
+!!    the momentum for extension to non-cartesian geometry and 
+!!    conformal projection cases. The different sources terms are stored for
+!!    the budget computations.
+!!     
+!!
+!!**  METHOD
+!!    ------
+!!      The left and right lateral EXTernal zones, have been previously
+!!    prepared in routine LBC_S, to avoid particular cases close to the
+!!    Lateral Boundaries in this routine.
+!!      The Shuman functions are used to write the mean and finite 
+!!    differences operators.
+!!
+!!    EXTERNAL
+!!    --------
+!!      DXM,DYM,DZM : Shuman functions (finite differences operators)
+!!      BUDGET      : Stores the different budget components
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      Module MODD_PARAMETERS: declaration of parameter variables
+!!        JPVEXT: define the number of marginal points out of the 
+!!        physical domain along the vertical direction.
+!!    
+!!
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book2 of documentation ( routine ADVECUVW_2ND )
+!!
+!!    AUTHOR
+!!    ------
+!!  	J.-P. Pinty      * Laboratoire d'Aerologie*
+!!  	J.-P. Lafore     * Meteo France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    06/07/94 
+!!      Corrections 06/09/94 (J.-P. Lafore)
+!!                  02/11/94 (J.Stein)   extrapolation under the ground
+!!                  16/03/95 (J.Stein)   remove R from the historical variables
+!!                  01/04/95 (Ph. Hereil J. Nicolau) add the budget computation
+!!                  16/10/95 (J. Stein)     change the budget calls 
+!!                  19/12/96 (J.-P. Pinty)  update the budget calls 
+!!                  07/11/02 (V. Masson)    update the budget calls 
+!!                  17/01/13 (V. Masson)    remove the budget calls 
+!! 
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODD_PARAMETERS
+USE MODD_GRID_n
+!
+USE MODI_SHUMAN
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT ! Wind at t
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUCT     ! contravariant 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVCT     !  components
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRWCT     ! of momentum 
+!
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS, PRWS ! Sources of Momentum
+!
+INTEGER :: IKU
+!
+!  
+!-------------------------------------------------------------------------------
+!
+IKU=SIZE(XZHAT)
+!
+!*       1.     COMPUTES THE ADVECTIVE TENDANCIES
+!	        ---------------------------------
+!
+PRUS(:,:,:) = PRUS(:,:,:)                              &
+             -DXM( MXF(PRUCT(:,:,:))*MXF(PUT(:,:,:)) ) 
+!
+PRUS(:,:,:) = PRUS(:,:,:)                              &
+             -DYF( MXM(PRVCT(:,:,:))*MYM(PUT(:,:,:)) ) 
+!
+PRUS(:,:,:) = PRUS(:,:,:)                              &
+             -DZF(1,IKU,1, MXM(PRWCT(:,:,:))*MZM(1,IKU,1,PUT(:,:,:)) )
+!
+!
+PRVS(:,:,:) = PRVS(:,:,:)                              &
+             -DXF( MYM(PRUCT(:,:,:))*MXM(PVT(:,:,:)) ) 
+!
+PRVS(:,:,:) = PRVS(:,:,:)                              &
+             -DYM( MYF(PRVCT(:,:,:))*MYF(PVT(:,:,:)) )  
+!
+PRVS(:,:,:) = PRVS(:,:,:)                              &
+             -DZF(1,IKU,1, MYM(PRWCT(:,:,:))*MZM(1,IKU,1,PVT(:,:,:)) )
+!
+!
+PRWS(:,:,:) = PRWS(:,:,:)                              &
+             -DXF( MZM(1,IKU,1,PRUCT(:,:,:))*MXM(PWT(:,:,:)) ) 
+!
+PRWS(:,:,:) = PRWS(:,:,:)                              &
+             -DYF( MZM(1,IKU,1,PRVCT(:,:,:))*MYM(PWT(:,:,:)) ) 
+!
+PRWS(:,:,:) = PRWS(:,:,:)                              &
+             -DZM(1,IKU,1, MZF(1,IKU,1,PRWCT(:,:,:))*MZF(1,IKU,1,PWT(:,:,:)) )
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE ADVECUVW_2ND
diff --git a/src/MNH/advecuvw_4th.f90 b/src/MNH/advecuvw_4th.f90
index ff27817c9..bb65cb32c 100644
--- a/src/MNH/advecuvw_4th.f90
+++ b/src/MNH/advecuvw_4th.f90
@@ -85,48 +85,6 @@ END MODULE MODI_ADVECUVW_4TH
 !!         NBUPROCCTR   : process counter used for each budget variable
 !!         Switches for budgets activations:
 !!
-!!         LBU_RU       : logical for budget of RU (wind component along x)
-!!
-!!         LBU_RU       : logical for budget of RU (wind component along x)
-!!                        .TRUE. = budget of RU
-!!                        .FALSE. = no budget of RU
-!!         LBU_RV       : logical for budget of RV (wind component along y)
-!!                        .TRUE. = budget of RV
-!!                        .FALSE. = no budget of RV
-!!         LBU_RW        : logical for budget of RW (wind component along z)
-!!                        .TRUE. = budget of RW
-!!                        .FALSE. = no budget of RW
-!!         LBU_RTH      : logical for budget of RTH (potential temperature)
-!!                        .TRUE. = budget of RTH
-!!                        .FALSE. = no budget of RTH
-!!         LBU_RTKE     : logical for budget of RTKE (turbulent kinetic energy)
-!!                        .TRUE. = budget of RTKE
-!!                        .FALSE. = no budget of RTKE
-!!         LBU_RRV      : logical for budget of RRV (water vapor)
-!!                        .TRUE. = budget of RRV
-!!                        .FALSE. = no budget of RRV
-!!         LBU_RRC      : logical for budget of RRC (cloud water)
-!!                        .TRUE. = budget of RRC
-!!                        .FALSE. = no budget of RRC
-!!         LBU_RRR      : logical for budget of RRR (rain water)
-!!                        .TRUE. = budget of RRR
-!!                        .FALSE. = no budget of RRR
-!!         LBU_RRI      : logical for budget of RRI (ice)
-!!                        .TRUE. = budget of RRI
-!!                        .FALSE. = no budget of RRI
-!!         LBU_RRS      : logical for budget of RRS (snow)
-!!                        .TRUE. = budget of RRS
-!!                        .FALSE. = no budget of RRS
-!!         LBU_RRG      : logical for budget of RRG (graupel)
-!!                        .TRUE. = budget of RRG
-!!                        .FALSE. = no budget of RRG
-!!         LBU_RRH      : logical for budget of RRH (hail)
-!!                        .TRUE. = budget of RRH
-!!                        .FALSE. = no budget of RRH
-!!         LBU_RSV      : logical for budget of RSVx (scalar variable)
-!!                        .TRUE. = budget of RSVx
-!!                        .FALSE. = no budget of RSVx
-!!
 !!    MODULE MODD_ARGSLIST
 !!         HALO2LIST_ll : type for a list of "HALO2_lls"
 !!
@@ -152,11 +110,9 @@ USE MODE_ll
 USE MODD_PARAMETERS
 USE MODD_CONF
 USE MODD_GRID_n
-USE MODD_BUDGET
 USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
 !
 USE MODI_SHUMAN
-USE MODI_BUDGET
 !
 USE MODI_ADVEC_4TH_ORDER_AUX
 !
@@ -214,15 +170,12 @@ ENDIF
 !
 PRUS(:,:,:) = PRUS(:,:,:)                          &
              -DXM( MXF(PRUCT(:,:,:))*ZMEANX(:,:,:) ) 
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADVX_BU_RU')
 !
 PRUS(:,:,:) = PRUS(:,:,:)                          &
              -DYF( MXM(PRVCT(:,:,:))*ZMEANY(:,:,:) ) 
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADVY_BU_RU')
 !
 PRUS(:,:,:) = PRUS(:,:,:)                             &
              -DZF(1,IKU,1, MXM(PRWCT(:,:,:))*MZM4(PUT(:,:,:)) )
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADVZ_BU_RU')
 !
 !
 IGRID = 3
@@ -236,15 +189,12 @@ ENDIF
 !
 PRVS(:,:,:) = PRVS(:,:,:)                          &
              -DXF( MYM(PRUCT(:,:,:))*ZMEANX(:,:,:) ) 
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADVX_BU_RV')
 !
 PRVS(:,:,:) = PRVS(:,:,:)                          &
              -DYM( MYF(PRVCT(:,:,:))*ZMEANY(:,:,:) )  
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADVY_BU_RV')
 !
 PRVS(:,:,:) = PRVS(:,:,:)                             &
              -DZF(1,IKU,1, MYM(PRWCT(:,:,:))*MZM4(PVT(:,:,:)) )
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADVZ_BU_RV')
 !
 !
 IGRID = 4
@@ -259,15 +209,12 @@ ENDIF
 !
 PRWS(:,:,:) = PRWS(:,:,:)                          &
              -DXF( MZM(1,IKU,1,PRUCT(:,:,:))*ZMEANX(:,:,:) ) 
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADVX_BU_RW')
 !
 PRWS(:,:,:) = PRWS(:,:,:)                          &
              -DYF( MZM(1,IKU,1,PRVCT(:,:,:))*ZMEANY(:,:,:) ) 
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADVY_BU_RW')
 !
 PRWS(:,:,:) = PRWS(:,:,:)                             &
              -DZM(1,IKU,1, MZF(1,IKU,1,PRWCT(:,:,:))*MZF4(PWT(:,:,:)) )
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADVZ_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90
new file mode 100644
index 000000000..e5383668b
--- /dev/null
+++ b/src/MNH/advecuvw_rk.f90
@@ -0,0 +1,350 @@
+!-----------------------------------------------------------------
+!     #####################
+      MODULE MODI_ADVECUVW_RK
+!     #####################
+!
+INTERFACE
+      SUBROUTINE ADVECUVW_RK (HUVW_ADV_SCHEME,                         &
+                    HTEMP_SCHEME, KWENO_ORDER,                         &
+                    HLBCX, HLBCY, PTSTEP,                              &
+                    PU, PV, PW,                                        &
+                    PUT, PVT, PWT,                                     &
+                    PMXM_RHODJ, PMYM_RHODJ, PMZM_RHODJ,                &
+                    PRUCT, PRVCT, PRWCT,                               &
+                    PRUS_ADV, PRVS_ADV, PRWS_ADV,                      &
+                    PRUS_OTHER, PRVS_OTHER, PRWS_OTHER                 )
+!
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME! to the selected
+CHARACTER(LEN=4),         INTENT(IN)    :: HTEMP_SCHEME   ! Temporal scheme
+!
+INTEGER,                  INTENT(IN)    :: KWENO_ORDER   ! Order of the WENO
+                                                         ! scheme (3 or 5)
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PU , PV  , PW
+                                                  ! Variables to advect
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT , PWT
+                                                  ! Variables for boundary
+                                                  ! conditions
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMXM_RHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMYM_RHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMZM_RHODJ
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUCT , PRVCT, PRWCT
+                                                  ! Contravariant wind components
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRUS_ADV , PRVS_ADV, PRWS_ADV
+                                                  ! Tendency due to advection
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUS_OTHER , PRVS_OTHER, PRWS_OTHER
+!                                                 ! tendencies from other processes
+!
+END SUBROUTINE ADVECUVW_RK
+!
+END INTERFACE
+!
+END MODULE MODI_ADVECUVW_RK
+!     ##########################################################################
+      SUBROUTINE ADVECUVW_RK (HUVW_ADV_SCHEME,                         &
+                    HTEMP_SCHEME, KWENO_ORDER,                         &
+                    HLBCX, HLBCY, PTSTEP,                              &
+                    PU, PV, PW,                                        &
+                    PUT, PVT, PWT,                                     &
+                    PMXM_RHODJ, PMYM_RHODJ, PMZM_RHODJ,                &
+                    PRUCT, PRVCT, PRWCT,                               &
+                    PRUS_ADV, PRVS_ADV, PRWS_ADV,                      &
+                    PRUS_OTHER, PRVS_OTHER, PRWS_OTHER                 )
+!     ##########################################################################
+!
+!!****  *ADVECUVW_RK * - routine to call the specialized advection routines for wind
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      NONE
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book1 and book2 ( routine ADVECTION )
+!!
+!!    AUTHOR
+!!    ------
+!!	J.-P. Pinty      * Laboratoire d'Aerologie*
+!!	J.-P. Lafore     * Meteo France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    06/07/94 
+!!                  01/04/95 (Ph. Hereil J. Nicolau) add the model number
+!!                  23/10/95 (J. Vila and JP Lafore) advection schemes scalar
+!!                  16/01/97 (JP Pinty)              change presentation 
+!!                  30/04/98 (J. Stein P Jabouille)  extrapolation for the cyclic
+!!                                                   case and parallelisation
+!!                  24/06/99 (P Jabouille)           case of NHALO>1
+!!                  25/10/05 (JP Pinty)              4th order scheme
+!!                  24/04/06 (C.Lac)                 Split scalar and passive
+!!                                                   tracer routines
+!!                  08/06    (T.Maric)               PPM scheme
+!!                  04/2011  (V. Masson & C. Lac)    splits the routine and adds
+!!                                                   time splitting
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODE_ll
+USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
+USE MODD_PARAMETERS,  ONLY : JPVEXT
+USE MODD_CONF,        ONLY : NHALO
+!
+USE MODI_SHUMAN
+USE MODI_ADVECUVW_WENO_K
+USE MODI_ADV_BOUNDARIES
+USE MODI_GET_HALO
+!
+!-------------------------------------------------------------------------------
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME! to the selected
+CHARACTER(LEN=4),         INTENT(IN)    :: HTEMP_SCHEME   ! Temporal scheme
+!
+INTEGER,                  INTENT(IN)    :: KWENO_ORDER   ! Order of the WENO
+                                                         ! scheme (3 or 5)
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PU , PV  , PW
+                                                  ! Variables to advect
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT , PWT
+                                                  ! Variables for boundary
+                                                  ! conditions
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMXM_RHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMYM_RHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PMZM_RHODJ
+                                                  !  metric coefficients
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUCT , PRVCT, PRWCT
+                                                  ! Contravariant wind components
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRUS_ADV , PRVS_ADV, PRWS_ADV
+                                                  ! Tendency due to advection
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUS_OTHER , PRVS_OTHER, PRWS_OTHER
+!                                                 ! tendencies from other processes
+!
+!
+!
+!*       0.2   declarations of local variables
+!
+!
+!  
+INTEGER             :: IKE       ! indice K End       in z direction
+!
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZU, ZV, ZW
+! Guesses at the beginning of the RK loop
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZUT, ZVT, ZWT
+! Intermediate Guesses inside the RK loop              
+!
+REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRUS,ZRVS,ZRWS
+! Momentum tendencies due to advection
+REAL, DIMENSION(:,:), ALLOCATABLE :: ZBUT ! Butcher array coefficients
+                                          ! at the RK sub time step
+REAL, DIMENSION(:),   ALLOCATABLE :: ZBUTS! Butcher array coefficients
+                                          ! at the end of the RK loop
+
+!JUAN
+TYPE(LIST_ll), POINTER      :: TZFIELDMT_ll ! list of fields to exchange
+TYPE(HALO2LIST_ll), POINTER :: TZHALO2MT_ll ! momentum variables
+INTEGER                     :: INBVAR
+INTEGER :: IIU, IJU, IKU ! array sizes
+!JUAN
+
+! Momentum tendencies due to advection
+INTEGER :: ISPL                ! Number of RK splitting loops
+INTEGER :: JI, JS              ! Loop index
+!
+INTEGER                     :: IINFO_ll    ! return code of parallel routine
+TYPE(LIST_ll), POINTER      :: TZFIELD_ll  ! list of fields to exchange
+TYPE(LIST_ll), POINTER      :: TZFIELDS_ll ! list of fields to exchange
+TYPE(LIST_ll), POINTER      :: TZFIELDS0_ll ! list of fields to exchange
+TYPE(LIST_ll), POINTER      :: TZFIELDS4_ll ! list of fields to exchange
+!
+!
+REAL          :: XPRECISION
+!-------------------------------------------------------------------------------
+!
+!*       0.     INITIALIZATION                        
+!	        --------------
+!
+IKE = SIZE(PWT,3) - JPVEXT
+IIU=SIZE(PUT,1)
+IJU=SIZE(PUT,2)
+IKU=SIZE(PUT,3)
+!
+SELECT CASE (HTEMP_SCHEME)
+ CASE('RK11')
+  ISPL = 1
+ CASE('RK21')
+  ISPL = 2
+ CASE('RK33')
+  ISPL = 3
+ CASE('RK53')
+  ISPL = 5
+END SELECT
+!
+!
+ALLOCATE(ZBUT(ISPL-1,ISPL-1))
+ALLOCATE(ZBUTS(ISPL))
+!
+IF (ISPL == 1 ) ZBUTS = (/ 1. /)
+IF (ISPL == 2 ) THEN
+   ZBUTS     = (/ 0. , 1. /)
+   ZBUT(1,1)   = 3./4.
+END IF
+IF (ISPL == 3 ) THEN
+   ZBUTS     = (/ 1./6. , 1./6. , 2./3. /)
+   ZBUT(1,1) = 1.
+   ZBUT(1,2) = 0.
+   ZBUT(2,:) = 1./4.
+END IF
+IF (ISPL == 5 ) THEN
+   ZBUTS     = (/ 1./4. , 0., 0., 0., 3./4. /)
+   ZBUT      = 0.
+   ZBUT(1,1) = 1./7.
+   ZBUT(2,2) = 3./16.
+   ZBUT(3,3) = 1./3.
+   ZBUT(4,4) = 2./3.
+END IF
+!
+ALLOCATE(ZRUS(SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3),ISPL))
+ALLOCATE(ZRVS(SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3),ISPL))
+ALLOCATE(ZRWS(SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3),ISPL))
+!
+PRUS_ADV = 0.
+PRVS_ADV = 0.
+PRWS_ADV = 0.
+!
+!-------------------------------------------------------------------------------
+!
+!*       2.     Wind guess before RK loop
+!	        -------------------------
+!
+ZUT = PU
+ZVT = PV
+ZWT = PW
+!
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZUT, PUT, 'U' )    
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZVT, PVT, 'V' )    
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZWT, PWT, 'W' )
+ZWT (:,:,IKE+1 ) = 0.
+
+ZU = PU
+ZV = PV
+ZW = PW
+!
+NULLIFY(TZFIELDMT_ll)
+IF( NHALO==1 ) THEN      
+!
+   CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZUT)
+   CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZVT)
+   CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZWT)
+!
+   INBVAR = 3
+   IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3))
+!
+ END IF
+!
+ZRUS = 0.
+ZRVS = 0.
+ZRWS = 0.
+!-------------------------------------------------------------------------------
+!
+!*       3.     BEGINNING of Runge-Kutta loop
+!	        -----------------------------
+!
+ DO JS = 1, ISPL
+!
+!
+      CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZUT, PUT, 'U' )    
+      CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZVT, PVT, 'V' )    
+      CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZWT, PWT, 'W' )
+      ZW (:,:,IKE+1 ) = 0.
+     !JUAN
+     IF ( NHALO == 1 ) THEN   
+        CALL UPDATE_HALO_ll(TZFIELDMT_ll,IINFO_ll)        
+        CALL UPDATE_HALO2_ll(TZFIELDMT_ll, TZHALO2MT_ll, IINFO_ll)
+     ENDIF
+     !JUAN
+!
+!*       4.     Advection with WENO
+!	        -------------------
+!
+     CALL ADVECUVW_WENO_K (HLBCX, HLBCY, KWENO_ORDER, ZUT, ZVT, ZWT,      &
+                          PRUCT, PRVCT, PRWCT,                            &
+                          ZRUS(:,:,:,JS), ZRVS(:,:,:,JS), ZRWS(:,:,:,JS), &
+                          TZHALO2MT_ll                                    )
+!
+!
+! ==> verifier si c'est utile !
+!
+     NULLIFY(TZFIELDS4_ll)
+     IF(NHALO == 1) THEN
+          CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRUS(:,:,:,JS))
+          CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRVS(:,:,:,JS))
+          CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRWS(:,:,:,JS))
+          CALL UPDATE_HALO_ll(TZFIELDS4_ll,IINFO_ll)
+          CALL CLEANLIST_ll(TZFIELDS4_ll)
+     END IF
+
+    IF ( JS /= ISPL ) THEN
+!
+
+     DO JI = 1, JS
+
+!
+! Intermediate guesses inside the RK loop
+!
+        ZUT(:,:,:) = ZU(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
+         ( ZRUS(:,:,:,JI) + PRUS_OTHER(:,:,:) ) / PMXM_RHODJ
+        ZVT(:,:,:) = ZV(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
+         ( ZRVS(:,:,:,JI) + PRVS_OTHER(:,:,:) ) / PMYM_RHODJ
+        ZWT(:,:,:) = ZW(:,:,:) + ZBUT(JS,JI) *  PTSTEP *  &
+         ( ZRWS(:,:,:,JI) + PRWS_OTHER(:,:,:) ) / PMZM_RHODJ
+!
+      END DO
+!
+    ELSE  
+!
+! Guesses at the end of the RK loop
+!
+      DO JI = 1, ISPL
+       PRUS_ADV(:,:,:) = PRUS_ADV(:,:,:) + ZBUTS(JI) * ZRUS(:,:,:,JI) 
+       PRVS_ADV(:,:,:) = PRVS_ADV(:,:,:) + ZBUTS(JI) * ZRVS(:,:,:,JI) 
+       PRWS_ADV(:,:,:) = PRWS_ADV(:,:,:) + ZBUTS(JI) * ZRWS(:,:,:,JI) 
+      END DO
+!
+    END IF
+!
+! End of the RK loop
+ END DO
+
+!
+!
+DEALLOCATE(ZBUT, ZBUTS, ZRUS, ZRVS, ZRWS)
+CALL CLEANLIST_ll(TZFIELDMT_ll)
+CALL  DEL_HALO2_ll(TZHALO2MT_ll)
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE ADVECUVW_RK
diff --git a/src/MNH/advecuvw_weno_k.f90 b/src/MNH/advecuvw_weno_k.f90
new file mode 100644
index 000000000..3912fc72e
--- /dev/null
+++ b/src/MNH/advecuvw_weno_k.f90
@@ -0,0 +1,271 @@
+!     ###########################
+      MODULE MODI_ADVECUVW_WENO_K
+!     ###########################
+!
+INTERFACE
+!
+      SUBROUTINE ADVECUVW_WENO_K(HLBCX, HLBCY, KWENO_ORDER, PUT, PVT, PWT,     &
+                             PRUCT, PRVCT, PRWCT, PRUS, PRVS, PRWS, TPHALO2LIST)
+!
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
+INTEGER,                  INTENT(IN)    :: KWENO_ORDER   ! Order of the WENO
+                                                         ! scheme (3 or 5)
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRUCT ! contravariant
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVCT !  components
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRWCT ! of momentum
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT, PVT, PWT        ! U,V,W at t
+!
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS, PRWS     ! Source terms
+!
+TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list for diffusion
+!
+END SUBROUTINE ADVECUVW_WENO_K
+!
+END INTERFACE
+!
+END MODULE MODI_ADVECUVW_WENO_K
+!
+!     ##########################################################################
+      SUBROUTINE ADVECUVW_WENO_K(HLBCX, HLBCY, KWENO_ORDER, PUT, PVT, PWT,     &
+                             PRUCT, PRVCT, PRWCT, PRUS, PRVS, PRWS, TPHALO2LIST)
+!     ##########################################################################
+!
+!!    AUTHOR
+!!    ------
+!!
+!!
+!!    MODIFICATIONS
+!!    ------------- 
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODE_ll
+!
+USE MODD_PARAMETERS
+USE MODD_CONF
+USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
+!
+USE MODI_SHUMAN
+USE MODI_ADVEC_WENO_K_1_AUX
+USE MODI_ADVEC_WENO_K_2_AUX
+USE MODI_ADVEC_WENO_K_3_AUX
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
+INTEGER,                  INTENT(IN)    :: KWENO_ORDER   ! Order of the WENO
+                                                         ! scheme (3 or 5)
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRUCT  ! contravariant
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRVCT  !  components
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRWCT  ! of momentum
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT, PVT, PWT        ! Variables at t
+!
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS, PRWS     ! Source terms
+!
+TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list for diffusion
+!
+!*       0.2   Declarations of local variables :
+!
+TYPE(HALO2LIST_ll), POINTER :: TZHALO2_UT,TZHALO2_VT,TZHALO2_WT
+!
+REAL, DIMENSION(SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3)) :: ZMEAN, ZWORK
+!
+INTEGER :: K_SCHEME
+INTEGER :: IKU
+!
+!------------------------- ADVECTION OF MOMENTUM ------------------------------
+!
+!
+TZHALO2_UT => TPHALO2LIST                   ! 1rst add3dfield in model_n
+TZHALO2_VT => TPHALO2LIST%NEXT              ! 2nd  add3dfield in model_n
+TZHALO2_WT => TPHALO2LIST%NEXT%NEXT         ! 3rst add3dfield in model_n
+!
+IKU=SIZE(PUT,3)
+!      -------------------------------------------------------
+!
+SELECT CASE(KWENO_ORDER)
+!
+CASE(1)
+!
+!  U component
+!
+  PRUS = PRUS - DXM(UP_UX(PUT,MXF(PRUCT)))
+!
+  PRUS = PRUS - DYF(UP_MY(PUT,MXM(PRVCT)))
+!
+  PRUS = PRUS - DZF(1,IKU,1,UP_MZ(PUT,MXM(PRWCT)))
+!
+! V component
+!
+  PRVS = PRVS - DXF(UP_MX(PVT,MYM(PRUCT)))
+!
+  PRVS = PRVS - DYM(UP_VY(PVT,MYF(PRVCT)))
+!
+  PRVS = PRVS - DZF(1,IKU,1,UP_MZ(PVT,MYM(PRWCT)))
+!
+! W component
+!
+  PRWS = PRWS - DXF(UP_MX(PWT,MZM(1,IKU,1,PRUCT)))
+!
+  PRWS = PRWS - DYF(UP_MY(PWT,MZM(1,IKU,1,PRVCT)))
+!
+  PRWS = PRWS - DZM(1,IKU,1,UP_WZ(PWT,MZF(1,IKU,1,PRWCT)))
+!
+!
+CASE(3)
+!
+! U component
+!
+  ZWORK = MXF(PRUCT)
+  IF(NHALO == 1) THEN
+    CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
+  ELSE
+    CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN)
+  ENDIF
+  PRUS = PRUS - DXM(ZMEAN)
+  
+!   
+  IF (.NOT.L2D) THEN
+    ZWORK = MXM(PRVCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN)
+    ENDIF
+    PRUS = PRUS - DYF(ZMEAN)
+  END IF
+!
+  PRUS = PRUS - DZF(1,IKU,1,WENO_K_2_MZ(PUT, MXM(PRWCT)))
+!
+! V component
+!
+  IF (.NOT.L2D) THEN
+    ZWORK = MYM(PRUCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN)
+    ENDIF
+    PRVS = PRVS - DXF(ZMEAN)
+!   
+    ZWORK = MYF(PRVCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN)
+    ENDIF
+    PRVS = PRVS - DYM(ZMEAN)
+!
+    PRVS = PRVS - DZF(1,IKU,1,WENO_K_2_MZ(PVT, MYM(PRWCT)))
+  END IF
+!
+! W component
+!
+  ZWORK = MZM(1,IKU,1,PRUCT)
+  IF(NHALO == 1) THEN
+    CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
+  ELSE
+    CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN)
+  ENDIF
+  PRWS = PRWS - DXF(ZMEAN)
+!
+  IF (.NOT.L2D) THEN
+    ZWORK = MZM(1,IKU,1,PRVCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN)
+    ENDIF
+    PRWS = PRWS - DYF(ZMEAN)
+  END IF
+!
+  PRWS = PRWS - DZM(1,IKU,1,WENO_K_2_WZ(PWT,MZF(1,IKU,1,PRWCT)))
+!
+!
+CASE(5)
+!
+! U component
+!
+  ZWORK = MXF(PRUCT)
+  IF(NHALO == 1) THEN
+    CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
+  ELSE
+    CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN)
+  ENDIF
+  PRUS = PRUS - DXM(ZMEAN)
+!   
+  IF (.NOT.L2D) THEN
+    ZWORK = MXM(PRVCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN)
+    ENDIF
+    PRUS = PRUS - DYM(ZMEAN)
+  END IF
+!
+  PRUS = PRUS - DZF(1,IKU,1,WENO_K_3_MZ(PUT, MXM(PRWCT)))
+!
+! V component
+!
+  IF (.NOT.L2D) THEN
+    ZWORK = MYM(PRUCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN)
+    ENDIF
+    PRVS = PRVS - DXF(ZMEAN)
+!   
+    ZWORK = MYF(PRVCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN)
+    ENDIF
+    PRVS = PRVS - DYM(ZMEAN)
+!
+    PRVS = PRVS - DZF(1,IKU,1,WENO_K_3_MZ(PVT, MYM(PRWCT)))
+  END IF
+!
+! W component
+!
+  ZWORK = MZM(1,IKU,1,PRUCT)
+  IF(NHALO == 1) THEN
+    CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
+  ELSE
+    CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN)
+  ENDIF
+  PRWS = PRWS - DXF(ZMEAN)
+!
+  IF (.NOT.L2D) THEN
+    ZWORK = MZM(1,IKU,1,PRVCT)
+    IF(NHALO == 1) THEN
+      CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2)
+    ELSE
+      CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN)
+    ENDIF
+    PRWS = PRWS - DYF(ZMEAN)
+  END IF
+!
+  PRWS = PRWS - DZM(1,IKU,1,WENO_K_3_WZ(PWT,MZF(1,IKU,1,PRWCT)))
+!
+!
+END SELECT
+!             ---------------------------------
+!
+END SUBROUTINE ADVECUVW_WENO_K
+
diff --git a/src/MNH/anel_balancen.f90 b/src/MNH/anel_balancen.f90
index 31619b8ee..ca072a194 100644
--- a/src/MNH/anel_balancen.f90
+++ b/src/MNH/anel_balancen.f90
@@ -10,13 +10,9 @@
 !
 INTERFACE
 !
-SUBROUTINE ANEL_BALANCE_n(OINST,PRESIDUAL)
+SUBROUTINE ANEL_BALANCE_n(PRESIDUAL)
 !
-CHARACTER (LEN=1), INTENT(IN)  :: OINST      ! selected instant to enforce the
-                                             ! anelastic constraint
-!JUAN
 REAL, OPTIONAL                 :: PRESIDUAL
-!JUAN
 END SUBROUTINE ANEL_BALANCE_n
 !
 END INTERFACE
@@ -26,7 +22,8 @@ END MODULE MODI_ANEL_BALANCE_n
 !
 !
 !     ################################
-      SUBROUTINE ANEL_BALANCE_n(OINST,PRESIDUAL)
+      SUBROUTINE ANEL_BALANCE_n(PRESIDUAL)
+!
 !     ################################
 !
 !
@@ -128,26 +125,17 @@ USE MODD_DYN_n
 USE MODD_LBC_n
 USE MODD_LUNIT_n
 !
-! interface modules
-!JUANZ
-!USE MODI_TRID
-USE MODI_TRIDZ
-!USE MODI_PRESSURE
+USE MODI_TRIDZ    ! interface modules
 USE MODI_PRESSUREZ
 USE MODE_SPLITTINGZ_ll
-!JUANZ
 USE MODI_SHUMAN
 !
 IMPLICIT NONE
 !
 !*       0.1   Declarations of arguments :
 !
-!
-CHARACTER (LEN=1), INTENT(IN)  :: OINST      ! selected instant to enforce the
-                                             ! anelastic constraint
-!JUAN
 REAL, OPTIONAL                 :: PRESIDUAL
-!JUAN
+!
 !
 !*       0.2   Declarations of local variables :
 !
@@ -170,8 +158,8 @@ REAL, DIMENSION(:), ALLOCATABLE   :: ZTRIGSY   ! the FFT in x and y directions
 INTEGER, DIMENSION(19)            :: IIFAXX    ! decomposition in prime numbers
 INTEGER, DIMENSION(19)            :: IIFAXY    ! for the FFT in x and y
                                                ! directions
-REAL, DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZPABSM,ZPABST
-                                               ! Potential at time t-dt  and t
+REAL, DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZPABST
+                                               ! Potential at time t
 REAL, DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZRU,ZRV,ZRW
                                                ! Rhod * (U,V,W)
 REAL, DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZTH
@@ -236,26 +224,12 @@ CALL TRIDZ(CLUOUT0,CLBCX,CLBCY,XMAP,XDXHAT,XDYHAT,ZDXHATM,ZDYHATM,ZRHOM,  &
 !
 !*       3.1     multiplication by RHODJ
 !
-IF (OINST == 'T') THEN
-  ZRU(:,:,:) = MXM(XRHODJ) * XUT(:,:,:)
-  ZRV(:,:,:) = MYM(XRHODJ) * XVT(:,:,:)
-  ZRW(:,:,:) = MZM(1,IKU,1,XRHODJ) * XWT(:,:,:)
-  ZTH(:,:,:) = XTHT(:,:,:)
-  ALLOCATE(ZRR(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),SIZE(XRT,4)))
-  ZRR(:,:,:,:) = XRT(:,:,:,:)
-ELSEIF (OINST == 'M') THEN
-  ZRU(:,:,:) = MXM(XRHODJ) * XUM(:,:,:)
-  ZRV(:,:,:) = MYM(XRHODJ) * XVM(:,:,:)
-  ZRW(:,:,:) = MZM(1,IKU,1,XRHODJ) * XWM(:,:,:)
-  ZTH(:,:,:) = XTHM(:,:,:)
-  ALLOCATE(ZRR(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),SIZE(XRM,4)))
-  ZRR(:,:,:,:) = XRM(:,:,:,:)
-ELSE
-!callabortstop
-  CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
-END IF
+ZRU(:,:,:) = MXM(XRHODJ) * XUT(:,:,:)
+ZRV(:,:,:) = MYM(XRHODJ) * XVT(:,:,:)
+ZRW(:,:,:) = MZM(1,IKU,1,XRHODJ) * XWT(:,:,:)
+ZTH(:,:,:) = XTHT(:,:,:)
+ALLOCATE(ZRR(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),SIZE(XRT,4)))
+ZRR(:,:,:,:) = XRT(:,:,:,:)
 !
 !
 !
@@ -263,7 +237,7 @@ END IF
 !*       3.2     satisfy the anelastic constraint
 !
 ITCOUNT      =-1     ! no first guess of the pressure is available
-ZPABSM(:,:,:)= 0.    !       ==================CAUTION=====================
+ZPABST(:,:,:)= 0.    !       ==================CAUTION=====================
 ZDRYMASST    = 0.    !      |   Initialization necessary for the           |
 ZREFMASS     = 0.    !      |  computation of the absolute pressure,       |
 ZMASS_O_PHI0 = 1.    !      |  which is here not needed                    |
@@ -274,29 +248,21 @@ GCLOSE_OUT=.FALSE.
 YFMFILE='UNUSED'
 !
 IMI = GET_CURRENT_MODEL_INDEX()
-CALL PRESSUREZ(CLUOUT,                            &
+CALL PRESSUREZ(CLUOUT,                                               &
               CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,ITCOUNT,XRELAX,IMI,  &
               XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY,ZDXHATM,ZDYHATM,ZRHOM, &
-              ZAF,ZBFY,ZCF,ZTRIGSX,ZTRIGSY,IIFAXX,IIFAXY,ZPABSM,     &
+              ZAF,ZBFY,ZCF,ZTRIGSX,ZTRIGSY,IIFAXX,IIFAXY,            &
               IRR,IRRL,IRRI,ZDRYMASST,ZREFMASS,ZMASS_O_PHI0,         &
               ZTH,ZRR,XRHODREF,XTHVREF,XRVREF,XEXNREF, XLINMASS,     &
               ZRU,ZRV,ZRW,ZPABST,                                    &
-              ZBFB,                                                  &
-              ZBF_SXP2_YP1_Z,                                        &
-              PRESIDUAL                   )
+              ZBFB,ZBF_SXP2_YP1_Z,PRESIDUAL                          )
 !
 DEALLOCATE(ZBFY,ZTRIGSX,ZTRIGSY,ZRR,ZBF_SXP2_YP1_Z)
 !*       3.2     return to the historical variables
 !
-IF (OINST == 'T') THEN
-  XUT(:,:,:) = ZRU(:,:,:) / MXM(XRHODJ)
-  XVT(:,:,:) = ZRV(:,:,:) / MYM(XRHODJ)
-  XWT(:,:,:) = ZRW(:,:,:) / MZM(1,IKU,1,XRHODJ)
-ELSEIF (OINST == 'M') THEN
-  XUM(:,:,:) = ZRU(:,:,:) / MXM(XRHODJ)
-  XVM(:,:,:) = ZRV(:,:,:) / MYM(XRHODJ)
-  XWM(:,:,:) = ZRW(:,:,:) / MZM(1,IKU,1,XRHODJ)
-END IF
+XUT(:,:,:) = ZRU(:,:,:) / MXM(XRHODJ)
+XVT(:,:,:) = ZRV(:,:,:) / MYM(XRHODJ)
+XWT(:,:,:) = ZRW(:,:,:) / MZM(1,IKU,1,XRHODJ)
 !
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/boundaries.f90 b/src/MNH/boundaries.f90
index 58d6bd7bd..5800cbc77 100644
--- a/src/MNH/boundaries.f90
+++ b/src/MNH/boundaries.f90
@@ -16,8 +16,7 @@ INTERFACE
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,   &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS,   &
             PRHODJ,                                                 &
-            PUM,PVM,PWM,PTHM,PTKEM,PRM,PSVM,PSRCM,                  &
-            PUT,PVT,PWT,PTHT,PTKET,PRT,PSVT                         )
+            PUT,PVT,PWT,PTHT,PTKET,PRT,PSVT,PSRCT                   )
 !
 REAL,                  INTENT(IN) :: PTSTEP        ! time step dt
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
@@ -49,10 +48,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(IN) :: PLBYRS  ,PLBYSVS  ! in x and y-di
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ    ! Jacobian * dry density of
                                                   !  the reference state
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUM,PVM,PWM,PTHM,PTKEM,PSRCM
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRM,PSVM
-                                                      ! Variables at t-dt
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT,PTHT,PTKET
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT,PTHT,PTKET,PSRCT
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRT,PSVT
                                                       ! Variables at t
 !
@@ -72,8 +68,7 @@ END MODULE MODI_BOUNDARIES
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,   &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS,   &
             PRHODJ,                                                 &
-            PUM,PVM,PWM,PTHM,PTKEM,PRM,PSVM,PSRCM,                  &
-            PUT,PVT,PWT,PTHT,PTKET,PRT,PSVT                         )
+            PUT,PVT,PWT,PTHT,PTKET,PRT,PSVT,PSRCT                   )
 !     ####################################################################
 !
 !!****  *BOUNDARIES* - routine to prepare the Lateral Boundary Conditions for
@@ -166,6 +161,7 @@ END MODULE MODI_BOUNDARIES
 !!      Modification    05/06               Remove EPS
 !!      Modification    12/2010  (Chong)    Add boundary condition for ions
 !!                                          (fair weather profiles)
+!!      Modification    04/2013  (C.Lac)    Remove instant M               
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -175,15 +171,15 @@ USE MODD_CTURB
 USE MODD_CONF
 USE MODD_NSV
 USE MODD_CH_MNHC_n,   ONLY : LUSECHEM, LUSECHIC
-USE MODD_CH_AEROSOL ,ONLY : LORILAM
+USE MODD_CH_AEROSOL , ONLY : LORILAM
 USE MODD_DUST
-USE MODD_SALT,       ONLY : LSALT
-USE MODD_PASPOL,       ONLY : LPASPOL
-USE MODD_CONDSAMP,     ONLY : LCONDSAMP
+USE MODD_SALT,        ONLY : LSALT
+USE MODD_PASPOL,      ONLY : LPASPOL
+USE MODD_CONDSAMP,    ONLY : LCONDSAMP
 USE MODD_ELEC_DESCR             
 USE MODD_ELEC_n                 
 USE MODD_REF_n    
-USE MODD_PARAM_n,    ONLY : CELEC 
+USE MODD_PARAM_n,     ONLY : CELEC 
 !
 USE MODE_MODELN_HANDLER
 !
@@ -231,10 +227,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(IN) :: PLBYRS  ,PLBYSVS  ! in x and y-di
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ    ! Jacobian * dry density of
                                                   !  the reference state
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUM,PVM,PWM,PTHM,PTKEM,PSRCM
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRM,PSVM
-                                                      ! Variables at t-dt
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT,PTHT,PTKET
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT,PTHT,PTKET,PSRCT
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRT,PSVT
                                                       ! Variables at t
 !
@@ -289,7 +282,7 @@ LOGICAL              :: GCSTMP
 !              ----------------------------------------------
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1 + JPVEXT
-IKE = SIZE(PUM,3) - JPVEXT
+IKE = SIZE(PUT,3) - JPVEXT
 IMI = GET_CURRENT_MODEL_INDEX()
 !
 !-------------------------------------------------------------------------------
@@ -310,17 +303,7 @@ IF(SIZE(PTHT) /= 0) PTHT (:,:,IKB-1)  = PTHT (:,:,IKB)
 IF(SIZE(PTKET) /= 0) PTKET(:,:,IKB-1) = PTKET(:,:,IKB)
 IF(SIZE(PRT) /= 0)  PRT  (:,:,IKB-1,:)= PRT  (:,:,IKB,:)
 IF(SIZE(PSVT)/= 0)  PSVT (:,:,IKB-1,:)= PSVT (:,:,IKB,:)
-!
-!         at the instant t-dt 
-!
-PUM  (:,:,IKB-1)   = PUM  (:,:,IKB) 
-PVM  (:,:,IKB-1)   = PVM  (:,:,IKB)
-PWM  (:,:,IKB-1)   = PWM  (:,:,IKB)
-PTHM (:,:,IKB-1)   = PTHM (:,:,IKB)
-IF(SIZE(PTKEM) /= 0) PTKEM(:,:,IKB-1)   = PTKEM(:,:,IKB)
-IF (KRR>0)           PRM  (:,:,IKB-1,:) = PRM  (:,:,IKB,:)
-IF (KSV>0)           PSVM (:,:,IKB-1,:) = PSVM (:,:,IKB,:)
-IF(SIZE(PSRCM) /= 0) PSRCM(:,:,IKB-1)   = PSRCM(:,:,IKB)
+IF(SIZE(PSRCT) /= 0) PSRCT(:,:,IKB-1)   = PSRCT(:,:,IKB)
 !
 !
 !*       2.2    COMPUTE THE FIELD EXTRAPOLATIONS AT THE TOP
@@ -334,25 +317,14 @@ IF(SIZE(PTHT) /= 0) PTHT (:,:,IKE+1)  = PTHT (:,:,IKE)
 IF(SIZE(PTKET) /= 0) PTKET(:,:,IKE+1) = PTKET(:,:,IKE)
 IF(SIZE(PRT) /= 0) PRT  (:,:,IKE+1,:) = PRT  (:,:,IKE,:)
 IF(SIZE(PSVT)/= 0) PSVT (:,:,IKE+1,:) = PSVT (:,:,IKE,:)
-!
-!         at the instant t-dt 
-!
-PWM  (:,:,IKE+1)   = 0.           
-PUM  (:,:,IKE+1)   = PUM  (:,:,IKE) 
-PVM  (:,:,IKE+1)   = PVM  (:,:,IKE)
-PTHM (:,:,IKE+1)   = PTHM (:,:,IKE)
-IF(SIZE(PTKEM) /= 0) PTKEM(:,:,IKE+1)   = PTKEM(:,:,IKE)
-IF (KRR>0)           PRM  (:,:,IKE+1,:) = PRM  (:,:,IKE,:)
-IF (KSV>0)           PSVM (:,:,IKE+1,:) = PSVM (:,:,IKE,:)
-IF(SIZE(PSRCM) /= 0) PSRCM(:,:,IKE+1)   = PSRCM(:,:,IKE)
+IF(SIZE(PSRCT) /= 0) PSRCT(:,:,IKE+1)   = PSRCT(:,:,IKE)
 
 ! specific for positive and negative ions mixing ratios (1/kg)
-!        valid for PPM advection scheme
 
 IF (NSV_ELEC .NE. 0) THEN
-
+!
    IF (SIZE(PWT) /= 0) THEN
-     WHERE ( (1.5*PWT(:,:,IKE+1) - 0.5*PWM(:,:,IKE+1)) .GE. 0.)    ! Outflow
+     WHERE ( PWT(:,:,IKE+1)  .GE. 0.)    ! Outflow
          PSVT (:,:,IKE+1,NSV_ELECBEG) = 2.*PSVT (:,:,IKE,NSV_ELECBEG) -  &
                                            PSVT (:,:,IKE-1,NSV_ELECBEG)
          PSVT (:,:,IKE+1,NSV_ELECEND) = 2.*PSVT (:,:,IKE,NSV_ELECEND) -  &
@@ -362,8 +334,9 @@ IF (NSV_ELEC .NE. 0) THEN
          PSVT (:,:,IKE+1,NSV_ELECEND) = XCION_NEG_FW(:,:,IKE+1)
      END WHERE
    ENDIF
-
+!
 END IF
+
 !
 !
 !-------------------------------------------------------------------------------
@@ -372,7 +345,7 @@ END IF
 !              ---------------------------
 !
 !
-IF ( CCONF == 'START' .AND. KTCOUNT == 1) THEN
+IF ( KTCOUNT == 1) THEN
   ZTSTEP = 0.
 ELSE
   ZTSTEP = PTSTEP
@@ -384,7 +357,7 @@ IF ( SIZE(PLBXTHS,1) /= 0 .AND.                      &
   ZLBXVT(:,:,:) = PLBXVM(:,:,:) + ZTSTEP * PLBXVS(:,:,:)
   ZLBXWT(:,:,:) = PLBXWM(:,:,:) + ZTSTEP * PLBXWS(:,:,:)
   ZLBXTHT(:,:,:) = PLBXTHM(:,:,:) + ZTSTEP * PLBXTHS(:,:,:)
-  IF ( SIZE(PTKEM,1) /= 0 ) THEN
+  IF ( SIZE(PTKET,1) /= 0 ) THEN
     ZLBXTKET(:,:,:) = PLBXTKEM(:,:,:) + ZTSTEP * PLBXTKES(:,:,:)
   END IF
   IF ( KRR > 0) THEN
@@ -399,7 +372,7 @@ ELSE
   ZLBXVT(:,:,:) = PLBXVM(:,:,:)
   ZLBXWT(:,:,:) = PLBXWM(:,:,:)
   ZLBXTHT(:,:,:) = PLBXTHM(:,:,:)
-  IF ( SIZE(PTKEM,1) /= 0 ) THEN
+  IF ( SIZE(PTKET,1) /= 0 ) THEN
     ZLBXTKET(:,:,:) = PLBXTKEM(:,:,:) 
   END IF
   IF ( KRR > 0) THEN
@@ -416,7 +389,7 @@ IF ( SIZE(PLBYTHS,1) /= 0 .AND.                       &
   ZLBYUT(:,:,:) = PLBYUM(:,:,:) + ZTSTEP * PLBYUS(:,:,:)
   ZLBYWT(:,:,:) = PLBYWM(:,:,:) + ZTSTEP * PLBYWS(:,:,:)
   ZLBYTHT(:,:,:) = PLBYTHM(:,:,:) + ZTSTEP * PLBYTHS(:,:,:)
-  IF ( SIZE(PTKEM,1) /= 0 ) THEN
+  IF ( SIZE(PTKET,1) /= 0 ) THEN
     ZLBYTKET(:,:,:) = PLBYTKEM(:,:,:) + ZTSTEP * PLBYTKES(:,:,:)
   END IF
   IF ( KRR > 0) THEN
@@ -431,7 +404,7 @@ ELSE
   ZLBYUT(:,:,:) = PLBYUM(:,:,:)
   ZLBYWT(:,:,:) = PLBYWM(:,:,:)
   ZLBYTHT(:,:,:) = PLBYTHM(:,:,:)
-  IF ( SIZE(PTKEM,1) /= 0 ) THEN
+  IF ( SIZE(PTKET,1) /= 0 ) THEN
     ZLBYTKET(:,:,:) = PLBYTKEM(:,:,:) 
   END IF
   IF ( KRR > 0) THEN
@@ -466,20 +439,11 @@ SELECT CASE ( HLBCX(1) )
        IF(SIZE(PTKET)/= 0) PTKET(IIB-JEXT,:,:)  = PTKET(IIB-1+JEXT,:,:)
        IF(SIZE(PRT) /= 0) PRT  (IIB-JEXT,:,:,:) = PRT  (IIB-1+JEXT,:,:,:)
        IF(SIZE(PSVT) /= 0) PSVT(IIB-JEXT,:,:,:) = PSVT (IIB-1+JEXT,:,:,:)
-!
-       PUM  (IIB-JEXT,:,:)   = PUM  (IIB       ,:,:)   ! never used during run
-       PVM  (IIB-JEXT,:,:)   = PVM  (IIB-1+JEXT,:,:)
-       PWM  (IIB-JEXT,:,:)   = PWM  (IIB-1+JEXT,:,:)
-       PTHM (IIB-JEXT,:,:)   = PTHM (IIB-1+JEXT,:,:)
-       IF(SIZE(PTKEM) /= 0) PTKEM(IIB-JEXT,:,:)   = PTKEM(IIB-1+JEXT,:,:)
-       PRM  (IIB-JEXT,:,:,:) = PRM  (IIB-1+JEXT,:,:,:)
-       PSVM (IIB-JEXT,:,:,:) = PSVM (IIB-1+JEXT,:,:,:)
-       IF(SIZE(PSRCM) /= 0) PSRCM (IIB-JEXT,:,:)   = PSRCM (IIB-1+JEXT,:,:)
+       IF(SIZE(PSRCT) /= 0) PSRCT (IIB-JEXT,:,:)   = PSRCT (IIB-1+JEXT,:,:)
 !
     END DO
 !
     IF(SIZE(PUT) /= 0) PUT(IIB     ,:,:)   = 0.    ! set the normal velocity
-    PUM  (IIB     ,:,:)   = 0.                     ! to zero
 !
 !
 !*       4.2  OPEN CASE:
@@ -501,17 +465,6 @@ SELECT CASE ( HLBCX(1) )
       ENDWHERE
     ENDIF
 !
-    PUM(IIB-JPHEXT,:,:)=0.
-    WHERE ( PUM(IIB,:,:) <= 0. )               !  OUTFLOW condition
-      PVM  (IIB-1,:,:) = 2.*PVM  (IIB,:,:)   -PVM  (IIB+1,:,:)
-      PWM  (IIB-1,:,:) = 2.*PWM  (IIB,:,:)   -PWM  (IIB+1,:,:)
-      PTHM (IIB-1,:,:) = 2.*PTHM (IIB,:,:)   -PTHM (IIB+1,:,:)
-!
-    ELSEWHERE                                   !  INFLOW  condition
-      PVM  (IIB-1,:,:) = PLBXVM   (1,:,:)
-      PWM  (IIB-1,:,:) = PLBXWM   (1,:,:) 
-      PTHM (IIB-1,:,:) = PLBXTHM  (1,:,:)
-    ENDWHERE
 !
   IF(SIZE(PTKET) /= 0) THEN
     WHERE ( PUT(IIB,:,:) <= 0. )               !  OUTFLOW condition
@@ -521,14 +474,6 @@ SELECT CASE ( HLBCX(1) )
     ENDWHERE
   END IF
     !
-  IF(SIZE(PTKEM) /= 0) THEN
-    WHERE ( PUM(IIB,:,:) <= 0. )               !  OUTFLOW condition
-      PTKEM(IIB-1,:,:) = MAX(XTKEMIN, 2.*PTKEM(IIB,:,:)-PTKEM(IIB+1,:,:))  
-    ELSEWHERE                                  !  INFLOW  condition
-      PTKEM(IIB-1,:,:) = MAX(XTKEMIN,PLBXTKEM(1,:,:))  
-    ENDWHERE
-  END IF
-!
 !                      Case with KRR moist variables 
 ! 
 ! 
@@ -542,15 +487,9 @@ SELECT CASE ( HLBCX(1) )
       END WHERE
     END IF
     !
-    WHERE ( PUM(IIB,:,:) <= 0. )         !  OUTFLOW condition
-      PRM(IIB-1,:,:,JRR) = MAX(0.,2.*PRM(IIB,:,:,JRR) -PRM(IIB+1,:,:,JRR))
-    ELSEWHERE                            !  INFLOW  condition
-      PRM(IIB-1,:,:,JRR) = MAX(0.,PLBXRM(1,:,:,JRR))
-    END WHERE
-    !
   END DO
 !
-  IF(SIZE(PSRCM) /= 0) PSRCM (IIB-1,:,:)   = PSRCM (IIB,:,:)
+  IF(SIZE(PSRCT) /= 0) PSRCT (IIB-1,:,:)   = PSRCT (IIB,:,:)
 !
 !                       Case with KSV scalar variables  
   DO JSV=1 ,KSV
@@ -563,13 +502,6 @@ SELECT CASE ( HLBCX(1) )
       END WHERE
     END IF
     !
-    WHERE ( PUM(IIB,:,:) <= 0. )         !  OUTFLOW condition
-      PSVM(IIB-1,:,:,JSV) = MAX(XSVMIN(JSV),2.*PSVM(IIB,:,:,JSV) - &
-                                             PSVM(IIB+1,:,:,JSV))
-    ELSEWHERE                            !  INFLOW  condition
-      PSVM(IIB-1,:,:,JSV) = MAX(XSVMIN(JSV),PLBXSVM(1,:,:,JSV))
-    END WHERE
-    !
   END DO
 !
 !
@@ -598,20 +530,11 @@ SELECT CASE ( HLBCX(2) )
        IF(SIZE(PTKET) /= 0) PTKET(IIE+JEXT,:,:) = PTKET(IIE+1-JEXT,:,:)
        IF(SIZE(PRT) /= 0) PRT  (IIE+JEXT,:,:,:) = PRT  (IIE+1-JEXT,:,:,:)
        IF(SIZE(PSVT) /= 0) PSVT(IIE+JEXT,:,:,:) = PSVT (IIE+1-JEXT,:,:,:)
-!
-       PUM  (IIE+JEXT,:,:)   = PUM  (IIE       ,:,:)   ! never used during run
-       PVM  (IIE+JEXT,:,:)   = PVM  (IIE+1-JEXT,:,:)
-       PWM  (IIE+JEXT,:,:)   = PWM  (IIE+1-JEXT,:,:)
-       PTHM (IIE+JEXT,:,:)   = PTHM (IIE+1-JEXT,:,:)
-       IF(SIZE(PTKEM) /= 0) PTKEM(IIE+JEXT,:,:)   = PTKEM(IIE+1-JEXT,:,:)
-       PRM  (IIE+JEXT,:,:,:) = PRM  (IIE+1-JEXT,:,:,:)
-       PSVM (IIE+JEXT,:,:,:) = PSVM (IIE+1-JEXT,:,:,:)
-       IF(SIZE(PSRCM) /= 0) PSRCM (IIE+JEXT,:,:)   = PSRCM (IIE+1-JEXT,:,:)
+       IF(SIZE(PSRCT) /= 0) PSRCT (IIE+JEXT,:,:)= PSRCT (IIE+1-JEXT,:,:)
 !
     END DO
 !
     IF(SIZE(PUT) /= 0) PUT(IIE+1   ,:,:)   = 0.     ! set the normal velocity
-    PUM  (IIE+1   ,:,:)   = 0.                      ! to zero
 !
 !*       5.2  OPEN CASE:
 !             =========
@@ -631,17 +554,6 @@ SELECT CASE ( HLBCX(2) )
         PTHT (IIE+1,:,:) = ZLBXTHT  (ILBX,:,:)
       ENDWHERE
     ENDIF
-!
-    WHERE ( PUM(IIE+1,:,:) >= 0. )               !  OUTFLOW condition
-      PVM  (IIE+1,:,:) = 2.*PVM  (IIE,:,:)   -PVM  (IIE-1,:,:)
-      PWM  (IIE+1,:,:) = 2.*PWM  (IIE,:,:)   -PWM  (IIE-1,:,:)
-      PTHM (IIE+1,:,:) = 2.*PTHM (IIE,:,:)   -PTHM (IIE-1,:,:)
-!
-    ELSEWHERE                                   !  INFLOW  condition
-      PVM  (IIE+1,:,:) = PLBXVM   (ILBX,:,:)
-      PWM  (IIE+1,:,:) = PLBXWM   (ILBX,:,:) 
-      PTHM (IIE+1,:,:) = PLBXTHM  (ILBX,:,:)
-    ENDWHERE
 !
   IF(SIZE(PTKET) /= 0) THEN
     ILBX = SIZE(PLBXTKEM,1)
@@ -652,13 +564,6 @@ SELECT CASE ( HLBCX(2) )
     ENDWHERE
   END IF
     !
-  IF(SIZE(PTKEM) /= 0) THEN
-    WHERE ( PUM(IIE+1,:,:) >= 0. )             !  OUTFLOW condition
-      PTKEM(IIE+1,:,:) = MAX(XTKEMIN, 2.*PTKEM(IIE,:,:)-PTKEM(IIE-1,:,:))  
-    ELSEWHERE                                  !  INFLOW  condition
-      PTKEM(IIE+1,:,:) = MAX(XTKEMIN,PLBXTKEM(ILBX,:,:))  
-    ENDWHERE
-  END IF
 !
 !                      Case with KRR moist variables 
 ! 
@@ -674,15 +579,9 @@ SELECT CASE ( HLBCX(2) )
       END WHERE
     END IF
     !
-    WHERE ( PUM(IIE+1,:,:) >= 0. )       !  OUTFLOW condition
-      PRM(IIE+1,:,:,JRR) = MAX(0.,2.*PRM(IIE,:,:,JRR) -PRM(IIE-1,:,:,JRR))
-    ELSEWHERE                            !  INFLOW  condition
-      PRM(IIE+1,:,:,JRR) = MAX(0.,PLBXRM(ILBX,:,:,JRR))
-    END WHERE
   END DO
 !
-  IF(SIZE(PSRCM) /= 0) PSRCM (IIE+1,:,:)   = PSRCM (IIE,:,:)
-!
+  IF(SIZE(PSRCT) /= 0) PSRCT (IIE+1,:,:)   = PSRCT (IIE,:,:)
 !                       Case with KSV scalar variables  
   DO JSV=1 ,KSV
     ILBX=SIZE(PLBXSVM,1)
@@ -695,12 +594,6 @@ SELECT CASE ( HLBCX(2) )
       END WHERE
     END IF
     !
-    WHERE ( PUM(IIE+1,:,:) >= 0. )       !  OUTFLOW condition
-      PSVM(IIE+1,:,:,JSV) = MAX(XSVMIN(JSV),2.*PSVM(IIE,:,:,JSV) - &
-                                             PSVM(IIE-1,:,:,JSV))
-    ELSEWHERE                            !  INFLOW  condition
-      PSVM(IIE+1,:,:,JSV) = MAX(XSVMIN(JSV),PLBXSVM(ILBX,:,:,JSV))
-    END WHERE
   END DO
 !
 !
@@ -728,20 +621,11 @@ SELECT CASE ( HLBCY(1) )
        IF(SIZE(PTKET) /= 0) PTKET(:,IJB-JEXT,:) = PTKET(:,IJB-1+JEXT,:)
        IF(SIZE(PRT) /= 0) PRT  (:,IJB-JEXT,:,:) = PRT  (:,IJB-1+JEXT,:,:)
        IF(SIZE(PSVT) /= 0) PSVT (:,IJB-JEXT,:,:)= PSVT (:,IJB-1+JEXT,:,:)
-!
-       PUM  (:,IJB-JEXT,:)   = PUM  (:,IJB-1+JEXT,:)
-       PVM  (:,IJB-JEXT,:)   = PVM  (:,IJB       ,:)   ! never used during run
-       PWM  (:,IJB-JEXT,:)   = PWM  (:,IJB-1+JEXT,:)
-       PTHM (:,IJB-JEXT,:)   = PTHM (:,IJB-1+JEXT,:)
-       IF(SIZE(PTKEM) /= 0) PTKEM(:,IJB-JEXT,:)   = PTKEM(:,IJB-1+JEXT,:)
-       PRM  (:,IJB-JEXT,:,:) = PRM  (:,IJB-1+JEXT,:,:)
-       PSVM (:,IJB-JEXT,:,:) = PSVM (:,IJB-1+JEXT,:,:)
-       IF(SIZE(PSRCM) /= 0) PSRCM(:,IJB-JEXT,:)   = PSRCM(:,IJB-1+JEXT,:)
+       IF(SIZE(PSRCT) /= 0) PSRCT(:,IJB-JEXT,:) = PSRCT(:,IJB-1+JEXT,:)
 !
     END DO
 !
     IF(SIZE(PVT) /= 0) PVT(:,IJB     ,:)   = 0.       ! set the normal velocity
-    PVM  (:,IJB     ,:)   = 0.                        ! to zero
 !
 !*       6.2  OPEN CASE:
 !             =========
@@ -760,17 +644,6 @@ SELECT CASE ( HLBCY(1) )
         PTHT (:,IJB-1,:) = ZLBYTHT  (:,1,:)
       ENDWHERE
     ENDIF
-!
-    PVM(:,IJB-JPHEXT,:)=0.
-    WHERE ( PVM(:,IJB,:) <= 0. )               !  OUTFLOW condition
-      PUM  (:,IJB-1,:) = 2.*PUM  (:,IJB,:)   -PUM  (:,IJB+1,:)
-      PWM  (:,IJB-1,:) = 2.*PWM  (:,IJB,:)   -PWM  (:,IJB+1,:)
-      PTHM (:,IJB-1,:) = 2.*PTHM (:,IJB,:)   -PTHM (:,IJB+1,:)
-    ELSEWHERE                                  !  INFLOW  condition
-      PUM  (:,IJB-1,:) = PLBYUM   (:,1,:)
-      PWM  (:,IJB-1,:) = PLBYWM   (:,1,:) 
-      PTHM (:,IJB-1,:) = PLBYTHM  (:,1,:)
-    ENDWHERE
 !
   IF(SIZE(PTKET) /= 0) THEN
     WHERE ( PVT(:,IJB,:) <= 0. )             !  OUTFLOW condition
@@ -780,13 +653,6 @@ SELECT CASE ( HLBCY(1) )
     ENDWHERE
   END IF
     !
-  IF(SIZE(PTKEM) /= 0) THEN
-    WHERE ( PVM(:,IJB,:) <= 0. )             !  OUTFLOW condition
-      PTKEM(:,IJB-1,:) = MAX(XTKEMIN, 2.*PTKEM(:,IJB,:)-PTKEM(:,IJB+1,:))  
-    ELSEWHERE                                !  INFLOW  condition
-      PTKEM(:,IJB-1,:) = MAX(XTKEMIN,PLBYTKEM(:,1,:))  
-    ENDWHERE
-  END IF
 !
 !                      Case with KRR moist variables 
 ! 
@@ -800,14 +666,9 @@ SELECT CASE ( HLBCY(1) )
       END WHERE
     END IF
     !
-    WHERE ( PVM(:,IJB,:) <= 0. )         !  OUTFLOW condition
-      PRM(:,IJB-1,:,JRR) = MAX(0.,2.*PRM(:,IJB,:,JRR) -PRM(:,IJB+1,:,JRR))
-    ELSEWHERE                            !  INFLOW  condition
-      PRM(:,IJB-1,:,JRR) = MAX(0.,PLBYRM(:,1,:,JRR))
-    END WHERE
   END DO
 !
-  IF(SIZE(PSRCM) /= 0) PSRCM(:,IJB-1,:)   = PSRCM(:,IJB,:)
+  IF(SIZE(PSRCT) /= 0) PSRCT(:,IJB-1,:)   = PSRCT(:,IJB,:)
 !
 !                       Case with KSV scalar variables  
 !
@@ -821,12 +682,6 @@ SELECT CASE ( HLBCY(1) )
       END WHERE
     END IF
     !
-    WHERE ( PVM(:,IJB,:) <= 0. )         !  OUTFLOW condition
-      PSVM(:,IJB-1,:,JSV) = MAX(XSVMIN(JSV),2.*PSVM(:,IJB,:,JSV) - &
-                                             PSVM(:,IJB+1,:,JSV))
-    ELSEWHERE                            !  INFLOW  condition
-      PSVM(:,IJB-1,:,JSV) = MAX(XSVMIN(JSV),PLBYSVM(:,1,:,JSV))
-    END WHERE
   END DO
 !
 !
@@ -855,20 +710,11 @@ SELECT CASE ( HLBCY(2) )
        IF(SIZE(PTKET) /= 0) PTKET(:,IJE+JEXT,:) = PTKET(:,IJE+1-JEXT,:)
        IF(SIZE(PRT) /= 0) PRT  (:,IJE+JEXT,:,:) = PRT  (:,IJE+1-JEXT,:,:)
        IF(SIZE(PSVT) /= 0) PSVT (:,IJE+JEXT,:,:)= PSVT (:,IJE+1-JEXT,:,:)
-!
-       PUM  (:,IJE+JEXT,:)   = PUM  (:,IJE+1-JEXT,:)
-       PVM  (:,IJE+JEXT,:)   = PVM  (:,IJE       ,:)   ! never used during run
-       PWM  (:,IJE+JEXT,:)   = PWM  (:,IJE+1-JEXT,:)
-       PTHM (:,IJE+JEXT,:)   = PTHM (:,IJE+1-JEXT,:)
-       IF(SIZE(PTKEM) /= 0) PTKEM(:,IJE+JEXT,:)   = PTKEM(:,IJE+1-JEXT,:)
-       PRM  (:,IJE+JEXT,:,:) = PRM  (:,IJE+1-JEXT,:,:)
-       PSVM (:,IJE+JEXT,:,:) = PSVM (:,IJE+1-JEXT,:,:)
-       IF(SIZE(PSRCM) /= 0) PSRCM(:,IJE+JEXT,:)   = PSRCM(:,IJE+1-JEXT,:)
+       IF(SIZE(PSRCT) /= 0) PSRCT(:,IJE+JEXT,:) = PSRCT(:,IJE+1-JEXT,:)
 !
     END DO
 !
     IF(SIZE(PVT) /= 0) PVT(:,IJE+1   ,:)   = 0.    ! set the normal velocity
-    PVM  (:,IJE+1   ,:)   = 0.                     ! to zero
 !
 !*       4.3.2  OPEN CASE:
 !               ========= 
@@ -888,16 +734,6 @@ SELECT CASE ( HLBCY(2) )
         PTHT (:,IJE+1,:) = ZLBYTHT  (:,ILBY,:)
       ENDWHERE
     ENDIF
-!
-    WHERE ( PVM(:,IJE+1,:) >= 0. )               !  OUTFLOW condition
-      PUM  (:,IJE+1,:) = 2.*PUM  (:,IJE,:)   -PUM  (:,IJE-1,:)
-      PWM  (:,IJE+1,:) = 2.*PWM  (:,IJE,:)   -PWM  (:,IJE-1,:)
-      PTHM (:,IJE+1,:) = 2.*PTHM (:,IJE,:)   -PTHM (:,IJE-1,:)
-    ELSEWHERE                                   !  INFLOW  condition
-      PUM  (:,IJE+1,:) = PLBYUM   (:,ILBY,:)
-      PWM  (:,IJE+1,:) = PLBYWM   (:,ILBY,:) 
-      PTHM (:,IJE+1,:) = PLBYTHM  (:,ILBY,:)
-    ENDWHERE
 !
   IF(SIZE(PTKET) /= 0) THEN
     ILBY=SIZE(PLBYTKEM,2)
@@ -908,14 +744,6 @@ SELECT CASE ( HLBCY(2) )
     ENDWHERE
   ENDIF
     !
-  IF(SIZE(PTKEM) /= 0) THEN
-    WHERE ( PVM(:,IJE+1,:) >= 0. )             !  OUTFLOW condition
-      PTKEM(:,IJE+1,:) = MAX(XTKEMIN, 2.*PTKEM(:,IJE,:)-PTKEM(:,IJE-1,:))  
-    ELSEWHERE                                  !  INFLOW  condition
-      PTKEM(:,IJE+1,:) = MAX(XTKEMIN,PLBYTKEM(:,ILBY,:))  
-    ENDWHERE
-  END IF
-!
 !                      Case with KRR moist variables 
 ! 
 ! 
@@ -930,14 +758,9 @@ SELECT CASE ( HLBCY(2) )
       END WHERE
     END IF
     !
-    WHERE ( PVM(:,IJE+1,:) >= 0. )         !  OUTFLOW condition
-      PRM(:,IJE+1,:,JRR) = MAX(0.,2.*PRM(:,IJE,:,JRR) -PRM(:,IJE-1,:,JRR))
-    ELSEWHERE                            !  INFLOW  condition
-      PRM(:,IJE+1,:,JRR) = MAX(0.,PLBYRM(:,ILBY,:,JRR))
-    END WHERE
   END DO
 !
-  IF(SIZE(PSRCM) /= 0) PSRCM(:,IJE+1,:)   = PSRCM(:,IJE,:)
+  IF(SIZE(PSRCT) /= 0) PSRCT(:,IJE+1,:)   = PSRCT(:,IJE,:)
 !
 !                       Case with KSV scalar variables  
   DO JSV=1 ,KSV
@@ -952,12 +775,6 @@ SELECT CASE ( HLBCY(2) )
       END WHERE
     END IF
     !
-    WHERE ( PVM(:,IJE+1,:) >= 0. )         !  OUTFLOW condition
-      PSVM(:,IJE+1,:,JSV) = MAX(XSVMIN(JSV),2.*PSVM(:,IJE,:,JSV) - &
-                                            PSVM(:,IJE-1,:,JSV))
-    ELSEWHERE                            !  INFLOW  condition
-      PSVM(:,IJE+1,:,JSV) = MAX(XSVMIN(JSV),PLBYSVM(:,ILBY,:,JSV))
-    END WHERE
   END DO
 !
 !
@@ -982,9 +799,7 @@ IF (LUSECHEM .AND. IMI == 1) THEN
   DO JSV=NSV_CHEMBEG,NSV_CHEMEND
     IF (GCHBOUNDARY(JSV-NSV_CHEMBEG+1))  THEN
       IF (SIZE(PSVT)>0) THEN
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVT(:,:,:,JSV))
-      ELSE
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVM(:,:,:,JSV))
+        CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV))
       ENDIF
     ENDIF
   ENDDO
@@ -1007,14 +822,11 @@ IF (LUSECHIC .AND. IMI == 1) THEN
   DO JSV=NSV_CHICBEG,NSV_CHICEND
     IF (GICBOUNDARY(JSV-NSV_CHICBEG+1))  THEN
       IF (SIZE(PSVT)>0) THEN
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVT(:,:,:,JSV))
-      ELSE
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVM(:,:,:,JSV))
+        CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV))
       ENDIF
     ENDIF
   ENDDO
 ENDIF
-!
 IF (LORILAM .AND. IMI == 1) THEN
   IF (GFIRSTCALL2) THEN
     ALLOCATE(GAERBOUNDARY(NSV_AER))
@@ -1032,9 +844,7 @@ IF (LORILAM .AND. IMI == 1) THEN
   DO JSV=NSV_AERBEG,NSV_AEREND
     IF (GAERBOUNDARY(JSV-NSV_AERBEG+1)) THEN
       IF (SIZE(PSVT)>0) THEN
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVT(:,:,:,JSV))
-      ELSE
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVM(:,:,:,JSV))
+        CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV))
       ENDIF
     ENDIF
   ENDDO
@@ -1057,9 +867,7 @@ IF (LDUST .AND. IMI == 1) THEN
   DO JSV=NSV_DSTBEG,NSV_DSTEND
     IF (GDSTBOUNDARY(JSV-NSV_DSTBEG+1)) THEN
       IF (SIZE(PSVT)>0) THEN
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVT(:,:,:,JSV))
-      ELSE
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVM(:,:,:,JSV))
+        CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV))
       ENDIF
     ENDIF
   ENDDO 
@@ -1082,9 +890,7 @@ IF (LSALT .AND. IMI == 1) THEN
   DO JSV=NSV_SLTBEG,NSV_SLTEND
     IF (GSLTBOUNDARY(JSV-NSV_SLTBEG+1)) THEN
       IF (SIZE(PSVT)>0) THEN
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVT(:,:,:,JSV))
-      ELSE
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVM(:,:,:,JSV))
+        CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV))
       ENDIF
     ENDIF
   ENDDO
@@ -1107,9 +913,7 @@ IF ( LPASPOL .AND. IMI == 1) THEN
   DO JSV=NSV_PPBEG,NSV_PPEND
     IF (GPPBOUNDARY(JSV-NSV_PPBEG+1)) THEN
       IF (SIZE(PSVT)>0) THEN
-       CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUT,PVT,PSVT(:,:,:,JSV))
-      ELSE
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVM(:,:,:,JSV))
+       CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV))
       ENDIF
     ENDIF
   ENDDO
@@ -1132,16 +936,14 @@ IF ( LCONDSAMP .AND. IMI == 1) THEN
   DO JSV=NSV_CSBEG,NSV_CSEND
     IF (GCSBOUNDARY(JSV-NSV_CSBEG+1)) THEN
       IF (SIZE(PSVT)>0) THEN
-       CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUT,PVT,PSVT(:,:,:,JSV))
-      ELSE
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PSVM(:,:,:,JSV),PUM,PVM,PSVM(:,:,:,JSV))
+       CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV))
       ENDIF
     ENDIF
   ENDDO
 ENDIF
 !
 IF ( CELEC /= 'NONE' .AND. IMI == 1) THEN
-  CALL ION_BOUNDARIES (HLBCX,HLBCY,PUM,PVM,PUT,PVT,PSVT)
+  CALL ION_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT)
 ENDIF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/budget.f90 b/src/MNH/budget.f90
index 9728b6628..c3606691e 100644
--- a/src/MNH/budget.f90
+++ b/src/MNH/budget.f90
@@ -85,7 +85,8 @@ END MODULE MODI_BUDGET
 USE MODD_BUDGET
 USE MODD_LUNIT
 !USE MODD_CONF_n
-USE MODD_NSV, ONLY : NSV
+USE MODD_CONF, ONLY : LCHECK
+USE MODD_NSV,  ONLY : NSV
 USE MODD_LES
 !
 USE MODE_FM
@@ -95,6 +96,8 @@ USE MODI_LES_BUDGET
 USE MODI_CART_COMPRESS
 USE MODI_MASK_COMPRESS
 !
+USE MODE_MPPDB
+!
 USE MODI_SECOND_MNH
 !
 IMPLICIT NONE
@@ -114,8 +117,20 @@ INTEGER  :: IRESP   ! Return code of FM-routines
 REAL     :: ZTIME1  ! CPU time counter
 REAL     :: ZTIME2  ! CPU time counter
 !
+REAL     :: XPRECISION ! for reproductibility checks
+
 !-------------------------------------------------------------------------------
 !
+!* Reproductivity checks
+!  Warning: requires an adaptation of the makefile in order to run two runs in
+!  parallel for comparison
+!
+XPRECISION = 1E-10
+IF (LCHECK) THEN
+  CALL MPPDB_CHECK3D(PVARS,HBUVAR,XPRECISION)
+END IF
+!
+!
 !* call to LES budgets
 !
 IF (LLES_CALL) CALL LES_BUDGET(PVARS,KBUDN,HBUVAR)
diff --git a/src/MNH/budget_flags.f90 b/src/MNH/budget_flags.f90
index c074952ae..95f565e96 100644
--- a/src/MNH/budget_flags.f90
+++ b/src/MNH/budget_flags.f90
@@ -72,6 +72,7 @@ SUBROUTINE BUDGET_FLAGS(OUSERV, OUSERC, OUSERR,         &
 USE MODD_BUDGET
 USE MODD_NSV, ONLY : NSV
 USE MODD_LES
+USE MODD_CONF, ONLY : LCHECK
 !
 IMPLICIT NONE
 !  
@@ -86,21 +87,23 @@ LOGICAL, INTENT(IN) :: OUSERS    ! flag to use snow
 LOGICAL, INTENT(IN) :: OUSERG    ! flag to use graupel
 LOGICAL, INTENT(IN) :: OUSERH    ! flag to use hail
 
+!*       0.2   Declarations of local variables :
+!
 !-------------------------------------------------------------------------------
 !
-LBUDGET_U  = (LBU_ENABLE .AND. LBU_RU  ) .OR.  LLES_CALL
-LBUDGET_V  = (LBU_ENABLE .AND. LBU_RV  ) .OR.  LLES_CALL
-LBUDGET_W  = (LBU_ENABLE .AND. LBU_RW  ) .OR.  LLES_CALL
-LBUDGET_TH = (LBU_ENABLE .AND. LBU_RTH ) .OR.  LLES_CALL
-LBUDGET_TKE= (LBU_ENABLE .AND. LBU_RTKE) .OR.  LLES_CALL
-LBUDGET_RV = (LBU_ENABLE .AND. LBU_RRV ) .OR. (LLES_CALL .AND. OUSERV)
-LBUDGET_RC = (LBU_ENABLE .AND. LBU_RRC ) .OR. (LLES_CALL .AND. OUSERC)
-LBUDGET_RR = (LBU_ENABLE .AND. LBU_RRR ) .OR. (LLES_CALL .AND. OUSERR)
-LBUDGET_RI = (LBU_ENABLE .AND. LBU_RRI ) .OR. (LLES_CALL .AND. OUSERI)
-LBUDGET_RS = (LBU_ENABLE .AND. LBU_RRS ) .OR. (LLES_CALL .AND. OUSERS)
-LBUDGET_RG = (LBU_ENABLE .AND. LBU_RRG ) .OR. (LLES_CALL .AND. OUSERG)
-LBUDGET_RH = (LBU_ENABLE .AND. LBU_RRH ) .OR. (LLES_CALL .AND. OUSERH)
-LBUDGET_SV = (LBU_ENABLE .AND. LBU_RSV ) .OR. (LLES_CALL .AND. NSV>0 )
+LBUDGET_U  = (LBU_ENABLE .AND. LBU_RU  ) .OR.  (LLES_CALL .OR. LCHECK )
+LBUDGET_V  = (LBU_ENABLE .AND. LBU_RV  ) .OR.  (LLES_CALL .OR. LCHECK )
+LBUDGET_W  = (LBU_ENABLE .AND. LBU_RW  ) .OR.  (LLES_CALL .OR. LCHECK )
+LBUDGET_TH = (LBU_ENABLE .AND. LBU_RTH ) .OR.  (LLES_CALL .OR. LCHECK )
+LBUDGET_TKE= (LBU_ENABLE .AND. LBU_RTKE) .OR.  (LLES_CALL .OR. LCHECK )
+LBUDGET_RV = (LBU_ENABLE .AND. LBU_RRV ) .OR. ((LLES_CALL .OR. LCHECK ).AND. OUSERV)
+LBUDGET_RC = (LBU_ENABLE .AND. LBU_RRC ) .OR. ((LLES_CALL .OR. LCHECK ).AND. OUSERC)
+LBUDGET_RR = (LBU_ENABLE .AND. LBU_RRR ) .OR. ((LLES_CALL .OR. LCHECK ).AND. OUSERR)
+LBUDGET_RI = (LBU_ENABLE .AND. LBU_RRI ) .OR. ((LLES_CALL .OR. LCHECK ).AND. OUSERI)
+LBUDGET_RS = (LBU_ENABLE .AND. LBU_RRS ) .OR. ((LLES_CALL .OR. LCHECK ).AND. OUSERS)
+LBUDGET_RG = (LBU_ENABLE .AND. LBU_RRG ) .OR. ((LLES_CALL .OR. LCHECK ).AND. OUSERG)
+LBUDGET_RH = (LBU_ENABLE .AND. LBU_RRH ) .OR. ((LLES_CALL .OR. LCHECK ).AND. OUSERH)
+LBUDGET_SV = (LBU_ENABLE .AND. LBU_RSV ) .OR. ((LLES_CALL .OR. LCHECK ).AND. NSV>0 )
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/c2r2_adjust.f90 b/src/MNH/c2r2_adjust.f90
index 92f46ca98..1e25d6267 100644
--- a/src/MNH/c2r2_adjust.f90
+++ b/src/MNH/c2r2_adjust.f90
@@ -12,7 +12,7 @@ INTERFACE
 !
       SUBROUTINE C2R2_ADJUST(KRR, HFMFILE, HLUOUT, HRAD,                  &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,    &
-                             PRHODJ, PPABSM, PSIGS, PPABST,               &
+                             PRHODJ, PSIGS, PPABST,                       &
                              PTHS, PRVS, PRCS, PCNUCS,                    &
                              PCCS, PSRCS, PCLDFR, PRRS )
          !
@@ -31,7 +31,6 @@ REAL,                     INTENT(IN)    :: PTSTEP   ! Double Time step
                                                    ! (single if cold start)
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t     
 !
@@ -55,7 +54,7 @@ END MODULE MODI_C2R2_ADJUST
 !     ##########################################################################
       SUBROUTINE C2R2_ADJUST(KRR, HFMFILE, HLUOUT, HRAD,                  &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,    &
-                             PRHODJ, PPABSM, PSIGS, PPABST,               &
+                             PRHODJ, PSIGS, PPABST,                       &
                              PTHS, PRVS, PRCS, PCNUCS,                    &
                              PCCS, PSRCS, PCLDFR, PRRS )
 !     ##########################################################################
@@ -183,7 +182,6 @@ REAL,                     INTENT(IN)    :: PTSTEP   ! Double Time step
                                                    ! (single if cold start)
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t     
 !
@@ -267,7 +265,7 @@ END WHERE
 !
 !*       2.2    estimate the Exner function at t+1
 !
-ZEXNS(:,:,:) = ( (2. * PPABST(:,:,:) - PPABSM(:,:,:)) / XP00 ) ** (XRD/XCPD)  
+ZEXNS(:,:,:) = (  PPABST(:,:,:)  / XP00 ) ** (XRD/XCPD)  
 !
 !    beginning of the iterative loop
 !
@@ -298,7 +296,7 @@ DO JITER =1,ITERMAX
 !*       2.7    compute the saturation mixing ratio at t+1
 !
   ZW2(:,:,:) =  ZW1(:,:,:) * ZEPS /              &
-                ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW1(:,:,:) )   
+                ( PPABST(:,:,:) - ZW1(:,:,:) )   
 !
 !*       2.8    compute the saturation mixing ratio derivative (rvs')
 !
diff --git a/src/MNH/c3r5_adjust.f90 b/src/MNH/c3r5_adjust.f90
index 6a4daa6a9..d784fc95e 100644
--- a/src/MNH/c3r5_adjust.f90
+++ b/src/MNH/c3r5_adjust.f90
@@ -12,7 +12,7 @@ INTERFACE
 !
       SUBROUTINE C3R5_ADJUST( KRR, KMI, HFMFILE, HLUOUT, HRAD,                 &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,         &
-                             PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, &
+                             PRHODREF, PRHODJ, PEXNREF, PSIGS, PPABST, &
                              PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT,         &
                              PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, PRHS,         &
                              PCCT, PCIT, PCNUCS, PCCS, PINUCS, PCIS,           &
@@ -36,7 +36,6 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODREF! Dry density of the
                                                    ! reference state
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PEXNREF ! Reference Exner function
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t     
 !
@@ -78,7 +77,7 @@ END MODULE MODI_C3R5_ADJUST
 !     ##########################################################################
       SUBROUTINE C3R5_ADJUST( KRR, KMI, HFMFILE, HLUOUT, HRAD,                 &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,         &
-                             PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, &
+                             PRHODREF, PRHODJ, PEXNREF, PSIGS, PPABST, &
                              PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT,         &
                              PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, PRHS,         &
                              PCCT, PCIT, PCNUCS, PCCS, PINUCS, PCIS,           &
diff --git a/src/MNH/ch_aqueous_sedimkhko.f90 b/src/MNH/ch_aqueous_sedimkhko.f90
index 5dcdc770a..7d8791276 100644
--- a/src/MNH/ch_aqueous_sedimkhko.f90
+++ b/src/MNH/ch_aqueous_sedimkhko.f90
@@ -3,18 +3,16 @@
 !      ################################
 !
 INTERFACE
-      SUBROUTINE CH_AQUEOUS_SEDIMKHKO (PTSTEP, PZZ, PRHODREF, PRHODJ, PRRM,       &
-                                       PRRT, PRRS, PCRM, PCRT, PCRS, PSVT, PRSVS  )
+      SUBROUTINE CH_AQUEOUS_SEDIMKHKO (PTSTEP, PZZ, PRHODREF, PRHODJ,             &
+                                       PRRT, PRRS, PCRT, PCRS, PSVT, PRSVS  )
 !
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRS    ! Rain water m.r. source
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRT    ! Rain water C. at t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRS    ! Rain water C. source
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT    ! Precip. aq. species at t
@@ -25,8 +23,8 @@ END INTERFACE
 END MODULE MODI_CH_AQUEOUS_SEDIMKHKO
 !
 !     #############################################################################
-      SUBROUTINE CH_AQUEOUS_SEDIMKHKO (PTSTEP, PZZ, PRHODREF, PRHODJ, PRRM,       &
-                                       PRRT, PRRS, PCRM, PCRT, PCRS, PSVT, PRSVS  )
+      SUBROUTINE CH_AQUEOUS_SEDIMKHKO (PTSTEP, PZZ, PRHODREF, PRHODJ,             &
+                                       PRRT, PRRS, PCRT, PCRS, PSVT, PRSVS  )
 !     #############################################################################
 !
 !!****  * -  compute the explicit microphysical sources 
@@ -88,10 +86,8 @@ REAL,                     INTENT(IN)    :: PTSTEP  ! Time step
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRS    ! Rain water m.r. source
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRT    ! Rain water C. at t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRS    ! Rain water C. source
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT    ! Precip. aq. species at t
@@ -209,11 +205,11 @@ ZTSPLITR = PTSTEP / FLOAT(ISPLITR)       ! Small time step
 !  the precipitating fields are larger than a minimal value only !!!
 !
 ZZRRS(:,:,:) = 0.0
-ZZRRS(:,:,:) = ZRRS(:,:,:) - PRRM(:,:,:) / PTSTEP
-ZRRS(:,:,:) = PRRM(:,:,:) / PTSTEP
+ZZRRS(:,:,:) = ZRRS(:,:,:) - PRRT(:,:,:) / PTSTEP
+ZRRS(:,:,:) = PRRT(:,:,:) / PTSTEP
 ZZCRS(:,:,:) = 0.0
-ZZCRS(:,:,:) = ZCRS(:,:,:) - PCRM(:,:,:) / PTSTEP
-ZCRS(:,:,:) = PCRM(:,:,:) / PTSTEP
+ZZCRS(:,:,:) = ZCRS(:,:,:) - PCRT(:,:,:) / PTSTEP
+ZCRS(:,:,:) = PCRT(:,:,:) / PTSTEP
 ZSV_SEDIM_FACT(:,:,:) = 1.0
 DO JN = 1 , ISPLITR
 ! 
diff --git a/src/MNH/ch_boundaries.f90 b/src/MNH/ch_boundaries.f90
index 96d06fe49..b5fb879ba 100644
--- a/src/MNH/ch_boundaries.f90
+++ b/src/MNH/ch_boundaries.f90
@@ -11,10 +11,10 @@ MODULE MODI_CH_BOUNDARIES
 INTERFACE
 !
       SUBROUTINE CH_BOUNDARIES (HLBCX,HLBCY,                 &
-                                PSVBM,PUT,PVT,PSVBT          )
+                                PUT,PVT,PSVBT          )
 !
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN)  :: HLBCX,HLBCY  
-REAL, DIMENSION(:,:,:),       INTENT(INOUT) :: PSVBT,PSVBM
+REAL, DIMENSION(:,:,:),       INTENT(INOUT) :: PSVBT
 REAL, DIMENSION(:,:,:),         INTENT(IN) :: PUT,PVT
 !
 END SUBROUTINE CH_BOUNDARIES
@@ -26,7 +26,7 @@ END MODULE MODI_CH_BOUNDARIES
 !
 !     ####################################################################
 SUBROUTINE CH_BOUNDARIES (HLBCX,HLBCY,                           &
-     PSVBM,PUT,PVT,PSVBT                    )
+                          PUT,PVT,PSVBT                    )
 !     ####################################################################
 !
 !!****  *CH_BOUNDARIES* - routine to prepare the Lateral Boundary Conditions for
@@ -84,7 +84,7 @@ IMPLICIT NONE
 !
 !
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN)  :: HLBCX,HLBCY  
-REAL, DIMENSION(:,:,:),     INTENT(INOUT)   :: PSVBT,PSVBM
+REAL, DIMENSION(:,:,:),     INTENT(INOUT)   :: PSVBT
 REAL, DIMENSION(:,:,:),          INTENT(IN) :: PUT,PVT
 !
 !
@@ -173,12 +173,8 @@ IF (LWEST_ll( ) .AND. HLBCX(1)=='OPEN') THEN
                (PSVBT(IIB+1,IJ,IZZW(1,IJ,IK)+1)-&
                PSVBT(IIB+1,IJ,IZZW(1,IJ,IK))) * ZZZW(1,IJ,IK)
           !
-          PSVBM(IIB-1,IJ,IK) = PSVBM(IIB+1,IJ,IZZW(1,IJ,IK))+&
-               (PSVBM(IIB+1,IJ,IZZW(1,IJ,IK)+1)-&
-               PSVBM(IIB+1,IJ,IZZW(1,IJ,IK))) * ZZZW(1,IJ,IK)
         ELSE
           PSVBT(IIB-1,IJ,IK) =  PSVBT(IIB+1,IJ,IK)
-          PSVBM(IIB-1,IJ,IK) =  PSVBM(IIB+1,IJ,IK)
         END IF
       END IF
     END DO
@@ -226,13 +222,8 @@ IF (LEAST_ll( ) .AND. HLBCX(1)=='OPEN') THEN
                (PSVBT(IIE-1,IJ,IZZE(1,IJ,IK)+1)-&
                PSVBT(IIE-1,IJ,IZZE(1,IJ,IK))) * ZZZE(1,IJ,IK)
           !
-          PSVBM(IIE+1,IJ,IK) = &
-               PSVBM(IIE-1,IJ,IZZE(1,IJ,IK))+&
-               (PSVBM(IIE-1,IJ,IZZE(1,IJ,IK)+1)-&
-               PSVBM(IIE-1,IJ,IZZE(1,IJ,IK))) * ZZZE(1,IJ,IK)
         ELSE
           PSVBT(IIE+1,IJ,IK) =  PSVBT(IIE-1,IJ,IK)
-          PSVBM(IIE+1,IJ,IK) =  PSVBM(IIE-1,IJ,IK)
         END IF
       END IF
     END DO
@@ -281,13 +272,8 @@ IF (LSOUTH_ll( ) .AND. HLBCY(1)=='OPEN') THEN
                (PSVBT(II,IJB+1,IZZS(II,1,IK)+1)-&
                PSVBT(II,IJB+1,IZZS(II,1,IK))) * ZZZS(II,1,IK)
           !
-          PSVBM(II,IJB-1,IK) = &
-               PSVBM(II,IJB+1,IZZS(II,1,IK))+&
-               (PSVBM(II,IJB+1,IZZS(II,1,IK)+1)-&
-               PSVBM(II,IJB+1,IZZS(II,1,IK))) * ZZZS(II,1,IK)
         ELSE
           PSVBT(II,IJB-1,IK) =  PSVBT(II,IJB+1,IK)
-          PSVBM(II,IJB-1,IK) =  PSVBM(II,IJB+1,IK)
         END IF
       END IF
     END DO
@@ -337,13 +323,8 @@ IF (LNORTH_ll( ) .AND. HLBCY(2)=='OPEN') THEN
                (PSVBT(II,IJE-1,IZZN(II,1,IK)+1)-&
                PSVBT(II,IJE-1,IZZN(II,1,IK))) * ZZZN(II,1,IK)
           !
-          PSVBM(II,IJE+1,IK) = &
-               PSVBM(II,IJE-1,IZZN(II,1,IK))+&
-               (PSVBM(II,IJE-1,IZZN(II,1,IK)+1)-&
-               PSVBM(II,IJE-1,IZZN(II,1,IK))) * ZZZN(II,1,IK)
         ELSE
           PSVBT(II,IJE+1,IK) =  PSVBT(II,IJE-1,IK)
-          PSVBM(II,IJE+1,IK) =  PSVBM(II,IJE-1,IK)
         END IF
       END IF
     END DO
diff --git a/src/MNH/ch_init_fieldn.f90 b/src/MNH/ch_init_fieldn.f90
index 7af2e08e6..468277f93 100644
--- a/src/MNH/ch_init_fieldn.f90
+++ b/src/MNH/ch_init_fieldn.f90
@@ -95,12 +95,11 @@ USE MODD_NSV,         ONLY : NSV_CHEM, NSV_CHEMBEG,NSV_CHEMEND, &
                              NSV_AER, NSV_AERBEG,NSV_AEREND
 USE MODD_CST,         ONLY : XMD, XAVOGADRO
 
-USE MODD_FIELD_n,     ONLY : XSVM,      &! scalar variable at t-dt
-                             XSVT        ! scalar variable at t
+USE MODD_FIELD_n,     ONLY : XSVT       ! scalar variable at t
 USE MODD_PARAMETERS,  ONLY : JPVEXT, JPHEXT  ! number of External points
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll  ! for update_halo
 USE MODD_CH_CONST_n                   ! for Chemical constants
-USE MODD_CONF,        ONLY : CCONF, CPROGRAM, L1D, L2D 
+USE MODD_CONF,        ONLY : CPROGRAM, L1D, L2D 
 USE MODD_CONF_n,      ONLY : NRRL
 USE MODD_CH_MNHC_n
 USE MODD_CH_M9_n,     ONLY : CNAMES, NEQ
@@ -187,7 +186,7 @@ IIU = IIE + 2 * JPHEXT
 IJU = IJE + 2 * JPHEXT
 CALL GET_INTERSECTION_ll(1+JPHEXT, 1+JPHEXT, IIU-JPHEXT , IJU-JPHEXT, IOR, JOR, IEND, JEND, "EXTE", KINFO)
 IKB = 1 + JPVEXT
-IKU = SIZE(XSVM,3)
+IKU = SIZE(XSVT,3)
 IKE = IKU - JPVEXT
 CALL GET_DIM_EXT_ll('B',NIU,NJU)
 !
@@ -211,33 +210,34 @@ ZDEN2MOL = 1E-6 * XAVOGADRO / XMD
 !*       2.    INITIALIZE T FIELDS AND CONVERT CONC. TO MIXING RATIO
 !              -----------------------
 !
+
 YUNIT="MIX"
-!
+
 IF (LORILAM) THEN
-  IF (.NOT.(ASSOCIATED(XN3D))) ALLOCATE(XN3D(SIZE(XSVM,1),SIZE(XSVM,2),IKU,JPMODE))
-  IF (.NOT.(ASSOCIATED(XRG3D))) ALLOCATE(XRG3D(SIZE(XSVM,1),SIZE(XSVM,2),IKU,JPMODE))
-  IF (.NOT.(ASSOCIATED(XSIG3D))) ALLOCATE(XSIG3D(SIZE(XSVM,1),SIZE(XSVM,2),IKU,JPMODE))
-  IF (.NOT.(ASSOCIATED(XRHOP3D))) ALLOCATE(XRHOP3D(SIZE(XSVM,1),SIZE(XSVM,2),IKU,JPMODE))
-  IF (.NOT.(ASSOCIATED(XM3D))) ALLOCATE(XM3D(SIZE(XSVM,1),SIZE(XSVM,2),IKU,JPMODE*3))
-  IF (.NOT.(ASSOCIATED(XSEDA))) ALLOCATE(XSEDA(SIZE(XSVM,1),SIZE(XSVM,2),IKU,JPMODE*3))
+  IF (.NOT.(ASSOCIATED(XN3D)))      ALLOCATE(XN3D(SIZE(XSVT,1),SIZE(XSVT,2),IKU,JPMODE))
+  IF (.NOT.(ASSOCIATED(XRG3D)))     ALLOCATE(XRG3D(SIZE(XSVT,1),SIZE(XSVT,2),IKU,JPMODE))
+  IF (.NOT.(ASSOCIATED(XSIG3D)))    ALLOCATE(XSIG3D(SIZE(XSVT,1),SIZE(XSVT,2),IKU,JPMODE))
+  IF (.NOT.(ASSOCIATED(XRHOP3D)))   ALLOCATE(XRHOP3D(SIZE(XSVT,1),SIZE(XSVT,2),IKU,JPMODE))
+  IF (.NOT.(ASSOCIATED(XM3D)))      ALLOCATE(XM3D(SIZE(XSVT,1),SIZE(XSVT,2),IKU,JPMODE*3))
+  IF (.NOT.(ASSOCIATED(XSEDA)))     ALLOCATE(XSEDA(SIZE(XSVT,1),SIZE(XSVT,2),IKU,JPMODE*3))
   IF (.NOT.(ASSOCIATED(XCTOTA3D))) &
-    ALLOCATE(XCTOTA3D(SIZE(XSVM,1),SIZE(XSVM,2),IKU,NSP+NCARB+NSOA,JPMODE))
-  IF (.NOT.(ASSOCIATED(XVDEPAERO))) ALLOCATE(XVDEPAERO(SIZE(XSVM,1),SIZE(XSVM,2),JPIN))
-  IF (.NOT.(ALLOCATED(XFAC))) ALLOCATE(XFAC(NSP+NSOA+NCARB))
-  IF (.NOT.(ALLOCATED(XRHOI))) ALLOCATE(XRHOI(NSP+NSOA+NCARB))
+    ALLOCATE(XCTOTA3D(SIZE(XSVT,1),SIZE(XSVT,2),IKU,NSP+NCARB+NSOA,JPMODE))
+  IF (.NOT.(ASSOCIATED(XVDEPAERO))) ALLOCATE(XVDEPAERO(SIZE(XSVT,1),SIZE(XSVT,2),JPIN))
+  IF (.NOT.(ALLOCATED(XFAC)))       ALLOCATE(XFAC(NSP+NSOA+NCARB))
+  IF (.NOT.(ALLOCATED(XRHOI)))      ALLOCATE(XRHOI(NSP+NSOA+NCARB))
   IF (.NOT.(ASSOCIATED(XFRAC))) THEN
-    ALLOCATE(XFRAC(SIZE(XSVM,1),SIZE(XSVM,2),IKU,NEQ))
+    ALLOCATE(XFRAC(SIZE(XSVT,1),SIZE(XSVT,2),IKU,NEQ))
     XFRAC(:,:,:,:) = 0.
   END IF
   IF (.NOT.(ASSOCIATED(XMI))) THEN
-    ALLOCATE(XMI(SIZE(XSVM,1),SIZE(XSVM,2),IKU,NSP+NCARB+NSOA))
+    ALLOCATE(XMI(SIZE(XSVT,1),SIZE(XSVT,2),IKU,NSP+NCARB+NSOA))
   END IF
 END IF
 !
 !*          print info for user
 IF ((LCH_INIT_FIELD).AND.(CPROGRAM/='DIAG  ')) THEN
 !
-  WRITE(KLUOUT,*) "CH_INIT_FIELD_n will now initialize XSVM fields"
+  WRITE(KLUOUT,*) "CH_INIT_FIELD_n will now initialize XSVT fields"
 !
 !
   jlev_loop : DO JLEV=1,ILEVMAX
@@ -253,28 +253,28 @@ IF ((LCH_INIT_FIELD).AND.(CPROGRAM/='DIAG  ')) THEN
     END DO jn_loop
   END DO jlev_loop
 
-  XSVM(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) = 0.
+  XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) = 0.
   jk_loop : DO JK = IKB, IKE
     jj_loop : DO JJ = JOR, JEND
       ji_loop : DO JI = IOR, IEND
 
         JLEV=INT(MAX(XZZ(JI,JJ,JK),0.)/10.)+1
-        XSVM(JI,JJ,JK,NSV_CHEMBEG:NSV_CHEMEND) = ZSVINIT(JLEV,:)
+        XSVT(JI,JJ,JK,NSV_CHEMBEG:NSV_CHEMEND) = ZSVINIT(JLEV,:)
 
       END DO ji_loop
     END DO jj_loop
   END DO jk_loop
   DO JN = NSV_CHEMBEG,NSV_CHEMEND
     DO JK=1,JPVEXT
-      XSVM(:,:,IKB-JPVEXT,JN) = XSVM(:,:,IKB,JN)
-      XSVM(:,:,IKE+JPVEXT,JN) = XSVM(:,:,IKE,JN)
+      XSVT(:,:,IKB-JPVEXT,JN) = XSVT(:,:,IKB,JN)
+      XSVT(:,:,IKE+JPVEXT,JN) = XSVT(:,:,IKE,JN)
     END DO
   END DO
   !
   IF (YUNIT .EQ. "CON") THEN
     WRITE(KLUOUT,*) "CH_INIT_FIELD_n: converting initial values to mixing ratio"
     DO JN = NSV_CHEMBEG,NSV_CHEMEND
-      XSVM(:,:,:,JN) = XSVM(:,:,:,JN)/(XRHODREF(:,:,:)*ZDEN2MOL)
+      XSVT(:,:,:,JN) = XSVT(:,:,:,JN)/(XRHODREF(:,:,:)*ZDEN2MOL)
     ENDDO
   ELSE
     WRITE(KLUOUT,*)"CH_INIT_FIELD_n: initial values are used as is (mixing ratio)"
@@ -295,28 +295,28 @@ IF ((LCH_INIT_FIELD).AND.(CPROGRAM/='DIAG  ')) THEN
     END DO jn_loop2
   END DO jlev_loop2
   !
-  XSVM(:,:,:,NSV_AERBEG:NSV_AEREND) = 0.
+  XSVT(:,:,:,NSV_AERBEG:NSV_AEREND) = 0.
   jk_loop2 : DO JK = IKB, IKE
     jj_loop2 : DO JJ = JOR, JEND
       ji_loop2 : DO JI = IOR, IEND
 
         JLEV=INT(MAX(XZZ(JI,JJ,JK),0.)/10.)+1
-        XSVM(JI,JJ,JK,NSV_AERBEG:NSV_AEREND) = ZSVINITA(JLEV,:)
+        XSVT(JI,JJ,JK,NSV_AERBEG:NSV_AEREND) = ZSVINITA(JLEV,:)
 
       END DO ji_loop2
     END DO jj_loop2
   END DO jk_loop2
   DO JN = NSV_AERBEG,NSV_AEREND
     DO JK=1,JPVEXT
-      XSVM(:,:,IKB-JPVEXT,JN) = XSVM(:,:,IKB,JN)
-      XSVM(:,:,IKE+JPVEXT,JN) = XSVM(:,:,IKE,JN)
+      XSVT(:,:,IKB-JPVEXT,JN) = XSVT(:,:,IKB,JN)
+      XSVT(:,:,IKE+JPVEXT,JN) = XSVT(:,:,IKE,JN)
     END DO
   END DO
   !
   IF (YUNIT .EQ. "CON") THEN
     WRITE(KLUOUT,*) "CH_INIT_FIELD_n (ORILAM): converting initial values to mixing ratio"
     DO JN = NSV_AERBEG,NSV_AEREND
-      XSVM(:,:,:,JN) = XSVM(:,:,:,JN)/(XRHODREF(:,:,:)*ZDEN2MOL)
+      XSVT(:,:,:,JN) = XSVT(:,:,:,JN)/(XRHODREF(:,:,:)*ZDEN2MOL)
     ENDDO
   ELSE
     WRITE(KLUOUT,*)"CH_INIT_FIELD_n (ORILAM): initial values are used as is (mixing ratio)"
@@ -328,10 +328,10 @@ ENDIF
 !
 !
 DO JN = NSV_CHEMBEG,NSV_CHEMEND
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVM(:,:,:,JN))
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVT(:,:,:,JN))
 END DO
 DO JN = NSV_AERBEG,NSV_AEREND
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVM(:,:,:,JN))
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVT(:,:,:,JN))
 END DO
 !
 CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
@@ -349,8 +349,8 @@ CALL CH_INIT_CONST_n(KLUOUT, KVERB)
 !              -------------------
 !
 IF (LORILAM) THEN
-  CALL CH_AER_EQM_INIT_n(XSVM(:,:,:,NSV_CHEMBEG:NSV_CHEMEND),&
-                         XSVM(:,:,:,NSV_AERBEG:NSV_AEREND),&
+  CALL CH_AER_EQM_INIT_n(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND),&
+                         XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),&
                          XM3D,XRHOP3D,XSIG3D,& 
                          XRG3D,XN3D, XRHODREF, XCTOTA3D) 
   DO JN = 1,JPIN
@@ -359,28 +359,19 @@ IF (LORILAM) THEN
   END DO
   !
   DO JN = NSV_CHEMBEG,NSV_CHEMEND
-    CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVM(:,:,:,JN))
+    CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVT(:,:,:,JN))
   END DO
   DO JN = NSV_AERBEG,NSV_AEREND
-    CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVM(:,:,:,JN))
+    CALL ADD3DFIELD_ll(TZFIELDS_ll, XSVT(:,:,:,JN))
   END DO
   CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
   CALL CLEANLIST_ll(TZFIELDS_ll)
 END IF
 !
-!-------------------------------------------------------------------------------
-!
-!*        5.    INITIALIZE T-DT FIELDS
-!               ----------------------
-!
-IF ((LCH_INIT_FIELD).AND.(CPROGRAM=='MESONH')) THEN
-  XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) = XSVM(:,:,:,NSV_CHEMBEG:NSV_CHEMEND)
-  IF (LORILAM) XSVT(:,:,:,NSV_AERBEG:NSV_AEREND) = XSVM(:,:,:,NSV_AERBEG:NSV_AEREND)
-ENDIF 
 !
 !-------------------------------------------------------------------------------
 !
-!*        6.    INITIALIZE LB IN CASE OF LCH_INIT_FIELD
+!*        5.    INITIALIZE LB IN CASE OF LCH_INIT_FIELD
 !               ---------------------------------------
 !
 IF ((LCH_INIT_FIELD).AND.(CPROGRAM/='DIAG  ').AND.(KMI .EQ. 1)) THEN
@@ -390,24 +381,24 @@ IF ((LCH_INIT_FIELD).AND.(CPROGRAM/='DIAG  ').AND.(KMI .EQ. 1)) THEN
   IRIMY = INT(ILBY/2)
   DO JN = NSV_CHEMBEG,NSV_CHEMEND
     IF(LWEST_ll() .AND. .NOT. L1D) &
-      XLBXSVM(1:IRIMX+1,        :,:,JN)   = XSVM(1:IRIMX+1,        :,:,JN)
+      XLBXSVM(1:IRIMX+1,        :,:,JN) = XSVT(1:IRIMX+1,        :,:,JN)
     IF(LEAST_ll() .AND. .NOT. L1D) &
-      XLBXSVM(ILBX-IRIMX:ILBX,:,:,JN)   = XSVM(NIU-IRIMX:NIU,    :,:,JN)
+      XLBXSVM(ILBX-IRIMX:ILBX,:,:,JN)   = XSVT(NIU-IRIMX:NIU,    :,:,JN)
     IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-      XLBYSVM(:,1:IRIMY+1,        :,JN)   = XSVM(:,1:IRIMY+1,      :,JN)
+      XLBYSVM(:,1:IRIMY+1,        :,JN) = XSVT(:,1:IRIMY+1,      :,JN)
     IF(LNORTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-      XLBYSVM(:,ILBY-IRIMY:ILBY,:,JN)   = XSVM(:,NJU-IRIMY:NJU,  :,JN)
+      XLBYSVM(:,ILBY-IRIMY:ILBY,:,JN)   = XSVT(:,NJU-IRIMY:NJU,  :,JN)
   END DO
   IF (LORILAM) THEN
   DO JN = NSV_AERBEG,NSV_AEREND
     IF(LWEST_ll() .AND. .NOT. L1D) &
-      XLBXSVM(1:IRIMX+1,        :,:,JN)   = XSVM(1:IRIMX+1,        :,:,JN)
+      XLBXSVM(1:IRIMX+1,        :,:,JN) = XSVT(1:IRIMX+1,        :,:,JN)
     IF(LEAST_ll() .AND. .NOT. L1D) &
-      XLBXSVM(ILBX-IRIMX:ILBX,:,:,JN)   = XSVM(NIU-IRIMX:NIU,    :,:,JN)
+      XLBXSVM(ILBX-IRIMX:ILBX,:,:,JN)   = XSVT(NIU-IRIMX:NIU,    :,:,JN)
     IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-      XLBYSVM(:,1:IRIMY+1,        :,JN)   = XSVM(:,1:IRIMY+1,      :,JN)
+      XLBYSVM(:,1:IRIMY+1,        :,JN) = XSVT(:,1:IRIMY+1,      :,JN)
     IF(LNORTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-      XLBYSVM(:,ILBY-IRIMY:ILBY,:,JN)   = XSVM(:,NJU-IRIMY:NJU,  :,JN)
+      XLBYSVM(:,ILBY-IRIMY:ILBY,:,JN)   = XSVT(:,NJU-IRIMY:NJU,  :,JN)
   END DO
   ENDIF
 !
diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90
index fe5c5e8d9..415cb84f2 100644
--- a/src/MNH/ch_monitorn.f90
+++ b/src/MNH/ch_monitorn.f90
@@ -175,10 +175,8 @@ USE MODD_CH_SOLVER_n
 !
 USE MODD_CH_PH_n                      ! pH value in 3D
 !
-USE MODD_FIELD_n,   ONLY: XSVM,      &! scalar variable at t-dt
-                          XSVT,      &! scalar variable at t
+USE MODD_FIELD_n,   ONLY: XSVT,      &! scalar variable at t
                           XRSVS,     &! source of scalar variable
-                          XRM,       &! water mixing ratio at t-dt
                           XRT,       &! water mixing ratio at t
                           XCIT,      &! pristine conc. at t
                           XRRS,      &! source of water mixing ratio 
@@ -289,8 +287,6 @@ TYPE(METEOTRANSTYPE), DIMENSION(:), ALLOCATABLE  :: TZM
 !
 !
 LOGICAL :: GSPLIT           ! use timesplitting as temporal discretization
-LOGICAL :: GCENTER          ! if not timesplitting, use centered rather than 
-                            ! lagged tendencies
 !
 INTEGER             :: IIU  ! Upper dimension in x direction
 INTEGER             :: IJU  ! Upper dimension in y direction
@@ -556,15 +552,12 @@ ZDEN2MOL = 1E-6 * XAVOGADRO / XMD
 SELECT CASE (CCH_TDISCRETIZATION)
   CASE ("SPLIT")
     GSPLIT = .TRUE. 
-    GCENTER = .FALSE.
     IF (KVERB >= 10) WRITE(KLUOUT,*) "CH_MONITOR_n: using SPLIT option"
   CASE ("CENTER")
     GSPLIT = .FALSE. 
-    GCENTER = .TRUE.
     IF (KVERB >= 10) WRITE(KLUOUT,*) "CH_MONITOR_n: using CENTER option"
   CASE ("LAGGED")
     GSPLIT = .FALSE. 
-    GCENTER = .FALSE.
     IF (KVERB >= 10) WRITE(KLUOUT,*) "CH_MONITOR_n: using LAGGED option"
   CASE DEFAULT
     ! the following line should never be reached:
@@ -756,16 +749,15 @@ IF (LUSECHAQ.AND.(NRRL>=2) ) THEN
       CASE ('C2R2','C3R5')
         CALL CH_AQUEOUS_SEDIMC2R2(TDTCUR%TIME, PTSTEP, XRTMIN_AQ,              &
                                   XZZ, XRHODREF, XRHODJ,                       &
-                                  XRM(:,:,:,3),XRRS(:,:,:,3),                  &
-                                  XSVM(:,:,:,NSV_C2R2BEG+2),                   &
+                                  XRT(:,:,:,3),XRRS(:,:,:,3),                  &
+                                  XSVT(:,:,:,NSV_C2R2BEG+2),                   &
                                   XRSVS(:,:,:,NSV_C2R2BEG+2),                  &
                                   XSVT(:,:,:,NSV_CHACBEG+NEQAQ/2:NSV_CHACEND), &
                                   XRSVS(:,:,:,NSV_CHACBEG+NEQAQ/2:NSV_CHACEND) )
 
       CASE ('KHKO')
         CALL CH_AQUEOUS_SEDIMKHKO(PTSTEP , XZZ, XRHODREF, XRHODJ,                &
-                                  XRM(:,:,:,3), XRT(:,:,:,3), XRRS(:,:,:,3),     &
-                                  XSVM(:,:,:,NSV_C2R2BEG+2),                     &
+                                  XRT(:,:,:,3), XRRS(:,:,:,3),                   &
                                   XSVT(:,:,:,NSV_C2R2BEG+2),                     &
                                   XRSVS(:,:,:,NSV_C2R2BEG+2),                    &
                                   XSVT(:,:,:,NSV_CHACBEG+NEQAQ/2:NSV_CHACEND),   &
@@ -836,10 +828,8 @@ DO JL=1,ISVECNMASK
         ZCONV(JM+1) = (XRHODREF(JI,JJ,JK)/XRHODJ(JI,JJ,JK))*ZDEN2MOL
         IF (GSPLIT) THEN
           ZAERO(JM+1,JN) = XRSVS(JI,JJ,JK,NSV_AERBEG+JN-1)*PTSTEP*ZCONV(JM+1)
-        ELSE IF (GCENTER) THEN
+        ELSE 
           ZAERO(JM+1,JN) = XSVT(JI,JJ,JK,NSV_AERBEG+JN-1)*ZDEN2MOL*XRHODREF(JI,JJ,JK)
-        ELSE
-          ZAERO(JM+1,JN) = XSVM(JI,JJ,JK,NSV_AERBEG+JN-1)*ZDEN2MOL*XRHODREF(JI,JJ,JK)
         END IF
       END DO
     END DO
@@ -876,7 +866,7 @@ DO JL=1,ISVECNMASK
         ENDIF
       END DO 
     END DO
-  ELSE IF (GCENTER) THEN
+  ELSE 
     DO JM = 0, ISVECNPT-1
 !Vectorization:
 !ocl novrec
@@ -899,29 +889,6 @@ DO JL=1,ISVECNMASK
         ENDIF
       END DO 
     END DO
-  ELSE
-    DO JM = 0, ISVECNPT-1
-!Vectorization:
-!ocl novrec
-!cdir nodep
-      JI=JM-IDTI*(JM/IDTI)+ISVECMASK(1,JL)
-      JJ=JM/IDTI-IDTJ*(JM/(IDTI*IDTJ))+ISVECMASK(3,JL)
-      JK=JM/(IDTI*IDTJ)-IDTK*(JM/(IDTI*IDTJ*IDTK))+ISVECMASK(5,JL)
-!
-      ZCONV(JM+1) = (XRHODREF(JI,JJ,JK)/XRHODJ(JI,JJ,JK))*ZDEN2MOL
-      DO JN = 1, LU_DIM_SPECIES(JM+1)
-        ZCHEM(JM+1,JN) = XSVM(JI,JJ,JK,NSV_CHEMBEG+JN-1) * ZDEN2MOL &
-                                                         * XRHODREF(JI,JJ,JK)
-      END DO
-      DO JN = 1, NEQAQ/2 ! set aqueous concentrations to zero where LW<XRTMIN_AQ
-        IF (((XRM(JI,JJ,JK,2)*XRHODREF(JI,JJ,JK))/1.e3) < XRTMIN_AQ) THEN ! cloud
-          ZCHEM(JM+1,NEQ-NEQAQ+JN) = 0.
-        ENDIF
-        IF (((XRM(JI,JJ,JK,3)*XRHODREF(JI,JJ,JK))/1.e3) < XRTMIN_AQ) THEN ! rain
-          ZCHEM(JM+1,NEQ-NEQAQ/2+JN) = 0.
-        ENDIF
-      END DO 
-    END DO
   END IF
 !
 !*       4.2   transfer meteo data into chemical core system
@@ -934,18 +901,12 @@ DO JL=1,ISVECNMASK
                              TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR,      &
                              XLAT, XLON, XLAT0, XLON0, LUSERV, LUSERC,   &
                              LUSERR, KLUOUT, CCLOUD, PTSTEP              )
-    ELSE IF (GCENTER) THEN
+    ELSE 
       CALL CH_METEO_TRANS_KESS(JL, XRHODJ, XRHODREF, XRT, XTHT, XPABST,  &
                              ISVECNPT, ISVECMASK, TZM, TDTCUR%TDATE%DAY, &
                              TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR,      &
                              XLAT, XLON, XLAT0, XLON0, LUSERV, LUSERC,   &
                              LUSERR, KLUOUT, CCLOUD                      )
-    ELSE
-      CALL CH_METEO_TRANS_KESS(JL, XRHODJ, XRHODREF, XRM, XTHT, XPABST,  &
-                             ISVECNPT, ISVECMASK, TZM, TDTCUR%TDATE%DAY, &
-                             TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR,      &
-                             XLAT, XLON, XLAT0, XLON0, LUSERV, LUSERC,   &
-                             LUSERR, KLUOUT, CCLOUD                      )
     ENDIF
 
   CASE ('C2R2','KHKO','C3R5') !add cloud and rain C. for mean radius
@@ -955,18 +916,12 @@ DO JL=1,ISVECNMASK
                              ISVECMASK, TZM, TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,     &
                              TDTCUR%TDATE%YEAR, XLAT,XLON, XLAT0, XLON0, LUSERV,       &
                              LUSERC, LUSERR, KLUOUT, CCLOUD,  PTSTEP                   )
-    ELSE IF (GCENTER) THEN
+    ELSE 
       CALL CH_METEO_TRANS_C2R2(JL, XRHODJ, XRHODREF, XRT, XSVT(:,:,:,NSV_C2R2BEG+1), &
                              XSVT(:,:,:,NSV_C2R2BEG+2), XTHT, XPABST, ISVECNPT,      &
                              ISVECMASK, TZM, TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,   &
                              TDTCUR%TDATE%YEAR, XLAT,XLON, XLAT0, XLON0, LUSERV,     &
                              LUSERC, LUSERR, KLUOUT, CCLOUD                          )
-    ELSE
-      CALL CH_METEO_TRANS_C2R2(JL, XRHODJ, XRHODREF, XRM, XSVM(:,:,:,NSV_C2R2BEG+1), &
-                             XSVM(:,:,:,NSV_C2R2BEG+2), XTHT, XPABST, ISVECNPT,      &
-                             ISVECMASK, TZM, TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,   &
-                             TDTCUR%TDATE%YEAR, XLAT, XLON, XLAT0, XLON0, LUSERV,    &
-                             LUSERC, LUSERR,   KLUOUT, CCLOUD                        )
     ENDIF
   END SELECT
 !
@@ -1341,7 +1296,7 @@ END DO
                       .OR. XRRS(JI,JJ,JK,3)>(ZRTMIN_AQ*1.e3/XRHODREF(JI,JJ,JK))
           END DO
       END SELECT
-    ELSE IF (GCENTER) THEN
+    ELSE 
       SELECT CASE ( CCLOUD )
         CASE('REVE')
           DO JM=0,ISVECNPT-1
@@ -1359,24 +1314,6 @@ END DO
                       .OR. XRT(JI,JJ,JK,3)>(XRTMIN_AQ*1.e3/XRHODREF(JI,JJ,JK))
           END DO
       END SELECT
-    ELSE
-      SELECT CASE ( CCLOUD )
-        CASE('REVE')
-          DO JM=0,ISVECNPT-1
-            JI=JM-IDTI*(JM/IDTI)+ISVECMASK(1,JL)
-            JJ=JM/IDTI-IDTJ*(JM/(IDTI*IDTJ))+ISVECMASK(3,JL)
-            JK=JM/(IDTI*IDTJ)-IDTK*(JM/(IDTI*IDTJ*IDTK))+ISVECMASK(5,JL)
-            GWATER(JM+1) = XRM(JI,JJ,JK,2)>(XRTMIN_AQ*1.e3/XRHODREF(JI,JJ,JK))
-          END DO
-        CASE('KESS','ICE3','ICE4','C2R2','C3R5','KHKO')
-          DO JM=0,ISVECNPT-1
-            JI=JM-IDTI*(JM/IDTI)+ISVECMASK(1,JL)
-            JJ=JM/IDTI-IDTJ*(JM/(IDTI*IDTJ))+ISVECMASK(3,JL)
-            JK=JM/(IDTI*IDTJ)-IDTK*(JM/(IDTI*IDTJ*IDTK))+ISVECMASK(5,JL)
-            GWATER(JM+1) = XRM(JI,JJ,JK,2)>(XRTMIN_AQ*1.e3/XRHODREF(JI,JJ,JK)) &
-                      .OR. XRM(JI,JJ,JK,3)>(XRTMIN_AQ*1.e3/XRHODREF(JI,JJ,JK))
-          END DO
-      END SELECT
     END IF
     IWATER = COUNT(GWATER(:))
     ALLOCATE(IMASKAQ(ISVECNPT)); IMASKAQ(:) = 0
diff --git a/src/MNH/compute_function_thermo.f90 b/src/MNH/compute_function_thermo.f90
new file mode 100644
index 000000000..b36b55ff4
--- /dev/null
+++ b/src/MNH/compute_function_thermo.f90
@@ -0,0 +1,258 @@
+!    ######################################
+     MODULE MODI_COMPUTE_FUNCTION_THERMO
+!    ######################################
+!
+INTERFACE
+      
+!     #################################################################
+      SUBROUTINE COMPUTE_FUNCTION_THERMO( KRR,                            &
+                                       PTH, PR, PEXN, PPABS,                 &
+                                       PT,PLVOCPEXN,PLSOCPEXN,               &
+                                       PAMOIST,PATHETA                       )
+!     #################################################################
+
+!*               1.1  Declaration of Arguments
+!
+
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   :: PTH      ! theta
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PR       ! water species
+REAL, DIMENSION(:,:,:)  , INTENT(IN) :: PPABS,PEXN    ! pressure, Exner funct.
+
+REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PT      ! temperature
+REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLVOCPEXN,PLSOCPEXN     ! L/(cp*Pi)
+
+REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  ::  PAMOIST,PATHETA
+!
+END SUBROUTINE COMPUTE_FUNCTION_THERMO
+
+END INTERFACE
+!
+END MODULE MODI_COMPUTE_FUNCTION_THERMO
+
+                                       
+!     #################################################################
+      SUBROUTINE COMPUTE_FUNCTION_THERMO( KRR,                            &
+                                       PTH, PR, PEXN, PPABS,                 &
+                                       PT,PLVOCPEXN,PLSOCPEXN,               &
+                                       PAMOIST,PATHETA                       )
+!     #################################################################
+!
+!!
+!!****  *COMPUTE_FUNCTION_THERMO* - 
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!    
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!     
+!!     JP Pinty      *LA*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!     Original   24/02/03
+!!     Externalisation of computations done in TURB and MF_TURB (Malardel and Pergaud, fev. 2007)
+!!     Optimization : V.Masson, 09/2010
+!!
+!! --------------------------------------------------------------------------
+!       
+!*      0. DECLARATIONS
+!          ------------
+!
+USE MODD_CST
+!
+IMPLICIT NONE
+!
+!
+!*      0.1  declarations of arguments
+!
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   :: PTH      ! theta
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PR       ! water species
+REAL, DIMENSION(:,:,:)  , INTENT(IN) :: PPABS,PEXN    ! pressure, Exner funct.
+
+REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PT      ! temperature
+REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLVOCPEXN,PLSOCPEXN     ! L/(cp*Pi)
+
+REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  ::  PAMOIST,PATHETA
+!
+!-------------------------------------------------------------------------------
+! 
+!*       0.2   Declarations of local variables
+!
+REAL                :: ZEPS         ! XMV / XMD
+REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) ::     &
+          ZCP,                        &  ! Cp 
+          ZE,                         &  ! Saturation mixing ratio
+          ZDEDT,                      &  ! Saturation mixing ratio derivative
+          ZFRAC_ICE,                  &  ! Ice fraction
+          ZAMOIST_W,                  &  ! Coefficients for s = f (Thetal,Rnp)
+          ZATHETA_W,                  &  !
+          ZAMOIST_I,                  &  !
+          ZATHETA_I                      !
+
+INTEGER             :: JRR
+INTEGER             :: IRRL, IRRI
+!
+!-------------------------------------------------------------------------------
+!
+  IRRI=0
+  IRRL=0
+  IF (KRR>=2) IRRL=MIN(KRR-1,2)
+  IF (KRR>=4) IRRI=KRR-3
+!
+  ZEPS = XMV / XMD
+
+  PLVOCPEXN(:,:,:) = 0.
+  PLSOCPEXN(:,:,:) = 0.
+  ZFRAC_ICE(:,:,:) = 0.0
+
+!
+!*       Cph
+!
+ZCP=XCPD
+
+IF (KRR > 0) ZCP(:,:,:) = ZCP(:,:,:) + XCPV * PR(:,:,:,1)
+
+DO JRR = 2,1+IRRL  ! loop on the liquid components  
+   ZCP(:,:,:)  = ZCP(:,:,:) + XCL * PR(:,:,:,JRR)
+END DO
+
+DO JRR = 2+IRRL,1+IRRL+IRRI ! loop on the solid components   
+  ZCP(:,:,:)  = ZCP(:,:,:)  + XCI * PR(:,:,:,JRR)
+END DO
+
+!*      Temperature
+!
+PT(:,:,:) =  PTH(:,:,:) * PEXN(:,:,:)
+!
+!
+!! Liquid water
+!
+IF ( IRRL >= 1 ) THEN 
+!
+!*       Lv/Cph 
+!
+  PLVOCPEXN(:,:,:) = (XLVTT + (XCPV-XCL) *  (PT(:,:,:)-XTT) ) / ZCP(:,:,:)
+!
+ IF (PRESENT(PAMOIST)) THEN
+!
+!*      Saturation vapor pressure with respect to water
+!
+  ZE(:,:,:) =  EXP( XALPW - XBETAW/PT(:,:,:) - XGAMW*ALOG( PT(:,:,:) ) )
+!
+!*      Saturation  mixing ratio with respect to water
+!
+  ZE(:,:,:) =  ZE(:,:,:) * ZEPS / ( PPABS(:,:,:) - ZE(:,:,:) )
+!
+!*      Compute the saturation mixing ratio derivative (rvs')
+!
+  ZDEDT(:,:,:) = ( XBETAW / PT(:,:,:)  - XGAMW ) / PT(:,:,:)   &
+                 * ZE(:,:,:) * ( 1. + ZE(:,:,:) / ZEPS )
+!
+!*      Compute Amoist
+!
+  PAMOIST(:,:,:) = 0.
+  PATHETA(:,:,:) = 0.
+  ZAMOIST_W(:,:,:)=  0.5 / ( 1.0 + ZDEDT(:,:,:) * PLVOCPEXN(:,:,:) )
+!
+!*      Compute Atheta
+!
+  ZATHETA_W(:,:,:)= ZAMOIST_W(:,:,:) * PEXN(:,:,:) *                          &
+        ( ( ZE(:,:,:) - PR(:,:,:,1) ) * PLVOCPEXN(:,:,:) /                    &
+          ( 1. + ZDEDT(:,:,:) * PLVOCPEXN(:,:,:) )           *              &
+          (                                                             &
+           ZE(:,:,:) * (1. + ZE(:,:,:)/ZEPS)                                &
+                        * ( -2.*XBETAW/PT(:,:,:) + XGAMW ) / PT(:,:,:)**2   &
+          +ZDEDT(:,:,:) * (1. + 2. * ZE(:,:,:)/ZEPS)                        &
+                        * ( XBETAW/PT(:,:,:) - XGAMW ) / PT(:,:,:)          &
+          )                                                             &
+         - ZDEDT(:,:,:)                                                   &
+        )
+ END IF
+!
+!! Solid water
+!
+  IF ( IRRI >= 1 ) THEN 
+
+!
+!*       Fraction of ice
+!
+    WHERE(PR(:,:,:,2)+PR(:,:,:,4)>0.0)
+      ZFRAC_ICE(:,:,:) = PR(:,:,:,4) / ( PR(:,:,:,2)+PR(:,:,:,4) )
+    END WHERE
+!
+!*       Ls/Cph 
+!
+    PLSOCPEXN(:,:,:) = (XLSTT + (XCPV-XCI) *  (PT(:,:,:)-XTT) ) / ZCP(:,:,:)
+!
+   IF (PRESENT(PAMOIST)) THEN
+!
+!*      Saturation vapor pressure with respect to ice
+!
+    ZE(:,:,:) =  EXP( XALPI - XBETAI/PT(:,:,:) - XGAMI*ALOG( PT(:,:,:) ) )
+!
+!*      Saturation  mixing ratio with respect to ice
+!
+    ZE(:,:,:) =  ZE(:,:,:) * ZEPS / ( PPABS(:,:,:) - ZE(:,:,:) )
+!
+!*      Compute the saturation mixing ratio derivative (rvs')
+!
+    ZDEDT(:,:,:) = ( XBETAI / PT(:,:,:)  - XGAMI ) / PT(:,:,:)   &
+                   * ZE(:,:,:) * ( 1. + ZE(:,:,:) / ZEPS )
+!
+!*      Compute Amoist
+!
+    ZAMOIST_I(:,:,:)=  0.5 / ( 1.0 + ZDEDT(:,:,:) * PLSOCPEXN(:,:,:) )
+!
+!*      Compute Atheta
+!
+    ZATHETA_I(:,:,:)= ZAMOIST_I(:,:,:) * PEXN(:,:,:) *                        &
+        ( ( ZE(:,:,:) - PR(:,:,:,1) ) * PLSOCPEXN(:,:,:) /                    &
+          ( 1. + ZDEDT(:,:,:) * PLSOCPEXN(:,:,:) )           *              &
+          (                                                             &
+           ZE(:,:,:) * (1. + ZE(:,:,:)/ZEPS)                                &
+                        * ( -2.*XBETAI/PT(:,:,:) + XGAMI ) / PT(:,:,:)**2   &
+          +ZDEDT(:,:,:) * (1. + 2. * ZE(:,:,:)/ZEPS)                        &
+                        * ( XBETAI/PT(:,:,:) - XGAMI ) / PT(:,:,:)          &
+          )                                                             &
+         - ZDEDT(:,:,:)                                                   &
+        )
+
+
+   ENDIF
+  ENDIF
+
+ IF (PRESENT(PAMOIST)) THEN
+  PAMOIST(:,:,:) = (1.0-ZFRAC_ICE(:,:,:))*ZAMOIST_W(:,:,:) &
+                         +ZFRAC_ICE(:,:,:) *ZAMOIST_I(:,:,:)
+  PATHETA(:,:,:) = (1.0-ZFRAC_ICE(:,:,:))*ZATHETA_W(:,:,:) &
+                         +ZFRAC_ICE(:,:,:) *ZATHETA_I(:,:,:)
+ ENDIF
+
+!
+!*      Lv/Cph/Exner and  Ls/Cph/Exner
+!
+  PLVOCPEXN(:,:,:) = PLVOCPEXN(:,:,:) / PEXN(:,:,:)
+  PLSOCPEXN(:,:,:) = PLSOCPEXN(:,:,:) / PEXN(:,:,:)
+!
+ENDIF
+
+END SUBROUTINE COMPUTE_FUNCTION_THERMO
diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90
index 21293bda7..509c67414 100644
--- a/src/MNH/compute_r00.f90
+++ b/src/MNH/compute_r00.f90
@@ -212,9 +212,9 @@ ZXMAX=ZXMAX*1.E-3
 ZYMAX=ZYMAX*1.E-3
 ZZMAX=ZZMAX*1.E-3
 !
-ZX00(:,:,:)=XSVM(:,:,:,NSV_LGBEG)*1.E-3   ! ZX0 in km
-ZY00(:,:,:)=XSVM(:,:,:,NSV_LGBEG+1)*1.E-3 ! ZY0 in km
-ZZ00(:,:,:)=XSVM(:,:,:,NSV_LGEND)*1.E-3   ! ZZ0 in km
+ZX00(:,:,:)=XSVT(:,:,:,NSV_LGBEG)*1.E-3   ! ZX0 in km
+ZY00(:,:,:)=XSVT(:,:,:,NSV_LGBEG+1)*1.E-3 ! ZY0 in km
+ZZ00(:,:,:)=XSVT(:,:,:,NSV_LGEND)*1.E-3   ! ZZ0 in km
 !
 IF (L2D) THEN
   WHERE ( ZX00<ZXOR .OR. ZX00>ZXMAX .OR. &
@@ -270,11 +270,11 @@ DO JFILECUR=1,NFILES
     WRITE(YDATE,FMT='(1X,I4.4,I2.2,I2.2,2X,I2.2,"H",I2.2,"M", &
          & F5.2,"S")') TDTCUR_START%TDATE, IHOUR,IMINUTE,ZSECOND  
     !
-    YRECFM='THM'
+    YRECFM='THT'
     CALL FMREAD(CFILES(NBRFILES(JFILECUR)),YRECFM,CLUOUT,'XY', &
                 ZTH0(:,:,:),IGRID,ILENCH,YCOMMENT,IRESP)
     !
-    YRECFM='RVM'
+    YRECFM='RVT'
     CALL FMREAD(CFILES(NBRFILES(JFILECUR)),YRECFM,CLUOUT,'XY', &
                 ZRV0(:,:,:),IGRID,ILENCH,YCOMMENT,IRESP)
     !
diff --git a/src/MNH/deallocate_model1.f90 b/src/MNH/deallocate_model1.f90
index 08eef4d13..d2986dbb8 100644
--- a/src/MNH/deallocate_model1.f90
+++ b/src/MNH/deallocate_model1.f90
@@ -97,6 +97,8 @@ USE MODD_DEF_EDDYUV_FLUX_n         ! For EDDY FLUXES
 USE MODD_2D_FRC
 USE MODD_ADVFRC_n                  ! For ADVFRC and EDDY FLUXES
 USE MODD_RELFRC_n
+USE MODD_ADV_n
+USE MODD_PAST_FIELD_n
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
@@ -114,14 +116,18 @@ CALL GOTO_MODEL(1)
 !*       1.    Module MODD_FIELD$n
 !
 IF ( KCALL==3 ) THEN
-  DEALLOCATE(XUM)
-  DEALLOCATE(XVM)
-  DEALLOCATE(XWM)
-  DEALLOCATE(XTHM)
-  IF (ASSOCIATED(XUT)) DEALLOCATE(XUT)
-  IF (ASSOCIATED(XVT)) DEALLOCATE(XVT)
-  IF (ASSOCIATED(XWT)) DEALLOCATE(XWT)
-  IF (ASSOCIATED(XTHT)) DEALLOCATE(XTHT)
+  IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN
+    DEALLOCATE(XUM)
+    DEALLOCATE(XVM)
+    DEALLOCATE(XWM)
+    DEALLOCATE(XDUM)
+    DEALLOCATE(XDVM)
+    DEALLOCATE(XDWM)
+  END IF
+  DEALLOCATE(XUT)
+  DEALLOCATE(XVT)
+  DEALLOCATE(XWT)
+  DEALLOCATE(XTHT)
   IF (L2D_ADV_FRC) THEN
     IF (ASSOCIATED(XDTHFRC)) DEALLOCATE(XDTHFRC)
     IF (ASSOCIATED(XDRVFRC)) DEALLOCATE(XDRVFRC)
@@ -146,10 +152,11 @@ IF ( KCALL==1 ) THEN
   DEALLOCATE(XRVS)
   DEALLOCATE(XRWS)
   DEALLOCATE(XRTHS)
+  DEALLOCATE(XRUS_PRES, XRVS_PRES, XRWS_PRES )                
+  DEALLOCATE(XRTHS_CLD )
 END IF
 !
 IF ( KCALL==3 ) THEN
-  IF (ASSOCIATED(XTKEM)) DEALLOCATE(XTKEM)
   IF (ASSOCIATED(XTKET)) DEALLOCATE(XTKET)
 END IF
 IF ( ASSOCIATED(XRTKES) .AND. KCALL==1 ) THEN
@@ -157,20 +164,18 @@ IF ( ASSOCIATED(XRTKES) .AND. KCALL==1 ) THEN
 END IF
 !
 IF ( KCALL==3 ) THEN
-  DEALLOCATE(XPABSM)
-  IF (ASSOCIATED(XPABST)) DEALLOCATE(XPABST)
+  DEALLOCATE(XPABST)
 !
-  DEALLOCATE(XRM)
-  IF (ASSOCIATED(XRT)) DEALLOCATE(XRT)
+  DEALLOCATE(XRT)
 END IF
 !
 IF ( KCALL==1 ) THEN
   DEALLOCATE(XRRS)
+  DEALLOCATE(XRRS_CLD)
 END IF
 !
-IF ( ASSOCIATED(XSRCM) .AND. KCALL==3 ) THEN
-  DEALLOCATE(XSRCM)
-  IF (ASSOCIATED(XSRCT)) DEALLOCATE(XSRCT)
+IF ( ASSOCIATED(XSRCT) .AND. KCALL==3 ) THEN
+  DEALLOCATE(XSRCT)
   DEALLOCATE(XSIGS)
 END IF   
 !
@@ -179,11 +184,11 @@ IF ( ASSOCIATED(XCLDFR) .AND. KCALL==2 ) THEN
 END IF   
 !
 IF ( KCALL == 3 ) THEN
-  DEALLOCATE(XSVM)
-  IF (ASSOCIATED(XSVT)) DEALLOCATE(XSVT)
+  DEALLOCATE(XSVT)
 END IF
 IF ( KCALL == 1 ) THEN
   DEALLOCATE(XRSVS)
+  DEALLOCATE(XRSVS_CLD)
 END IF
 !
 !
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 61600184f..9d06c614a 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -298,6 +298,7 @@ IF (KMI == 1) THEN
   LINIT_LG   = .FALSE.
   CINIT_LG   = 'FMOUT'
   LNOMIXLG   = .FALSE.
+  LCHECK     = .FALSE.
 END IF
 !
 CCLOUD    = 'NONE'
@@ -395,10 +396,15 @@ END IF
 !*      5.    SET DEFAULT VALUES FOR MODD_ADV_n :
 !             ----------------------------------
 !
-CUVW_ADV_SCHEME =  'CEN4TH'
+CUVW_ADV_SCHEME =  'WENO_K'
 CMET_ADV_SCHEME =  'PPM_01'
 CSV_ADV_SCHEME  =  'PPM_01'
-NLITER    = 2
+CTEMP_SCHEME    =  'RK21'        
+NWENO_ORDER = 3
+NSPLIT      = 1
+LSPLIT_CFL  = .TRUE.
+XSPLIT_CFL  = 0.8
+LCFL_WRIT   = .FALSE.
 !
 !-------------------------------------------------------------------------------
 !
@@ -424,7 +430,6 @@ CLBCY(2) ='CYCL'
 NLBLX(:) = 1
 NLBLY(:) = 1
 XCPHASE = 20.
-XCPHASE_PBL = 0.
 !
 !-------------------------------------------------------------------------------
 !
@@ -500,9 +505,7 @@ IF (KMI == 1) THEN
   LBU_RU = .FALSE.
   NASSEU  = 0
   NNESTU  = 0
-  NADVXU  = 0
-  NADVYU  = 0
-  NADVZU  = 0
+  NADVU   = 0
   NFRCU   = 0
   NNUDU   = 0
   NCURVU  = 0
@@ -519,9 +522,7 @@ IF (KMI == 1) THEN
   LBU_RV = .FALSE.
   NASSEV  = 0
   NNESTV  = 0
-  NADVXV  = 0
-  NADVYV  = 0
-  NADVZV  = 0
+  NADVV   = 0
   NFRCV   = 0
   NNUDV   = 0
   NCURVV  = 0
@@ -538,9 +539,7 @@ IF (KMI == 1) THEN
   LBU_RW = .FALSE.
   NASSEW  = 0
   NNESTW  = 0
-  NADVXW  = 0
-  NADVYW  = 0
-  NADVZW  = 0
+  NADVW   = 0
   NFRCW   = 0
   NNUDW   = 0
   NCURVW  = 0
@@ -557,9 +556,6 @@ IF (KMI == 1) THEN
   NASSETH  = 0
   NNESTTH  = 0
   NADVTH   = 0
-  NADVXTH  = 0
-  NADVYTH  = 0
-  NADVZTH  = 0
   NFRCTH   = 0
   NNUDTH   = 0
   NPREFTH  = 0
@@ -596,9 +592,6 @@ IF (KMI == 1) THEN
   LBU_RTKE = .FALSE.
   NASSETKE = 0
   NADVTKE  = 0
-  NADVXTKE = 0
-  NADVYTKE = 0
-  NADVZTKE = 0
   NFRCTKE  = 0
   NDIFTKE  = 0
   NRELTKE  = 0
@@ -613,9 +606,6 @@ IF (KMI == 1) THEN
   NASSERV  = 0
   NNESTRV  = 0
   NADVRV   = 0
-  NADVXRV  = 0
-  NADVYRV  = 0
-  NADVZRV  = 0
   NFRCRV   = 0
   NNUDRV   = 0
   NDIFRV   = 0
@@ -638,9 +628,6 @@ IF (KMI == 1) THEN
   NASSERC  = 0
   NNESTRC  = 0
   NADVRC   = 0
-  NADVXRC  = 0
-  NADVYRC  = 0
-  NADVZRC  = 0
   NFRCRC   = 0
   NDIFRC   = 0
   NRELRC   = 0
@@ -667,9 +654,6 @@ IF (KMI == 1) THEN
   NASSERR  = 0
   NNESTRR  = 0
   NADVRR   = 0
-  NADVXRR  = 0
-  NADVYRR  = 0
-  NADVZRR  = 0
   NFRCRR   = 0
   NDIFRR   = 0
   NRELRR   = 0
@@ -692,9 +676,6 @@ IF (KMI == 1) THEN
   NASSERI  = 0
   NNESTRI  = 0
   NADVRI   = 0
-  NADVXRI  = 0
-  NADVYRI  = 0
-  NADVZRI  = 0
   NFRCRI   = 0
   NDIFRI   = 0
   NRELRI   = 0
@@ -720,9 +701,6 @@ IF (KMI == 1) THEN
   NASSERS  = 0
   NNESTRS  = 0
   NADVRS   = 0
-  NADVXRS  = 0
-  NADVYRS  = 0
-  NADVZRS  = 0
   NFRCRS   = 0
   NDIFRS   = 0
   NRELRS   = 0
@@ -743,9 +721,6 @@ IF (KMI == 1) THEN
   NASSERG  = 0
   NNESTRG  = 0
   NADVRG   = 0
-  NADVXRG  = 0
-  NADVYRG  = 0
-  NADVZRG  = 0
   NFRCRG   = 0
   NDIFRG   = 0
   NRELRG   = 0
@@ -767,9 +742,6 @@ IF (KMI == 1) THEN
   NASSERH  = 0
   NNESTRH  = 0
   NADVRH   = 0
-  NADVXRH  = 0
-  NADVYRH  = 0
-  NADVZRH  = 0
   NFRCRH   = 0
   NDIFRH   = 0
   NRELRH   = 0
@@ -783,9 +755,6 @@ IF (KMI == 1) THEN
   NASSESV  = 0
   NNESTSV  = 0
   NADVSV   = 0
-  NADVXSV  = 0
-  NADVYSV  = 0
-  NADVZSV  = 0
   NFRCSV   = 0
   NDIFSV   = 0
   NRELSV   = 0
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index 7c438f350..8d72a3fc4 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -591,18 +591,18 @@ IF ( .NOT. LTURB_FLX .AND. .NOT. LTURB_DIAG .AND. &
   CTURB  = 'NONE'
 END IF
 ! no way to compute the turbulent tendencies.
-IF ( ( LTURB_FLX .OR. LTURB_DIAG .OR. LMF_FLX )   &
-       .AND. CSTORAGE_TYPE/='MT' ) THEN
-  CTURB  = 'NONE'
-  PRINT*, '******************* WARNING in DIAG ***********************'
-  PRINT*, ' '
-  PRINT*, 'You wanted to compute turbulence fluxes or diagnostics,'
-  PRINT*, 'But the initial file comes from PREP_REAL_CASE.'
-  PRINT*, 'Therefore, the boundary layer turbulence is meaningless.'
-  PRINT*, 'Turbulence fluxes and diagnostics will NOT be computed'
-  PRINT*, 'Please make your turbulence diagnostics from a meso-NH file'
-  PRINT*, 'coming from a MESO-NH simulation.'
-END IF
+!IF ( ( LTURB_FLX .OR. LTURB_DIAG .OR. LMF_FLX )   &
+!       .AND. CSTORAGE_TYPE/='MT' ) THEN
+!  CTURB  = 'NONE'
+!  PRINT*, '******************* WARNING in DIAG ***********************'
+!  PRINT*, ' '
+!  PRINT*, 'You wanted to compute turbulence fluxes or diagnostics,'
+!  PRINT*, 'But the initial file comes from PREP_REAL_CASE.'
+!  PRINT*, 'Therefore, the boundary layer turbulence is meaningless.'
+!  PRINT*, 'Turbulence fluxes and diagnostics will NOT be computed'
+!  PRINT*, 'Please make your turbulence diagnostics from a meso-NH file'
+!  PRINT*, 'coming from a MESO-NH simulation.'
+!END IF
 !
 !* convective scheme
 !
@@ -640,7 +640,7 @@ END IF
 !
 IF ( CTURB /= 'NONE' .OR. CDCONV /= 'NONE' .OR. CSCONV /= 'NONE' &                 
      .OR. CRAD /= 'NONE' ) THEN
-  IF (CSTORAGE_TYPE/='MT') THEN
+! IF (CSTORAGE_TYPE/='MT') THEN
     IF (XDTSTEP==XUNDEF) THEN
       PRINT*, ' '
       PRINT*, '******************* WARNING in DIAG ***********************'
@@ -652,7 +652,7 @@ IF ( CTURB /= 'NONE' .OR. CDCONV /= 'NONE' .OR. CSCONV /= 'NONE' &
     ELSE
       XTSTEP=XDTSTEP
     END IF
-  END IF
+! END IF
   PRINT*,' XTSTEP= ', XTSTEP
   PRINT*, ' '
   PRINT*, 'DIAG BEFORE PHYS_PARAM1: CTURB=',CTURB,' CDCONV=',CDCONV, &
@@ -675,8 +675,7 @@ XTIME_LES=0.
 XTIME_LES_BU_PROCESS=0.
 XTIME_BU_PROCESS=0.
 !
-CALL PHYS_PARAM_n(1,XTSTEP,XTSTEP,XTSTEP,YFMFILE,GCLOSE_OUT,      &
-                  CUVW_ADV_SCHEME,CMET_ADV_SCHEME,CSV_ADV_SCHEME, &
+CALL PHYS_PARAM_n(1,YFMFILE,GCLOSE_OUT,                           &
                   ZRAD,ZSHADOWS,ZDCONV,ZGROUND,ZMAFL,ZDRAG,       &
                   ZTURB,ZTRACER, ZCHEM,ZTIME_BU,GMASKkids)
 PRINT*, 'DIAG AFTER PHYS_PARAM1'
@@ -767,6 +766,7 @@ ZTIME1=ZTIME2
 !
 !*       9.0    Closes the FM files
 !
+DEALLOCATE(GMASKkids)
 IF (GCLOSE_OUT) THEN
   GCLOSE_OUT=.FALSE.
   CALL FMCLOS_ll(YFMFILE,'KEEP',CLUOUT,IRESP)
diff --git a/src/MNH/dyn_sources.f90 b/src/MNH/dyn_sources.f90
index 77591a042..3a1169ea8 100644
--- a/src/MNH/dyn_sources.f90
+++ b/src/MNH/dyn_sources.f90
@@ -10,7 +10,7 @@
 !
 INTERFACE
 !
-      SUBROUTINE DYN_SOURCES( KRR,KRRL, KRRI, KMI,                         &
+      SUBROUTINE DYN_SOURCES( KRR,KRRL, KRRI,                              &
                               PUT, PVT, PWT, PTHT, PRT,                    &
                               PCORIOX, PCORIOY, PCORIOZ, PCURVX, PCURVY,   &
                               PRHODJ, PZZ, PTHVREF, PEXNREF,               &
@@ -19,7 +19,6 @@ INTERFACE
 INTEGER,                  INTENT(IN)    :: KRR  ! Total number of water var.
 INTEGER,                  INTENT(IN)    :: KRRL ! Number of liquid water var.
 INTEGER,                  INTENT(IN)    :: KRRI ! Number of ice water var.
-INTEGER,                  INTENT(IN)    :: KMI  ! Model number
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT   ! variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT            !     at
@@ -47,7 +46,7 @@ END INTERFACE
 !
 END MODULE MODI_DYN_SOURCES 
 !     ######################################################################
-      SUBROUTINE DYN_SOURCES( KRR,KRRL, KRRI, KMI,                         &
+      SUBROUTINE DYN_SOURCES( KRR,KRRL, KRRI,                              &
                               PUT, PVT, PWT, PTHT, PRT,                    &
                               PCORIOX, PCORIOY, PCORIOZ, PCURVX, PCURVY,   &
                               PRHODJ, PZZ, PTHVREF, PEXNREF,               &
@@ -147,7 +146,7 @@ END MODULE MODI_DYN_SOURCES
 !!  Corrections 19/12/96 (J.-P. Pinty)  Update the CALL BUDGET
 !!  Corrections 03/12/02  (P. Jabouille)  add no thinshell condition
 !!  Correction     06/10  (C.Lac) Exclude L1D for Coriolis term 
-!!
+!!  Modification   03/11  (C.Lac) Split the gravity term due to buoyancy
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -169,7 +168,6 @@ IMPLICIT NONE
 INTEGER,                  INTENT(IN)    :: KRR  ! Total number of water var.
 INTEGER,                  INTENT(IN)    :: KRRL ! Number of liquid water var.
 INTEGER,                  INTENT(IN)    :: KRRI ! Number of ice water var.
-INTEGER,                  INTENT(IN)    :: KMI  ! Model index
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT   ! variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT            !     at
@@ -194,7 +192,6 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS            ! Sources of theta
 !
 !*       0.2   Declarations of local variables :
 !
-REAL       ::  ZRV_OV_RD    ! = RV / RD
 REAL       ::  ZCPD_OV_RD   ! = CPD / RD
 REAL       ::  ZG_OV_CPD    ! =-XG / XCPD
 INTEGER    ::  JWATER       ! loop index on the different types of water
@@ -292,45 +289,8 @@ IF (LBUDGET_V) CALL BUDGET (PRVS,2,'COR_BU_RV')
 IF (LBUDGET_W) CALL BUDGET (PRWS,3,'COR_BU_RW')
 !
 !-------------------------------------------------------------------------------
-!*       4.     COMPUTES THE GRAVITY TERM
-!	        -------------------------
-!
-IF( .NOT.L1D ) THEN     ! no buoyancy for 1D case
-!
-  IF(KRR > 0) THEN
-!
-!   compute the ratio : 1 + total water mass / dry air mass
-!
-    ZRV_OV_RD = XRV / XRD
-    ZWORK1(:,:,:) = 1.
-    DO JWATER = 1 , 1+KRRL+KRRI                
-      ZWORK1(:,:,:) = ZWORK1(:,:,:) + PRT(:,:,:,JWATER)
-    END DO
-!
-!   compute the virtual potential temperature when water is present in any form
-!
-    ZWORK2(:,:,:) = PTHT(:,:,:) * (1. + PRT(:,:,:,1)*ZRV_OV_RD) / ZWORK1(:,:,:)
-  ELSE
-!
-!   compute the virtual potential temperature when water is absent
-!
-    ZWORK2(:,:,:) = PTHT(:,:,:)
-  END IF
-!
-!   compute the gravity term
-!
-  PRWS(:,:,:) = PRWS + XG * MZM(1,IKU,1, ( (ZWORK2/PTHVREF) - 1. ) * PRHODJ )
-!
-!    the extrapolation for the PTHT and the THVREF must be the same at the
-!    ground
-!
-  IF (LBUDGET_W) CALL BUDGET (PRWS,3,'GRAV_BU_RW')
-!
-END IF
-!
-!-------------------------------------------------------------------------------
 !
-!*       5.     COMPUTES THE THETA SOURCE TERM DUE TO THE REFERENCE PRESSURE
+!*       4.     COMPUTES THE THETA SOURCE TERM DUE TO THE REFERENCE PRESSURE
 !	        ------------------------------------------------------------
 !
 IF (LCARTESIAN .OR. LTHINSHELL) THEN
diff --git a/src/MNH/endstep.f90 b/src/MNH/endstep.f90
index 54b516d93..07a6dbf2d 100644
--- a/src/MNH/endstep.f90
+++ b/src/MNH/endstep.f90
@@ -9,8 +9,8 @@
 !
 INTERFACE
 !
-      SUBROUTINE ENDSTEP        (PTSTEP,PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,   &
-                                 KRR,KSV,KTCOUNT,KMI,PRHODJ,               &
+      SUBROUTINE ENDSTEP        (PTSTEP,KRR,KSV,KTCOUNT,KMI,               &
+                                 HUVW_ADV_SCHEME,PRHODJ,                   &
                                  PUS,PVS,PWS,PDRYMASSS,                    &
                                  PTHS,PRS,PTKES,PSVS,                      &
                                  PLSUS,PLSVS,PLSWS,                        &
@@ -19,29 +19,22 @@ INTERFACE
                                  PLBXTHS,PLBXRS,PLBXTKES,PLBXSVS,          &
                                  PLBYUS,PLBYVS,PLBYWS,                     &
                                  PLBYTHS,PLBYRS,PLBYTKES,PLBYSVS,          &
-                                 PUM,PVM,PWM,PPABSM,                       &
-                                 PTHM,PRM,PTKEM,PSVM,PSRCM,                &
+                                 PUM,PVM,PWM,                              &
                                  PUT,PVT,PWT,PPABST,PDRYMASST,             &
-                                 PTHT,PRT,PTKET,PSVT,PSRCT,                &
+                                 PTHT,PRT,PTHM,PRCM,PPABSM,PTKET,PSVT,     &
                                  PLSUM,PLSVM,PLSWM,                        &
                                  PLSTHM,PLSRVM,                            &
                                  PLBXUM,PLBXVM,PLBXWM,                     &
                                  PLBXTHM,PLBXRM,PLBXTKEM,PLBXSVM,          &
                                  PLBYUM,PLBYVM,PLBYWM,                     &
-                                 PLBYTHM,PLBYRM,PLBYTKEM,PLBYSVM,          &
-                                 HMET_ADV_SCHEME,HSV_ADV_SCHEME            )
+                                 PLBYTHM,PLBYRM,PLBYTKEM,PLBYSVM           )
 !
 REAL,                     INTENT(IN) :: PTSTEP        !  Time step
-REAL,                     INTENT(IN) :: PTSTEP_UVW    !  Effective time step for
-                                                      !  momentum advection
-REAL,                     INTENT(IN) :: PTSTEP_MET    !  Effective time step for
-                                            !  meteorological variables advection
-REAL,                     INTENT(IN) :: PTSTEP_SV     !  Effective time step for
-                                            !  scalar variables advection
 INTEGER,                  INTENT(IN) :: KRR           !  Number of water var.
 INTEGER,                  INTENT(IN) :: KSV           !  Number of scal. var.
 INTEGER,                  INTENT(IN) :: KTCOUNT       !  Temporal loop COUNTer
 INTEGER,                  INTENT(IN) :: KMI           !  Model index
+CHARACTER(LEN=6),         INTENT(IN) :: HUVW_ADV_SCHEME ! advection scheme for wind
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ        ! (Rho) dry * Jacobian
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUS,PVS,PWS,   & ! 
@@ -61,14 +54,12 @@ REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBYUS,PLBYVS,PLBYWS,&    !
                                         PLBYTHS,PLBYTKES          ! LBY tendancy 
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PLBYRS,PLBYSVS            !  
 !  
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PUM,PVM,PWM,PPABSM,PTHM,&! Variables at
-                                         PTKEM,PSRCM              !   t-dt
-REAL, DIMENSION(:,:,:,:),INTENT(INOUT):: PRM,PSVM                 !
-!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PUM,PVM,PWM! Variables at t-dt
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PUT,PVT,PWT,PPABST,PTHT,&!
-                                         PTKET,PSRCT        ! Variables at
+                                         PTKET              ! Variables at
 REAL, DIMENSION(:,:,:,:),INTENT(INOUT):: PRT,PSVT                 !     t
-REAL,                    INTENT(INOUT):: PDRYMASST                ! 
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHM, PRCM,PPABSM  ! Variables at t-Dt
+REAL,                    INTENT(INOUT):: PDRYMASST                !
 !
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSUM,PLSVM,PLSWM,& ! Large Scale fields
                                          PLSTHM,PLSRVM       !     at t-dt
@@ -80,8 +71,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBXRM,PLBXSVM            !
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBYUM,PLBYVM,PLBYWM,   & ! 
                                           PLBYTHM,PLBYTKEM          ! LBY fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBYRM,PLBYSVM            ! 
-CHARACTER(LEN=6),         INTENT(IN)  :: HMET_ADV_SCHEME ! Scalar meteorological advection scheme 
-CHARACTER(LEN=6),         INTENT(IN)  :: HSV_ADV_SCHEME ! Scalar tracer advection scheme
 !
 END SUBROUTINE ENDSTEP
 !
@@ -92,8 +81,8 @@ END MODULE MODI_ENDSTEP
 !
 !
 !     ######################################################################
-      SUBROUTINE ENDSTEP        (PTSTEP,PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,   &
-                                 KRR,KSV,KTCOUNT,KMI,PRHODJ,               &
+      SUBROUTINE ENDSTEP        (PTSTEP,KRR,KSV,KTCOUNT,KMI,               &
+                                 HUVW_ADV_SCHEME,PRHODJ,                   &
                                  PUS,PVS,PWS,PDRYMASSS,                    &
                                  PTHS,PRS,PTKES,PSVS,                      &
                                  PLSUS,PLSVS,PLSWS,                        &
@@ -102,17 +91,15 @@ END MODULE MODI_ENDSTEP
                                  PLBXTHS,PLBXRS,PLBXTKES,PLBXSVS,          &
                                  PLBYUS,PLBYVS,PLBYWS,                     &
                                  PLBYTHS,PLBYRS,PLBYTKES,PLBYSVS,          &
-                                 PUM,PVM,PWM,PPABSM,                       &
-                                 PTHM,PRM,PTKEM,PSVM,PSRCM,                &
+                                 PUM,PVM,PWM,                              &
                                  PUT,PVT,PWT,PPABST,PDRYMASST,             &
-                                 PTHT,PRT,PTKET,PSVT,PSRCT,                &
+                                 PTHT,PRT,PTHM,PRCM,PPABSM,PTKET,PSVT,     &
                                  PLSUM,PLSVM,PLSWM,                        &
                                  PLSTHM,PLSRVM,                            &
                                  PLBXUM,PLBXVM,PLBXWM,                     &
                                  PLBXTHM,PLBXRM,PLBXTKEM,PLBXSVM,          &
                                  PLBYUM,PLBYVM,PLBYWM,                     &
-                                 PLBYTHM,PLBYRM,PLBYTKEM,PLBYSVM,          &
-                                 HMET_ADV_SCHEME,HSV_ADV_SCHEME            )
+                                 PLBYTHM,PLBYRM,PLBYTKEM,PLBYSVM           )
 !     ######################################################################
 !
 !!****  *ENDSTEP* - temporal advance and asselin filter for all variables
@@ -194,10 +181,10 @@ END MODULE MODI_ENDSTEP
 !!                 06/11/02 (V. Masson)    update the budget calls
 !!                 01/2004  (V. Masson)  surface externalization
 !!                 05/2006                Remove KEPS
-!!                 10/2006  (Maric, Lac)  modification for PPM schemes 
+!!                 10/2006  (Maric, Lac)  modification for PPM schemes
 !!                 10/2009  (C.Lac)       Correction on FIT temporal scheme for variables
 !!                                         advected with PPM
-
+!!                 04/2013  (C.Lac)       FIT for all the variables                   
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -214,6 +201,7 @@ USE MODD_NSV, ONLY : XSVMIN, NSV_CHEMBEG, NSV_CHEMEND, &
 
 USE MODD_CH_AEROSOL, ONLY : LORILAM
 USE MODD_DUST,       ONLY : LDUST
+USE MODD_PARAM_C2R2, ONLY : LACTIT
 USE MODI_BUDGET
 USE MODI_SHUMAN
 !
@@ -223,16 +211,11 @@ IMPLICIT NONE
 !
 !
 REAL,                     INTENT(IN) :: PTSTEP        !  Time step
-REAL,                     INTENT(IN) :: PTSTEP_UVW    !  Effective time step for
-                                                      !  momentum advection
-REAL,                     INTENT(IN) :: PTSTEP_MET    !  Effective time step for
-                                            !  meteorological variables advection
-REAL,                     INTENT(IN) :: PTSTEP_SV     !  Effective time step for
-                                            !  scalar variables advection
 INTEGER,                  INTENT(IN) :: KRR           !  Number of water var.
 INTEGER,                  INTENT(IN) :: KSV           !  Number of scal. var.
 INTEGER,                  INTENT(IN) :: KTCOUNT       !  Temporal loop COUNTer
 INTEGER,                  INTENT(IN) :: KMI           !  Model index
+CHARACTER(LEN=6),         INTENT(IN) :: HUVW_ADV_SCHEME ! advection scheme for wind
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ        ! (Rho) dry * Jacobian
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUS,PVS,PWS,   & ! 
@@ -252,12 +235,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBYUS,PLBYVS,PLBYWS,&    !
                                         PLBYTHS,PLBYTKES          ! LBY tendancy 
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PLBYRS,PLBYSVS            !  
 !  
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PUM,PVM,PWM,PPABSM,PTHM,&! Variables at
-                                         PTKEM,PSRCM        !   t-dt
-REAL, DIMENSION(:,:,:,:),INTENT(INOUT):: PRM,PSVM                 !
-!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PUM,PVM,PWM! Variables at t-dt
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PUT,PVT,PWT,PPABST,PTHT,&!
-                                         PTKET,PSRCT        ! Variables at
+                                         PTKET              ! Variables at
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHM, PRCM, PPABSM  ! Variables at t-Dt
 REAL, DIMENSION(:,:,:,:),INTENT(INOUT):: PRT,PSVT                 !     t
 REAL,                    INTENT(INOUT):: PDRYMASST                ! 
 !
@@ -271,14 +252,11 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBXRM,PLBXSVM            !
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBYUM,PLBYVM,PLBYWM,   & ! 
                                           PLBYTHM,PLBYTKEM          ! LBY fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBYRM,PLBYSVM            !   
-CHARACTER(LEN=6),         INTENT(IN)  :: HMET_ADV_SCHEME ! Scalar meteorological advection scheme 
-CHARACTER(LEN=6),         INTENT(IN)  :: HSV_ADV_SCHEME ! Scalar tracer advection scheme
 !
 !
 !*      0.2  DECLARATIONS OF LOCAL VARIABLES
 !
 INTEGER:: JSV                  ! loop counters
-REAL, DIMENSION(SIZE(PSRCM,1),SIZE(PSRCM,2),SIZE(PSRCM,3)) :: ZSRC_STORE
 INTEGER :: IKU
 !
 !------------------------------------------------------------------------------
@@ -286,54 +264,15 @@ INTEGER :: IKU
 IKU=SIZE(XZHAT)
 !*      1.   ASSELIN FILTER
 !
-IF( KTCOUNT /= 1 .OR. CCONF /= 'START' ) THEN
-!
-! Basic variables
-!
+IF (HUVW_ADV_SCHEME(1:3)=='CEN') THEN
+  IF( KTCOUNT /= 1 .OR. CCONF /= 'START' ) THEN
      PUM(:,:,:)=(1.-XASSELIN)*PUT(:,:,:)+0.5*XASSELIN*(PUM(:,:,:)+PUS(:,:,:))
      PVM(:,:,:)=(1.-XASSELIN)*PVT(:,:,:)+0.5*XASSELIN*(PVM(:,:,:)+PVS(:,:,:))
      PWM(:,:,:)=(1.-XASSELIN)*PWT(:,:,:)+0.5*XASSELIN*(PWM(:,:,:)+PWS(:,:,:))
-! if using PPM advection for acalars, skip Asselin filter
-!
-   IF (HMET_ADV_SCHEME(1:3) == 'PPM') THEN
-      PTHM(:,:,:) = PTHT(:,:,:)
-! Moisture
-      PRM(:,:,:,1:KRR) = PRT(:,:,:,1:KRR)
-! Turbulent kinetic energy
-      IF (SIZE(PTKEM,1) /= 0) PTKEM(:,:,:) = PTKET(:,:,:)
-   ELSE
-      PTHM(:,:,:)=(1.-XASSELIN)*PTHT(:,:,:)+0.5*XASSELIN*(PTHM(:,:,:)+PTHS(:,:,:))
-! Moisture
-      PRM(:,:,:,1:KRR)=(1.-XASSELIN)*PRT(:,:,:,1:KRR)+                   &
-                      0.5*XASSELIN*(PRM(:,:,:,1:KRR)+PRS(:,:,:,1:KRR))
-!
-! Turbulence kinetic energy
-      IF (SIZE(PTKEM,1) /= 0) &
-      PTKEM(:,:,:)=(1.-XASSELIN)*PTKET(:,:,:)+0.5*XASSELIN*(PTKEM(:,:,:)+PTKES(:,:,:))
-   END IF
-!
-!
-! Other scalars
-!
-   IF  (HSV_ADV_SCHEME(1:3) == 'PPM')  THEN
-      PSVM(:,:,:,1:KSV) = PSVT(:,:,:,1:KSV)
-!
-   ELSE ! other advection schemes
-!
-    PSVM(:,:,:,1:KSV)=(1.-XASSELIN_SV)*PSVT(:,:,:,1:KSV)+          &
-                       0.5*XASSELIN_SV*(PSVM(:,:,:,1:KSV)+PSVS(:,:,:,1:KSV))
-   END IF
-!
-ENDIF
-!------------------------------------------------------------------------------
-!
-!*      2.   SWAPPING FOR THE ABSOLUTE PRESSURE
-!
-PPABSM(:,:,:)=PPABST(:,:,:)
-!
-!------------------------------------------------------------------------------
-!
-!*      3.   TEMPORAL ADVANCE OF PROGNOSTIC VARIABLES
+  END IF
+END IF
+
+!*      1.   TEMPORAL ADVANCE OF PROGNOSTIC VARIABLES
 !
 PUT(:,:,:)=PUS(:,:,:)
 PVT(:,:,:)=PVS(:,:,:)
@@ -347,22 +286,20 @@ PTHT(:,:,:)=PTHS(:,:,:)
 !
 PRT(:,:,:,1:KRR)=PRS(:,:,:,1:KRR)
 !
+PPABSM(:,:,:) = PPABST(:,:,:)
+!
+IF (LACTIT) THEN
+   PTHM(:,:,:)   = PTHT(:,:,:)
+   PRCM(:,:,:)   = PRT(:,:,:,2)
+END IF
 ! Turbulence
 !
-IF (SIZE(PTKEM,1) /= 0) PTKET(:,:,:)=PTKES(:,:,:)
+IF (SIZE(PTKET,1) /= 0) PTKET(:,:,:)=PTKES(:,:,:)
 !
 ! Other scalars
 !
 PSVT(:,:,:,1:KSV)=PSVS(:,:,:,1:KSV)
 !
-! PSRC
-!
-IF ( SIZE(PSRCM,1) /= 0 ) THEN
-  ZSRC_STORE(:,:,:) = PSRCM(:,:,:)
-  PSRCM(:,:,:)      = PSRCT(:,:,:)
-  PSRCT(:,:,:)      = ZSRC_STORE(:,:,:)
-END IF
-!
 !------------------------------------------------------------------------------
 !
 !*      4.   TEMPORAL ADVANCE OF THE LARGE SCALE FIELDS
@@ -437,9 +374,6 @@ IF (SIZE(PRT,4) > 1) THEN
   WHERE(PRT(:,:,:,2:)<1.E-20)
     PRT(:,:,:,2:)=0.
   END WHERE
-  WHERE(PRM(:,:,:,2:)<1.E-20)
-    PRM(:,:,:,2:)=0.
-  END WHERE
 END IF
 IF (SIZE(PLBXRM,4) > 1) THEN
   WHERE(PLBXRM(:,:,:,2:)<1.E-20)
@@ -509,42 +443,42 @@ IF (LBU_ENABLE) THEN
   NBUPROCCTR(1:12+KSV)=3
   NBUCTR_ACTV(1:12+KSV)=3
 !
-  IF (LBUDGET_U)   CALL BUDGET (PUM(:,:,:)*PRHODJ(:,:,:)/PTSTEP,1,'AVEF_BU_RU')
-  IF (LBUDGET_V)   CALL BUDGET (PVM(:,:,:)*PRHODJ(:,:,:)/PTSTEP,2,'AVEF_BU_RV')
-  IF (LBUDGET_W)   CALL BUDGET (PWM(:,:,:)*PRHODJ(:,:,:)/PTSTEP,3,'AVEF_BU_RW')
-  IF (LBUDGET_TH)  CALL BUDGET (PTHM(:,:,:)*PRHODJ(:,:,:)/PTSTEP,4,'AVEF_BU_RTH')
-  IF (LBUDGET_TKE) CALL BUDGET (PTKEM(:,:,:)*PRHODJ(:,:,:)/PTSTEP,5,'AVEF_BU_RTKE')
-  IF (LBUDGET_RV)  CALL BUDGET (PRM(:,:,:,1)*PRHODJ(:,:,:)/PTSTEP,6,'AVEF_BU_RRV')
-  IF (LBUDGET_RC)  CALL BUDGET (PRM(:,:,:,2)*PRHODJ(:,:,:)/PTSTEP,7,'AVEF_BU_RRC')
-  IF (LBUDGET_RR)  CALL BUDGET (PRM(:,:,:,3)*PRHODJ(:,:,:)/PTSTEP,8,'AVEF_BU_RRR')
-  IF (LBUDGET_RI)  CALL BUDGET (PRM(:,:,:,4)*PRHODJ(:,:,:)/PTSTEP,9,'AVEF_BU_RRI')
-  IF (LBUDGET_RS)  CALL BUDGET (PRM(:,:,:,5)*PRHODJ(:,:,:)/PTSTEP,10,'AVEF_BU_RRS')
-  IF (LBUDGET_RG)  CALL BUDGET (PRM(:,:,:,6)*PRHODJ(:,:,:)/PTSTEP,11,'AVEF_BU_RRG')
-  IF (LBUDGET_RH)  CALL BUDGET (PRM(:,:,:,7)*PRHODJ(:,:,:)/PTSTEP,12,'AVEF_BU_RRH')
+  IF (LBUDGET_U)   CALL BUDGET (PUT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,1,'AVEF_BU_RU')
+  IF (LBUDGET_V)   CALL BUDGET (PVT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,2,'AVEF_BU_RV')
+  IF (LBUDGET_W)   CALL BUDGET (PWT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,3,'AVEF_BU_RW')
+  IF (LBUDGET_TH)  CALL BUDGET (PTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,4,'AVEF_BU_RTH')
+  IF (LBUDGET_TKE) CALL BUDGET (PTKET(:,:,:)*PRHODJ(:,:,:)/PTSTEP,5,'AVEF_BU_RTKE')
+  IF (LBUDGET_RV)  CALL BUDGET (PRT(:,:,:,1)*PRHODJ(:,:,:)/PTSTEP,6,'AVEF_BU_RRV')
+  IF (LBUDGET_RC)  CALL BUDGET (PRT(:,:,:,2)*PRHODJ(:,:,:)/PTSTEP,7,'AVEF_BU_RRC')
+  IF (LBUDGET_RR)  CALL BUDGET (PRT(:,:,:,3)*PRHODJ(:,:,:)/PTSTEP,8,'AVEF_BU_RRR')
+  IF (LBUDGET_RI)  CALL BUDGET (PRT(:,:,:,4)*PRHODJ(:,:,:)/PTSTEP,9,'AVEF_BU_RRI')
+  IF (LBUDGET_RS)  CALL BUDGET (PRT(:,:,:,5)*PRHODJ(:,:,:)/PTSTEP,10,'AVEF_BU_RRS')
+  IF (LBUDGET_RG)  CALL BUDGET (PRT(:,:,:,6)*PRHODJ(:,:,:)/PTSTEP,11,'AVEF_BU_RRG')
+  IF (LBUDGET_RH)  CALL BUDGET (PRT(:,:,:,7)*PRHODJ(:,:,:)/PTSTEP,12,'AVEF_BU_RRH')
   IF (LBUDGET_SV) THEN
     DO JSV=1,KSV
-      CALL BUDGET (PSVM(:,:,:,JSV)*PRHODJ(:,:,:)/PTSTEP,12+JSV,'AVEF_BU_RSV')
+      CALL BUDGET (PSVT(:,:,:,JSV)*PRHODJ(:,:,:)/PTSTEP,12+JSV,'AVEF_BU_RSV')
     END DO
   END IF
 !
   NBUPROCCTR(1:12+KSV)=2
   NBUCTR_ACTV(1:12+KSV)=2
 !
-  IF (LBUDGET_U)   CALL BUDGET (PUS*MXM(PRHODJ)/PTSTEP_UVW,1,'ENDF_BU_RU')
-  IF (LBUDGET_V)   CALL BUDGET (PVS*MYM(PRHODJ)/PTSTEP_UVW,2,'ENDF_BU_RV')
-  IF (LBUDGET_W)   CALL BUDGET (PWS*MZM(1,IKU,1,PRHODJ)/PTSTEP_UVW,3,'ENDF_BU_RW')
-  IF (LBUDGET_TH)  CALL BUDGET (PTHS*PRHODJ/PTSTEP_MET,4,'ENDF_BU_RTH')
-  IF (LBUDGET_TKE) CALL BUDGET (PTKES*PRHODJ/PTSTEP_MET,5,'ENDF_BU_RTKE')
-  IF (LBUDGET_RV)  CALL BUDGET (PRS(:,:,:,1)*PRHODJ/PTSTEP_MET,6,'ENDF_BU_RRV')
-  IF (LBUDGET_RC)  CALL BUDGET (PRS(:,:,:,2)*PRHODJ/PTSTEP_MET,7,'ENDF_BU_RRC')
-  IF (LBUDGET_RR)  CALL BUDGET (PRS(:,:,:,3)*PRHODJ/PTSTEP_MET,8,'ENDF_BU_RRR')
-  IF (LBUDGET_RI)  CALL BUDGET (PRS(:,:,:,4)*PRHODJ/PTSTEP_MET,9,'ENDF_BU_RRI')
-  IF (LBUDGET_RS)  CALL BUDGET (PRS(:,:,:,5)*PRHODJ/PTSTEP_MET,10,'ENDF_BU_RRS')
-  IF (LBUDGET_RG)  CALL BUDGET (PRS(:,:,:,6)*PRHODJ/PTSTEP_MET,11,'ENDF_BU_RRG')
-  IF (LBUDGET_RH)  CALL BUDGET (PRS(:,:,:,7)*PRHODJ/PTSTEP_MET,12,'ENDF_BU_RRH')
+  IF (LBUDGET_U)   CALL BUDGET (PUS*MXM(PRHODJ)/PTSTEP,1,'ENDF_BU_RU')
+  IF (LBUDGET_V)   CALL BUDGET (PVS*MYM(PRHODJ)/PTSTEP,2,'ENDF_BU_RV')
+  IF (LBUDGET_W)   CALL BUDGET (PWS*MZM(1,IKU,1,PRHODJ)/PTSTEP,3,'ENDF_BU_RW')
+  IF (LBUDGET_TH)  CALL BUDGET (PTHS*PRHODJ/PTSTEP,4,'ENDF_BU_RTH')
+  IF (LBUDGET_TKE) CALL BUDGET (PTKES*PRHODJ/PTSTEP,5,'ENDF_BU_RTKE')
+  IF (LBUDGET_RV)  CALL BUDGET (PRS(:,:,:,1)*PRHODJ/PTSTEP,6,'ENDF_BU_RRV')
+  IF (LBUDGET_RC)  CALL BUDGET (PRS(:,:,:,2)*PRHODJ/PTSTEP,7,'ENDF_BU_RRC')
+  IF (LBUDGET_RR)  CALL BUDGET (PRS(:,:,:,3)*PRHODJ/PTSTEP,8,'ENDF_BU_RRR')
+  IF (LBUDGET_RI)  CALL BUDGET (PRS(:,:,:,4)*PRHODJ/PTSTEP,9,'ENDF_BU_RRI')
+  IF (LBUDGET_RS)  CALL BUDGET (PRS(:,:,:,5)*PRHODJ/PTSTEP,10,'ENDF_BU_RRS')
+  IF (LBUDGET_RG)  CALL BUDGET (PRS(:,:,:,6)*PRHODJ/PTSTEP,11,'ENDF_BU_RRG')
+  IF (LBUDGET_RH)  CALL BUDGET (PRS(:,:,:,7)*PRHODJ/PTSTEP,12,'ENDF_BU_RRH')
   IF (LBUDGET_SV) THEN
     DO JSV=1,KSV
-      CALL BUDGET (PSVS(:,:,:,JSV)*PRHODJ/PTSTEP_SV,JSV+12,'ENDF_BU_RSV')
+      CALL BUDGET (PSVS(:,:,:,JSV)*PRHODJ/PTSTEP,JSV+12,'ENDF_BU_RSV')
     END DO
   END IF
 END IF
diff --git a/src/MNH/endstep_budget.f90 b/src/MNH/endstep_budget.f90
index cbf5af18a..55ee6d304 100644
--- a/src/MNH/endstep_budget.f90
+++ b/src/MNH/endstep_budget.f90
@@ -11,8 +11,7 @@
 INTERFACE
 !
       SUBROUTINE ENDSTEP_BUDGET(HFMDIAC,HLUOUT,KTCOUNT,              &
-                               TPDTCUR,TPDTMOD,PTSTEP,               &
-                               PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,KSV   )
+                               TPDTCUR,TPDTMOD,PTSTEP,KSV            )
 !
 USE MODD_TYPE_DATE
 !
@@ -22,12 +21,6 @@ INTEGER, INTENT(IN)            :: KTCOUNT    ! temporal loop counter
 TYPE (DATE_TIME),   INTENT(IN) :: TPDTCUR    ! Current date and time
 TYPE (DATE_TIME),   INTENT(IN) :: TPDTMOD    ! Creation date and time
 REAL,               INTENT(IN) :: PTSTEP     ! time step
-REAL,               INTENT(IN) :: PTSTEP_UVW !  Effective time step for
-                                             !  momentum advection
-REAL,               INTENT(IN) :: PTSTEP_MET !  Effective time step for
-                                             !  meteorological variables advection
-REAL,               INTENT(IN) :: PTSTEP_SV  !  Effective time step for
-                                             !  scalar variables advection
 INTEGER,            INTENT(IN) :: KSV        ! Number of Scalar Variables
 
 !
@@ -39,8 +32,7 @@ END MODULE MODI_ENDSTEP_BUDGET
 !
 !     ###############################################################
       SUBROUTINE ENDSTEP_BUDGET(HFMDIAC,HLUOUT,KTCOUNT,             &
-                               TPDTCUR,TPDTMOD,PTSTEP,              &
-                               PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,KSV  )
+                               TPDTCUR,TPDTMOD,PTSTEP,KSV           )
 !     ###############################################################
 !
 !!****  *ENDSTEP_BUDGET* - routine to call the routine write_budget 
@@ -126,12 +118,6 @@ INTEGER, INTENT(IN)            :: KTCOUNT    ! temporal loop counter
 TYPE (DATE_TIME),   INTENT(IN) :: TPDTCUR    ! Current date and time
 TYPE (DATE_TIME),   INTENT(IN) :: TPDTMOD    ! Creation date and time
 REAL,               INTENT(IN) :: PTSTEP     ! time step 
-REAL,               INTENT(IN) :: PTSTEP_UVW !  Effective time step for
-                                             !  momentum advection
-REAL,               INTENT(IN) :: PTSTEP_MET !  Effective time step for
-                                             !  meteorological variables advection
-REAL,               INTENT(IN) :: PTSTEP_SV  !  Effective time step for
-                                             !  scalar variables advection
 INTEGER,            INTENT(IN) :: KSV        ! Number of Scalar Variables
 !
 !-------------------------------------------------------------------------------
@@ -147,8 +133,7 @@ SELECT CASE(CBUTYPE)
 !*	 1.1    storage of the budget fields 
 !
     IF( MODULO(KTCOUNT+1,NBUSTEP*NBUWRNB) == 0 ) THEN  
-      CALL WRITE_BUDGET(HFMDIAC,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, &
-                        PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,KSV    )
+      CALL WRITE_BUDGET(HFMDIAC,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, KSV )
 !
 !*	 1.2    resetting the budget arrays to 0.
 !
@@ -184,8 +169,7 @@ SELECT CASE(CBUTYPE)
 !
 !*	 2.1    storage of the budget fields
 ! 
-      CALL WRITE_BUDGET(HFMDIAC,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, &  
-                        PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,KSV    )
+      CALL WRITE_BUDGET(HFMDIAC,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, KSV)
 !
 !*	 2.2    reset the budget fields to 0.
 !
diff --git a/src/MNH/error_on_temperature.f90 b/src/MNH/error_on_temperature.f90
index 0162d19d3..f41faa5fc 100644
--- a/src/MNH/error_on_temperature.f90
+++ b/src/MNH/error_on_temperature.f90
@@ -74,7 +74,7 @@ USE MODD_CONF           ! declaration modules
 USE MODD_LUNIT
 USE MODD_CST
 USE MODD_REF_n
-USE MODD_FIELD_n, ONLY: XTHM
+USE MODD_FIELD_n, ONLY: XTHT
 USE MODD_VER_INTERP_LIN
 !
 IMPLICIT NONE
@@ -112,7 +112,7 @@ INTEGER                           :: JP
 IIU=SIZE(PT_LS,1)
 IJU=SIZE(PT_LS,2)
 ILU=SIZE(PT_LS,3)
-IKU=SIZE(XTHM,3)
+IKU=SIZE(XTHT,3)
 !
 ALLOCATE(ZPLEVELS(20))
 ZPLEVELS(:) = (/ (5000.*JP,JP=20,1,-1) /)
@@ -155,7 +155,7 @@ ALLOCATE(ZT1(IIU,IJU,IKU))
 ALLOCATE(ZP2(IIU,IJU,20))
 ALLOCATE(ZT2(IIU,IJU,20))
 !
-ZT1(:,:,:)=XTHM(:,:,IKU:1:-1)*(PPABS(:,:,IKU:1:-1)/XP00)**(XRD/XCPD)
+ZT1(:,:,:)=XTHT(:,:,IKU:1:-1)*(PPABS(:,:,IKU:1:-1)/XP00)**(XRD/XCPD)
 ZP1(:,:,:)=PPABS(:,:,IKU:1:-1)
 ZP2(:,:,:)=SPREAD(SPREAD(ZPLEVELS(20:1:-1),1,IIU),2,IJU)
 CALL COEF_VER_INTERP_LIN(ZP1(:,:,:),ZP2(:,:,:))
diff --git a/src/MNH/exchange.f90 b/src/MNH/exchange.f90
index 593e7c8b0..2925cc4b9 100644
--- a/src/MNH/exchange.f90
+++ b/src/MNH/exchange.f90
@@ -12,18 +12,13 @@
 INTERFACE
 !
 !     ##############################################################################
-      SUBROUTINE EXCHANGE (PTSTEP,PTSTEP_MET,PTSTEP_SV,KRR,KSV,PRHODJ,TPFIELDS_ll, &
+      SUBROUTINE EXCHANGE (PTSTEP,KRR,KSV,PRHODJ,TPFIELDS_ll,                      &
                            PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS                  )
 !     ##############################################################################
 !
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 !
-REAL,                     INTENT(IN) :: PTSTEP            !  Double Time step
-                                       ! (or single if cold start)
-REAL,                     INTENT(IN) :: PTSTEP_MET        !  Time step for
-                                       ! scalar meteorological variables
-REAL,                     INTENT(IN) :: PTSTEP_SV         !  Time step for
-                                       ! scalar tracer variables
+REAL,                     INTENT(IN) :: PTSTEP            !  Time step
 INTEGER,                  INTENT(IN) :: KRR               !  Number of water var.
 INTEGER,                  INTENT(IN) :: KSV               !  Number of scal. var.
                                                           ! (=1 at the segment beginning)
@@ -43,8 +38,8 @@ END MODULE MODI_EXCHANGE
 !
 !
 !     #######################################################################
-      SUBROUTINE EXCHANGE (PTSTEP,PTSTEP_MET,PTSTEP_SV,KRR,KSV,PRHODJ,TPFIELDS_ll, &
-                           PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS                  )
+      SUBROUTINE EXCHANGE (PTSTEP,KRR,KSV,PRHODJ,TPFIELDS_ll,               &
+                           PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS           )
 !     #######################################################################
 !
 !!****  * EXCHANGE* - update the halo of each subdomains for the variables at time step t+dt
@@ -93,7 +88,6 @@ END MODULE MODI_EXCHANGE
 USE MODE_ll
 !
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-USE MODD_CONF, ONLY : CCONF
 USE MODD_GRID_n
 USE MODI_SHUMAN
 !
@@ -101,12 +95,7 @@ IMPLICIT NONE
 !
 !*      0.1  DECLARATIONS OF ARGUMENTS
 !
-REAL,                     INTENT(IN) :: PTSTEP            !  Double Time step
-                                       ! (or single if cold start)
-REAL,                     INTENT(IN) :: PTSTEP_MET        !  Time step for
-                                       ! scalar meteorological variables
-REAL,                     INTENT(IN) :: PTSTEP_SV         !  Time step for
-                                       ! scalar tracer variables
+REAL,                     INTENT(IN) :: PTSTEP            !  Time step
 INTEGER,                  INTENT(IN) :: KRR               !  Number of water var.
 INTEGER,                  INTENT(IN) :: KSV               !  Number of scal. var.
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ            ! (Rho) dry * Jacobian
@@ -121,7 +110,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS,PRSVS         !
 !
 INTEGER   :: IINFO_ll              ! return code of parallel routine
 INTEGER   :: JRR,JSV              ! loop counters
-REAL      :: ZTSTEP               !  Time step for temporal advance
 !
 INTEGER :: IKU
 !------------------------------------------------------------------------------
@@ -138,16 +126,16 @@ PRWS(:,:,:) = PRWS(:,:,:)*PTSTEP / MZM(1,IKU,1,PRHODJ)
 !
 !        1.b Meteorological scalar variables
 !
-PRTHS(:,:,:) = PRTHS(:,:,:)*PTSTEP_MET/PRHODJ
+PRTHS(:,:,:) = PRTHS(:,:,:)*PTSTEP/PRHODJ
 DO JRR=1,KRR
-  PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)*PTSTEP_MET/PRHODJ
+  PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)*PTSTEP/PRHODJ
 END DO
-IF (SIZE(PRTKES,1) /= 0) PRTKES(:,:,:) = PRTKES(:,:,:)*PTSTEP_MET/PRHODJ
+IF (SIZE(PRTKES,1) /= 0) PRTKES(:,:,:) = PRTKES(:,:,:)*PTSTEP/PRHODJ
 !
 !        1.c Tracer scalar variables
 !
 DO JSV=1,KSV
-  PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV)*PTSTEP_SV/PRHODJ
+  PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV)*PTSTEP/PRHODJ
 END DO
 !
 !------------------------------------------------------------------------------
diff --git a/src/MNH/fast_terms.f90 b/src/MNH/fast_terms.f90
index 08f2ea5a0..853ca65fc 100644
--- a/src/MNH/fast_terms.f90
+++ b/src/MNH/fast_terms.f90
@@ -13,7 +13,7 @@ INTERFACE
       SUBROUTINE FAST_TERMS( KRR, KMI, HFMFILE, HLUOUT, HRAD,           &
                              HTURBDIM, HSCONV, HMF_CLOUD,               &
                              OCLOSE_OUT, OSUBG_COND, PTSTEP,            &
-                             PRHODJ, PPABSM, PSIGS, PPABST,             &
+                             PRHODJ, PSIGS, PPABST,                     &
                              PCF_MF,PRC_MF,                             &
                              PRVT, PRCT, PRVS, PRCS, PRRS,              &
                              PTHS, PSRCS, PCLDFR )
@@ -35,7 +35,6 @@ LOGICAL,                  INTENT(IN)    :: OSUBG_COND ! Switch for Subgrid
 REAL,                     INTENT(IN)    :: PTSTEP   ! Time step          
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t     
 !
@@ -66,7 +65,7 @@ END MODULE MODI_FAST_TERMS
       SUBROUTINE FAST_TERMS( KRR, KMI, HFMFILE, HLUOUT, HRAD,           &
                              HTURBDIM, HSCONV, HMF_CLOUD,               &
                              OCLOSE_OUT, OSUBG_COND, PTSTEP,            &
-                             PRHODJ, PPABSM, PSIGS, PPABST,             &
+                             PRHODJ, PSIGS, PPABST,                     &
                              PCF_MF,PRC_MF,                             &                   
                              PRVT, PRCT, PRVS, PRCS, PRRS,              &
                              PTHS, PSRCS, PCLDFR )
@@ -191,7 +190,6 @@ LOGICAL,                  INTENT(IN)    :: OSUBG_COND ! Switch for Subgrid
 REAL,                     INTENT(IN)    :: PTSTEP   ! Time step          
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t     
 !
@@ -284,7 +282,7 @@ END WHERE
 !
 !*       2.2    estimate the Exner function at t+1
 !
-ZEXNS(:,:,:) = ( (2. * PPABST(:,:,:) - PPABSM(:,:,:)) / XP00 ) ** (XRD/XCPD)  
+ZEXNS(:,:,:) = ( PPABST(:,:,:)  / XP00 ) ** (XRD/XCPD)  
 !
 !    beginning of the iterative loop
 !
@@ -315,7 +313,7 @@ DO JITER =1,ITERMAX
 !*       2.7    compute the saturation mixing ratio at t+1
 !
   ZW2(:,:,:) =  ZW1(:,:,:) * ZEPS /              &
-                ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW1(:,:,:) )   
+                (  PPABST(:,:,:) - ZW1(:,:,:) )   
 !
 !*       2.8    compute the saturation mixing ratio derivative (rvs')
 !
diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90
index c17bc2e75..e066d3e6e 100644
--- a/src/MNH/forcing.f90
+++ b/src/MNH/forcing.f90
@@ -10,18 +10,16 @@
 !
 INTERFACE
 !
-      SUBROUTINE FORCING ( PTSTEP, PTSTEP_UVW, OUSERV, PRHODJ, PCORIOZ,    &
+      SUBROUTINE FORCING ( PTSTEP, OUSERV, PRHODJ, PCORIOZ,                &
                            PZHAT,  PZZ,  TPDTCUR,                          &
                            PUFRC_PAST, PVFRC_PAST,                         &
                            PUT,  PVT,  PWT,  PTHT,  PTKET,  PRT,  PSVT,    &
-                           PUM,  PVM,  PWM,  PTHM,  PTKEM,  PRM,  PSVM,    &
                            PRUS, PRVS, PRWS, PRTHS, PRTKES, PRRS, PRSVS,   &
                            KMI)
 !
 USE MODD_TIME, ONLY: DATE_TIME
 !
 REAL,                   INTENT(IN) :: PTSTEP  ! time-step
-REAL,                   INTENT(IN) :: PTSTEP_UVW  ! time-step
 LOGICAL               , INTENT(IN) :: OUSERV  ! Logical to use rv
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ  ! ( rhod J ) = dry density
               ! for reference state * Jacobian of the GCS transformation.
@@ -37,11 +35,6 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT,PVT,PWT,PTHT,PTKET
                                           ! TKE at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT !  moist variables at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT!  scalar variables at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUM,PVM,PWM,PTHM,PTKEM 
-                                          ! wind, potential temperature and
-                                          ! TKE at time t-dt
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRM !  moist variables at time t-dt
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVM!  scalar variables at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS,PRVS,PRWS,PRTHS,PRTKES
                                           ! wind, potential temperature and
                                           ! TKE tendencies at time t
@@ -57,11 +50,10 @@ END INTERFACE
 END MODULE MODI_FORCING
 !
 !     ######################################################################
-      SUBROUTINE FORCING ( PTSTEP,  PTSTEP_UVW, OUSERV, PRHODJ, PCORIOZ,   &
+      SUBROUTINE FORCING ( PTSTEP, OUSERV, PRHODJ, PCORIOZ,                &
                            PZHAT,  PZZ,  TPDTCUR,                          &
                            PUFRC_PAST, PVFRC_PAST,                         &
                            PUT,  PVT,  PWT,  PTHT,  PTKET,  PRT,  PSVT,    &
-                           PUM,  PVM,  PWM,  PTHM,  PTKEM,  PRM,  PSVM,    &
                            PRUS, PRVS, PRWS, PRTHS, PRTKES, PRRS, PRSVS,   &
                            KMI)
 !     ######################################################################
@@ -175,7 +167,6 @@ IMPLICIT NONE
 !*       0.1   Declarations of dummy arguments :
 !
 REAL,                   INTENT(IN) :: PTSTEP  ! time-step
-REAL,                   INTENT(IN) :: PTSTEP_UVW  ! time-step
 LOGICAL               , INTENT(IN) :: OUSERV  ! Logical to use rv
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ  ! ( rhod J ) = dry density
               ! for reference state * Jacobian of the GCS transformation.
@@ -191,11 +182,6 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT,PVT,PWT,PTHT,PTKET
                                           ! TKE at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT !  moist variables at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT!  scalar variables at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUM,PVM,PWM,PTHM,PTKEM 
-                                          ! wind, potential temperature and
-                                          ! TKE at time t-dt
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRM !  moist variables at time t-dt
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVM!  scalar variables at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS,PRVS,PRWS,PRTHS,PRTKES
                                           ! wind, potential temperature and
                                           ! TKE tendencies at time t
@@ -606,41 +592,41 @@ IF (LVERT_MOTION_FRC) THEN
 !
 ! forced vertical transport of U and V
 !
-  ZDZZ(:,:,:) = MXF(ZRWCF(:,:,:)) *DZM(1,IKU,1,PUM(:,:,:))
+  ZDZZ(:,:,:) = MXF(ZRWCF(:,:,:)) *DZM(1,IKU,1,PUT(:,:,:))
   PRUS(:,:,:) = PRUS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:))
-  ZDZZ(:,:,:) = MYF(ZRWCF(:,:,:)) *DZM(1,IKU,1,PVM(:,:,:))
+  ZDZZ(:,:,:) = MYF(ZRWCF(:,:,:)) *DZM(1,IKU,1,PVT(:,:,:))
   PRVS(:,:,:) = PRVS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:))
 !
 ! forced vertical transport of W
 !
   IF( .NOT.L1D ) THEN
-    ZDZZ(:,:,:) = MZF(1,IKU,1,ZRWCF(:,:,:)) *DZF(1,IKU,1,PWM(:,:,:))
+    ZDZZ(:,:,:) = MZF(1,IKU,1,ZRWCF(:,:,:)) *DZF(1,IKU,1,PWT(:,:,:))
     PRWS(:,:,:) = PRWS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:))
   END IF
 !
 ! forced vertical transport of THETA
 !
-  ZDZZ(:,:,:) = ZRWCF(:,:,:)  *DZM(1,IKU,1,PTHM(:,:,:))
+  ZDZZ(:,:,:) = ZRWCF(:,:,:)  *DZM(1,IKU,1,PTHT(:,:,:))
   PRTHS(:,:,:) = PRTHS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:))
 !
 ! forced vertical transport of TKE (if allocated)
 !
-  IF( SIZE(PTKEM) == SIZE(ZDZZ) ) THEN
-    ZDZZ(:,:,:) = ZRWCF(:,:,:)  *DZM(1,IKU,1,PTKEM(:,:,:))
+  IF( SIZE(PTKET) == SIZE(ZDZZ) ) THEN
+    ZDZZ(:,:,:) = ZRWCF(:,:,:)  *DZM(1,IKU,1,PTKET(:,:,:))
     PRTKES(:,:,:) = PRTKES(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:))
   END IF
 !
 ! forced vertical transport of water variables
 !
   DO JL = 1 , SIZE(PRRS,4)
-    ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PRM(:,:,:,JL))
+    ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PRT(:,:,:,JL))
     PRRS(:,:,:,JL) = PRRS(:,:,:,JL) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:))
   END DO
 !
 ! forced vertical transport of scalar variables
 !
   DO JL = 1 , SIZE(PRSVS,4)
-    ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PSVM(:,:,:,JL))
+    ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PSVT(:,:,:,JL))
     PRSVS(:,:,:,JL) = PRSVS(:,:,:,JL) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:))
   END DO
 !
@@ -684,12 +670,12 @@ IF( LCORIO ) THEN
     !
     ZCOEF(:,:,:) = MIN(1.,SQRT(ZCOEF))
     !
-    ZDUT(:,:,:) = ZDUF(:,:,:) * MXM(ZCOEF) * PTSTEP_UVW / PTSTEP
-    ZDVT(:,:,:) = ZDVF(:,:,:) * MYM(ZCOEF) * PTSTEP_UVW / PTSTEP
+    ZDUT(:,:,:) = ZDUF(:,:,:) * MXM(ZCOEF) 
+    ZDVT(:,:,:) = ZDVF(:,:,:) * MYM(ZCOEF) 
     !
-    PRUS(:,:,:) = PRUS(:,:,:) + ZDUT(:,:,:) * MXM(PRHODJ) / PTSTEP_UVW
+    PRUS(:,:,:) = PRUS(:,:,:) + ZDUT(:,:,:) * MXM(PRHODJ) / PTSTEP
     !
-    PRVS(:,:,:) = PRVS(:,:,:) + ZDVT(:,:,:) * MYM(PRHODJ) / PTSTEP_UVW
+    PRVS(:,:,:) = PRVS(:,:,:) + ZDVT(:,:,:) * MYM(PRHODJ) / PTSTEP
     !
     !
     ! Takes into acount the Coriolis force due to this evolution
@@ -738,7 +724,7 @@ IF( LRELAX_THRV_FRC .OR. LRELAX_UV_FRC ) THEN
 !  apply THETA relaxation
 !
     WHERE( GRELAX_MASK_FRC )
-      PRTHS(:,:,:) = PRTHS(:,:,:) - PRHODJ(:,:,:)*(PTHM(:,:,:)-ZTHF(:,:,:)) &
+      PRTHS(:,:,:) = PRTHS(:,:,:) - PRHODJ(:,:,:)*(PTHT(:,:,:)-ZTHF(:,:,:)) &
                                                  / XRELAX_TIME_FRC
     END WHERE
 !
@@ -747,7 +733,7 @@ IF( LRELAX_THRV_FRC .OR. LRELAX_UV_FRC ) THEN
     IF( OUSERV ) THEN
       WHERE( GRELAX_MASK_FRC )
         PRRS(:,:,:,1) = PRRS(:,:,:,1) &
-                      - PRHODJ(:,:,:)*(PRM(:,:,:,1)-ZRVF(:,:,:)) &
+		      - PRHODJ(:,:,:)*(PRT(:,:,:,1)-ZRVF(:,:,:)) &
                                                  / XRELAX_TIME_FRC
       END WHERE
 !
@@ -760,9 +746,9 @@ IF( LRELAX_THRV_FRC .OR. LRELAX_UV_FRC ) THEN
 !   apply UV relaxation
 !
     WHERE( GRELAX_MASK_FRC )
-      PRUS(:,:,:) = PRUS(:,:,:) - MXM(PRHODJ(:,:,:))*(PUM(:,:,:)-ZUF(:,:,:)) &
+      PRUS(:,:,:) = PRUS(:,:,:) - MXM(PRHODJ(:,:,:))*(PUT(:,:,:)-ZUF(:,:,:)) &
                                                  / XRELAX_TIME_FRC
-      PRVS(:,:,:) = PRVS(:,:,:) - MYM(PRHODJ(:,:,:))*(PVM(:,:,:)-ZVF(:,:,:)) &
+      PRVS(:,:,:) = PRVS(:,:,:) - MYM(PRHODJ(:,:,:))*(PVT(:,:,:)-ZVF(:,:,:)) &
                                                  / XRELAX_TIME_FRC
     END WHERE
 !
diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90
index d942980b2..8d1efd7cc 100644
--- a/src/MNH/goto_model_wrapper.f90
+++ b/src/MNH/goto_model_wrapper.f90
@@ -37,6 +37,7 @@ USE MODD_DUMMY_GR_FIELD_n
 USE MODD_DYN_n
 USE MODD_DYNZD_n
 USE MODD_FIELD_n
+USE MODD_PAST_FIELD_n
 USE MODD_GET_n
 USE MODD_GR_FIELD_n
 USE MODD_GRID_n
@@ -111,6 +112,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 GET_GOTO_MODEL(KFROM, KTO)
 CALL GR_FIELD_GOTO_MODEL(KFROM, KTO)
 CALL GRID_GOTO_MODEL(KFROM, KTO)
diff --git a/src/MNH/gravity.f90 b/src/MNH/gravity.f90
new file mode 100644
index 000000000..90d5e4ef6
--- /dev/null
+++ b/src/MNH/gravity.f90
@@ -0,0 +1,184 @@
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 adiab 2006/06/06 15:20:45
+!-----------------------------------------------------------------
+!     ###################
+      MODULE MODI_GRAVITY    
+!     ###################
+!
+INTERFACE
+!
+      SUBROUTINE GRAVITY    ( KRR,KRRL, KRRI, PTHT, PRT,                   &
+                              PRHODJ, PTHVREF, PRWS                        )
+!
+INTEGER,                  INTENT(IN)    :: KRR  ! Total number of water var.
+INTEGER,                  INTENT(IN)    :: KRRL ! Number of liquid water var.
+INTEGER,                  INTENT(IN)    :: KRRI ! Number of ice water var.
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT            !     at
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT             !  time t
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ    ! Density * Jacobian
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
+                                          ! of the reference state
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRWS ! Sources of Momentum
+!
+END SUBROUTINE GRAVITY
+!
+END INTERFACE
+!
+END MODULE MODI_GRAVITY 
+!     ######################################################################
+      SUBROUTINE GRAVITY( KRR,KRRL, KRRI, PTHT, PRT,          &
+                          PRHODJ, PTHVREF, PRWS               )
+!     ######################################################################
+!
+!!****  *GRAVITY * - routine to compute the curvature, coriolis and gravity terms
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to compute the gravity on the vertical 
+!!    component of the momentum.
+!!
+!!     
+!!**  METHOD
+!!    ------
+!!
+!!    EXTERNAL
+!!    --------
+!!      MXM,MYM,MZM : Shuman functions (mean operators)
+!!      MXF,MYF,MZF : Shuman functions (mean operators)
+!!      GZ_M_W      : projection along the vertical direction of the gradient
+!!                    vector. It acts on a field localized in mass point and
+!!                    the result is localized in w point.
+!!      BUDGET      : Stores the different budget components
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      Module MODD_CONF     : contains configuration variables for all models
+!!           LTHINSHELL  = .TRUE.  if the THINSHELL approximation is made
+!!           LCARTESIAN  = .TRUE.  if the CARTESIAN approximation is made
+!!      Module MODD_CST      : 
+!!           XG           gravity acceleration
+!!           XRADIUS      Earth radius
+!!           XRD,XRV      Gas constant for dry air and wator vapor
+!!           XCPD,XCPV    Cp for dry air and wator vapor
+!!           XCL,XCI      C (calorific capacity) for liquid and solid water
+!!      Module MODD_DYN      : contains the parameters for the dynamics
+!!           LCORIO      = .FALSE. if the earth rotation is neglected
+!!    
+!!      Module MODD_BUDGET:
+!!         NBUMOD       : model in which budget is calculated
+!!         CBUTYPE      : type of desired budget
+!!                          'CART' for cartesian box configuration
+!!                          'MASK' for budget zone defined by a mask 
+!!                          'NONE'  ' for no budget
+!!         NBUPROCCTR   : process counter used for each budget variable
+!!         LBU_RTH      : logical for budget of RTH (potential temperature)
+!!                        .TRUE. = budget of RTH        
+!!                        .FALSE. = no budget of RTH
+!!         LBU_RU       : logical for budget of RU (wind component along x)
+!!                        .TRUE. = budget of RU         
+!!                        .FALSE. = no budget of RU 
+!!         LBU_RV       : logical for budget of RV (wind component along y)
+!!                        .TRUE. = budget of RV         
+!!                        .FALSE. = no budget of RV 
+!!         LBU_RW        : logical for budget of RW (wind component along z)
+!!                        .TRUE. = budget of RW         
+!!                        .FALSE. = no budget of RW 
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book2 of documentation ( routine DYN_SOURCE )
+!!
+!!    AUTHOR
+!!    ------
+!!	J.-P. Pinty      * Laboratoire d'Aerologie*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      C.Lac - March 2011 - Splitted  from dyn_sources
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODD_BUDGET
+USE MODD_CONF
+USE MODD_CST
+!
+USE MODI_SHUMAN
+USE MODI_BUDGET
+!  
+IMPLICIT NONE
+!  
+!*       0.1   Declarations of dummy arguments :
+!
+INTEGER,                  INTENT(IN)    :: KRR  ! Total number of water var.
+INTEGER,                  INTENT(IN)    :: KRRL ! Number of liquid water var.
+INTEGER,                  INTENT(IN)    :: KRRI ! Number of ice water var.
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT            !     at
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT             !  time t
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ    ! dry Density * Jacobian
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
+                                          ! of the reference state
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRWS ! Sources of Momentum
+!
+!
+!*       0.2   Declarations of local variables :
+!
+REAL       ::  ZRV_OV_RD    ! = RV / RD
+INTEGER    ::  JWATER       ! loop index on the different types of water
+REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) ::           &
+                              ZWORK1, ZWORK2
+INTEGER :: IKU
+!
+!-------------------------------------------------------------------------------
+!
+!
+!*       1.     COMPUTES THE GRAVITY TERM
+!	        -------------------------
+!
+IKU=SIZE(PTHT,3)
+!
+IF( .NOT.L1D ) THEN     ! no buoyancy for 1D case
+!
+  IF(KRR > 0) THEN
+!
+!   compute the ratio : 1 + total water mass / dry air mass
+!
+    ZRV_OV_RD = XRV / XRD
+    ZWORK1(:,:,:) = 1.
+    DO JWATER = 1 , 1+KRRL+KRRI                
+      ZWORK1(:,:,:) = ZWORK1(:,:,:) + PRT(:,:,:,JWATER)
+    END DO
+!
+!   compute the virtual potential temperature when water is present in any form
+!
+    ZWORK2(:,:,:) = PTHT(:,:,:) * (1. + PRT(:,:,:,1)*ZRV_OV_RD) / ZWORK1(:,:,:)
+  ELSE
+!
+!   compute the virtual potential temperature when water is absent
+!
+    ZWORK2(:,:,:) = PTHT(:,:,:)
+  END IF
+!
+!   compute the gravity term
+!
+  PRWS(:,:,:) = PRWS + XG * MZM(1,IKU,1, ( (ZWORK2/PTHVREF) - 1. ) * PRHODJ )
+!
+!    the extrapolation for the PTHT and the THVREF must be the same at the
+!    ground
+!
+  IF (LBUDGET_W) CALL BUDGET (PRWS,3,'GRAV_BU_RW')
+!
+END IF
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE GRAVITY 
diff --git a/src/MNH/gravity_impl.f90 b/src/MNH/gravity_impl.f90
new file mode 100644
index 000000000..cc8812de1
--- /dev/null
+++ b/src/MNH/gravity_impl.f90
@@ -0,0 +1,145 @@
+!-----------------------------------------------------------------
+!     #####################
+      MODULE MODI_GRAVITY_IMPL
+!     #####################
+!
+INTERFACE
+      SUBROUTINE GRAVITY_IMPL (HLBCX, HLBCY,KRR,KRRL,KRRI, PTSTEP,             &
+                            PTHT, PRT, PTHVREF, PRHODJ,                        &
+                            PRWS, PRTHS, PRRS, PRTHS_CLD, PRRS_CLD             )
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+INTEGER,                  INTENT(IN)    :: KRR  ! Number of moist variables
+INTEGER,                  INTENT(IN)    :: KRRL ! Number of liquid water var.
+INTEGER,                  INTENT(IN)    :: KRRI ! Number of ice water var.
+!
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PRHODJ
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT 
+                                                  ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
+                                          ! of the reference state
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRWS
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRTHS
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRRS 
+                                          ! Sources terms 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRTHS_CLD
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRRS_CLD
+                                          ! tendencies from previous time-step
+                                          ! cloud processes
+!
+END SUBROUTINE GRAVITY_IMPL
+!
+END INTERFACE
+!
+END MODULE MODI_GRAVITY_IMPL 
+!     ##########################################################################
+      SUBROUTINE GRAVITY_IMPL (HLBCX, HLBCY,KRR,KRRL,KRRI, PTSTEP,             &
+                            PTHT, PRT, PTHVREF, PRHODJ,                        &
+                            PRWS, PRTHS, PRRS, PRTHS_CLD, PRRS_CLD             )
+!     ##########################################################################
+!
+!!****  *GRAVITY_IMPL * - routine to estimate gravity term using future buoyancy
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      NONE
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!	V. Masson        * Meteo France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    04/2011 
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODI_GRAVITY  
+USE MODI_ADV_BOUNDARIES
+!
+!-------------------------------------------------------------------------------
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+!
+INTEGER,                  INTENT(IN)    :: KRR  ! Number of moist variables
+INTEGER,                  INTENT(IN)    :: KRRL ! Number of liquid water var.
+INTEGER,                  INTENT(IN)    :: KRRI ! Number of ice water var.
+!
+REAL,                     INTENT(IN)    :: PTSTEP
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PRHODJ
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT 
+                                                  ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
+                                          ! of the reference state
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRWS
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRTHS
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRRS 
+                                          ! Sources terms 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRTHS_CLD
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRRS_CLD
+                                          ! tendencies from previous time-step
+                                          ! cloud processes
+!
+!
+!*       0.2   declarations of local variables
+!
+!  
+! Tendencies of W due to gravity
+REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZRWS_GRAV
+! Guess of future theta
+REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZTH
+! Guess of future mixing ratios
+REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),SIZE(PRT,4)) :: ZR
+!
+INTEGER :: JR
+!
+!-------------------------------------------------------------------------------
+!
+ZRWS_GRAV = 0.
+!
+! guess of Theta at future time-step
+ZTH(:,:,:) = (PRTHS(:,:,:) + PRTHS_CLD(:,:,:)) / PRHODJ * PTSTEP
+DO JR = 1, KRR
+ ZR(:,:,:,JR) = (PRRS(:,:,:,JR) + PRRS_CLD(:,:,:,JR)) / PRHODJ * PTSTEP
+END DO
+!
+CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTH, PTHT )    
+DO JR = 1, KRR
+  CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR))
+END DO
+!
+! ====> A vérifier si c'est nécessaire d'échanger les champs
+!       A priori, je dirai non.
+!
+! gravity effect on vertical speed
+CALL GRAVITY ( KRR,KRRL, KRRI, ZTH, ZR, PRHODJ, PTHVREF, ZRWS_GRAV(:,:,:) )
+!
+PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_GRAV(:,:,:)
+!
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE GRAVITY_IMPL
diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90
index 02cf2794f..bec72ae4c 100644
--- a/src/MNH/ground_paramn.f90
+++ b/src/MNH/ground_paramn.f90
@@ -108,7 +108,7 @@ USE MODD_CST,        ONLY : XP00, XCPD, XRD, XRV,XRHOLW, XDAY, XPI, XLVTT, XMD,
 USE MODD_PARAMETERS, ONLY : JPVEXT, XUNDEF
 USE MODD_DYN_n,      ONLY : XTSTEP
 USE MODD_CH_MNHC_n,  ONLY : LCH_SURFACE_FLUX
-USE MODD_FIELD_n,    ONLY : XUM, XVM, XWM, XTHM, XRM, XPABSM, XSVM
+USE MODD_FIELD_n,    ONLY : XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT
 USE MODD_METRICS_n,  ONLY : XDXX, XDYY, XDZZ
 USE MODD_DIM_n,      ONLY : NKMAX
 USE MODD_GRID_n,     ONLY : XLON, XZZ, XDIRCOSXW, XDIRCOSYW, XDIRCOSZW, &
@@ -331,7 +331,7 @@ PTSRAD   = XUNDEF
 ALLOCATE(ZRV(SIZE(PSFTH,1),SIZE(PSFTH,2),IKU))
 !
 IF(NRR>0) THEN
-  ZRV(:,:,:)=XRM(:,:,:,1)
+  ZRV(:,:,:)=XRT(:,:,:,1)
 ELSE
   ZRV(:,:,:)=0.
 END IF
@@ -339,8 +339,8 @@ END IF
 !        1.2    Horizontal wind direction (rad from N clockwise)
 !               -------------------------
 !
-ZU2D(:,:,:)=MXF(XUM(:,:,IKB:IKB))
-ZV2D(:,:,:)=MYF(XVM(:,:,IKB:IKB))
+ZU2D(:,:,:)=MXF(XUT(:,:,IKB:IKB))
+ZV2D(:,:,:)=MYF(XVT(:,:,IKB:IKB))
 !
 !* angle between Y axis and wind (rad., clockwise)
 !
@@ -362,7 +362,7 @@ END IF
 !        1.3    Rotate the wind
 !               ---------------
 !
-CALL ROTATE_WIND(XUM,XVM,XWM,           &
+CALL ROTATE_WIND(XUT,XVT,XWT,           &
      XDIRCOSXW, XDIRCOSYW, XDIRCOSZW,   &
      XCOSSLOPE,XSINSLOPE,               &
      XDXX,XDYY,XDZZ,                    &
@@ -380,7 +380,7 @@ ZV(:,:) = ZWIND(:,:) * COS(ZDIR)
 !        1.5   Horizontal interpolation the thermodynamic fields
 !              -------------------------------------------------
 !
-CALL NORMAL_INTERPOL(XTHM,ZRV,XPABSM,                    &
+CALL NORMAL_INTERPOL(XTHT,ZRV,XPABST,                    &
      XDIRCOSXW, XDIRCOSYW, XDIRCOSZW,                    &
      XCOSSLOPE,XSINSLOPE,                                &
      XDXX,XDYY,XDZZ,                                     &
@@ -395,8 +395,8 @@ DEALLOCATE(ZRV)
 !
 ZPA(:,:) = XP00 * ZEXNA(:,:) **(XCPD/XRD)
 !
-ZEXNS(:,:) = 0.5 * ( (XPABSM(:,:,IKB-1)/XP00)**(XRD/XCPD)  &
-                    +(XPABSM(:,:,IKB  )/XP00)**(XRD/XCPD)  &
+ZEXNS(:,:) = 0.5 * ( (XPABST(:,:,IKB-1)/XP00)**(XRD/XCPD)  &
+                    +(XPABST(:,:,IKB  )/XP00)**(XRD/XCPD)  &
                    )
 ZPS(:,:) = XP00 * ZEXNS(:,:) **(XCPD/XRD)
 !
@@ -704,7 +704,7 @@ ZP_RAIN(:)        = RESHAPE(ZRAIN(IIB:IIE,IJB:IJE),        ISHAPE_1)
 ZP_ZREF(:)        = RESHAPE(ZZREF(IIB:IIE,IJB:IJE),        ISHAPE_1)
 
 DO JLAYER=1,NSV
-  ZP_SV(:,JLAYER) = RESHAPE(XSVM(IIB:IIE,IJB:IJE,IKB,JLAYER), ISHAPE_1)
+  ZP_SV(:,JLAYER) = RESHAPE(XSVT(IIB:IIE,IJB:IJE,IKB,JLAYER), ISHAPE_1)
 END DO
 !
 !chemical conversion : from part/part to molec./m3
diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90
index a9202d11d..4bf0723e0 100644
--- a/src/MNH/ice_adjust.f90
+++ b/src/MNH/ice_adjust.f90
@@ -11,8 +11,8 @@ INTERFACE
 !
       SUBROUTINE ICE_ADJUST (KKA, KKU, KKL, KRR, KMI, HFMFILE, HLUOUT, HRAD,   &
                              HTURBDIM, OSUBG_COND, OSIGMAS, PTSTEP, PSIGQSAT,  &
-                             PRHODJ, PEXNREF, PPABSM, PSIGS,PMFCONV,PPABST,PZZ,&
-                             PCF_MF,PRC_MF,PRI_MF,                             &
+                             PRHODJ, PEXNREF, PSIGS,PMFCONV,PPABST,PZZ,        &
+                             PCF_MF,PRC_MF, PRI_MF,                            &
                              PRVT, PRCT, PRVS, PRCS, PTHS, PSRCS, PCLDFR ,     &
                              PRRT, PRRS, PRIT, PRIS, PRST,PRSS, PRGT, PRGS,    &
                              PRHT, PRHS                                        )
@@ -40,8 +40,6 @@ REAL,                     INTENT(IN)   :: PSIGQSAT  ! coeff applied to qsat vari
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PEXNREF ! Reference Exner function
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at 
-                                                   !      time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PMFCONV ! convective mass flux
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t        
@@ -79,9 +77,9 @@ END INTERFACE
 END MODULE MODI_ICE_ADJUST
 !
 !     ##########################################################################
-      SUBROUTINE ICE_ADJUST (KKA,KKU,KKL,KRR, KMI, HFMFILE, HLUOUT, HRAD,      &
+      SUBROUTINE ICE_ADJUST (KKA, KKU, KKL, KRR, KMI, HFMFILE, HLUOUT, HRAD,   &
                              HTURBDIM, OSUBG_COND, OSIGMAS, PTSTEP, PSIGQSAT,  &
-                             PRHODJ, PEXNREF, PPABSM, PSIGS,PMFCONV,PPABST,PZZ,&
+                             PRHODJ, PEXNREF, PSIGS,PMFCONV,PPABST,PZZ,        &
                              PCF_MF,PRC_MF,PRI_MF,                             &
                              PRVT, PRCT, PRVS, PRCS, PTHS, PSRCS, PCLDFR ,     &
                              PRRT, PRRS, PRIT, PRIS, PRST,PRSS, PRGT, PRGS,    &
@@ -158,6 +156,7 @@ END MODULE MODI_ICE_ADJUST
 !!      JP Pinty   29/11/02  add ICE2 and IC4 cases
 !!      (P. Jabouille) 27/05/04 safety test for case where esw/i(T)> pabs (~Z>40km)
 !!      J.Pergaud and S.Malardel Add EDKF case
+!!      (E.Perraud)  06/08   add correction to avoid ice when T >0
 !!      S. Riette ice for EDKF
 !!      2012-02 Y. Seity,  add possibility to run with reversed vertical levels
 !!
@@ -204,8 +203,6 @@ REAL,                     INTENT(IN)   :: PSIGQSAT  ! coeff applied to qsat vari
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PEXNREF ! Reference Exner function
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at 
-                                                   !      time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PMFCONV ! convective mass flux
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t        
@@ -298,7 +295,7 @@ ZT00 = XTT-40.           ! Usefull if LPRETREATMENT=T or LNEW_ADJUST=T
 !
 !*       2.1    estimate the pressure at t+1
 !
-ZEXNS(:,:,:) = ((2. * PPABST(:,:,:) - PPABSM(:,:,:))/XP00)**(XRD/XCPD)
+ZEXNS(:,:,:) = ( PPABST(:,:,:) /XP00)**(XRD/XCPD)
 !
 !    beginning of the iterative loop
 !
@@ -384,9 +381,9 @@ END IF
 !*    compute the saturation mixing ratios at t+1
 !
       ZW3(:,:,:) =  ZW1(:,:,:) * ZEPS     &
-                 / ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW1(:,:,:) )     ! r_sw
+                 / (  PPABST(:,:,:)  - ZW1(:,:,:) )     ! r_sw
       ZW4(:,:,:) =  ZW2(:,:,:) * ZEPS     &
-                 / ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW2(:,:,:) )     ! r_si
+                 / (  PPABST(:,:,:)  - ZW2(:,:,:) )     ! r_si
 !
       WHERE(PRVS(:,:,:)*PTSTEP.LT.ZW4(:,:,:).AND. PRCS(:,:,:).GT.0..AND. ZT(:,:,:).LT.XTT)
 !
@@ -439,9 +436,9 @@ END IF
 !*       4.4    compute the saturation mixing ratios at t+1
 !
     ZW3(:,:,:) =  ZW1(:,:,:) * ZEPS     &
-               / ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW1(:,:,:) ) ! r_sw
+               / ( PPABST(:,:,:) - ZW1(:,:,:) ) ! r_sw
     ZW4(:,:,:) =  ZW2(:,:,:) * ZEPS     &
-               / ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW2(:,:,:) ) ! r_si
+               / ( PPABST(:,:,:)  - ZW2(:,:,:) ) ! r_si
 !
 !*       4.5    compute the saturation mixing ratio derivatives (r'_vs)
 !
diff --git a/src/MNH/ice_adjust_bis.f90 b/src/MNH/ice_adjust_bis.f90
new file mode 100644
index 000000000..f9ec1532f
--- /dev/null
+++ b/src/MNH/ice_adjust_bis.f90
@@ -0,0 +1,131 @@
+!     ######spl
+     MODULE MODI_ICE_ADJUST_BIS
+!    ###############################
+!
+INTERFACE
+!
+!     #################################################################
+      SUBROUTINE ICE_ADJUST_BIS(PP,PTH,PR)
+!     #################################################################
+!
+!!               
+!*               1.1  Declaration of Arguments
+!! 
+
+REAL, DIMENSION(:,:,:),  INTENT(IN)     :: PP     ! Pressure
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)  :: PTH    ! thetal to transform into th
+REAL, DIMENSION(:,:,:,:),INTENT(INOUT)  :: PR     ! Total mixing ratios to transform into rv,rc and ri
+!
+END SUBROUTINE ICE_ADJUST_BIS
+
+END INTERFACE
+!
+END MODULE MODI_ICE_ADJUST_BIS
+!     ######spl
+      SUBROUTINE ICE_ADJUST_BIS(PP,PTH,PR)
+!     #################################################################
+!
+!
+!!****  *ICE_ADJUST_BIS* - computes an adjusted state of thermodynamical variables
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!      Valery Masson & C. Lac * Meteo-France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original         09/2012
+!!
+!! --------------------------------------------------------------------------
+!
+!*      0. DECLARATIONS
+!          ------------
+!
+USE MODD_CST, ONLY : XCPD, XRD, XP00
+!
+USE MODI_COMPUTE_FUNCTION_THERMO
+USE MODI_TH_R_FROM_THL_RT_3D
+USE MODI_THLRT_FROM_THRVRCRI
+!
+IMPLICIT NONE
+!
+!
+!*      0.1  declarations of arguments
+!
+REAL, DIMENSION(:,:,:),  INTENT(IN)     :: PP    ! Pressure
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)  :: PTH   ! thetal to transform into th
+REAL, DIMENSION(:,:,:,:),INTENT(INOUT)  :: PR    ! Total mixing ratios to transform into rv,rc and ri
+!
+!-------------------------------------------------------------------------------
+!
+!       0.2  declaration of local variables
+REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZTHL, ZRW, ZRV, ZRC, &
+                                                        ZRI, ZWORK
+REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZFRAC_ICE, ZRSATW, ZRSATI
+REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZT, ZEXN, ZLVOCPEXN,ZLSOCPEXN
+INTEGER :: IRR
+CHARACTER(LEN=1) :: YFRAC_ICE
+!----------------------------------------------------------------------------
+!
+!*      1 Initialisation
+!         --------------
+!
+IRR = SIZE(PR,4)
+!
+ZRV(:,:,:)=0.
+IF (IRR>=1) &
+ZRV(:,:,:)=PR(:,:,:,1)
+ZRC(:,:,:)=0.
+IF (IRR>=2) &
+ZRC(:,:,:)=PR(:,:,:,2)
+ZRI(:,:,:)=0.
+IF (IRR>=4) &
+ZRI(:,:,:)=PR(:,:,:,4)
+!
+YFRAC_ICE='T'
+ZFRAC_ICE(:,:,:) = 0.
+!
+!*      2 Computation
+!         -----------
+!
+ZEXN(:,:,:)=(PP(:,:,:)/XP00)**(XRD/XCPD)
+!
+CALL COMPUTE_FUNCTION_THERMO( IRR,                                &
+                              PTH, PR, ZEXN, PP,                  &
+                              ZT,ZLVOCPEXN,ZLSOCPEXN              )
+
+!
+CALL THLRT_FROM_THRVRCRI( IRR, PTH, PR, ZLVOCPEXN, ZLSOCPEXN,&
+                          ZTHL, ZRW                          )
+!
+CALL TH_R_FROM_THL_RT_3D(YFRAC_ICE,ZFRAC_ICE(:,:,:),PP(:,:,:), &
+                         ZTHL(:,:,:), ZRW(:,:,:), PTH(:,:,:),  &
+                         ZRV(:,:,:), ZRC(:,:,:), ZRI(:,:,:),   &
+                         ZRSATW(:,:,:), ZRSATI(:,:,:)          )
+!
+
+IF (IRR>=1) &
+PR(:,:,:,1) = ZRV(:,:,:)
+IF (IRR>=2) &
+PR(:,:,:,2) = ZRC(:,:,:)
+IF (IRR>=4) &
+PR(:,:,:,4) = ZRI(:,:,:)
+!
+END SUBROUTINE ICE_ADJUST_BIS
diff --git a/src/MNH/ice_adjust_elec.f90 b/src/MNH/ice_adjust_elec.f90
index 34f7adf79..8724f1092 100644
--- a/src/MNH/ice_adjust_elec.f90
+++ b/src/MNH/ice_adjust_elec.f90
@@ -12,7 +12,7 @@ INTERFACE
       SUBROUTINE ICE_ADJUST_ELEC (KRR, KMI, HFMFILE, HLUOUT, HRAD,                &
                                   HTURBDIM, HSCONV, HMF_CLOUD,                    &
                                   OCLOSE_OUT, OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,&
-                                  PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, PZZ,    &
+                                  PRHODJ, PEXNREF, PSIGS, PPABST, PZZ,            &
                                   PMFCONV, PCF_MF, PRC_MF, PRI_MF,                &
                                   PRVT, PRCT, PRVS, PRCS, PTHS, PSRCS, PCLDFR ,   &
                                   PRRT, PRRS, PRIT, PRIS, PRST, PRSS, PRGT, PRGS, &
@@ -44,8 +44,6 @@ REAL,                     INTENT(IN)   :: PSIGQSAT  ! coeff applied to qsat vari
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PEXNREF ! Reference Exner function
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABSM  ! Absolute Pressure at 
-                                                   !      time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PMFCONV ! convective mass flux
 REAL, DIMENSION(:,:,:),   INTENT(IN)   ::  PPABST  ! Absolute Pressure at t        
@@ -100,7 +98,7 @@ END MODULE MODI_ICE_ADJUST_ELEC
       SUBROUTINE ICE_ADJUST_ELEC (KRR, KMI, HFMFILE, HLUOUT, HRAD,           &
                              HTURBDIM, HSCONV, HMF_CLOUD,                    &
                              OCLOSE_OUT, OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,&
-                             PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, PZZ,    &
+                             PRHODJ, PEXNREF, PSIGS, PPABST, PZZ,            &
                              PMFCONV, PCF_MF, PRC_MF, PRI_MF,                &  
                              PRVT, PRCT, PRVS, PRCS, PTHS, PSRCS, PCLDFR ,   &
                              PRRT, PRRS, PRIT, PRIS, PRST, PRSS, PRGT, PRGS, &
@@ -219,8 +217,6 @@ REAL,                     INTENT(IN)   :: PSIGQSAT  ! coeff applied to qsat vari
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PEXNREF ! Reference Exner function
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABSM  ! Absolute Pressure at 
-                                                 !      time t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PMFCONV ! convective mass flux
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABST  ! Absolute Pressure at t        
@@ -339,7 +335,7 @@ ZT00 = XTT-40.           ! Usefull if LPRETREATMENT=T or LNEW_ADJUST=T
 !
 !*       2.1    estimate the pressure at t+1
 !
-ZEXNS(:,:,:) = ((2. * PPABST(:,:,:) - PPABSM(:,:,:)) / XP00)**(XRD/XCPD)
+ZEXNS(:,:,:) = ( PPABST(:,:,:)  / XP00)**(XRD/XCPD)
 !
 !    beginning of the iterative loop
 !
@@ -389,9 +385,9 @@ DO JITER = 1, ITERMAX
   !   ZW3=water vapor    ZW1=rc (INOUT)  ZW2=ri (INOUT)   PSRC= s'rci'/Sigma_s^2
     ZW3 = PRVS * PTSTEP;     ZW1 = PRCS * PTSTEP;  ZW2 = PRIS * PTSTEP
 
-    CALL CONDENSATION( IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE,1,               &
-       PPABST, PZZ, ZT, ZW3, ZW1, ZW2, PSIGS, PMFCONV, PCLDFR, PSRCS, .TRUE., OSIGMAS,&
-       PSIGQSAT )
+    CALL CONDENSATION( IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE,1,         &
+       PPABST, PZZ, ZT, ZW3, ZW1, ZW2, PSIGS, PMFCONV, PCLDFR, PSRCS, .TRUE., &
+       OSIGMAS, PSIGQSAT )
 !
 !*       3.2    compute the variation of mixing ratio
 !
@@ -423,9 +419,9 @@ DO JITER = 1, ITERMAX
 !     compute the saturation mixing ratios at t+1
 !
       ZW3(:,:,:) = ZW1(:,:,:) * ZEPS / &
-                  (2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW1(:,:,:))  ! r_sw
+                  ( PPABST(:,:,:) - ZW1(:,:,:))  ! r_sw
       ZW4(:,:,:) = ZW2(:,:,:) * ZEPS / &
-                  (2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW2(:,:,:))  ! r_si
+                  ( PPABST(:,:,:) - ZW2(:,:,:))  ! r_si
 !
       WHERE(PRVS(:,:,:)*PTSTEP .LT. ZW4(:,:,:) .AND. &
             PRCS(:,:,:) .GT. 0. .AND. ZT(:,:,:) .LT. XTT)
@@ -479,9 +475,9 @@ DO JITER = 1, ITERMAX
 !*       4.4    compute the saturation mixing ratios at t+1
 !
     ZW3(:,:,:) =  ZW1(:,:,:) * ZEPS     &
-               / ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW1(:,:,:) ) ! r_sw
+               / ( PPABST(:,:,:)  - ZW1(:,:,:) ) ! r_sw
     ZW4(:,:,:) =  ZW2(:,:,:) * ZEPS     &
-               / ( 2. * PPABST(:,:,:) - PPABSM(:,:,:) - ZW2(:,:,:) ) ! r_si
+               / ( PPABST(:,:,:)  - ZW2(:,:,:) ) ! r_si
 !
 !*       4.5    compute the saturation mixing ratio derivatives (r'_vs)
 !
@@ -632,10 +628,10 @@ ELSE
   IF (HSCONV == 'EDKF' .AND. HMF_CLOUD == 'DIRE') THEN
     PCLDFR(:,:,:) = MIN(1.,PCLDFR(:,:,:)+PCF_MF(:,:,:))
     PRCS(:,:,:)   = PRCS(:,:,:) + PRC_MF(:,:,:) / PTSTEP
-    PRIS(:,:,:)   = PRIS(:,:,:) + PRI_MF(:,:,:) / PTSTEP
-    PRVS(:,:,:)   = PRVS(:,:,:) - ( PRC_MF(:,:,:) + PRI_MF(:,:,:)) / PTSTEP
-    PTHS(:,:,:)   = PTHS(:,:,:) + ( PRC_MF(:,:,:) * ZLV(:,:,:) + &
-                    PRI_MF(:,:,:) * ZLS(:,:,:) ) / ZCPH(:,:,:) / &
+    PRIS(:,:,:)   = PRIS(:,:,:)+PRI_MF(:,:,:)/PTSTEP
+    PRVS(:,:,:)   = PRVS(:,:,:)- ( PRC_MF(:,:,:) + PRI_MF(:,:,:)) /PTSTEP
+    PTHS(:,:,:)   = PTHS(:,:,:) +  ( PRC_MF(:,:,:) * ZLV(:,:,:) +    &
+                    PRI_MF(:,:,:) * ZLS(:,:,:) ) / ZCPH(:,:,:) /     &
                     PEXNREF(:,:,:) / PTSTEP
   END IF
 ENDIF
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index ade24fbae..b6d0c1d42 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -13,8 +13,7 @@ INTERFACE
       OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR,             &
       OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & 
       OHORELAX_SV,OVE_RELAX,OCHTRANS,ONUDGING,ODRAGTREE,              &
-      HRAD,HDCONV,HSCONV,HTURB,HTURBDIM,HCLOUD,                       &
-      HMET_ADV_SCHEME,HSV_ADV_SCHEME)
+      HRAD,HDCONV,HSCONV,HTURB,HTURBDIM,HCLOUD                        )
 !
 INTEGER,         INTENT(IN) :: KLUOUT   ! Logical unit number for prints
 CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing
@@ -58,10 +57,6 @@ CHARACTER (LEN=*), INTENT(IN) :: HTURB  ! type of the turbulence scheme
 CHARACTER (LEN=*), INTENT(IN) :: HTURBDIM! dimensionnality of the turbulence 
                                         ! scheme
 CHARACTER (LEN=*), INTENT(IN) :: HCLOUD ! type of microphysical scheme
-CHARACTER (LEN=*), INTENT(IN) :: HMET_ADV_SCHEME ! type of advection scheme    
-                                        ! for meteorological scalar variables
-CHARACTER (LEN=*), INTENT(IN) :: HSV_ADV_SCHEME ! type of advection scheme    
-                                        ! for tracer scalar variables
 !
       END SUBROUTINE INI_BUDGET
 !
@@ -77,8 +72,7 @@ END MODULE MODI_INI_BUDGET
       OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR,             &
       OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & 
       OHORELAX_SV,OVE_RELAX,OCHTRANS,ONUDGING,ODRAGTREE,              &
-      HRAD,HDCONV,HSCONV,HTURB,HTURBDIM,HCLOUD,                       &
-      HMET_ADV_SCHEME,HSV_ADV_SCHEME)
+      HRAD,HDCONV,HSCONV,HTURB,HTURBDIM,HCLOUD                        )
 !     #################################################################
 !
 !!****  *INI_BUDGET* - routine to initialize the parameters for the budgets
@@ -149,7 +143,6 @@ END MODULE MODI_INI_BUDGET
 !!                                of each direction
 !!      C. Barthe       19/11/09  Add atmospheric electricity
 !!      C.Lac           01/07/11  Add vegetation drag        
-!!
 !!      P. Peyrille, M. Tomasini : include in the forcing term the 2D forcing
 !!                                terms in term 2DFRC search for modif PP . but Not very clean! 
 !-------------------------------------------------------------------------------
@@ -218,10 +211,6 @@ CHARACTER (LEN=*), INTENT(IN) :: HTURB  ! type of the turbulence scheme
 CHARACTER (LEN=*), INTENT(IN) :: HTURBDIM! dimensionnality of the turbulence 
                                         ! scheme
 CHARACTER (LEN=*), INTENT(IN) :: HCLOUD ! type of microphysical scheme
-CHARACTER (LEN=*), INTENT(IN) :: HMET_ADV_SCHEME ! type of advection scheme    
-                                        ! for meteorological scalar variables
-CHARACTER (LEN=*), INTENT(IN) :: HSV_ADV_SCHEME ! type of advection scheme    
-                                        ! for tracer scalar variables
 !
 !*       0.2   declarations of local variables
 !                                                     
@@ -421,12 +410,6 @@ IF (LBU_RU) THEN
   IPROC=IPROC+1
   IF( NMODEL>1 ) IPROACTV(1,IPROC) = NNESTU
   IPROC=IPROC+1
-  IPROACTV(1,IPROC) = NADVXU
-  IPROC=IPROC+1 
-  IPROACTV(1,IPROC) = NADVYU
-  IPROC=IPROC+1 
-  IPROACTV(1,IPROC) = NADVZU
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(1,IPROC)  = NFRCU
   IPROC=IPROC+1
   IF( ONUDGING ) IPROACTV(1,IPROC)  = NNUDU
@@ -473,6 +456,8 @@ IF (LBU_RU) THEN
   IPROC=IPROC+1
   IF ( HSCONV == 'EDKF' ) IPROACTV(1,IPROC) = NMAFLU
   IPROC=IPROC+1
+  IPROACTV(1,IPROC) = NADVU
+  IPROC=IPROC+1
   IPROACTV(1,IPROC) = NPRESU 
 !
   YWORK2(1,1) = 'INIF_'
@@ -483,12 +468,6 @@ IF (LBU_RU) THEN
   IPROC=IPROC+1
   YWORK2(1,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(1,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(1,IPROC) = 'NUD_'
@@ -509,6 +488,8 @@ IF (LBU_RU) THEN
   IPROC=IPROC+1
   YWORK2(1,IPROC) = 'MAFL_'
   IPROC=IPROC+1
+  YWORK2(1,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(1,IPROC) = 'PRES_'
 !
   YEND_COMMENT(1) = 'BU_RU'
@@ -532,12 +513,6 @@ IF (LBU_RV) THEN
   IPROC=IPROC+1 
   IF( NMODEL>1 ) IPROACTV(2,IPROC) = NNESTV
   IPROC=IPROC+1 
-  IPROACTV(2,IPROC) = NADVXV 
-  IPROC=IPROC+1 
-  IPROACTV(2,IPROC) = NADVYV 
-  IPROC=IPROC+1 
-  IPROACTV(2,IPROC) = NADVZV 
-  IPROC=IPROC+1 
   IF( LFORCING ) IPROACTV(2,IPROC)  = NFRCV
   IPROC=IPROC+1 
   IF( ONUDGING ) IPROACTV(2,IPROC)  = NNUDV
@@ -583,6 +558,8 @@ IF (LBU_RV) THEN
   END IF 
   IPROC=IPROC+1 
   IF ( HSCONV == 'EDKF' ) IPROACTV(2,IPROC) = NMAFLV
+  IPROC=IPROC+1 
+  IPROACTV(2,IPROC) = NADVV 
   IPROC=IPROC+1
   IPROACTV(2,IPROC) = NPRESV 
 !
@@ -594,12 +571,6 @@ IF (LBU_RV) THEN
   IPROC=IPROC+1 
   YWORK2(2,IPROC) = 'NEST_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'ADVX_'
-  IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'ADVY_'
-  IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1 
   YWORK2(2,IPROC) = 'FRC_'
   IPROC=IPROC+1 
   YWORK2(2,IPROC) = 'NUD_'
@@ -620,6 +591,8 @@ IF (LBU_RV) THEN
   IPROC=IPROC+1 
   YWORK2(2,IPROC) = 'MAFL_'
   IPROC=IPROC+1 
+  YWORK2(2,IPROC) = 'ADV_'
+  IPROC=IPROC+1 
   YWORK2(2,IPROC) = 'PRES_'
 !
   YEND_COMMENT(2) = 'BU_RV'
@@ -643,12 +616,6 @@ IF (LBU_RW) THEN
   IPROC=IPROC+1
   IF( NMODEL>1 ) IPROACTV(3,IPROC) = NNESTW
   IPROC=IPROC+1
-  IPROACTV(3,IPROC) = NADVXW 
-  IPROC=IPROC+1
-  IPROACTV(3,IPROC) = NADVYW 
-  IPROC=IPROC+1
-  IPROACTV(3,IPROC) = NADVZW 
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(3,IPROC)  = NFRCW
   IPROC=IPROC+1
   IF( ONUDGING ) IPROACTV(3,IPROC)  = NNUDW
@@ -664,8 +631,6 @@ IF (LBU_RW) THEN
   ELSE
     IPROACTV(3,IPROC) = 4
   END IF
-  IPROC=IPROC+1
-  IPROACTV(3,IPROC) = NGRAVW
   IPROC=IPROC+1 
   IF ( ONUMDIFU ) IPROACTV(3,IPROC) = NDIFW
   IPROC=IPROC+1
@@ -693,6 +658,10 @@ IF (LBU_RW) THEN
     END IF
   END IF 
   IPROC=IPROC+1
+  IPROACTV(3,IPROC) = NGRAVW
+  IPROC=IPROC+1
+  IPROACTV(3,IPROC) = NADVW 
+  IPROC=IPROC+1
   IPROACTV(3,IPROC) = NPRESW 
 !
   YWORK2(3,1) = 'INIF_'
@@ -703,12 +672,6 @@ IF (LBU_RW) THEN
   IPROC=IPROC+1
   YWORK2(3,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(3,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(3,IPROC) = 'NUD_'
@@ -717,8 +680,6 @@ IF (LBU_RW) THEN
   IPROC=IPROC+1
   YWORK2(3,IPROC) = 'COR_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'GRAV_'
-  IPROC=IPROC+1
   YWORK2(3,IPROC) = 'DIF_'
   IPROC=IPROC+1
   YWORK2(3,IPROC) = 'REL_'
@@ -727,6 +688,10 @@ IF (LBU_RW) THEN
   IPROC=IPROC+1
   YWORK2(3,IPROC) = 'HTURB_'
   IPROC=IPROC+1
+  YWORK2(3,IPROC) = 'GRAV_'
+  IPROC=IPROC+1
+  YWORK2(3,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(3,IPROC) = 'PRES_'
 !
   YEND_COMMENT(3) = 'BU_RW'
@@ -750,18 +715,6 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   IF( NMODEL>1 ) IPROACTV(4,IPROC) = NNESTTH
   IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &       
-     IPROACTV(4,IPROC) = NADVTH
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &        
-     IPROACTV(4,IPROC) = NADVXTH 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &        
-       IPROACTV(4,IPROC) = NADVYTH 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &   
-       IPROACTV(4,IPROC) = NADVZTH 
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(4,IPROC)  = NFRCTH
   IPROC=IPROC+1
   IF( L2D_ADV_FRC ) IPROACTV(4,IPROC)  = N2DADVTH
@@ -810,6 +763,8 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   IF ( HSCONV == 'EDKF' ) IPROACTV(4,IPROC) = NMAFLTH
   IPROC=IPROC+1
+  IPROACTV(4,IPROC) = NADVTH
+  IPROC=IPROC+1
   IF (HCLOUD /= 'NONE')     IPROACTV(4,IPROC) = NNEGATH
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'ICE' .OR. HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' ) &
@@ -860,14 +815,6 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   YWORK2(4,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'ADV_'
-  IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(4,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(4,IPROC) = '2DADV_'
@@ -894,6 +841,8 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   YWORK2(4,IPROC) = 'MAFL_'
   IPROC=IPROC+1
+  YWORK2(4,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(4,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(4,IPROC) = 'HENU_'
@@ -951,18 +900,6 @@ IF (LBU_RTKE) THEN
   IPROC=4
   IPROACTV(5,IPROC) = NASSETKE 
   IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &        
-     IPROACTV(5,IPROC) = NADVTKE
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &       
-     IPROACTV(5,IPROC) = NADVXTKE 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &        
-     IPROACTV(5,IPROC) = NADVYTKE 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &      
-     IPROACTV(5,IPROC) = NADVZTKE 
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(5,IPROC)  = NFRCTKE
   IPROC=IPROC+1
   IF ( ONUMDIFTH ) IPROACTV(5,IPROC) = NDIFTKE
@@ -988,6 +925,8 @@ IF (LBU_RTKE) THEN
   IPROACTV(5,IPROC) = NDISSTKE 
   IPROC=IPROC+1 
   IPROACTV(5,IPROC) = NTRTKE  
+  IPROC=IPROC+1
+  IPROACTV(5,IPROC) = NADVTKE
 !
   YWORK2(5,1) = 'INIF_'
   YWORK2(5,2) = 'ENDF_'
@@ -995,14 +934,6 @@ IF (LBU_RTKE) THEN
   IPROC=4
   YWORK2(5,IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'ADV_'
-  IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(5,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(5,IPROC) = 'DIF_'
@@ -1018,6 +949,8 @@ IF (LBU_RTKE) THEN
   YWORK2(5,IPROC) = 'DISS_'
   IPROC=IPROC+1
   YWORK2(5,IPROC) = 'TR_'
+  IPROC=IPROC+1
+  YWORK2(5,IPROC) = 'ADV_'
 !
   YEND_COMMENT(5) = 'BU_RTKE'
   NBUPROCNBR(5) = 3
@@ -1039,18 +972,6 @@ IF (LBU_RRV) THEN
   IPROACTV(6,IPROC) = NASSERV
   IPROC=IPROC+1 
   IF( NMODEL>1 ) IPROACTV(6,IPROC) = NNESTRV
-  IPROC=IPROC+1 
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &          
-     IPROACTV(6,IPROC) = NADVRV
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &        
-     IPROACTV(6,IPROC) = NADVXRV 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &      
-     IPROACTV(6,IPROC) = NADVYRV 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &     
-     IPROACTV(6,IPROC) = NADVZRV 
   IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(6,IPROC)  = NFRCRV
   IPROC=IPROC+1
@@ -1090,6 +1011,8 @@ IF (LBU_RRV) THEN
   IPROC=IPROC+1 
   IF ( HSCONV == 'EDKF' ) IPROACTV(6,IPROC) = NMAFLRV
   IPROC=IPROC+1 
+  IPROACTV(6,IPROC) = NADVRV
+  IPROC=IPROC+1 
   IF ( HCLOUD /= 'NONE' ) IPROACTV(6,IPROC) = NNEGARV
   IPROC=IPROC+1   
   IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. HCLOUD(1:3) == 'ICE')  &
@@ -1116,14 +1039,6 @@ IF (LBU_RRV) THEN
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'ADV_'
-  IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(6,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(6,IPROC) = '2DADV_'
@@ -1144,6 +1059,8 @@ IF (LBU_RRV) THEN
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'MAFL_'
   IPROC=IPROC+1
+  YWORK2(6,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(6,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'HENU_'
@@ -1179,18 +1096,6 @@ IF (LBU_RRC) THEN
   IPROC=IPROC+1
   IF( NMODEL>1 ) IPROACTV(7,IPROC) = NNESTRC
   IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &      
-     IPROACTV(7,IPROC) = NADVRC
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &        
-     IPROACTV(7,IPROC) = NADVXRC 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &          
-     IPROACTV(7,IPROC) = NADVYRC 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &           
-     IPROACTV(7,IPROC) = NADVZRC 
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(7,IPROC)  = NFRCRC
   IPROC=IPROC+1
   IF ( ONUMDIFTH ) IPROACTV(7,IPROC) = NDIFRC
@@ -1221,6 +1126,8 @@ IF (LBU_RRC) THEN
     END IF
   END IF 
   IPROC=IPROC+1
+  IPROACTV(7,IPROC) = NADVRC
+  IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) IPROACTV(7,IPROC)  = NNEGARC
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'KES' )                      IPROACTV(7,IPROC  ) = NACCRRC
@@ -1268,14 +1175,6 @@ IF (LBU_RRC) THEN
   IPROC=IPROC+1
   YWORK2(7,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'ADV_'
-  IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(7,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(7,IPROC) = 'DIF_'
@@ -1288,6 +1187,8 @@ IF (LBU_RRC) THEN
   IPROC=IPROC+1
   YWORK2(7,IPROC) = 'HTURB_'
   IPROC=IPROC+1
+  YWORK2(7,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(7,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(7,IPROC) = 'ACCR_'
@@ -1341,18 +1242,6 @@ IF (LBU_RRR) THEN
   IPROC=IPROC+1
   IF( NMODEL>1 ) IPROACTV(8,IPROC) = NNESTRR
   IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &        
-     IPROACTV(8,IPROC) = NADVRR
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &        
-     IPROACTV(8,IPROC) = NADVXRR 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &          
-     IPROACTV(8,IPROC) = NADVYRR 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &        
-     IPROACTV(8,IPROC) = NADVZRR 
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(8,IPROC)  = NFRCRR
   IPROC=IPROC+1
   IF ( ONUMDIFTH ) IPROACTV(8,IPROC) = NDIFRR
@@ -1369,6 +1258,8 @@ IF (LBU_RRR) THEN
     END IF
   END IF
   IPROC=IPROC+1
+  IPROACTV(8,IPROC) = NADVRR
+  IPROC=IPROC+1
   IF ( HCLOUD /= 'NONE' ) IPROACTV(8,IPROC) = NNEGARR
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'KES' )   IPROACTV(8,IPROC) = NSEDIRR 
@@ -1423,20 +1314,14 @@ IF (LBU_RRR) THEN
   IPROC=IPROC+1
   YWORK2(8,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ADV_'
-  IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(8,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(8,IPROC) = 'DIF_'
   IPROC=IPROC+1
   YWORK2(8,IPROC) = 'REL_'
   IPROC=IPROC+1
+  YWORK2(8,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(8,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(8,IPROC) = 'SEDI_'
@@ -1498,18 +1383,6 @@ IF (LBU_RRI) THEN
   IPROC=IPROC+1
   IF( NMODEL>1 ) IPROACTV(9,IPROC) = NNESTRI
   IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &          
-     IPROACTV(9,IPROC) = NADVRI
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &           
-     IPROACTV(9,IPROC) = NADVXRI 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &           
-     IPROACTV(9,IPROC) = NADVYRI 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &         
-     IPROACTV(9,IPROC) = NADVZRI 
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(9,IPROC)  = NFRCRI
   IPROC=IPROC+1
   IF( ONUMDIFTH ) IPROACTV(9,IPROC) = NDIFRI
@@ -1540,6 +1413,8 @@ IF (LBU_RRI) THEN
     END IF
   END IF 
   IPROC=IPROC+1
+  IPROACTV(9,IPROC) = NADVRI
+  IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) IPROACTV(9,IPROC) = NNEGARI
   IPROC=IPROC+1
   IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NHENURI
@@ -1575,14 +1450,6 @@ IF (LBU_RRI) THEN
   IPROC=  IPROC+1
   YWORK2(9,IPROC) = 'NEST_'
   IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'ADV_'
-  IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'ADVX_'
-  IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'ADVY_'
-  IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'ADVZ_'
-  IPROC=  IPROC+1
   YWORK2(9,IPROC) = 'FRC_'
   IPROC=  IPROC+1
   YWORK2(9,IPROC) = 'DIF_'
@@ -1594,6 +1461,8 @@ IF (LBU_RRI) THEN
   YWORK2(9,IPROC) = 'VTURB_'
   IPROC=IPROC+1
   YWORK2(9,IPROC) = 'HTURB_'
+  IPROC=  IPROC+1
+  YWORK2(9,IPROC) = 'ADV_'
   IPROC=IPROC+1
   YWORK2(9,IPROC) = 'NEGA_'
   IPROC=  IPROC+1
@@ -1641,19 +1510,7 @@ IF (LBU_RRS) THEN
   IPROACTV(10,IPROC) = NASSERS 
   IPROC=  IPROC+1
   IF( NMODEL>1 ) IPROACTV(10,IPROC) = NNESTRS
-  IPROC=  IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &          
-     IPROACTV(10,IPROC) = NADVRS
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &         
-     IPROACTV(10,IPROC) = NADVXRS 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &         
-     IPROACTV(10,IPROC) = NADVYRS 
   IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &         
-     IPROACTV(10,IPROC) = NADVZRS 
-  IPROC=  IPROC+1
   IF( LFORCING )  IPROACTV(10,IPROC)  = NFRCRS
   IPROC=  IPROC+1
   IF( ONUMDIFTH ) IPROACTV(10,IPROC) = NDIFRS
@@ -1670,6 +1527,8 @@ IF (LBU_RRS) THEN
     END IF
   END IF
   IPROC=  IPROC+1
+  IPROACTV(10,IPROC) = NADVRS
+  IPROC=  IPROC+1
   IF( HCLOUD /= 'NONE' ) IPROACTV(10,IPROC) = NNEGARS
   IPROC=IPROC+1
   IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NDEPSRS
@@ -1701,19 +1560,13 @@ IF (LBU_RRS) THEN
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'NEST_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'ADV_'
-  IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'ADVX_'
-  IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'ADVY_'
-  IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'ADVZ_'
-  IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'FRC_'
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'DIF_'
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'REL_'
+  IPROC=  IPROC+1
+  YWORK2(10,IPROC) = 'ADV_'
   IPROC=IPROC+1
   YWORK2(10,IPROC) = 'NEGA_'
   IPROC=  IPROC+1
@@ -1758,18 +1611,6 @@ IF (LBU_RRG) THEN
   IPROC=IPROC+1
   IF( NMODEL>1 ) IPROACTV(11,IPROC) = NNESTRG
   IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &         
-     IPROACTV(11,IPROC) = NADVRG
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &          
-     IPROACTV(11,IPROC) = NADVXRG 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &            
-     IPROACTV(11,IPROC) = NADVYRG 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &              
-     IPROACTV(11,IPROC) = NADVZRG 
-  IPROC=IPROC+1
   IF( LFORCING ) IPROACTV(11,IPROC)  = NFRCRG
   IPROC=IPROC+1
   IF( ONUMDIFTH ) IPROACTV(11,IPROC) = NDIFRG
@@ -1786,6 +1627,8 @@ IF (LBU_RRG) THEN
     END IF
   END IF
   IPROC=IPROC+1
+  IPROACTV(11,IPROC) = NADVRG
+  IPROC=IPROC+1
   IF( HCLOUD /= 'NONE'  ) IPROACTV(11,IPROC) = NNEGARG
   IPROC=IPROC+1
   IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NSFRRG
@@ -1819,20 +1662,14 @@ IF (LBU_RRG) THEN
   IPROC=IPROC+1
   YWORK2(11,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'ADV_'
-  IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(11,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(11,IPROC) = 'DIF_'
   IPROC=IPROC+1
   YWORK2(11,IPROC) = 'REL_'
   IPROC=IPROC+1
+  YWORK2(11,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(11,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(11,IPROC)= 'SFR_'
@@ -1881,18 +1718,6 @@ IF (LBU_RRH) THEN
   ELSE
     IPROACTV(12,IPROC) = 3
   END IF
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) == 'PPM' ) &          
-     IPROACTV(12,IPROC) = NADVRH
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &          
-     IPROACTV(12,IPROC) = NADVXRH 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &       
-     IPROACTV(12,IPROC) = NADVYRH 
-  IPROC=IPROC+1
-  IF ( HMET_ADV_SCHEME(1:3) /= 'PPM' ) &           
-     IPROACTV(12,IPROC) = NADVZRH 
   IPROC=IPROC+1
    IF( LFORCING ) THEN
     IPROACTV(12,IPROC)  = NFRCRH
@@ -1918,6 +1743,8 @@ IF (LBU_RRH) THEN
     END IF
   END IF
   IPROC=IPROC+1
+  IPROACTV(12,IPROC) = NADVRH
+  IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) THEN
     IPROACTV(12,IPROC) = NNEGARH 
   ELSE
@@ -1940,20 +1767,14 @@ IF (LBU_RRH) THEN
   IPROC=IPROC+1
   YWORK2(12,IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'ADV_'
-  IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'ADVX_'
-  IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'ADVY_'
-  IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'ADVZ_'
-  IPROC=IPROC+1
   YWORK2(12,IPROC) = 'FRC_'
   IPROC=IPROC+1
   YWORK2(12,IPROC) = 'DIF_'
   IPROC=IPROC+1
   YWORK2(12,IPROC) = 'REL_'
   IPROC=IPROC+1
+  YWORK2(12,IPROC) = 'ADV_'
+  IPROC=IPROC+1
   YWORK2(12,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(12,IPROC) = 'WETG_'
@@ -1988,18 +1809,6 @@ IF (LBU_RSV) THEN
     IPROC=IPROC+1
     IF( NMODEL>1 ) IPROACTV(12+JSV,IPROC) = NNESTSV
     IPROC=IPROC+1
-    IF ( HSV_ADV_SCHEME(1:3) == 'PPM' ) &       
-     IPROACTV(12+JSV,IPROC) = NADVSV
-    IPROC=IPROC+1
-    IF ( HSV_ADV_SCHEME(1:3) /= 'PPM' ) &          
-     IPROACTV(12+JSV,IPROC) = NADVXSV 
-    IPROC=IPROC+1
-    IF ( HSV_ADV_SCHEME(1:3) /= 'PPM' ) &          
-     IPROACTV(12+JSV,IPROC) = NADVYSV 
-    IPROC=IPROC+1
-    IF ( HSV_ADV_SCHEME(1:3) /= 'PPM' ) &          
-     IPROACTV(12+JSV,IPROC) = NADVZSV 
-    IPROC=IPROC+1
     IF( LFORCING ) IPROACTV(12+JSV,IPROC)  = NFRCSV
     IPROC=IPROC+1
     IF ( ONUMDIFSV ) IPROACTV(12+JSV,IPROC) = NDIFSV
@@ -2033,6 +1842,7 @@ IF (LBU_RSV) THEN
     IPROC=IPROC+1
     IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,IPROC)= NMAFLSV
     IPROC=IPROC+1
+    IPROACTV(12+JSV,IPROC) = NADVSV
 !
     YWORK2(12+JSV,1) = 'INIF_'
     YWORK2(12+JSV,2) = 'ENDF_'
@@ -2042,14 +1852,6 @@ IF (LBU_RSV) THEN
     IPROC=IPROC+1
     YWORK2(12+JSV,IPROC) = 'NEST_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'ADV_'
-    IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'ADVX_'
-    IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'ADVY_'
-    IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'ADVZ_'
-    IPROC=IPROC+1
     YWORK2(12+JSV,IPROC) = 'FRC_'
     IPROC=IPROC+1
     YWORK2(12+JSV,IPROC) = 'DIF_'
@@ -2063,6 +1865,8 @@ IF (LBU_RSV) THEN
     YWORK2(12+JSV,IPROC) = 'HTURB_'
     IPROC=IPROC+1
     YWORK2(12+JSV,IPROC) = 'MAFL_'
+    IPROC=IPROC+1
+    YWORK2(12+JSV,IPROC) = 'ADV_'
 !
 ! complete with the budget of other processes
 !
diff --git a/src/MNH/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index 187015a48..9ae86ee27 100644
--- a/src/MNH/ini_cpl.f90
+++ b/src/MNH/ini_cpl.f90
@@ -321,9 +321,7 @@ LOGICAL, DIMENSION(JPCPLFILEMAX)    :: GSKIP      ! array to skip or not after
 REAL                   :: ZDIST                   ! temporal distance in secunds
                                                   ! between 2 dates
 LOGICAL :: GLSOURCE ! switch for the source term (for ini_ls and ini_lb)
-!! CL !!
-CHARACTER(LEN=4), DIMENSION(KSV)    :: YGETSVM
-!! CL !!
+!CHARACTER(LEN=4), DIMENSION(KSV)    :: YGETSVM
 !
 !-------------------------------------------------------------------------------
 !
@@ -499,23 +497,23 @@ CALL INI_LS(CCPLFILE(NCPL_CUR),HLUOUT,HGETRVM,GLSOURCE,PLSUS,PLSVS,PLSWS,PLSTHS,
 !
 !*      3.2   Initialize  the LB sources
 !
-YGETSVM(1:KSV) = HGETSVM(1:KSV)
-IF ( LUSECHEM .AND. (.NOT. OCH_INIT_FIELD) )  &
-   YGETSVM(NSV_CHEMBEG: NSV_CHEMEND) = 'INIT'
-IF (HCONF == 'RESTA')  THEN
-   IF (NSV_USER /= 0) YGETSVM(1/NSV_USER) = 'INIT'
-   IF (NSV_C2R2 /= 0) YGETSVM(NSV_C2R2BEG: NSV_C2R2END) = 'INIT'
-   IF (NSV_C1R3 /= 0) YGETSVM(NSV_C1R3BEG: NSV_C1R3END) = 'INIT'
-   IF (NSV_ELEC /= 0) YGETSVM(NSV_ELECBEG: NSV_ELECEND) = 'INIT'
-   IF (NSV_LG   /= 0) YGETSVM(NSV_LGBEG: NSV_LGEND) = 'INIT'
-   IF (NSV_LNOX /= 0) YGETSVM(NSV_LNOXBEG: NSV_LNOXEND) = 'INIT'
-   IF (NSV_DST  /= 0) YGETSVM(NSV_DSTBEG: NSV_DSTEND) = 'INIT'
-   IF (NSV_SLT  /= 0) YGETSVM(NSV_SLTBEG: NSV_SLTEND) = 'INIT'
-   IF (NSV_DSTDEP /= 0) YGETSVM(NSV_DSTDEPBEG: NSV_DSTDEPEND) = 'INIT'
-   IF (NSV_SLTDEP /= 0) YGETSVM(NSV_SLTDEPBEG: NSV_SLTDEPEND) = 'INIT'
-   IF (NSV_PP   /= 0) YGETSVM(NSV_PPBEG: NSV_PPEND) = 'INIT'
-   IF (NSV_CS   /= 0) YGETSVM(NSV_CSBEG: NSV_CSEND) = 'INIT'
-END IF
+!YGETSVM(1:KSV) = HGETSVM(1:KSV)
+!IF ( LUSECHEM .AND. (.NOT. OCH_INIT_FIELD) )  &
+!   YGETSVM(NSV_CHEMBEG: NSV_CHEMEND) = 'INIT'
+!IF (HCONF == 'RESTA')  THEN
+!   IF (NSV_USER /= 0) YGETSVM(1/NSV_USER) = 'INIT'
+!   IF (NSV_C2R2 /= 0) YGETSVM(NSV_C2R2BEG: NSV_C2R2END) = 'INIT'
+!   IF (NSV_C1R3 /= 0) YGETSVM(NSV_C1R3BEG: NSV_C1R3END) = 'INIT'
+!   IF (NSV_ELEC /= 0) YGETSVM(NSV_ELECBEG: NSV_ELECEND) = 'INIT'
+!   IF (NSV_LG   /= 0) YGETSVM(NSV_LGBEG: NSV_LGEND) = 'INIT'
+!   IF (NSV_LNOX /= 0) YGETSVM(NSV_LNOXBEG: NSV_LNOXEND) = 'INIT'
+!   IF (NSV_DST  /= 0) YGETSVM(NSV_DSTBEG: NSV_DSTEND) = 'INIT'
+!   IF (NSV_SLT  /= 0) YGETSVM(NSV_SLTBEG: NSV_SLTEND) = 'INIT'
+!   IF (NSV_DSTDEP /= 0) YGETSVM(NSV_DSTDEPBEG: NSV_DSTDEPEND) = 'INIT'
+!   IF (NSV_SLTDEP /= 0) YGETSVM(NSV_SLTDEPBEG: NSV_SLTDEPEND) = 'INIT'
+!   IF (NSV_PP   /= 0) YGETSVM(NSV_PPBEG: NSV_PPEND) = 'INIT'
+!   IF (NSV_CS   /= 0) YGETSVM(NSV_CSBEG: NSV_CSEND) = 'INIT'
+!END IF
  
 GLSOURCE=.TRUE.
 CALL INI_LB(CCPLFILE(NCPL_CUR),HLUOUT,GLSOURCE,KSV,                  &
@@ -523,7 +521,7 @@ CALL INI_LB(CCPLFILE(NCPL_CUR),HLUOUT,GLSOURCE,KSV,                  &
      KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                  &
      KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,          &
      HGETTKEM,HGETRVM,HGETRCM,HGETRRM,HGETRIM,HGETRSM,               &
-     HGETRGM,HGETRHM,YGETSVM,                                        &
+     HGETRGM,HGETRHM,HGETSVM,                                        &
      PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,           &
      PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS,           &
      PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,           &
diff --git a/src/MNH/ini_elecn.f90 b/src/MNH/ini_elecn.f90
index 9b00bea40..c9a7be45a 100644
--- a/src/MNH/ini_elecn.f90
+++ b/src/MNH/ini_elecn.f90
@@ -87,12 +87,12 @@ USE MODD_ELEC_n, ONLY : XRHOM_E, XAF_E, XCF_E, XBFY_E
 USE MODD_CONF_n, ONLY : NRR
 USE MODD_PARAMETERS, ONLY : JPVEXT, JPHEXT
 USE MODD_CST
-USE MODD_CONF, ONLY : CEQNSYS
+USE MODD_CONF, ONLY : CEQNSYS,CCONF,CPROGRAM
 USE MODD_DYN
 USE MODD_REF
 USE MODD_TIME
-USE MODD_GET_n, ONLY : CGETRCT,CGETRRT, CGETRST, CGETRGT, CGETRHT, CGETCLOUD, &
-                       CGETSVM
+USE MODD_GET_n, ONLY : CGETINPRC, CGETINPRR, CGETINPRS, CGETINPRG, CGETINPRH, &            
+                       CGETCLOUD, CGETSVT
 USE MODD_PRECIP_n, ONLY : XINPRR, XACPRR, XINPRS, XACPRS, XINPRG, XACPRG, &
                           XINPRH, XACPRH, XINPRC, XACPRC, XINPRR3D, XEVAP3D
 USE MODD_CLOUDPAR_n, ONLY : NSPLITR
@@ -207,8 +207,8 @@ IF(SIZE(XINPRR) == 0) RETURN
 !*       2.    Initialize MODD_PRECIP_n variables
 !              -----------------------------------
 !
-CALL READ_PRECIP_FIELD (HINIFILE, HLUOUT,                                    &
-                        CGETRCT, CGETRRT, CGETRST, CGETRGT, CGETRHT,         &
+CALL READ_PRECIP_FIELD (HINIFILE, HLUOUT, CPROGRAM, CCONF,                   &
+                        CGETINPRC,CGETINPRR,CGETINPRS,CGETINPRG,CGETINPRH,   &
                         XINPRC, XACPRC, XINPRR, XINPRR3D, XEVAP3D,           &
                         XACPRR, XINPRS, XACPRS, XINPRG, XACPRG, XINPRH, XACPRH)
 !
@@ -249,7 +249,7 @@ IF (HELEC(1:3) == 'ELE') THEN
 !
   ZRHO00 = XP00 / (XRD * XTHVREFZ(IKB))
 !
-  CALL INI_PARAM_ELEC (HINIFILE, HLUOUT, CGETSVM, ZRHO00, NRR, IINTVL, &
+  CALL INI_PARAM_ELEC (HINIFILE, HLUOUT, CGETSVT, ZRHO00, NRR, IINTVL, &
                        ZFDINFTY, IIU, IJU, IKU)
 !
 !
diff --git a/src/MNH/ini_lesn.f90 b/src/MNH/ini_lesn.f90
index ca8156717..c30fe0e2d 100644
--- a/src/MNH/ini_lesn.f90
+++ b/src/MNH/ini_lesn.f90
@@ -100,31 +100,30 @@ IJU_ll = IJMAX_ll+2*JPHEXT
 !
 CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
 !
-NLES_TOTADVH  = 1
-NLES_TOTADVV  = 2
-NLES_RELA  = 3
-NLES_RAD   = 4
-NLES_GRAV  = 5
-NLES_COR   = 6
-NLES_MICR  = 7
-NLES_HTURB = 8
-NLES_VTURB = 9
-NLES_FORC  = 10
-NLES_PRES  = 11
-NLES_DIFF  = 12
-NLES_CURV  = 13
-NLES_PREF  = 14
-NLES_DP    = 15
-NLES_TP    = 16
-NLES_TR    = 17
-NLES_DISS  = 18
-NLES_TEND  = 19
-NLES_ADVR  = 20
-NLES_ADVM  = 21
-NLES_NEST  = 22
-NLES_MISC  = 23
-!
-NLES_TOT = 23
+NLES_TOTADV  = 1
+NLES_RELA  = 2
+NLES_RAD   = 3
+NLES_GRAV  = 4
+NLES_COR   = 5
+NLES_MICR  = 6
+NLES_HTURB = 7
+NLES_VTURB = 8
+NLES_FORC  = 9
+NLES_PRES  = 10
+NLES_DIFF  = 11
+NLES_CURV  = 12
+NLES_PREF  = 13
+NLES_DP    = 14
+NLES_TP    = 15
+NLES_TR    = 16
+NLES_DISS  = 17
+NLES_TEND  = 18
+NLES_ADVR  = 19
+NLES_ADVM  = 20
+NLES_NEST  = 21
+NLES_MISC  = 22
+!
+NLES_TOT = 22
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ini_lg.f90 b/src/MNH/ini_lg.f90
index 415c7e173..64b0f0a9c 100644
--- a/src/MNH/ini_lg.f90
+++ b/src/MNH/ini_lg.f90
@@ -9,11 +9,11 @@
 !     ##################
 INTERFACE
 !
-      SUBROUTINE INI_LG(PXHAT,PYHAT,PZZ,PSVM,PSVT,PLBXSVM,PLBYSVM)
+      SUBROUTINE INI_LG(PXHAT,PYHAT,PZZ,PSVT,PLBXSVM,PLBYSVM)
 !
 REAL,DIMENSION(:),      INTENT(IN) :: PXHAT,PYHAT ! Positions x,y in the cartesian plane
 REAL,DIMENSION(:,:,:), INTENT(IN)  :: PZZ         ! True altitude of the w grid-point
-REAL,DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVM,PSVT        ! scalar var. at t-1 and t
+REAL,DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT        ! scalar var. at t
 REAL,DIMENSION(:,:,:,:), INTENT(INOUT) :: PLBXSVM,PLBYSVM  ! LB in x and y-dir.
 !
 END SUBROUTINE INI_LG
@@ -25,7 +25,7 @@ END MODULE MODI_INI_LG
 !
 !
 !     ############################################################
-      SUBROUTINE INI_LG(PXHAT,PYHAT,PZZ,PSVM,PSVT,PLBXSVM,PLBYSVM)
+      SUBROUTINE INI_LG(PXHAT,PYHAT,PZZ,PSVT,PLBXSVM,PLBYSVM)
 !     ############################################################
 !
 !!****  *INI_LG* - routine to initialize lagrangian variables
@@ -76,7 +76,7 @@ IMPLICIT NONE
 !
 REAL,DIMENSION(:),      INTENT(IN) :: PXHAT,PYHAT ! Positions x,y in the cartesian plane
 REAL,DIMENSION(:,:,:), INTENT(IN)  :: PZZ         ! True altitude of the w grid-point
-REAL,DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVM,PSVT        ! scalar var. at t-1 and t
+REAL,DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT        ! scalar var. at t
 REAL,DIMENSION(:,:,:,:), INTENT(INOUT) :: PLBXSVM,PLBYSVM  ! LB in x and y-dir.
 !
 !
@@ -99,40 +99,38 @@ IKU=SIZE(PZZ,3)
 DO JK=1,IKU
   DO JJ=1,IJU
     DO JI=1,IIU-1
-      PSVM(JI,JJ,JK,NSV_LGBEG)=0.5*(PXHAT(JI)+PXHAT(JI+1))
+      PSVT(JI,JJ,JK,NSV_LGBEG)=0.5*(PXHAT(JI)+PXHAT(JI+1))
     END DO
-    PSVM(IIU,JJ,JK,NSV_LGBEG)=2.*PSVM(IIU-1,JJ,JK,NSV_LGBEG)-PSVM(IIU-2,JJ,JK,NSV_LGBEG)
+    PSVT(IIU,JJ,JK,NSV_LGBEG)=2.*PSVT(IIU-1,JJ,JK,NSV_LGBEG)-PSVT(IIU-2,JJ,JK,NSV_LGBEG)
   END DO
 END DO
 !
 DO JK=1,IKU
   DO JI=1,IIU
     DO JJ=1,IJU-1
-      PSVM(JI,JJ,JK,NSV_LGBEG+1)=0.5*(PYHAT(JJ)+PYHAT(JJ+1))
+      PSVT(JI,JJ,JK,NSV_LGBEG+1)=0.5*(PYHAT(JJ)+PYHAT(JJ+1))
     END DO
-    PSVM(JI,IJU,JK,NSV_LGBEG+1)=2.*PSVM(JI,IJU-1,JK,NSV_LGBEG+1)-PSVM(JI,IJU-2,JK,NSV_LGBEG+1)
+    PSVT(JI,IJU,JK,NSV_LGBEG+1)=2.*PSVT(JI,IJU-1,JK,NSV_LGBEG+1)-PSVT(JI,IJU-2,JK,NSV_LGBEG+1)
   END DO
 END DO
 !
 DO JI=1,IIU
   DO JJ=1,IJU
     DO JK=1,IKU-1
-      PSVM(JI,JJ,JK,NSV_LGEND)=0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+1))
+      PSVT(JI,JJ,JK,NSV_LGEND)=0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+1))
     END DO
-    PSVM(JI,JJ,IKU,NSV_LGEND)=2.*PSVM(JI,JJ,IKU-1,NSV_LGEND)-PSVM(JI,JJ,IKU-2,NSV_LGEND)
+    PSVT(JI,JJ,IKU,NSV_LGEND)=2.*PSVT(JI,JJ,IKU-1,NSV_LGEND)-PSVT(JI,JJ,IKU-2,NSV_LGEND)
   END DO
 END DO
 !
-PSVT(:,:,:,NSV_LGBEG:NSV_LGEND)=PSVM(:,:,:,NSV_LGBEG:NSV_LGEND)
-!
 !*       3.    SET LB
 !              ------
 !
-IF (LWEST_ll()) PLBXSVM(1,:,:,NSV_LGBEG:NSV_LGEND)=PSVM(1,:,:,NSV_LGBEG:NSV_LGEND)
-IF (LEAST_ll()) PLBXSVM(SIZE(PLBXSVM,1),:,:,NSV_LGBEG:NSV_LGEND)=PSVM(IIU,:,:,NSV_LGBEG:NSV_LGEND)
+IF (LWEST_ll()) PLBXSVM(1,:,:,NSV_LGBEG:NSV_LGEND)=PSVT(1,:,:,NSV_LGBEG:NSV_LGEND)
+IF (LEAST_ll()) PLBXSVM(SIZE(PLBXSVM,1),:,:,NSV_LGBEG:NSV_LGEND)=PSVT(IIU,:,:,NSV_LGBEG:NSV_LGEND)
 IF ( SIZE(PLBYSVM,1) >0 ) THEN
-  IF(LSOUTH_ll()) PLBYSVM(:,1,:,NSV_LGBEG:NSV_LGEND)=PSVM(:,1,:,NSV_LGBEG:NSV_LGEND)
-  IF(LNORTH_ll()) PLBYSVM(:,SIZE(PLBYSVM,2),:,NSV_LGBEG:NSV_LGEND)=PSVM(:,IJU,:,NSV_LGBEG:NSV_LGEND)
+  IF(LSOUTH_ll()) PLBYSVM(:,1,:,NSV_LGBEG:NSV_LGEND)=PSVT(:,1,:,NSV_LGBEG:NSV_LGEND)
+  IF(LNORTH_ll()) PLBYSVM(:,SIZE(PLBYSVM,2),:,NSV_LGBEG:NSV_LGEND)=PSVT(:,IJU,:,NSV_LGBEG:NSV_LGEND)
 END IF
 !
 END SUBROUTINE INI_LG
diff --git a/src/MNH/ini_micron.f90 b/src/MNH/ini_micron.f90
index d8c3b213a..2ce036302 100644
--- a/src/MNH/ini_micron.f90
+++ b/src/MNH/ini_micron.f90
@@ -55,6 +55,7 @@ END MODULE MODI_INI_MICRO_n
 !
 USE MODD_NSV, ONLY : NSV,NSV_CHEM,NSV_C2R2BEG,NSV_C2R2END, &
                                   NSV_C1R3BEG,NSV_C1R3END
+USE MODD_CONF, ONLY : CCONF,CPROGRAM       
 USE MODD_LUNIT_n, ONLY : CINIFILE,CLUOUT
 USE MODD_GET_n, ONLY : CGETRCT,CGETRRT, CGETRST, CGETRGT, CGETRHT, CGETCLOUD
 USE MODD_DIM_n, ONLY : NIMAX_ll, NJMAX_ll
@@ -62,7 +63,7 @@ USE MODD_PARAMETERS, ONLY : JPVEXT, JPHEXT
 USE MODD_PARAM_n, ONLY : CCLOUD
 USE MODD_PRECIP_n, ONLY : XINPRR, XACPRR, XINPRS, XACPRS, XINPRG, XACPRG, &
                           XINPRH, XACPRH, XINPRC, XACPRC, XINPRR3D, XEVAP3D
-USE MODD_FIELD_n, ONLY : XRM, XSVM, XRT, XSVT, XTHT, XPABST
+USE MODD_FIELD_n, ONLY : XRT, XSVT, XTHT, XPABST, XTHM, XRCM
 USE MODD_GRID_n, ONLY : XZZ
 USE MODD_METRICS_n, ONLY : XDXX,XDYY,XDZZ,XDZX,XDZY
 USE MODD_REF_n, ONLY : XRHODREF
@@ -70,7 +71,7 @@ USE MODD_DYN_n, ONLY : XTSTEP
 USE MODD_CLOUDPAR_n, ONLY : NSPLITR, NSPLITG
 USE MODD_PARAM_n, ONLY : CELEC
 USE MODD_PARAM_ICE,  ONLY : LSEDIC
-USE MODD_PARAM_C2R2, ONLY : LSEDC
+USE MODD_PARAM_C2R2, ONLY : LSEDC, LACTIT
 !
 USE MODI_READ_PRECIP_FIELD
 USE MODI_INI_CLOUD
@@ -179,10 +180,23 @@ END IF
 !
 IF(SIZE(XINPRR) == 0) RETURN
 !
+!*       2b.    ALLOCATION for Radiative cooling 
+!              ------------------------------
+IF (LACTIT) THEN
+  ALLOCATE( XTHM(IIU,IJU,IKU) )
+  ALLOCATE( XRCM(IIU,IJU,IKU) )
+  XTHM = XTHT
+  XRCM(:,:,:) = XRT(:,:,:,2)
+             ELSE
+  ALLOCATE( XTHM(0,0,0) )
+  ALLOCATE( XRCM(0,0,0) )
+END IF
+!
 !*       3.    INITIALIZE MODD_PRECIP_n variables
 !              ----------------------------------
 !
-CALL READ_PRECIP_FIELD(CINIFILE,CLUOUT,CGETRCT,CGETRRT,CGETRST,CGETRGT,CGETRHT,  &
+CALL READ_PRECIP_FIELD(CINIFILE,CLUOUT,CPROGRAM,CCONF,                           &
+                  CGETRCT,CGETRRT,CGETRST,CGETRGT,CGETRHT,                       &
                   XINPRC,XACPRC,XINPRR,XINPRR3D,XEVAP3D,                         &
                   XACPRR,XINPRS,XACPRS,XINPRG,XACPRG, XINPRH,XACPRH )           
 !
@@ -217,23 +231,17 @@ END IF
 !
 IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN
   IF (CGETCLOUD=='READ') THEN
-    CALL CLEAN_CONC_RAIN_C2R2 (CLUOUT,XRM,XSVM(:,:,:,NSV_C2R2BEG:NSV_C2R2END))
     CALL CLEAN_CONC_RAIN_C2R2 (CLUOUT,XRT,XSVT(:,:,:,NSV_C2R2BEG:NSV_C2R2END))
   ELSE IF (CGETCLOUD=='INI1'.OR.CGETCLOUD=='INI2') THEN
     CALL SET_CONC_RAIN_C2R2 (CLUOUT,CGETCLOUD,XRHODREF,&
          &XRT,XSVT(:,:,:,NSV_C2R2BEG:NSV_C2R2END))
-    CALL SET_CONC_RAIN_C2R2 (CLUOUT,CGETCLOUD,XRHODREF,&
-         &XRM,XSVM(:,:,:,NSV_C2R2BEG:NSV_C2R2END))
   ENDIF
   IF (CCLOUD == 'C3R5' ) THEN
     IF (CGETCLOUD=='READ') THEN
-      CALL CLEAN_CONC_ICE_C1R3 (CLUOUT,XRM,XSVM(:,:,:,NSV_C2R2BEG:NSV_C1R3END))
       CALL CLEAN_CONC_ICE_C1R3 (CLUOUT,XRT,XSVT(:,:,:,NSV_C2R2BEG:NSV_C1R3END))
     ELSE
       CALL SET_CONC_ICE_C1R3 (CLUOUT,XRHODREF,&
            &XRT,XSVT(:,:,:,NSV_C2R2BEG:NSV_C1R3END))
-      CALL SET_CONC_ICE_C1R3 (CLUOUT,XRHODREF,&
-           &XRM,XSVM(:,:,:,NSV_C2R2BEG:NSV_C1R3END))
     ENDIF
   ENDIF
 ENDIF
@@ -244,10 +252,10 @@ ENDIF
 !
 !
 IMI = GET_CURRENT_MODEL_INDEX()
-IF (CELEC /= 'NONE') THEN
-!!$  CALL INI_ELEC(IMI,CINIFILE,CLUOUT,XTSTEP,ZDZMIN,NSPLITR, &
-!!$                XDXX,XDYY,XDZZ,XDZX,XDZY                   )
-END IF
+!IF (CELEC /= 'NONE') THEN
+!  CALL INI_ELEC(IMI,CINIFILE,CLUOUT,XTSTEP,ZDZMIN,NSPLITR, &
+!                XDXX,XDYY,XDZZ,XDZX,XDZY                   )
+!END IF
 !
 !
 END SUBROUTINE INI_MICRO_n
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index ed2144a2e..04bfe2efa 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -1,4 +1,4 @@
-! $Source$ $Revision$ $Date: 2010/11/16 15:45:48
+! $Source$ $Revision$ $Date$
 !-----------------------------------------------------------------
 !     #######################
       MODULE MODI_INI_MODEL_n
@@ -6,10 +6,9 @@
 !
 INTERFACE
 !
-       SUBROUTINE INI_MODEL_n(KMI,PTSTEP_OLD,HLUOUT,HINIFILE,HINIFILEPGD)
+       SUBROUTINE INI_MODEL_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD)
 !
        INTEGER, INTENT(IN)              :: KMI      ! Model index 
-       REAL,              INTENT(IN)    :: PTSTEP_OLD ! OLD Time STEP 
        CHARACTER (LEN=*), INTENT(IN)    :: HLUOUT   ! name for output-listing
        !  of nested models
        CHARACTER (LEN=28), INTENT(IN)   :: HINIFILE ! name of
@@ -21,7 +20,7 @@ END INTERFACE
 !
 END MODULE MODI_INI_MODEL_n
 !     ######################################################
-      SUBROUTINE INI_MODEL_n(KMI,PTSTEP_OLD,HLUOUT,HINIFILE,HINIFILEPGD)
+      SUBROUTINE INI_MODEL_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD)
 !     ######################################################
 !
 !!****  *INI_MODEL_n* - routine to initialize the nested model _n
@@ -284,6 +283,7 @@ USE MODD_METRICS_n
 USE MODD_DYN_n
 USE MODD_DYNZD_n
 USE MODD_FIELD_n
+USE MODD_PAST_FIELD_n
 USE MODD_MEAN_FIELD_n
 USE MODD_MEAN_FIELD
 USE MODD_ADV_n
@@ -397,7 +397,6 @@ IMPLICIT NONE
 !
 !
 INTEGER, INTENT(IN)              :: KMI      ! Model Index 
-REAL,    INTENT(IN)              :: PTSTEP_OLD ! OLD Time STEP 
 
 CHARACTER (LEN=*), INTENT(IN)    :: HLUOUT   ! name for output-listing
                                              !  of nested models
@@ -490,6 +489,7 @@ CLUOUT = HLUOUT
 CINIFILE=HINIFILE
 CINIFILEPGD=HINIFILEPGD
 !
+CALL FMREAD(HINIFILE,'MASDEV',HLUOUT,'--',IMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
 !-------------------------------------------------------------------------------
 !
 !*       2.   END OF READING
@@ -583,30 +583,30 @@ CALL GET_DIM_PHYS_ll('B',NIMAX,NJMAX)
 NRR=0
 NRRL=0
 NRRI=0
-IF ((CGETRVM /= 'SKIP' ).OR.(CGETRVT /= 'SKIP' )) THEN
+IF (CGETRVT /= 'SKIP' ) THEN
   NRR = NRR+1
 END IF
-IF ((CGETRCM /= 'SKIP' ).OR.(CGETRCT /= 'SKIP' )) THEN
+IF (CGETRCT /= 'SKIP' ) THEN
   NRR = NRR+1
   NRRL = NRRL+1
 END IF
-IF ((CGETRRM /= 'SKIP').OR.(CGETRRT /= 'SKIP' )) THEN
+IF (CGETRRT /= 'SKIP' ) THEN
   NRR = NRR+1
   NRRL = NRRL+1
 END IF
-IF ((CGETRIM /= 'SKIP').OR.(CGETRIT /= 'SKIP' )) THEN
+IF (CGETRIT /= 'SKIP' ) THEN
   NRR = NRR+1
   NRRI = NRRI+1
 END IF
-IF ((CGETRSM /= 'SKIP').OR.(CGETRST /= 'SKIP' )) THEN
+IF (CGETRST /= 'SKIP' ) THEN
   NRR = NRR+1
   NRRI = NRRI+1
 END IF
-IF ((CGETRGM /= 'SKIP').OR.(CGETRGT /= 'SKIP' )) THEN
+IF (CGETRGT /= 'SKIP' ) THEN
   NRR = NRR+1
   NRRI = NRRI+1
 END IF
-IF ((CGETRHM /= 'SKIP').OR.(CGETRHT /= 'SKIP' )) THEN
+IF (CGETRHT /= 'SKIP' ) THEN
   NRR = NRR+1
   NRRI = NRRI+1
 END IF
@@ -628,11 +628,6 @@ CALL UPDATE_NSV(KMI)
 !
 !*       3.1   Module MODD_FIELD_n
 !
-ALLOCATE(XUM(IIU,IJU,IKU))      ; XUM  = 0.0
-ALLOCATE(XVM(IIU,IJU,IKU))      ; XVM  = 0.0
-ALLOCATE(XWM(IIU,IJU,IKU))      ; XWM  = 0.0
-ALLOCATE(XTHM(IIU,IJU,IKU))     ; XTHM = 0.0
-!
 IF (LMEAN_FIELD) THEN
 !
   MEAN_COUNT = 0
@@ -654,6 +649,15 @@ IF (LMEAN_FIELD) THEN
 !
 END IF
 !
+IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN
+  ALLOCATE(XUM(IIU,IJU,IKU))      ; XUM  = 0.0
+  ALLOCATE(XVM(IIU,IJU,IKU))      ; XVM  = 0.0
+  ALLOCATE(XWM(IIU,IJU,IKU))      ; XWM  = 0.0
+  ALLOCATE(XDUM(IIU,IJU,IKU))     ; XDUM  = 0.0
+  ALLOCATE(XDVM(IIU,IJU,IKU))     ; XDVM  = 0.0
+  ALLOCATE(XDWM(IIU,IJU,IKU))     ; XDWM  = 0.0
+END IF
+!
 ALLOCATE(XUT(IIU,IJU,IKU))      ; XUT  = 0.0
 ALLOCATE(XVT(IIU,IJU,IKU))      ; XVT  = 0.0
 ALLOCATE(XWT(IIU,IJU,IKU))      ; XWT  = 0.0
@@ -661,15 +665,18 @@ ALLOCATE(XTHT(IIU,IJU,IKU))     ; XTHT = 0.0
 ALLOCATE(XRUS(IIU,IJU,IKU))     ; XRUS = 0.0
 ALLOCATE(XRVS(IIU,IJU,IKU))     ; XRVS = 0.0
 ALLOCATE(XRWS(IIU,IJU,IKU))     ; XRWS = 0.0
-ALLOCATE(XRTHS(IIU,IJU,IKU))
+ALLOCATE(XRUS_PRES(IIU,IJU,IKU)); XRUS_PRES = 0.0
+ALLOCATE(XRVS_PRES(IIU,IJU,IKU)); XRVS_PRES = 0.0
+ALLOCATE(XRWS_PRES(IIU,IJU,IKU)); XRWS_PRES = 0.0
+ALLOCATE(XRTHS(IIU,IJU,IKU))    ; XRTHS = 0.0
+ALLOCATE(XRTHS_CLD(IIU,IJU,IKU)); XRTHS_CLD = 0.0
 IF (CTURB /= 'NONE') THEN
-  ALLOCATE(XTKEM(IIU,IJU,IKU))
   ALLOCATE(XTKET(IIU,IJU,IKU))
   ALLOCATE(XRTKES(IIU,IJU,IKU))
+  ALLOCATE(XRTKEMS(IIU,IJU,IKU)); XRTKEMS = 0.0
   ALLOCATE(XWTHVMF(IIU,IJU,IKU))
-  XTKEMIN=XKEMIN  
+  XTKEMIN=XKEMIN
 ELSE
-  ALLOCATE(XTKEM(0,0,0))
   ALLOCATE(XTKET(0,0,0))
   ALLOCATE(XRTKES(0,0,0))
   ALLOCATE(XWTHVMF(0,0,0))
@@ -688,16 +695,14 @@ END IF
 ALLOCATE(XPABSM(IIU,IJU,IKU)) ; XPABSM = 0.0
 ALLOCATE(XPABST(IIU,IJU,IKU)) ; XPABST = 0.0
 !
-ALLOCATE(XRM(IIU,IJU,IKU,NRR))
 ALLOCATE(XRT(IIU,IJU,IKU,NRR))
 ALLOCATE(XRRS(IIU,IJU,IKU,NRR))
+ALLOCATE(XRRS_CLD(IIU,IJU,IKU,NRR)); XRRS_CLD = 0.0
 !
 IF (CTURB /= 'NONE' .AND. NRR>1) THEN
-  ALLOCATE(XSRCM(IIU,IJU,IKU))
   ALLOCATE(XSRCT(IIU,IJU,IKU))
   ALLOCATE(XSIGS(IIU,IJU,IKU))
 ELSE
-  ALLOCATE(XSRCM(0,0,0))
   ALLOCATE(XSRCT(0,0,0))
   ALLOCATE(XSIGS(0,0,0))
 END IF
@@ -708,9 +713,9 @@ ELSE
   ALLOCATE(XCLDFR(0,0,0))
 END IF
 !
-ALLOCATE(XSVM(IIU,IJU,IKU,NSV))
 ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
 ALLOCATE(XRSVS(IIU,IJU,IKU,NSV))
+ALLOCATE(XRSVS_CLD(IIU,IJU,IKU,NSV)); XRSVS_CLD = 0.0
 !
 IF (LPASPOL) THEN
   ALLOCATE( XATC(IIU,IJU,IKU,NSV_PP) )
@@ -720,20 +725,7 @@ IF (LPASPOL) THEN
   XATC = 0.
 END IF
 !
-!*       3.2   Module MODD_ADV_n      
-!
-IF (CMET_ADV_SCHEME(1:3) == 'PPM' .OR. CSV_ADV_SCHEME(1:3) == 'PPM') THEN
-  ALLOCATE(XRTHMS(IIU,IJU,IKU)) ; XRTHMS = 0.
-  IF (CTURB /= 'NONE') THEN
-    ALLOCATE(XRTKEMS(IIU,IJU,IKU))
-    XRTKEMS = 0.
-  ENDIF
-  ALLOCATE(XRRMS(IIU,IJU,IKU,NRR)); XRRMS = 0.
-  ALLOCATE(XRSVMS(IIU,IJU,IKU,NSV)) ; XRSVMS = 0.
-END IF
-!
-!
-!*       3.3   Module MODD_GRID_n and MODD_METRICS_n
+!*       3.2   Module MODD_GRID_n and MODD_METRICS_n
 !
 IF (LCARTESIAN) THEN
   ALLOCATE(XLON(0,0))
@@ -764,7 +756,7 @@ ALLOCATE(XDZX(IIU,IJU,IKU))
 ALLOCATE(XDZY(IIU,IJU,IKU))
 ALLOCATE(XDZZ(IIU,IJU,IKU))
 !
-!*       3.4   Modules MODD_REF and  MODD_REF_n
+!*       3.3   Modules MODD_REF and  MODD_REF_n
 !
 IF (KMI == 1) THEN
   ALLOCATE(XRHODREFZ(IKU),XTHVREFZ(IKU))
@@ -779,7 +771,7 @@ ELSE
   ALLOCATE(XRVREF(0,0,0))
 END IF
 !
-!*       3.5   Module MODD_CURVCOR_n
+!*       3.4   Module MODD_CURVCOR_n
 !
 IF (LTHINSHELL) THEN
   ALLOCATE(XCORIOX(0,0))
@@ -797,7 +789,7 @@ ELSE
   ALLOCATE(XCURVY(IIU,IJU))
 END IF
 !
-!*       3.6   Module MODD_DYN_n
+!*       3.5   Module MODD_DYN_n
 !
 CALL GET_DIM_EXT_ll('Y',IIY,IJY)
 IF (L2D) THEN
@@ -841,7 +833,7 @@ ELSE
   CALL INIT_TYPE_ZDIFFU_HALO2(XZDIFFU_HALO2,0)
 ENDIF
 !
-!*       3.7   Larger Scale variables (Module MODD_LSFIELD$n)
+!*       3.6   Larger Scale variables (Module MODD_LSFIELD$n)
 !
 !
 ! upper relaxation part
@@ -1164,7 +1156,7 @@ ELSE
 END IF
 !
 !
-!*       4.8   Module MODD_RADIATIONS_n (except XOZON and XAER)
+!*       3.7   Module MODD_RADIATIONS_n (except XOZON and XAER)
 !
 !
 NSWB_MNH = 6
@@ -1232,7 +1224,7 @@ ELSE
   ALLOCATE(XSTATM(0,0))
 END IF
 !
-!*       4.9   Module MODD_DEEP_CONVECTION_n
+!*       3.8   Module MODD_DEEP_CONVECTION_n
 !
 IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
   ALLOCATE(NCOUNTCONV(IIU,IJU))
@@ -1296,11 +1288,11 @@ ALLOCATE(XCF_MF(IIU,IJU,IKU)) ; XCF_MF=0.0
 ALLOCATE(XRC_MF(IIU,IJU,IKU)) ; XRC_MF=0.0
 ALLOCATE(XRI_MF(IIU,IJU,IKU)) ; XRI_MF=0.0
 !
-!*       4.10  Local variables
+!*       3.9   Local variables
 !
 ALLOCATE(ZJ(IIU,IJU,IKU))
 !
-!*      4.11 Forcing variables (Module MODD_FRC)
+!*      3.10 Forcing variables (Module MODD_FRC)
 !
 IF (KMI == 1) THEN
   IF ( LFORCING ) THEN
@@ -1388,7 +1380,7 @@ ELSE
    ALLOCATE(XVU_FLUX_M(0,0,0)) ; XVU_FLUX_M  = 0.
 END IF
 !
-!*      4.12   Module MODD_ICE_CONC_n
+!*      3.11   Module MODD_ICE_CONC_n
 !
 IF (     (CCLOUD == 'ICE3'.OR.CCLOUD == 'ICE4') .AND.   &
      (CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
@@ -1397,7 +1389,7 @@ ELSE
   ALLOCATE(XCIT(0,0,0))
 END IF
 !
-!*      4.13   Module MODD_TURB_CLOUD
+!*      3.12   Module MODD_TURB_CLOUD
 !
 IF (.NOT.(ALLOCATED(XCEI))) ALLOCATE(XCEI(0,0,0))
 IF (KMI == NMODEL_CLOUD .AND. CTURBLEN_CLOUD/='NONE' ) THEN
@@ -1405,7 +1397,7 @@ IF (KMI == NMODEL_CLOUD .AND. CTURBLEN_CLOUD/='NONE' ) THEN
   ALLOCATE(XCEI(IIU,IJU,IKU))
 ENDIF
 !
-!*      4.14  Module MODD_CH_PH_n
+!*      3.13  Module MODD_CH_PH_n
 !
 IF ( (LUSECHAQ.AND.LCH_PH) .AND.  &     
      (CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
@@ -1417,7 +1409,7 @@ ENDIF
 !
 !-------------------------------------------------------------------------------
 !
-!*       5.    INITIALIZE BUDGET VARIABLES
+!*       4.    INITIALIZE BUDGET VARIABLES
 !              ---------------------------
 !
 IF ( CBUTYPE /= "NONE" .AND. NBUMOD == KMI ) THEN
@@ -1426,20 +1418,19 @@ IF ( CBUTYPE /= "NONE" .AND. NBUMOD == KMI ) THEN
              LHORELAX_UVWTH,LHORELAX_RV, LHORELAX_RC,LHORELAX_RR,             &
              LHORELAX_RI,LHORELAX_RS,LHORELAX_RG, LHORELAX_RH,LHORELAX_TKE,   &
              LHORELAX_SV,LVE_RELAX,LCHTRANS,LNUDGING,LDRAGTREE,               &
-             CRAD,CDCONV,CSCONV,CTURB,CTURBDIM,CCLOUD,                        &
-             CMET_ADV_SCHEME,CSV_ADV_SCHEME )
+             CRAD,CDCONV,CSCONV,CTURB,CTURBDIM,CCLOUD                         )
 END IF
 !
 !-------------------------------------------------------------------------------
 !
 !
-!*       6.    INITIALIZE INTERPOLATION COEFFICIENTS
+!*       5.    INITIALIZE INTERPOLATION COEFFICIENTS
 !
 CALL INI_BIKHARDT_n (NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),KMI)
 !
 !-------------------------------------------------------------------------------
 !
-!*       7.    INITIALIZE GRIDS AND METRIC COEFFICIENTS
+!*       6.    INITIALIZE GRIDS AND METRIC COEFFICIENTS
 !              ----------------------------------------
 !
 CALL SET_GRID(KMI,HINIFILE,HLUOUT,IIU,IJU,IKU,NIMAX_ll,NJMAX_ll,         &
@@ -1475,7 +1466,7 @@ NDT_2_WAY(KMI)=4
 !
 !-------------------------------------------------------------------------------
 !
-!*      8.    INITIALIZE DATA FOR JVALUES AND AEROSOLS 
+!*      7.    INITIALIZE DATA FOR JVALUES AND AEROSOLS 
 !
 IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
   IF ((KMI==1).AND.(CPROGRAM == "MESONH".OR.CPROGRAM == "DIAG  "))  &
@@ -1495,20 +1486,18 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
-!*       9.    INITIALIZE THE PROGNOSTIC FIELDS
+!*       8.    INITIALIZE THE PROGNOSTIC FIELDS
 !              --------------------------------
 !
-CALL READ_FIELD(HINIFILE,HLUOUT,IIU,IJU,IKU,PTSTEP_OLD,XTSTEP,                &
-                CGETTKEM,CGETRVM,CGETRCM,CGETRRM,CGETRIM,CGETRSM,             &
-                CGETRGM,CGETRHM,CGETSVM,CGETSRCM,                             &
+CALL READ_FIELD(HINIFILE,HLUOUT,IMASDEV, IIU,IJU,IKU,XTSTEP,                  &
                 CGETTKET,CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETCIT,             &
                 CGETRST,CGETRGT,CGETRHT,CGETSVT,CGETSRCT,CGETSIGS,CGETCLDFR,  &
-                CGETBL_DEPTH,CGETSBL_DEPTH,CGETPHC,CGETPHR,                   &
+                CGETBL_DEPTH,CGETSBL_DEPTH,CGETPHC,CGETPHR,CUVW_ADV_SCHEME,   &
                 NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,            &
                 NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                &
                 NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,        &
-                XUM,XVM,XWM,XTHM,XPABSM,XTKEM,XRM,XSVM,XSRCM,                 &
-                XUT,XVT,XWT,XTHT,XPABST,XTKET,XRT,XSVT,XCIT,XDRYMASST,        &
+                XUM,XVM,XWM,                                                  &
+                XUT,XVT,XWT,XTHT,XPABST,XPABSM,XTKET,XRT,XSVT,XCIT,XDRYMASST, &
                 XSIGS,XSRCT,XCLDFR,XBL_DEPTH,XSBL_DEPTH,XWTHVMF,XPHC,XPHR,    &
                 XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
                 XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,                        &
@@ -1520,12 +1509,13 @@ CALL READ_FIELD(HINIFILE,HLUOUT,IIU,IJU,IKU,PTSTEP_OLD,XTSTEP,                &
                 XPGROUNDFRC, XATC,                                            &
                 NADVFRC,TDTADVFRC,XDTHFRC,XDRVFRC,                            &
                 NRELFRC,TDTRELFRC,XTHREL,XRVREL,                              &
-                XVTH_FLUX_M,XWTH_FLUX_M,XVU_FLUX_M                            )
+                XVTH_FLUX_M,XWTH_FLUX_M,XVU_FLUX_M,                           &
+                XRUS_PRES,XRVS_PRES,XRWS_PRES,XRTHS_CLD,XRRS_CLD,XRSVS_CLD    )
 !
 !-------------------------------------------------------------------------------
 !
 !
-!*       10.   INITIALIZE REFERENCE STATE
+!*        9.   INITIALIZE REFERENCE STATE
 !              ---------------------------
 !
 !
@@ -1536,25 +1526,24 @@ CALL SET_REF(KMI,HINIFILE,HLUOUT,                                &
 !
 !-------------------------------------------------------------------------------
 !
-!*       11.1    INITIALIZE THE TURBULENCE VARIABLES
+!*       10.1    INITIALIZE THE TURBULENCE VARIABLES
 !               -----------------------------------
 !
 IF ((CTURB == 'TKEL').AND.(CCONF=='START')) THEN
-  CALL INI_TKE_EPS(CGETTKEM,CGETTKET,XTHVREF,XZZ, &
-                   XUM,XVM,XTHM,                  &
+  CALL INI_TKE_EPS(CGETTKET,XTHVREF,XZZ, &
                    XUT,XVT,XTHT,                  &
-                   XTKEM,XTKET,TZINITHALO3D_ll    )
+                   XTKET,TZINITHALO3D_ll    )
 END IF
 !
 !
-!*       11.2   INITIALIZE THE LES VARIABLES
+!*       10.2   INITIALIZE THE LES VARIABLES
 !               ----------------------------
 !
 CALL INI_LES_n
 !
 !-------------------------------------------------------------------------------
 !
-!*       12.    INITIALIZE THE SOURCE OF TOTAL DRY MASS Md
+!*       11.    INITIALIZE THE SOURCE OF TOTAL DRY MASS Md
 !               ------------------------------------------
 !
 IF((KMI==1).AND.LSTEADYLS) THEN
@@ -1563,7 +1552,7 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
-!*       13.    INITIALIZE THE MICROPHYSICS                   
+!*       12.    INITIALIZE THE MICROPHYSICS                   
 !               ----------------------------
 !
 IF (CELEC == 'NONE') THEN
@@ -1571,7 +1560,7 @@ IF (CELEC == 'NONE') THEN
 !
 !-------------------------------------------------------------------------------
 !
-!*       14.    INITIALIZE THE ATMOSPHERIC ELECTRICITY                   
+!*       13.    INITIALIZE THE ATMOSPHERIC ELECTRICITY                   
 !               --------------------------------------
 !
 ELSE
@@ -1583,39 +1572,28 @@ ELSE
   FMT='(/,"ELECTRIC VARIABLES ARE BETWEEN INDEX",I2," AND ",I2)')&
   NSV_ELECBEG, NSV_ELECEND
 ! 
-  IF( CCONF == 'START' ) THEN
-      XSVM(:,:,:,NSV_ELECBEG) = XCION_POS_FW(:,:,:)                  ! Nb/kg
-      XSVM(:,:,:,NSV_ELECEND) = XCION_NEG_FW(:,:,:)
-      XSVT(:,:,:,NSV_ELECBEG) = XSVM(:,:,:,NSV_ELECBEG)
-      XSVT(:,:,:,NSV_ELECEND) = XSVM(:,:,:,NSV_ELECEND)
-  ELSE     ! Convert elec_variables per m3 into elec_variables per kg of air
-    IF( CGETSVM(NSV_ELECBEG)=='INIT' .OR. CGETSVT(NSV_ELECBEG)=='INIT' ) THEN
-      XSVM(:,:,:,NSV_ELECBEG) = XCION_POS_FW(:,:,:)                  ! Nb/kg
-      XSVM(:,:,:,NSV_ELECEND) = XCION_NEG_FW(:,:,:)
-      XSVT(:,:,:,NSV_ELECBEG) = XSVM(:,:,:,NSV_ELECBEG)
-      XSVT(:,:,:,NSV_ELECEND) = XSVM(:,:,:,NSV_ELECEND)
-!
-      XSVM(:,:,:,NSV_ELECBEG+1:NSV_ELECEND-1) = 0.0
+    IF( CGETSVT(NSV_ELECBEG)=='INIT' ) THEN
+      XSVT(:,:,:,NSV_ELECBEG) = XCION_POS_FW(:,:,:)                  ! Nb/kg
+      XSVT(:,:,:,NSV_ELECEND) = XCION_NEG_FW(:,:,:)
+!
       XSVT(:,:,:,NSV_ELECBEG+1:NSV_ELECEND-1) = 0.0
-    ELSE
+    ELSE  ! Convert elec_variables per m3 into elec_variables per kg of air
       DO JSV = NSV_ELECBEG, NSV_ELECEND
-         XSVM(:,:,:,JSV) = XSVM(:,:,:,JSV) / XRHODREF(:,:,:)
          XSVT(:,:,:,JSV) = XSVT(:,:,:,JSV) / XRHODREF(:,:,:)
       ENDDO
     END IF
-  END IF
 END IF
 !
 !-------------------------------------------------------------------------------
 !
-!*       15.   INITIALIZE THE LARGE SCALE SOURCES
+!*       14.   INITIALIZE THE LARGE SCALE SOURCES
 !              ----------------------------------
 !
 IF ((KMI==1).AND.(.NOT. LSTEADYLS)) THEN
   CALL INI_CPL(HLUOUT,NSTOP,XTSTEP,LSTEADYLS,CCONF,                           &
-               CGETTKEM,                                                      &
-               CGETRVM,CGETRCM,CGETRRM,CGETRIM,                               &
-               CGETRSM,CGETRGM,CGETRHM,CGETSVM,LCH_INIT_FIELD,                &
+               CGETTKET,                                                      &
+               CGETRVT,CGETRCT,CGETRRT,CGETRIT,                               &
+               CGETRST,CGETRGT,CGETRHT,CGETSVT,LCH_INIT_FIELD,                &
                NSV,NIMAX_ll,NJMAX_ll,                                         &
                NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,             &
                NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                 &
@@ -1725,14 +1703,14 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
-!*       16.    INITIALIZE THE SCALAR VARIABLES
+!*       15.    INITIALIZE THE SCALAR VARIABLES
 !               -------------------------------
 !
 IF (LLG .AND. LINIT_LG .AND. CPROGRAM=='MESONH') &
-  CALL INI_LG(XXHAT,XYHAT,XZZ,XSVM,XSVT,XLBXSVM,XLBYSVM)
+  CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
 
 !
-!*       17.    BUILT THE GENERIC OUTPUT NAME
+!*       16.    BUILT THE GENERIC OUTPUT NAME
 !               ----------------------------
 !
 WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))
@@ -1750,7 +1728,7 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
-!*       18.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
+!*       17.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
 !               ------------------------------------------
 !
 CALL INI_DYNAMICS(HLUOUT,XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,     &
@@ -1774,10 +1752,10 @@ CALL INI_DYNAMICS(HLUOUT,XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,     &
 !
 !-------------------------------------------------------------------------------
 !
-!*      19.    SURFACE FIELDS
+!*      18.    SURFACE FIELDS
 !              --------------
 !
-!*      19.1   Radiative setup
+!*      18.1   Radiative setup
 !              ---------------
 !
 IF (CRAD   /= 'NONE') THEN
@@ -1824,13 +1802,13 @@ END IF
 CALL INI_SW_SETUP (CRAD,NSWB_MNH,XSW_BANDS)
 !
 !
-!       19.1.1 Special initialisation for CO2 content
+!       18.1.1 Special initialisation for CO2 content
 !              CO2 (molar mass=44) horizontally and vertically homogeneous at 360 ppm
 !
 XCCO2 = 360.0E-06 * 44.0E-03 / XMD
 !
 !
-!*      19.2   Externalized surface fields
+!*      18.2   Externalized surface fields
 !              ---------------------------
 !
 ALLOCATE(ZCO2(IIU,IJU))
@@ -1842,7 +1820,6 @@ ALLOCATE(ZSCA_ALB(IIU,IJU,NSWB_MNH))
 ALLOCATE(ZEMIS  (IIU,IJU))
 ALLOCATE(ZTSRAD (IIU,IJU))
 !
-CALL FMREAD(HINIFILE,'MASDEV',HLUOUT,'--',IMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
 IF (IMASDEV>=46) THEN
   CALL FMREAD(HINIFILE,'SURF',HLUOUT,'--',CSURF,IGRID,ILENCH,YCOMMENT,IRESP)
 ELSE
@@ -1921,14 +1898,14 @@ IF (CRAD   == 'ECMW' .AND. CGETRAD=='READ') THEN
 END IF
 !
 !
-!*      19.3   Mesonh fields
+!*      18.3   Mesonh fields
 !              -------------
 !
 IF (CPROGRAM/='REAL  ') CALL MNHREAD_ZS_DUMMY_n(CINIFILEPGD)
 !
 !-------------------------------------------------------------------------------
 !
-!*       20.    INITIALIZE THE PARAMETERS FOR THE PHYSICS
+!*       19.    INITIALIZE THE PARAMETERS FOR THE PHYSICS
 !               -----------------------------------------
 !
 IF (CRAD   == 'ECMW') THEN
@@ -1996,7 +1973,7 @@ END IF
 !-------------------------------------------------------------------------------
 !
 !
-!*      21.    ALLOCATION OF THE TEMPORAL SERIES
+!*      19.    ALLOCATION OF THE TEMPORAL SERIES
 !              ---------------------------------
 !
 IF (LSERIES .AND. CPROGRAM/='DIAG  ') CALL INI_SERIES_n
@@ -2004,7 +1981,7 @@ IF (LSERIES .AND. CPROGRAM/='DIAG  ') CALL INI_SERIES_n
 !-------------------------------------------------------------------------------
 !
 !
-!*      22.   (re)initialize scalar variables
+!*      20.   (re)initialize scalar variables
 !             -------------------------------
 !
 !
@@ -2016,7 +1993,7 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
-!*      23.    UPDATE HALO
+!*      22.    UPDATE HALO
 !              -----------
 !
 !
@@ -2028,7 +2005,7 @@ CALL CLEANLIST_ll(TZINITHALO2D_ll)
 !
 !-------------------------------------------------------------------------------
 !
-!*      24.    DEALLOCATION
+!*      23.    DEALLOCATION
 !              -------------
 !
 DEALLOCATE(ZJ)
@@ -2041,7 +2018,7 @@ DEALLOCATE(XSPOWATM)
 !
 !-------------------------------------------------------------------------------
 !
-!*      25.     BALLOON and AIRCRAFT initializations
+!*      24.     BALLOON and AIRCRAFT initializations
 !              ------------------------------------
 !
 CALL INI_AIRCRAFT_BALLOON(HINIFILE,CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
@@ -2050,7 +2027,7 @@ CALL INI_AIRCRAFT_BALLOON(HINIFILE,CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
 !
 !-------------------------------------------------------------------------------
 !
-!*      26.     STATION initializations
+!*      25.     STATION initializations
 !              -----------------------
 !
 CALL INI_SURFSTATION_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
@@ -2059,7 +2036,7 @@ CALL INI_SURFSTATION_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
 !
 !-------------------------------------------------------------------------------
 !
-!*      27.     PROFILER initializations
+!*      26.     PROFILER initializations
 !              ------------------------
 !
 CALL INI_POSPROFILER_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
@@ -2080,4 +2057,3 @@ CALL INI_AEROSET6
 !
 END SUBROUTINE INI_MODEL_n
 
-
diff --git a/src/MNH/ini_one_wayn.f90 b/src/MNH/ini_one_wayn.f90
index 36db201f9..d71e80cb1 100644
--- a/src/MNH/ini_one_wayn.f90
+++ b/src/MNH/ini_one_wayn.f90
@@ -2,6 +2,7 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
+! MASDEV4_7 init 2006/10/16 14:23:23
 !-----------------------------------------------------------------
 !     #######################
       MODULE MODI_INI_ONE_WAY_n
@@ -263,7 +264,7 @@ ENDIF
 !
 GVERT_INTERP=.TRUE.
 !
-IRR=MIN(SIZE(XRM,4),SIZE(PLBXRM,4))
+IRR=MIN(SIZE(XRT,4),SIZE(PLBXRM,4))
 ISV_USER=MIN(NSV_USER_A(KDAD),NSV_USER_A(KMI))
 !
 IF(LWEST_ll()) THEN
@@ -299,35 +300,31 @@ CALL GET_CHILD_DIM_ll(KMI, IDIMX, IDIMY, IINFO_ll)
 !
 !       1.2  Allocate array which will receive coarse grid points
 !
-ALLOCATE(ZTUM(IDIMX,IDIMY,SIZE(XUM,3)))
-ZTUM(:,:,:)=0.
-ALLOCATE(ZTVM(IDIMX,IDIMY,SIZE(XVM,3)))
-ZTVM(:,:,:)=0.
-ALLOCATE(ZTWM(IDIMX,IDIMY,SIZE(XWM,3)))
-ZTWM(:,:,:)=0.
-ALLOCATE(ZTTHM(IDIMX,IDIMY,SIZE(XTHM,3)))
-ZTTHM(:,:,:)=0.
-IF (SIZE(XTKEM) /= 0) ALLOCATE(ZTTKEM(IDIMX,IDIMY,SIZE(XTKEM,3)))
-IF (IRR /= 0) ALLOCATE(ZTRM(IDIMX,IDIMY,SIZE(XRM,3),IRR))
-IF (NSV_A(KMI)/= 0) ALLOCATE(ZTSVM(IDIMX,IDIMY,SIZE(XRM,3),NSV_A(KMI)))
+ALLOCATE(ZTUM(IDIMX,IDIMY,SIZE(XUT,3)))
+ALLOCATE(ZTVM(IDIMX,IDIMY,SIZE(XVT,3)))
+ALLOCATE(ZTWM(IDIMX,IDIMY,SIZE(XWT,3)))
+ALLOCATE(ZTTHM(IDIMX,IDIMY,SIZE(XTHT,3)))
+IF (SIZE(XTKET) /= 0) ALLOCATE(ZTTKEM(IDIMX,IDIMY,SIZE(XTKET,3)))
+IF (IRR /= 0) ALLOCATE(ZTRM(IDIMX,IDIMY,SIZE(XRT,3),IRR))
+IF (NSV_A(KMI)/= 0) ALLOCATE(ZTSVM(IDIMX,IDIMY,SIZE(XRT,3),NSV_A(KMI)))
 !
 !         1.3  Specify the ls "source" fields and receiver fields
 !
-CALL SET_LSFIELD_1WAY_ll(XUM,ZTUM,KMI)
-CALL SET_LSFIELD_1WAY_ll(XVM,ZTVM,KMI)
-CALL SET_LSFIELD_1WAY_ll(XWM,ZTWM,KMI)
-CALL SET_LSFIELD_1WAY_ll(XTHM,ZTTHM,KMI)
-IF (ALLOCATED(ZTTKEM)) CALL SET_LSFIELD_1WAY_ll(XTKEM,ZTTKEM,KMI)
+CALL SET_LSFIELD_1WAY_ll(XUT,ZTUM,KMI)
+CALL SET_LSFIELD_1WAY_ll(XVT,ZTVM,KMI)
+CALL SET_LSFIELD_1WAY_ll(XWT,ZTWM,KMI)
+CALL SET_LSFIELD_1WAY_ll(XTHT,ZTTHM,KMI)
+IF (ALLOCATED(ZTTKEM)) CALL SET_LSFIELD_1WAY_ll(XTKET,ZTTKEM,KMI)
 !
 DO JRR=1,IRR
-  CALL SET_LSFIELD_1WAY_ll(XRM(:,:,:,JRR),ZTRM(:,:,:,JRR),KMI)
+  CALL SET_LSFIELD_1WAY_ll(XRT(:,:,:,JRR),ZTRM(:,:,:,JRR),KMI)
 ENDDO
 !
 ! USERs scalar variables
 !
 IF (ALLOCATED(ZTSVM)) ZTSVM=0.
 DO JSV=1,ISV_USER
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV),ZTSVM(:,:,:,JSV),KMI)
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV),ZTSVM(:,:,:,JSV),KMI)
 ENDDO
 !  Checking if it is necessary to compute the Nc and Nr
 !  concentrations to use the C2R2 microphysical scheme
@@ -341,14 +338,14 @@ IF ( HCLOUD=="C2R2" .OR. HCLOUD=="KHKO" ) THEN
   ELSE IF (CCLOUD == "KESS" ) THEN
     ZINIT_TYPE = "INI2"
   END IF
-  CALL SET_CONC_RAIN_C2R2 (HLUOUT,ZINIT_TYPE,XRHODREF,XRM,ZCONCM)
+  CALL SET_CONC_RAIN_C2R2 (HLUOUT,ZINIT_TYPE,XRHODREF,XRT,ZCONCM)
   DO JSV=1,3
     CALL SET_LSFIELD_1WAY_ll(ZCONCM(:,:,:,JSV),&
          &ZTSVM(:,:,:,JSV-1+NSV_C2R2BEG_A(KMI)),KMI)
   ENDDO
  ELSE
   DO JSV=1,NSV_C2R2_A(KMI)
-    CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_C2R2BEG_A(KDAD)),&
+    CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_C2R2BEG_A(KDAD)),&
          &ZTSVM(:,:,:,JSV-1+NSV_C2R2BEG_A(KMI)),KMI)
   END DO
  ENDIF
@@ -367,7 +364,7 @@ IF (HCLOUD=="C3R5"  ) THEN
   ELSE IF (CCLOUD == "KESS" ) THEN
     ZINIT_TYPE = "INI2"
   END IF
-  CALL SET_CONC_RAIN_C2R2 (HLUOUT,ZINIT_TYPE,XRHODREF,XRM,ZCONCM)
+  CALL SET_CONC_RAIN_C2R2 (HLUOUT,ZINIT_TYPE,XRHODREF,XRT,ZCONCM)
   DO JSV=1,3
     CALL SET_LSFIELD_1WAY_ll(ZCONCM(:,:,:,JSV),&
          &ZTSVM(:,:,:,JSV-1+NSV_C2R2BEG_A(KMI)),KMI)
@@ -380,11 +377,11 @@ IF (HCLOUD=="C3R5"  ) THEN
   ENDDO
  ELSE
   DO JSV=1,NSV_C2R2_A(KMI)
-    CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_C2R2BEG_A(KDAD)),&
+    CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_C2R2BEG_A(KDAD)),&
          &ZTSVM(:,:,:,JSV-1+NSV_C2R2BEG_A(KMI)),KMI)
   END DO
   DO JSV=1,NSV_C1R3_A(KMI)
-    CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_C1R3BEG_A(KDAD)),&
+    CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_C1R3BEG_A(KDAD)),&
          &ZTSVM(:,:,:,JSV-1+NSV_C1R3BEG_A(KMI)),KMI)
   END DO
  ENDIF
@@ -393,7 +390,7 @@ ENDIF
 ! electrical variables
 !
 DO JSV=1,MIN(NSV_ELEC_A(KMI),NSV_ELEC_A(KDAD))
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_ELECBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_ELECBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_ELECBEG_A(KMI)),KMI)
 END DO
 !
@@ -407,20 +404,20 @@ IF (OUSECHAQ) THEN
     ALLOCATE(ZCHEMM(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),&
                    NSV_CHEM_A(KMI)))
     CALL SET_CHEMAQ_1WAY(HLUOUT,XRHODREF,&
-         XSVM(:,:,:,NSV_CHEMBEG_A(KDAD):NSV_CHEMEND_A(KDAD)),ZCHEMM)
+         XSVT(:,:,:,NSV_CHEMBEG_A(KDAD):NSV_CHEMEND_A(KDAD)),ZCHEMM)
     DO JSV=1,NSV_CHEM_A(KMI)
       CALL SET_LSFIELD_1WAY_ll(ZCHEMM(:,:,:,JSV),&
          &ZTSVM(:,:,:,JSV-1+NSV_CHEMBEG_A(KMI)),KMI)
     ENDDO
   ELSE
     DO JSV=1,NSV_CHEM_A(KMI)
-      CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_CHEMBEG_A(KDAD)),&
+      CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_CHEMBEG_A(KDAD)),&
             &ZTSVM(:,:,:,JSV-1+NSV_CHEMBEG_A(KMI)),KMI)
     END DO
   ENDIF
 ELSE
   DO JSV=1,NSV_CHEM_A(KMI)
-    CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_CHEMBEG_A(KDAD)),&
+    CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_CHEMBEG_A(KDAD)),&
          &ZTSVM(:,:,:,JSV-1+NSV_CHEMBEG_A(KMI)),KMI)
   END DO
 ENDIF
@@ -439,13 +436,13 @@ IF (OUSECHIC) THEN
     ENDDO
   ELSE
     DO JSV=1,NSV_CHIC_A(KMI)
-       CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_CHICBEG_A(KDAD)),&
+       CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_CHICBEG_A(KDAD)),&
          &ZTSVM(:,:,:,JSV-1+NSV_CHICBEG_A(KMI)),KMI)
     END DO
   ENDIF
 ELSE
   DO JSV=1,NSV_CHIC_A(KMI)
-    CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_CHICBEG_A(KDAD)),&
+    CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_CHICBEG_A(KDAD)),&
          &ZTSVM(:,:,:,JSV-1+NSV_CHICBEG_A(KMI)),KMI)
   END DO
 ENDIF
@@ -453,44 +450,44 @@ ENDIF
 !
 ! lagrangian variables
 DO JSV=1,NSV_LG_A(KMI)
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_LGBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_LGBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_LGBEG_A(KMI)),KMI)
 END DO
 !
 ! NOX                     
 DO JSV=1,NSV_LNOX_A(KMI)
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_LNOXBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_LNOXBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_LNOXBEG_A(KMI)),KMI)
 END DO
 !
 ! Dust Scalar variables
 DO JSV=1,NSV_DST_A(KMI)
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_DSTBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_DSTBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_DSTBEG_A(KMI)),KMI)
 END DO
 !
 ! Moist Dust Scalar variables
 DO JSV=1,NSV_DSTDEP_A(KMI)
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_DSTDEPBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_DSTDEPBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_DSTDEPBEG_A(KMI)),KMI)
 END DO
 
 ! Sea Salt Scalar variables
 DO JSV=1,NSV_SLT_A(KMI)
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_SLTBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_SLTBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_SLTBEG_A(KMI)),KMI)
 END DO
 !
 ! Moist Sea Salt Scalar variables
 DO JSV=1,NSV_SLTDEP_A(KMI)
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_SLTDEPBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_SLTDEPBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_SLTDEPBEG_A(KMI)),KMI)
 END DO
 !
 !
 ! Passive pollutant      
 DO JSV=1,NSV_PP_A(KMI)
-  CALL SET_LSFIELD_1WAY_ll(XSVM(:,:,:,JSV-1+NSV_PPBEG_A(KDAD)),&
+  CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_PPBEG_A(KDAD)),&
        &ZTSVM(:,:,:,JSV-1+NSV_PPBEG_A(KMI)),KMI)
 END DO
 !        1.4  Communication
@@ -699,7 +696,7 @@ DEALLOCATE(ZTTHM)
 !            --------------------------------------------------------
 !
 !
-IF (SIZE(XTKEM,3) == 0 .OR. SIZE(PLBXTKEM,3) == 0) THEN
+IF (SIZE(XTKET,3) == 0 .OR. SIZE(PLBXTKEM,3) == 0) THEN
   PLBXTKEM(:,:,:) = 0.                      ! turbulence not activated
   PLBYTKEM(:,:,:) = 0.
 ELSE
diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90
index 996d0eea7..118fe7998 100644
--- a/src/MNH/ini_prog_var.f90
+++ b/src/MNH/ini_prog_var.f90
@@ -161,47 +161,40 @@ CALL GET_MODEL_NUMBER_ll(IMI)
 CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 !
 IIB=JPHEXT+1
-IIE=SIZE(XWM,1)-JPHEXT
-IIU=SIZE(XWM,1)
+IIE=SIZE(XWT,1)-JPHEXT
+IIU=SIZE(XWT,1)
 IJB=JPHEXT+1
-IJE=SIZE(XWM,2)-JPHEXT
-IJU=SIZE(XWM,2)
-IKU=SIZE(XWM,3)
+IJE=SIZE(XWT,2)-JPHEXT
+IJU=SIZE(XWT,2)
+IKU=SIZE(XWT,3)
 IIU_ll=NIMAX_ll + 2 * JPHEXT
 IJU_ll=NJMAX_ll + 2 * JPHEXT
 !-------------------------------------------------------------------------------
 !
-!*       1.    FIELDS AT TIME T
-!              ----------------
-!
-ALLOCATE(XUT(0,0,0),XVT(0,0,0),XWT(0,0,0))
-ALLOCATE(XTHT(0,0,0),XRT(0,0,0,0))
-!-------------------------------------------------------------------------------
-!
-!*       2.    TURBULENCE FIELDS
+!*       1.    TURBULENCE FIELDS
 !              -----------------
 !
 ALLOCATE(XTKET(0,0,0))
 ALLOCATE(XSRCT(0,0,0))
 IF (CTURB=='TKEL' ) THEN
-  ALLOCATE(XTKEM(IIU,IJU,IKU))
-  XTKEM(:,:,:)=PTKE_MX(:,:,:)
+  ALLOCATE(XTKET(IIU,IJU,IKU))
+  XTKET(:,:,:)=PTKE_MX(:,:,:)
   IF (NRR>1) THEN
-    ALLOCATE(XSRCM(IIU,IJU,IKU))
+    ALLOCATE(XSRCT(IIU,IJU,IKU))
     ALLOCATE(XSIGS(IIU,IJU,IKU))
-    WHERE (XRM(:,:,:,2)>1.E-10)
-      XSRCM(:,:,:)=1.
+    WHERE (XRT(:,:,:,2)>1.E-10)
+      XSRCT(:,:,:)=1.
     ELSEWHERE
-      XSRCM(:,:,:)=0.
+      XSRCT(:,:,:)=0.
     END WHERE
     XSIGS(:,:,:)=0.
   ELSE
-    ALLOCATE(XSRCM(0,0,0))
+    ALLOCATE(XSRCT(0,0,0))
     ALLOCATE(XSIGS(0,0,0))
   END IF
 ELSE
-  ALLOCATE(XTKEM(0,0,0))
-  ALLOCATE(XSRCM(0,0,0))
+  ALLOCATE(XTKET(0,0,0))
+  ALLOCATE(XSRCT(0,0,0))
   ALLOCATE(XSIGS(0,0,0))
 END IF
 !
@@ -229,7 +222,7 @@ IF(PRESENT(HCHEMFILE)) THEN
   END IF ! lorilam
   ! initialise NSV_* variables
   CALL INI_NSV(1)
-  ALLOCATE(XSVM(IIU,IJU,IKU,NSV))
+  ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
   ! Read dimensions in chem file and checks with output file
   CALL FMOPEN_ll(HCHEMFILE,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP)
   YRECFM='IMAX'
@@ -283,16 +276,16 @@ IF(PRESENT(HCHEMFILE)) THEN
   IF (.NOT.LDUST) THEN
   ! Read scalars in chem file 
     DO JSV = NSV_CHEMBEG,NSV_CHEMEND
-      YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'M'
+      YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'T'
       YDIR='XY'
-      CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH,  &
+      CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF (IRESP/=0) THEN
         WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-        XSVM(:,:,:,JSV) = 0.
+        XSVT(:,:,:,JSV) = 0.
       END IF !IRESP
     END DO ! JSV
-    IF (ALL(XSVM(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) == 0.)) THEN 
+    IF (ALL(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) == 0.)) THEN 
       LUSECHEM=.FALSE.
       NEQ = 0
     END IF
@@ -316,7 +309,7 @@ IF(PRESENT(HCHEMFILE)) THEN
              + (NSV_DSTBEG -1)      !Previous list of tracers  
         YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'M'
         YDIR='XY'
-        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH,  &
+        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                     YCOMMENT,IRESP)
         IF (IRESP/=0) THEN
           WRITE(ILUOUT,FMT=9000) 
@@ -333,10 +326,10 @@ IF(PRESENT(HCHEMFILE)) THEN
           JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
                + JMOM               & !Number of moments in this mode
                + (NSV_DSTBEG -1)      !Previous list of tracers
-          YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'M'
+          YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'
           YDIR='XY'
           WRITE(ILUOUT,*) 'JPC titi ',YRECFM
-          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH,  &
+          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                       YCOMMENT,IRESP)
           IF (IRESP/=0) THEN
             WRITE(ILUOUT,FMT=9000) 
@@ -362,9 +355,9 @@ IF(PRESENT(HCHEMFILE)) THEN
         JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
              +  1                 & !Number of moments in this mode
              + (NSV_SLTBEG -1)      !Previous list of tracers  
-        YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'M'
+        YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
         YDIR='XY'
-        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH,  &
+        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                     YCOMMENT,IRESP)
         IF (IRESP/=0) THEN
           WRITE(ILUOUT,FMT=9000) 
@@ -381,9 +374,9 @@ IF(PRESENT(HCHEMFILE)) THEN
           JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
                + JMOM               & !Number of moments in this mode
                + (NSV_SLTBEG -1)      !Previous list of tracers
-          YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'M'
+          YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
           YDIR='XY'
-          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH,  &
+          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                       YCOMMENT,IRESP)
           IF (IRESP/=0) THEN
             WRITE(ILUOUT,FMT=9000) 
@@ -396,9 +389,9 @@ IF(PRESENT(HCHEMFILE)) THEN
   END IF  ! LSALT
 
   DO JSV = NSV_AERBEG,NSV_AEREND
-    YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'M'
+    YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'T'
     YDIR='XY'
-    CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH,  &
+    CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     IF (IRESP/=0) THEN
       WRITE(ILUOUT,FMT=9000) 
@@ -413,10 +406,10 @@ IF(PRESENT(HCHEMFILE)) THEN
 
 ELSE ! HCHEMFILE
   IF (NSV >=1) THEN
-    ALLOCATE(XSVM(IIU,IJU,IKU,NSV))
-    XSVM(:,:,:,:)=PSV_MX(:,:,:,:)
+    ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
+    XSVT(:,:,:,:)=PSV_MX(:,:,:,:)
   ELSE !NSV
-    ALLOCATE(XSVM(0,0,0,0))
+    ALLOCATE(XSVT(0,0,0,0))
   END IF ! NSV
 ENDIF ! HCHEMFILE
 !-------------------------------------------------------------------------------
@@ -435,11 +428,11 @@ IF (CTURB /= 'NONE') THEN
   END IF 
   !       
   ILBX=SIZE(XLBXTKEM,1)/2-1     
-  XLBXTKEM(1:ILBX+1,:,:)         = XTKEM(IIB-1:IIB-1+ILBX,:,:)
-  XLBXTKEM(ILBX+2:2*ILBX+2,:,:)  = XTKEM(IIE+1-ILBX:IIE+1,:,:)
+  XLBXTKEM(1:ILBX+1,:,:)         = XTKET(IIB-1:IIB-1+ILBX,:,:)
+  XLBXTKEM(ILBX+2:2*ILBX+2,:,:)  = XTKET(IIE+1-ILBX:IIE+1,:,:)
   ILBY=SIZE(XLBYTKEM,2)/2-1
-  XLBYTKEM(:,1:ILBY+1,:)        = XTKEM(:,IJB-1:IJB-1+ILBY,:)
-  XLBYTKEM(:,ILBY+2:2*ILBY+2,:) = XTKEM(:,IJE+1-ILBY:IJE+1,:)
+  XLBYTKEM(:,1:ILBY+1,:)        = XTKET(:,IJB-1:IJB-1+ILBY,:)
+  XLBYTKEM(:,ILBY+2:2*ILBY+2,:) = XTKET(:,IJE+1-ILBY:IJE+1,:)
 ELSE
   ALLOCATE(XLBXTKEM(0,0,0))
   ALLOCATE(XLBYTKEM(0,0,0))
@@ -455,11 +448,11 @@ IF ( NSV > 0 ) THEN
   END IF
   !       
   ILBX=SIZE(XLBXSVM,1)/2-1     
-  XLBXSVM(1:ILBX+1,:,:,:)         = XSVM(IIB-1:IIB-1+ILBX,:,:,:)
-  XLBXSVM(ILBX+2:2*ILBX+2,:,:,:)  = XSVM(IIE+1-ILBX:IIE+1,:,:,:)
+  XLBXSVM(1:ILBX+1,:,:,:)         = XSVT(IIB-1:IIB-1+ILBX,:,:,:)
+  XLBXSVM(ILBX+2:2*ILBX+2,:,:,:)  = XSVT(IIE+1-ILBX:IIE+1,:,:,:)
   ILBY=SIZE(XLBYSVM,2)/2-1
-  XLBYSVM(:,1:ILBY+1,:,:)        = XSVM(:,IJB-1:IJB-1+ILBY,:,:)
-  XLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVM(:,IJE+1-ILBY:IJE+1,:,:)
+  XLBYSVM(:,1:ILBY+1,:,:)        = XSVT(:,IJB-1:IJB-1+ILBY,:,:)
+  XLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVT(:,IJE+1-ILBY:IJE+1,:,:)
 ELSE
   ALLOCATE(XLBXSVM(0,0,0,0))
   ALLOCATE(XLBYSVM(0,0,0,0))
diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90
index 3b2dedf45..1d9e40710 100644
--- a/src/MNH/ini_segn.f90
+++ b/src/MNH/ini_segn.f90
@@ -10,7 +10,7 @@
 !
 INTERFACE
 !
-SUBROUTINE INI_SEG_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD,PTSTEP_OLD,PTSTEP_ALL)
+SUBROUTINE INI_SEG_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD,PTSTEP_ALL)
 INTEGER,              INTENT(IN)  :: KMI      ! Model index
 
 CHARACTER(LEN=16), INTENT(OUT)     :: HLUOUT  ! name of the  listing-
@@ -18,7 +18,6 @@ CHARACTER(LEN=16), INTENT(OUT)     :: HLUOUT  ! name of the  listing-
 CHARACTER (LEN=28),   INTENT(OUT)  :: HINIFILE! name of
                                               ! the initial file
 CHARACTER (LEN=28),   INTENT(OUT)  :: HINIFILEPGD
-REAL,               INTENT(OUT) :: PTSTEP_OLD ! OLD Time STEP (DESFM)
 REAL,DIMENSION(:),  INTENT(INOUT) :: PTSTEP_ALL ! Time STEP of ALL models
 END SUBROUTINE INI_SEG_n
 !
@@ -30,7 +29,7 @@ END MODULE MODI_INI_SEG_n
 !
 !
 !     #############################################################
-      SUBROUTINE INI_SEG_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD,PTSTEP_OLD,PTSTEP_ALL)
+      SUBROUTINE INI_SEG_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD,PTSTEP_ALL)
 !     #############################################################
 !
 !!****  *INI_SEG_n * - routine to read and update the descriptor files for 
@@ -191,7 +190,6 @@ CHARACTER(LEN=16), INTENT(OUT)     :: HLUOUT  ! name of the  listing-
 CHARACTER (LEN=28),   INTENT(OUT)  :: HINIFILE! name of
                                               ! the initial file
 CHARACTER (LEN=28),   INTENT(OUT)  :: HINIFILEPGD                                              
-REAL,               INTENT(OUT) :: PTSTEP_OLD ! OLD Time STEP (DESFM)
 REAL,DIMENSION(:),  INTENT(INOUT) :: PTSTEP_ALL ! Time STEP of ALL models
 !
 !*       0.1   declarations of local variables
@@ -401,8 +399,7 @@ CALL READ_DESFM_n(KMI,YDESFM,HLUOUT,YCONF,GFLAT,GUSERV,GUSERC,              &
                 GUSECHIC,GCH_PH,GCH_CONV_LINOX,GSALT,GDEPOS_SLT,GDUST,      &
                 GDEPOS_DST, GORILAM,  &
                 GDEPOS_AER, GLG, GPASPOL, GCONDSAMP, IRIMX,IRIMY,ISV,       &
-                YTURB,YTOM,GRMC01,YRAD,YDCONV,YSCONV,YCLOUD,YELEC,YEQNSYS,  &
-                PTSTEP_OLD  )
+                YTURB,YTOM,GRMC01,YRAD,YDCONV,YSCONV,YCLOUD,YELEC,YEQNSYS   )
 !
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/ini_tke_eps.f90 b/src/MNH/ini_tke_eps.f90
index 66f86b45b..e4e13aed5 100644
--- a/src/MNH/ini_tke_eps.f90
+++ b/src/MNH/ini_tke_eps.f90
@@ -9,26 +9,22 @@
 !     #######################
 INTERFACE
 !
-   SUBROUTINE INI_TKE_EPS(HGETTKEM,HGETTKET,PTHVREF,PZZ, &
-                          PUM,PVM,PTHM,                  &
+   SUBROUTINE INI_TKE_EPS(HGETTKET,PTHVREF,PZZ, &
                           PUT,PVT,PTHT,                  &
-                          PTKEM,PTKET,TPINITHALO3D_ll    )
+                          PTKET,TPINITHALO3D_ll    )
 !
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-CHARACTER (LEN=*),               INTENT(IN)  :: HGETTKEM,HGETTKET
+CHARACTER (LEN=*),               INTENT(IN)  :: HGETTKET
              ! character string indicating whether TKE must be 
              ! initialized or not
 REAL, DIMENSION(:,:,:),        INTENT(IN)   :: PTHVREF ! virtual potential
                                                        ! temperature
 REAL, DIMENSION(:,:,:),        INTENT(IN)   :: PZZ     ! physical height for
                                                        ! w-point
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PUM     ! x-component of wind
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PVM     ! y-component of wind
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTHM    ! potential temperature
 REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PUT     ! x-component of wind
 REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PVT     ! y-component of wind
 REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTHT    ! potential temperature
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTKEM,PTKET ! TKE fields 
+REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTKET ! TKE fields 
 TYPE(LIST_ll), POINTER                      :: TPINITHALO3D_ll ! pointer for the list of fields
                                       !  which must be communicated in INIT
 !
@@ -39,10 +35,9 @@ END INTERFACE
 END MODULE MODI_INI_TKE_EPS
 !
 !  ###################################################################
-   SUBROUTINE INI_TKE_EPS(HGETTKEM,HGETTKET,PTHVREF,PZZ, &
-                          PUM,PVM,PTHM,                  &
+   SUBROUTINE INI_TKE_EPS(HGETTKET,PTHVREF,PZZ, &
                           PUT,PVT,PTHT,                  &
-                          PTKEM,PTKET,TPINITHALO3D_ll    )
+                          PTKET,TPINITHALO3D_ll    )
 !  ###################################################################
 !
 !
@@ -106,20 +101,17 @@ IMPLICIT NONE
 !
 !*          0.1. declarations of arguments
 !
-CHARACTER (LEN=*),               INTENT(IN)  :: HGETTKEM,HGETTKET
+CHARACTER (LEN=*),               INTENT(IN)  :: HGETTKET
              ! character string indicating whether TKE must be 
              ! initialized or not
 REAL, DIMENSION(:,:,:),        INTENT(IN)   :: PTHVREF ! virtual potential
                                                        ! temperature
 REAL, DIMENSION(:,:,:),        INTENT(IN)   :: PZZ     ! physical height for
                                                        ! w-point
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PUM     ! x-component of wind
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PVM     ! y-component of wind
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTHM    ! potential temperature
 REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PUT     ! x-component of wind
 REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PVT     ! y-component of wind
 REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTHT    ! potential temperature
-REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTKEM,PTKET ! TKE fields 
+REAL, DIMENSION(:,:,:),        INTENT(INOUT):: PTKET ! TKE field 
 TYPE(LIST_ll), POINTER                      :: TPINITHALO3D_ll ! pointer for the list of fields
                                       !  which must be communicated in INIT
 !
@@ -128,15 +120,15 @@ TYPE(LIST_ll), POINTER                      :: TPINITHALO3D_ll ! pointer for the
 INTEGER ::         IKB,IKE,IKU! index value for the first and last inner
                               ! mass points
 INTEGER ::         JKK        ! vertical loop index
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)) :: ZDELTZ ! vertical
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZDELTZ ! vertical
                                                                ! increment
 !
 ! ---------------------------------------------------------------------
 ! 
 ! 
 IKB=1+JPVEXT
-IKE=SIZE(PTHM,3)-JPVEXT
-IKU=SIZE(PTHM,3)
+IKE=SIZE(PTHT,3)-JPVEXT
+IKU=SIZE(PTHT,3)
 !
 !*       1.     TKE DETERMINATION
 !               -----------------
@@ -146,32 +138,6 @@ DO JKK=IKB-1,IKE
 END DO
 ZDELTZ(:,:,IKE+1) = ZDELTZ(:,:,IKE)
 !
-IF (HGETTKEM == 'INIT' ) THEN
-!  instant t-deltat
-  PTHM(:,:,IKB-1) = PTHM(:,:,IKB)
-  PUM(:,:,IKB-1)  = PUM(:,:,IKB)
-  PVM(:,:,IKB-1)  = PVM(:,:,IKB)
-  !
-  PTHM(:,:,IKE+1) = PTHM(:,:,IKE)
-  PUM(:,:,IKE+1)  = PUM(:,:,IKE)
-  PVM(:,:,IKE+1)  = PVM(:,:,IKE)
-  !
-  ! determines TKE
-  PTKEM(:,:,:)=(XLINI**2/XCED)*(  &
-                  XCMFS*( DZF(1,IKU,1,MXF(MZM(1,IKU,1,PUM)))**2                  &
-                         +DZF(1,IKU,1,MYF(MZM(1,IKU,1,PVM)))**2) / ZDELTZ        &
-                 -(XG/PTHVREF)*XCSHF*DZF(1,IKU,1,MZM(1,IKU,1,PTHM))              &
-                               ) / ZDELTZ
-  ! positivity control
-  WHERE (PTKEM < XTKEMIN) PTKEM=XTKEMIN
-  !
-  ! 
-  ! Add PTKEM to TPINITHALO3D_ll list of fields updated at the 
-  ! end of initialization
-  CALL ADD3DFIELD_ll (TPINITHALO3D_ll,PTKEM)
-!
-END IF
-!
 IF (HGETTKET == 'INIT' ) THEN
 !  instant t
   PTHT(:,:,IKB-1) = PTHT(:,:,IKB)
diff --git a/src/MNH/init_for_convlfi.f90 b/src/MNH/init_for_convlfi.f90
new file mode 100644
index 000000000..3ef992e2e
--- /dev/null
+++ b/src/MNH/init_for_convlfi.f90
@@ -0,0 +1,361 @@
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 convert 2006/05/18 13:07:25
+!-----------------------------------------------------------------
+!###########################
+MODULE MODI_INIT_FOR_CONVLFI
+!###########################
+!
+!
+INTERFACE
+      SUBROUTINE INIT_FOR_CONVLFI(HINIFILE,HLUOUT)
+!
+CHARACTER(LEN=28),      INTENT(IN)    :: HINIFILE    ! file being read
+CHARACTER(LEN=*),       INTENT(IN)    :: HLUOUT      ! output listing
+!
+END SUBROUTINE INIT_FOR_CONVLFI
+END INTERFACE
+END MODULE MODI_INIT_FOR_CONVLFI
+!
+!     ############################################
+      SUBROUTINE INIT_FOR_CONVLFI(HINIFILE,HLUOUT)
+!     ############################################
+!
+!!****  *INIT_FOR_CONVLFI * - light monitor to initialize the variables 
+!!
+!!    PURPOSE
+!!    -------
+!       The purpose of this routine is to initialize some variables   
+!     necessary in the conversion program.
+!
+!!**  METHOD
+!!    ------
+!!      This initialization takes some parts of the whole initialization modules
+!!    of monitor INIT: 
+!!        geometry and dimensions from ini_sizen
+!!        grids, metric coefficients, dates and times from set_grid
+!!        reading of the pressure field
+!!             
+!!
+!!    EXTERNAL
+!!    --------
+!!      INI_CST    : to initialize physical constants
+!!
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------ 
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!	I. Mallet       * Meteo France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original                 20/02/01 
+!!      J.-P. Pinty and D. Gazen 31/03/04 Add the 2D capability for V5D plots
+!!    10/10/2011  J.Escobar call INI_PARAZ_ll
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODD_PARAMETERS
+USE MODD_CONF
+USE MODD_CST
+USE MODD_DIM_n
+USE MODD_FIELD_n
+USE MODD_GRID
+USE MODD_GRID_n
+USE MODD_LUNIT
+USE MODD_TIME
+USE MODD_TIME_n
+USE MODD_VAR_ll, ONLY : NPROC
+!
+USE MODE_TIME
+USE MODE_GRIDPROJ
+USE MODE_GRIDCART
+!
+USE MODE_FM
+USE MODE_FMREAD
+USE MODE_IO_ll
+USE MODE_ll
+!
+USE MODI_GATHER_ll
+USE MODI_INI_CST
+!JUANZ
+USE MODE_SPLITTINGZ_ll
+!JUANZ
+!
+IMPLICIT NONE
+!
+!*       0.1   Arguments variables
+!
+CHARACTER(LEN=28),      INTENT(IN)    :: HINIFILE    ! file being read
+CHARACTER(LEN=*),       INTENT(IN)    :: HLUOUT      ! output listing
+!
+!*       0.2   Local variables
+!
+INTEGER  :: IGRID,ILENCH,IRESP,ILUOUT          ! return code of file management
+CHARACTER (LEN=16)     :: YRECFM               ! management
+CHARACTER (LEN=100)    :: YCOMMENT             ! variables
+CHARACTER (LEN=2)      :: YDIR                 !
+INTEGER, DIMENSION(3)  :: ITDATE               ! date array
+CHARACTER (LEN=40)     :: YTITLE               ! Title for date print
+REAL, DIMENSION(:,:),   ALLOCATABLE :: ZCOEF
+REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZJ      ! Jacobian
+!
+REAL, DIMENSION(:), ALLOCATABLE   :: ZXHAT_ll    !  Position x in the conformal
+                                                 ! plane (array on the complete domain)
+REAL, DIMENSION(:), ALLOCATABLE   :: ZYHAT_ll    !   Position y in the conformal
+                                                 ! plane (array on the complete domain)
+REAL                         :: ZXHATM,ZYHATM    ! coordinates of mass point 
+REAL                         :: ZLATORI, ZLONORI ! lat and lon of left-bottom point
+!
+INTEGER             :: IIU,IJU       ! Upper dimension in x,y direction (local)
+INTEGER             :: IKU           ! Upper dimension in z direction
+INTEGER             :: IINFO_ll      ! return code of // routines
+INTEGER             :: IMASDEV       ! masdev of the file
+!
+!-------------------------------------------------------------------------------
+!
+!*       1.    INITIALIZE EACH MODEL SIZES AND DEPENDENCY (ini_sizen)
+!              ------------------------------------------
+!
+!*       1.1   Read the geometry kind in the LFIFM file (Cartesian or spherical)
+!
+YRECFM = 'CARTESIAN'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,LCARTESIAN,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+!*       1.2  Read configuration and dimensions in initial file and initialize
+!             subdomain dimensions and parallel variables
+!
+YRECFM='IMAX'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NIMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='JMAX'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NJMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM = 'L1D'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,L1D,IGRID,ILENCH,YCOMMENT,IRESP)
+IF (IRESP/=0) THEN
+  L1D=.FALSE.
+  IF( (NIMAX_ll == 1).AND.(NJMAX_ll == 1) ) L1D=.TRUE.
+ENDIF  
+!
+YRECFM = 'L2D'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,L2D,IGRID,ILENCH,YCOMMENT,IRESP)
+IF (IRESP/=0) THEN
+  L2D=.FALSE.
+  IF( (NIMAX_ll /= 1).AND.(NJMAX_ll == 1) ) L2D=.TRUE.
+ENDIF  
+!
+YRECFM = 'PACK'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,LPACK,IGRID,ILENCH,YCOMMENT,IRESP)
+IF (IRESP/=0) LPACK=.TRUE.
+!
+CALL SET_FMPACK_ll(L1D,L2D,LPACK)
+!
+YRECFM='KMAX'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NKMAX,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+CSPLIT ='BSPLITTING' ; NHALO = 1
+CALL SET_SPLITTING_ll(CSPLIT)
+CALL SET_JP_ll(1,JPHEXT,JPVEXT, NHALO)
+CALL SET_DAD0_ll()
+CALL SET_DIM_ll(NIMAX_ll, NJMAX_ll, NKMAX)
+CALL SET_FMPACK_ll(L1D,L2D,LPACK)
+CALL SET_LBX_ll('OPEN', 1)
+CALL SET_LBY_ll('OPEN', 1)
+CALL SET_XRATIO_ll(1, 1)
+CALL SET_YRATIO_ll(1, 1)
+CALL SET_XOR_ll(1, 1)
+CALL SET_XEND_ll(NIMAX_ll+2*JPHEXT, 1)
+CALL SET_YOR_ll(1, 1)
+CALL SET_YEND_ll(NJMAX_ll+2*JPHEXT, 1)
+CALL SET_DAD_ll(0, 1)
+!JUANZ CALL INI_PARA_ll(IINFO_ll)
+CALL INI_PARAZ_ll(IINFO_ll)
+!
+!*       1.4  Compute sizes of arrays of the extended sub-domain (ini_modeln)
+!
+IKU=NKMAX + 2*JPVEXT
+CALL GET_DIM_EXT_ll('B',IIU,IJU)
+CALL GET_DIM_PHYS_ll('B',NIMAX,NJMAX)
+!
+!-------------------------------------------------------------------------------
+!
+!*       2.    INITIALIZE GRIDS AND METRIC COEFFICIENTS (set_grid)
+!              ---------------------
+!
+!        2.1  reading
+!
+YRECFM='LON0'   
+YDIR='--'   
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XLON0,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='LAT0'
+YDIR='--'     
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XLAT0,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='BETA'  
+YDIR='--'       
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XBETA,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='XHAT'
+ALLOCATE(XXHAT(IIU))
+YDIR='XX'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XXHAT,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='YHAT'
+ALLOCATE(XYHAT(IJU))
+YDIR='YY'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XYHAT,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+IF (.NOT.LCARTESIAN) THEN
+  YRECFM='MASDEV' 
+  YDIR='--'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,IMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  YRECFM='RPK'
+  YDIR='--'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XRPK,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  YRECFM='LONORI'
+  YDIR='--'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XLONORI,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  YRECFM='LATORI'
+  YDIR='--'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  IF (IMASDEV<=45) THEN
+    CALL FMREAD(HINIFILE,'LONOR',HLUOUT,'--',XLONORI,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMREAD(HINIFILE,'LATOR',HLUOUT,'--',XLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
+    ALLOCATE(ZXHAT_ll(NIMAX_ll+ 2 * JPHEXT),ZYHAT_ll(NJMAX_ll+2 * JPHEXT))
+    CALL GATHERALL_FIELD_ll('XX',XXHAT,ZXHAT_ll,IRESP) !//
+    CALL GATHERALL_FIELD_ll('YY',XYHAT,ZYHAT_ll,IRESP) !//
+    ZXHATM = - 0.5 * (ZXHAT_ll(1)+ZXHAT_ll(2))
+    ZYHATM = - 0.5 * (ZYHAT_ll(1)+ZYHAT_ll(2))
+    CALL SM_LATLON(XLATORI,XLONORI,ZXHATM,ZYHATM,ZLATORI,ZLONORI)
+    DEALLOCATE(ZXHAT_ll,ZYHAT_ll)
+    XLATORI = ZLATORI
+    XLONORI = ZLONORI
+  END IF
+END IF
+!
+YRECFM='ZS'
+ALLOCATE(XZS(IIU,IJU))
+YDIR='XY'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XZS,IGRID,ILENCH,YCOMMENT,IRESP)
+IF (IRESP/=0) XZS(:,:)=0.
+!
+YRECFM='ZSMT'
+ALLOCATE(XZSMT(IIU,IJU))
+YDIR='XY'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XZSMT,IGRID,ILENCH,YCOMMENT,IRESP)
+IF (IRESP/=0) XZSMT(:,:)=XZS(:,:)
+!
+YRECFM='ZHAT'
+ALLOCATE(XZHAT(IKU))
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XZHAT,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='SLEVE'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,LSLEVE,IGRID,ILENCH,YCOMMENT,IRESP)
+IF (IRESP/=0) LSLEVE = .FALSE.
+!
+IF (LSLEVE) THEN
+  YRECFM='LEN1'
+  YDIR='--'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XLEN1,IGRID,ILENCH,YCOMMENT,IRESP)
+  YRECFM='LEN2'
+  YDIR='--'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XLEN2,IGRID,ILENCH,YCOMMENT,IRESP)
+END IF
+!
+YRECFM='DTEXP%TDATE' 
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
+TDTEXP%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3))  
+!
+YRECFM='DTEXP%TIME'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,TDTEXP%TIME,IGRID,ILENCH,YCOMMENT,IRESP)
+!   
+YRECFM='DTMOD%TDATE' 
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
+TDTMOD%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3)) 
+!
+YRECFM='DTMOD%TIME'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,TDTMOD%TIME,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='DTSEG%TDATE' 
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
+TDTSEG%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3)) 
+!
+YRECFM='DTSEG%TIME'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,TDTSEG%TIME,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YRECFM='DTCUR%TDATE' 
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
+TDTCUR%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3)) 
+!
+YRECFM='DTCUR%TIME'
+YDIR='--'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,TDTCUR%TIME,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+YTITLE='CURRENT DATE AND TIME'
+CALL SM_PRINT_TIME(TDTCUR,HLUOUT,YTITLE)
+!
+!*       2.2    Spatial grid
+! 
+ALLOCATE(XDXHAT(IIU))
+ALLOCATE(XDYHAT(IJU))
+ALLOCATE(XZZ(IIU,IJU,IKU))
+ALLOCATE(ZJ(IIU,IJU,IKU))
+ALLOCATE(ZCOEF(IIU,IJU))
+!
+CALL INI_CST
+!
+IF (LCARTESIAN) THEN
+  CALL SM_GRIDCART(HLUOUT,XXHAT,XYHAT,XZHAT,XZS,LSLEVE,XLEN1,XLEN2,XZSMT,XDXHAT,XDYHAT,XZZ,ZJ) 
+ELSE
+  ALLOCATE(XLON(IIU,IJU))
+  ALLOCATE(XLAT(IIU,IJU))
+  ALLOCATE(XMAP(IIU,IJU))
+  CALL SM_GRIDPROJ(HLUOUT,XXHAT,XYHAT,XZHAT,XZS,LSLEVE,XLEN1,XLEN2,XZSMT,XLATORI,XLONORI, &
+                   XMAP,XLAT,XLON,XDXHAT,XDYHAT,XZZ,ZJ)  
+END IF    
+!
+!-------------------------------------------------------------------------------
+!
+!*       3.    INITIALIZE THE PROGNOSTIC AND SURFACE FIELDS (read_field)
+!              --------------------------------------------
+ALLOCATE(XPABST(IIU,IJU,IKU))
+!
+YDIR='XY'
+YRECFM = 'PABST'
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XPABST,IGRID,ILENCH,YCOMMENT,IRESP)
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE INIT_FOR_CONVLFI
diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90
index 0c4a5b16f..267becc19 100644
--- a/src/MNH/init_mnh.f90
+++ b/src/MNH/init_mnh.f90
@@ -112,7 +112,6 @@ INTEGER  :: ILUOUT0,IRESP                             ! Logical unit number for
                                                       ! output-listing common
                                                       ! to all models and return
                                                       ! code of file management
-REAL, DIMENSION(JPMODELMAX)            :: ZTSTEP_OLD  ! OLD Time STEP (DESFM)
 REAL, DIMENSION(JPMODELMAX)            :: ZTSTEP_ALL  ! Time STEP of ALL models
 INTEGER                                :: IINFO_ll    ! return code of // routines
 !
@@ -163,7 +162,7 @@ CALL INI_NEB
 !
 DO JMI=1,JPMODELMAX
   CALL GOTO_MODEL(JMI)
-  CALL INI_SEG_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI),ZTSTEP_OLD(JMI),ZTSTEP_ALL)
+  CALL INI_SEG_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI),ZTSTEP_ALL)
   IF (JMI.EQ.NMODEL) EXIT
 END DO
 !
@@ -211,7 +210,7 @@ ENDIF
 DO JMI=1,NMODEL
   CALL GO_TOMODEL_ll(JMI,IINFO_ll)
   CALL GOTO_MODEL(JMI)
-  CALL INI_MODEL_n(JMI,ZTSTEP_OLD(JMI),YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI))
+  CALL INI_MODEL_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI))
 END DO
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/initial_guess.f90 b/src/MNH/initial_guess.f90
index ca2e6d7ca..5cf4f9297 100644
--- a/src/MNH/initial_guess.f90
+++ b/src/MNH/initial_guess.f90
@@ -4,18 +4,14 @@
 ! $Source$ $Revision$ $Date$
 !-----------------------------------------------------------------
 !-----------------------------------------------------------------
-!-----------------------------------------------------------------
 !     #########################
       MODULE MODI_INITIAL_GUESS
 !     #########################
 !
 INTERFACE
 !
-      SUBROUTINE INITIAL_GUESS ( KRR, KSV, KTCOUNT,PRHODJ, KMI,                 &
-                         PUM, PVM, PWM, PTHM, PRM, PTKEM, PSVM,                 &
-                         PTSTEP, PTSTEP_MET, PTSTEP_SV,                         &
-                         PRUS, PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS,          &
-                         HMET_ADV_SCHEME,HSV_ADV_SCHEME, HUVW_ADV_SCHEME,       &
+      SUBROUTINE INITIAL_GUESS ( KRR, KSV, KTCOUNT,PRHODJ, KMI, PTSTEP,        &
+                         PRUS, PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS,         &
                          PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT )
 !
 INTEGER,                  INTENT(IN)  :: KRR     ! Number of moist variables
@@ -26,30 +22,12 @@ INTEGER,                  INTENT(IN)  :: KMI     ! Model index
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PRHODJ         ! (Rho) dry * Jacobian
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PUM, PVM, PWM  ! variables at t-dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHM, PTKEM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)  :: PRM, PSVM      
-!
-REAL,                     INTENT(IN)  :: PTSTEP !  Double timestep except for
-                                                !  cold start (single)
-REAL,                     INTENT(IN)  :: PTSTEP_MET !  Effective time step for
-                                                ! meteorological scalar variables 
-                                                ! (depending on advection scheme)
-REAL,                     INTENT(IN)  :: PTSTEP_SV !  Effective time step for
-                                                ! tracer scalar variables 
-                                                ! (depending on advection scheme)
+REAL,                     INTENT(IN)  :: PTSTEP !  timestep 
 !
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PRUS, PRVS, PRWS         ! Source
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PRTHS, PRTKES
 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRRS, PRSVS              !  terms
 !
-! scalar meteorological advection scheme used
-CHARACTER(LEN=6),         INTENT(IN)  :: HMET_ADV_SCHEME 
-! scalar tracer advection scheme used
-CHARACTER(LEN=6),         INTENT(IN)  :: HSV_ADV_SCHEME 
-! advection scheme for momentum
-CHARACTER(LEN=6),         INTENT(IN)  :: HUVW_ADV_SCHEME 
-!
 ! variables at time t (needed for PPM schemes)
 REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PUT, PVT, PWT
 REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHT, PTKET
@@ -61,14 +39,9 @@ END INTERFACE
 !
 END MODULE MODI_INITIAL_GUESS 
 !
-!
-!
 !     #########################################################################
-      SUBROUTINE INITIAL_GUESS ( KRR, KSV, KTCOUNT,PRHODJ, KMI,                 &
-                         PUM, PVM, PWM, PTHM, PRM, PTKEM, PSVM,                 &
-                         PTSTEP, PTSTEP_MET, PTSTEP_SV,                         &
-                         PRUS, PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS,          &
-                         HMET_ADV_SCHEME,HSV_ADV_SCHEME, HUVW_ADV_SCHEME,       &
+      SUBROUTINE INITIAL_GUESS ( KRR, KSV, KTCOUNT,PRHODJ, KMI, PTSTEP,        &
+                         PRUS, PRVS, PRWS, PRTHS, PRRS, PRTKES, PRSVS,         &
                          PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT )
 !     #########################################################################
 !
@@ -166,6 +139,7 @@ END MODULE MODI_INITIAL_GUESS
 !!                  06/11/02 (V. Masson)    update the budget calls 
 !!                  20/05/06                Remove KEPS
 !!                  10/09    (C.Lac)        FIT for variables advected with PPM
+!!                  04/13    (C.Lac)        FIT for all variables 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -191,29 +165,12 @@ INTEGER,                  INTENT(IN)  :: KMI     ! Model index
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PRHODJ         ! (Rho) dry * Jacobian
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PUM, PVM, PWM  ! Variables at t-dt 
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHM, PTKEM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)  :: PRM, PSVM      
-!
-REAL,                     INTENT(IN)  :: PTSTEP !  Double timestep except for
-                                                !  cold start (single)
-REAL,                     INTENT(IN)  :: PTSTEP_MET !  Effective time step for
-                                                ! meteorological scalar variables 
-                                                ! (depending on advection scheme)
-REAL,                     INTENT(IN)  :: PTSTEP_SV !  Effective time step for
-                                                ! tracer scalar variables 
-                                                ! (depending on advection scheme)
+REAL,                     INTENT(IN)  :: PTSTEP !  timestep 
 !
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PRUS, PRVS, PRWS         ! Source
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PRTHS, PRTKES
 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRRS, PRSVS  !  terms
 !
-! scalar meteorological advection scheme used
-CHARACTER(LEN=6),         INTENT(IN)  :: HMET_ADV_SCHEME 
-! scalar tracer advection scheme used
-CHARACTER(LEN=6),         INTENT(IN)  :: HSV_ADV_SCHEME 
-! advection scheme for momentum
-CHARACTER(LEN=6),         INTENT(IN)  :: HUVW_ADV_SCHEME 
 !
 ! variables at time t (needed for PPM schemes)
 REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PUT, PVT, PWT
@@ -224,7 +181,7 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN)  :: PRT, PSVT
 !
 INTEGER                               :: JRR, JSV
 INTEGER                               :: IKU
-REAL                                  :: ZINVTSTEP,ZINVTSTEP_MET,ZINVTSTEP_SV
+REAL                                  :: ZINVTSTEP
 !
 !-------------------------------------------------------------------------------
 !
@@ -233,63 +190,35 @@ IKU=SIZE(XZHAT)
 !   	        -----------------------------------------------
 !
 ZINVTSTEP = 1./PTSTEP                          
-ZINVTSTEP_MET = 1./PTSTEP_MET         
-ZINVTSTEP_SV = 1./PTSTEP_SV          
 !
 !
 !*       2.     COMPUTES THE FIRST SOURCE TERMS
 !   	        -------------------------------
 ! 
 ! *** momentum
-PRUS(:,:,:)   = PUM(:,:,:)  * ZINVTSTEP * MXM (PRHODJ)
-PRVS(:,:,:)   = PVM(:,:,:)  * ZINVTSTEP * MYM (PRHODJ)
-PRWS(:,:,:)   = PWM(:,:,:)  * ZINVTSTEP * MZM (1,IKU,1,PRHODJ)
+! forward-in-time time-marching scheme
+PRUS = PUT * ZINVTSTEP * MXM(PRHODJ)
+PRVS = PVT * ZINVTSTEP * MYM(PRHODJ)
+PRWS = PWT * ZINVTSTEP * MZM(1,IKU,1,PRHODJ)
 !
 ! *** meteorological variables
-IF (HMET_ADV_SCHEME(1:3) == 'PPM') THEN
-!
-   PRTHS(:,:,:) = PTHT(:,:,:) * ZINVTSTEP_MET * PRHODJ(:,:,:)
-!
-   IF (SIZE(PTKEM,1) /= 0) THEN 
-      PRTKES(:,:,:) = PTKET(:,:,:) * ZINVTSTEP_MET * PRHODJ(:,:,:)
-   END IF
-!
-! Case with KRR moist variables 
-   DO JRR=1,KRR
-      PRRS(:,:,:,JRR) = PRT(:,:,:,JRR) * ZINVTSTEP_MET * PRHODJ(:,:,:) 
-   END DO
-!
-ELSE ! other advection schemes
 !
-  PRTHS(:,:,:) = PTHM(:,:,:) * ZINVTSTEP_MET * PRHODJ(:,:,:)
-!
-  IF (SIZE(PTKEM,1) /= 0) THEN 
-    PRTKES(:,:,:) = PTKEM(:,:,:) * ZINVTSTEP_MET * PRHODJ(:,:,:)
-  END IF
+PRTHS(:,:,:) = PTHT(:,:,:) * ZINVTSTEP * PRHODJ(:,:,:)
+IF (SIZE(PTKET,1) /= 0) THEN 
+  PRTKES(:,:,:) = PTKET(:,:,:) * ZINVTSTEP * PRHODJ(:,:,:)
+END IF
 !
 ! Case with KRR moist variables 
-  DO JRR=1,KRR
-    PRRS(:,:,:,JRR) = PRM(:,:,:,JRR) * ZINVTSTEP_MET * PRHODJ(:,:,:) 
-  END DO
-!
-END IF
+DO JRR=1,KRR
+  PRRS(:,:,:,JRR) = PRT(:,:,:,JRR) * ZINVTSTEP * PRHODJ(:,:,:) 
+END DO
 !
 ! *** passive tracers
-IF ( (HSV_ADV_SCHEME(1:3) == 'PPM') .OR. (HSV_ADV_SCHEME == '4TH_RK')) THEN
 !
 ! Case with KSV Scalar Variables
-   DO JSV=1,KSV
-      PRSVS(:,:,:,JSV) = PSVT(:,:,:,JSV) * ZINVTSTEP_SV * PRHODJ(:,:,:)
-   END DO
-!
-ELSE ! other advection schemes
-!
-   DO JSV=1,KSV
-     PRSVS(:,:,:,JSV) = PSVM(:,:,:,JSV) * ZINVTSTEP_SV * PRHODJ(:,:,:)
-   END DO
-!
-END IF
-!
+DO JSV=1,KSV
+  PRSVS(:,:,:,JSV) = PSVT(:,:,:,JSV) * ZINVTSTEP * PRHODJ(:,:,:)
+END DO
 !
 IF (LBU_ENABLE) THEN
   IF (LBU_BEG) THEN
diff --git a/src/MNH/interp3d.f90 b/src/MNH/interp3d.f90
new file mode 100644
index 000000000..b0fa32750
--- /dev/null
+++ b/src/MNH/interp3d.f90
@@ -0,0 +1,154 @@
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 convert 2006/05/18 13:07:25
+!-----------------------------------------------------------------
+!     ######spl
+MODULE MODI_INTERP3D
+!#################################
+!
+INTERFACE
+      SUBROUTINE INTERP3D(PFIELD,KGRID,PSVAL,PPLEV,PFIELDAP)
+!
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD      ! values of the field
+INTEGER,                INTENT(IN) :: KGRID       ! Mesonh grid indicator
+REAL,                   INTENT(IN) :: PSVAL       ! value for missing data
+REAL, DIMENSION(:),     INTENT(IN) :: PPLEV       ! list of vertical levels
+REAL, DIMENSION(:,:,:), INTENT(OUT):: PFIELDAP    ! values of the field on the pressure levels
+END SUBROUTINE  INTERP3D
+END INTERFACE
+END MODULE MODI_INTERP3D
+!     ######spl
+      SUBROUTINE INTERP3D(PFIELD,KGRID,PSVAL,PPLEV,PFIELDAP)
+!     #####################
+!
+!!****  *INTERP3D* - interpole 3D fields on pressure levels
+!!                         
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!
+!!    EXTERNAL
+!!    --------
+!!      Functions MXF, MYF, MZF
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!      Module MODD_FIELD1    : contains prognostics  variables 
+!!         XPASBM
+!!      Module MODD_GRID1
+!!         XZZ
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!	
+!!      V.Ducrocq  Meteo-France
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    21/03/97
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+! 
+USE MODD_PARAMETERS
+USE MODD_DIM_n
+USE MODD_FIELD_n
+USE MODD_GRID_n
+!
+USE MODI_SHUMAN ! interface modules 
+!
+IMPLICIT NONE
+!
+!*       0.1   Declaration of arguments
+!              ------------------------
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD      ! values of the field
+INTEGER,                INTENT(IN) :: KGRID       ! Mesonh grid indicator
+REAL,                   INTENT(IN) :: PSVAL       ! value for missing data
+REAL, DIMENSION(:),     INTENT(IN) :: PPLEV       ! list of vertical levels
+REAL, DIMENSION(:,:,:), INTENT(OUT):: PFIELDAP    ! values of the field on the pressure levels
+!
+!*       0.2   Declaration of local variables
+!              ------------------------------
+!
+INTEGER :: JKP,JKLOOP,JJLOOP,JILOOP,IJ,II ! loop indices
+INTEGER      :: IIE,IJE,IPU      ! End of usefull area 
+INTEGER      :: IIB,IJB,IKB      ! Begining of usefull area 
+REAL, DIMENSION(SIZE(XPABST,1),SIZE(XPABST,2),SIZE(XPABST,3)) :: ZPTH  ! pressure for grid points corresponding to KGRID type 
+REAL  :: ZREF,ZXP,ZXM,ZDIXEPS ! pressure values and epsilon value
+INTEGER :: IKU
+!-------------------------------------------------------------------------------
+!
+!*         1.    
+!                 ------------
+IPU=SIZE(PFIELDAP,3)
+IKB=1 +JPVEXT
+IKU=SIZE(XZHAT)
+IIB=JPHEXT+1
+IIE=NIMAX+JPHEXT
+IJB=JPHEXT+1
+IJE=NJMAX+JPHEXT
+ZDIXEPS=10.*EPSILON(1.)
+!
+SELECT CASE (KGRID)
+  CASE(1)
+    ZPTH=XPABST
+  CASE(2)
+    ZPTH(:,:,:)=MXM(XPABST(:,:,:))
+    ZPTH(1,:,:)=2.*ZPTH(2,:,:) - ZPTH(3,:,:)
+  CASE(3)
+    ZPTH(:,:,:)=MYM(XPABST(:,:,:))
+    ZPTH(:,1,:)=2.*ZPTH(:,2,:) - ZPTH(:,3,:)
+  CASE(4)
+    ZPTH(:,:,:)=MZM(1,IKU,1,XPABST(:,:,:))
+    ZPTH(:,:,1)=2.*ZPTH(:,:,2) - ZPTH(:,:,3)
+END SELECT
+!
+DO JKP= 1, IPU
+   ZREF=ALOG10(PPLEV(JKP))
+   DO JILOOP = IIB,IIE
+      DO JJLOOP = IJB,IJE
+         IJ=JJLOOP-IJB+1
+         II=JILOOP-IIB+1
+         PFIELDAP(II,IJ,JKP)=PSVAL
+         DO JKLOOP = 1,NKMAX+2*JPVEXT
+            ZXM=ALOG10(ZPTH(JILOOP,JJLOOP,JKLOOP))
+            ZXP=ALOG10(ZPTH(JILOOP,JJLOOP,MIN(NKMAX+2*JPVEXT,JKLOOP+1)))
+            IF ((ZXP-ZREF)*(ZREF-ZXM) .GE.0.) THEN
+               IF (JKLOOP+1 == IKB) THEN
+                  CYCLE
+               ELSE
+                  GO TO 4
+               ENDIF
+            ELSE IF (ZXP.GE.ZXM-ZDIXEPS.AND.ZXP.LE.ZXM+ZDIXEPS.AND.  &
+      ZREF.GE.ZXM-ZDIXEPS.AND.ZREF.LE.ZXM+ZDIXEPS) THEN
+               IF(JKLOOP+1 == IKB)THEN
+                  CYCLE
+               ELSE
+                  GO TO 4
+               ENDIF
+            END IF
+         END DO
+         GO TO 3
+4     CONTINUE
+!
+!  We interpolate 
+         PFIELDAP(II,IJ,JKP)= (PFIELD(II,IJ,JKLOOP)* (ZXP-ZREF)+ &
+              PFIELD(II,IJ,MIN(NKMAX+2*JPVEXT,JKLOOP+1))* (ZREF-ZXM)) &
+              / MIN(-1.E-08,(ZXP-ZXM))
+         GO TO 3
+3     CONTINUE
+      END DO
+   END DO
+END DO
+!
+END SUBROUTINE INTERP3D
diff --git a/src/MNH/ion_boundaries.f90 b/src/MNH/ion_boundaries.f90
index a79d491f7..d8a5cf8b9 100644
--- a/src/MNH/ion_boundaries.f90
+++ b/src/MNH/ion_boundaries.f90
@@ -5,11 +5,11 @@ MODULE MODI_ION_BOUNDARIES
 !
 INTERFACE
 !
-      SUBROUTINE ION_BOUNDARIES (HLBCX,HLBCY,PUM,PVM,PUT,PVT,PSVT)
+      SUBROUTINE ION_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT)
 
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN)  :: HLBCX,HLBCY  
 REAL, DIMENSION(:,:,:,:),       INTENT(INOUT) :: PSVT
-REAL, DIMENSION(:,:,:),         INTENT(IN)  :: PUT,PVT,PUM,PVM
+REAL, DIMENSION(:,:,:),         INTENT(IN)  :: PUT,PVT
 !
 END SUBROUTINE ION_BOUNDARIES
 !
@@ -19,7 +19,7 @@ END MODULE MODI_ION_BOUNDARIES
 !
 !
 !     ####################################################################
-      SUBROUTINE ION_BOUNDARIES (HLBCX,HLBCY,PUM,PVM,PUT,PVT,PSVT)
+      SUBROUTINE ION_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT)
 !     ####################################################################
 !
 !!****  *ION_BOUNDARIES* - routine to force the Lateral Boundary Conditions for
@@ -71,7 +71,7 @@ IMPLICIT NONE
 !
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN)  :: HLBCX,HLBCY  
 REAL, DIMENSION(:,:,:,:),       INTENT(INOUT) :: PSVT
-REAL, DIMENSION(:,:,:),         INTENT(IN)  :: PUT,PVT,PUM,PVM
+REAL, DIMENSION(:,:,:),         INTENT(IN)  :: PUT,PVT
 !
 !
 !*       0.2   declarations of local variables
@@ -88,9 +88,9 @@ INTEGER :: IJB, IJE  ! index of first and last inner mass points along y
 !
 ! beginning and end indexes of the physical subdomain
 IIB = 1 + JPHEXT
-IIE = SIZE(PUM,1) - JPHEXT
+IIE = SIZE(PUT,1) - JPHEXT
 IJB = 1 + JPHEXT
-IJE = SIZE(PUM,2) - JPHEXT
+IJE = SIZE(PUT,2) - JPHEXT
 !
 !
 !-------------------------------------------------------------------------------
@@ -98,8 +98,8 @@ IJE = SIZE(PUM,2) - JPHEXT
 !*       2.    EXTRAPOLATE VELOCITY COMPONENTS TO T + DT/2 (PPM advection scheme)
 !              ------------------------------------------------------------------
 !
-ZUX = (1.5 * PUT - 0.5 * PUM)
-ZVY = (1.5 * PVT - 0.5 * PVM)
+ZUX =  PUT 
+ZVY =  PVT 
 !
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/ion_drift.f90 b/src/MNH/ion_drift.f90
index d20ae4e83..9c52246da 100644
--- a/src/MNH/ion_drift.f90
+++ b/src/MNH/ion_drift.f90
@@ -4,9 +4,8 @@
 
 INTERFACE
 !
-      SUBROUTINE ION_DRIFT(PDRIFTP, PDRIFTM, PSVT, PRHODREF, PRHODJ,  &
-                           HLBCX, HLBCY, KTCOUNT, PTSTEP, HDRIFT,     &
-                           HUVW_ADV_SCHEME)
+      SUBROUTINE ION_DRIFT(PDRIFTP, PDRIFTM, PSVT, PRHODREF, PRHODJ,       &
+                           HLBCX, HLBCY, KTCOUNT, PTSTEP, HDRIFT)
 !
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN)  :: HLBCX,HLBCY
 CHARACTER(LEN=3), INTENT(IN)                :: HDRIFT
@@ -15,7 +14,6 @@ REAL, DIMENSION(:,:,:,:),     INTENT(INOUT) :: PSVT
 REAL, DIMENSION(:,:,:),       INTENT(IN)    :: PRHODREF, PRHODJ
 INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
 REAL,                     INTENT(IN)   :: PTSTEP
-CHARACTER(LEN=6),         INTENT(IN)   :: HUVW_ADV_SCHEME
 !
 END SUBROUTINE ION_DRIFT
 END INTERFACE
@@ -23,8 +21,7 @@ END MODULE MODI_ION_DRIFT
 !
 !     ################################################################ 
       SUBROUTINE ION_DRIFT(PDRIFTP, PDRIFTM, PSVT, PRHODREF, PRHODJ, &
-                           HLBCX, HLBCY, KTCOUNT, PTSTEP, HDRIFT,    &
-                           HUVW_ADV_SCHEME)
+                           HLBCX, HLBCY, KTCOUNT, PTSTEP, HDRIFT)
 !     ################################################################
 !
 !!    PURPOSE
@@ -75,7 +72,6 @@ REAL, DIMENSION(:,:,:,:),     INTENT(INOUT) :: PSVT
 REAL, DIMENSION(:,:,:),       INTENT(IN)    :: PRHODREF, PRHODJ
 INTEGER,                      INTENT(IN)    :: KTCOUNT  ! Temporal loop counter
 REAL,                         INTENT(IN)    :: PTSTEP
-CHARACTER(LEN=6),             INTENT(IN)    :: HUVW_ADV_SCHEME
 !
 !
 !*       0.2   declarations of local variables
@@ -94,6 +90,11 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZADVS, ZSVT  !for advection form
 REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZXCT, ZYCT, ZZCT !
 CHARACTER (LEN=6)                     :: HSV_ADV_SCHEME
                                                      ! of drift source
+!
+REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) :: ZRHOX1,ZRHOX2
+REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) :: ZRHOY1,ZRHOY2
+REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) :: ZRHOZ1,ZRHOZ2
+!
 REAL :: ZMIN_DRIFT, ZMAX_DRIFT
 REAL :: ZMAX__POS, ZMAX__NEG
 INTEGER :: IPROC, IPROCMIN, ISV
@@ -207,13 +208,8 @@ ELSE
   ALLOCATE (ZYCT(SIZE(PDRIFTP,1),SIZE(PDRIFTP,2),SIZE(PDRIFTP,3)))
   ALLOCATE (ZZCT(SIZE(PDRIFTP,1),SIZE(PDRIFTP,2),SIZE(PDRIFTP,3)))
 !
-  IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
-    CALL CONTRAV (HLBCX,HLBCY,ZDRIFTX,ZDRIFTY,ZDRIFTZ,XDXX,XDYY,XDZZ,XDZX,XDZY, &
-                  ZXCT,ZYCT,ZZCT,2)
-  ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
-    CALL CONTRAV (HLBCX,HLBCY,ZDRIFTX,ZDRIFTY,ZDRIFTZ,XDXX,XDYY,XDZZ,XDZX,XDZY, &
-                  ZXCT,ZYCT,ZZCT,4)
-  ENDIF
+  CALL CONTRAV (HLBCX,HLBCY,ZDRIFTX,ZDRIFTY,ZDRIFTZ,XDXX,XDYY,XDZZ, &
+                XDZX,XDZY,ZXCT,ZYCT,ZZCT,4)
 !
   ZXCT = ZXCT*PTSTEP
   ZYCT = ZYCT*PTSTEP
@@ -223,9 +219,13 @@ ELSE
   ZSVT(:,:,:,1) = PSVT(:,:,:,NSV_ELECBEG)
   HSV_ADV_SCHEME = 'PPM_01'
 !
-  CALL PPM_SCALAR(HLBCX,HLBCY,ISV,KTCOUNT,             &
-                   ZXCT, ZYCT, ZZCT, PTSTEP, PRHODJ,  &
-                   ZSVT, ZADVS, HSV_ADV_SCHEME      )
+  CALL PPM_RHODJ(HLBCX,HLBCY, ZXCT, ZYCT, ZZCT,                     &
+               PTSTEP, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,      &
+               ZRHOZ1, ZRHOZ2                                       )
+!
+  CALL PPM_SCALAR (HLBCX,HLBCY, ISV, KTCOUNT, ZXCT, ZYCT, ZZCT, &
+                   PTSTEP, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,  ZRHOZ1, ZRHOZ2, &
+                   ZSVT, ZADVS, HSV_ADV_SCHEME                                       )
 !
   PDRIFTP(:,:,:) = ZADVS(:,:,:,1)
 !
@@ -270,13 +270,8 @@ ZDRIFTZ(:,:,IKB-1) = ZDRIFTZ(:,:,IKB)
 IF (HDRIFT /= 'PPM') THEN
   CALL GDIV(HLBCX,HLBCY,XDXX,XDYY,XDZX,XDZY,XDZZ,ZDRIFTX,ZDRIFTY,ZDRIFTZ,PDRIFTM)
 ELSE
-  IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN                                      
-    CALL CONTRAV (HLBCX,HLBCY,ZDRIFTX,ZDRIFTY,ZDRIFTZ,XDXX,XDYY,XDZZ,XDZX,XDZY, &
-                  ZXCT,ZYCT,ZZCT,2)
-  ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN
-    CALL CONTRAV (HLBCX,HLBCY,ZDRIFTX,ZDRIFTY,ZDRIFTZ,XDXX,XDYY,XDZZ,XDZX,XDZY, &
-                  ZXCT,ZYCT,ZZCT,4)
-  ENDIF
+  CALL CONTRAV (HLBCX,HLBCY,ZDRIFTX,ZDRIFTY,ZDRIFTZ,XDXX,XDYY,XDZZ, &
+                XDZX,XDZY,ZXCT,ZYCT,ZZCT,4)
 !
   ZXCT = ZXCT * PTSTEP
   ZYCT = ZYCT * PTSTEP
@@ -286,9 +281,13 @@ ELSE
   ZSVT(:,:,:,1) = PSVT(:,:,:,NSV_ELECEND)
   HSV_ADV_SCHEME = 'PPM_01'
 !
-  CALL PPM_SCALAR(HLBCX,HLBCY,ISV,KTCOUNT,             &
-                   ZXCT, ZYCT, ZZCT, PTSTEP, PRHODJ,  &
-                   ZSVT, ZADVS, HSV_ADV_SCHEME      )
+  CALL PPM_RHODJ(HLBCX,HLBCY, ZXCT, ZYCT, ZZCT,                     &
+               PTSTEP, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,      &
+               ZRHOZ1, ZRHOZ2                                       )
+!
+  CALL PPM_SCALAR (HLBCX,HLBCY, ISV, KTCOUNT, ZXCT, ZYCT, ZZCT, &
+                   PTSTEP, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,  ZRHOZ1, ZRHOZ2, &
+                   ZSVT, ZADVS, HSV_ADV_SCHEME                                       )
 !
   PDRIFTM(:,:,:) = ZADVS(:,:,:,1)
 !
diff --git a/src/MNH/les_budget.f90 b/src/MNH/les_budget.f90
index 20447fbf7..11c768566 100644
--- a/src/MNH/les_budget.f90
+++ b/src/MNH/les_budget.f90
@@ -90,7 +90,7 @@ REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: ZTEND
 REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: ZWORK_LES  ! work array
 !
 REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: ZANOM     ! field anomaly after process occured
-REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: ZTHL_ANOM ! Thl anomaly after process occured
+REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: ZTHL_ANOM ! THL anomaly after process occured
 
 REAL, DIMENSION(NLES_K) :: ZLES_PROF
 
@@ -126,7 +126,7 @@ SELECT CASE (KBUDN)
     CALL LES_BUDGET_ANOMALY(PVARS,'X',ZANOM)
     !
     !* action in KE budget
-    ZWORK_LES = ( ZANOM ** 2 - XU_ANOM ** 2 ) / XCURRENT_TSTEP_UVW
+    ZWORK_LES = ( ZANOM ** 2 - XU_ANOM ** 2 ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
     X_LES_BU_RES_KE(:,ILES_BU) = X_LES_BU_RES_KE(:,ILES_BU) + ZLES_PROF(:)
     !
@@ -140,7 +140,7 @@ SELECT CASE (KBUDN)
     CALL LES_BUDGET_ANOMALY(PVARS,'Y',ZANOM)
     !
     !* action in KE budget
-    ZWORK_LES = ( ZANOM ** 2 - XV_ANOM ** 2 ) / XCURRENT_TSTEP_UVW
+    ZWORK_LES = ( ZANOM ** 2 - XV_ANOM ** 2 ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
     X_LES_BU_RES_KE(:,ILES_BU) = X_LES_BU_RES_KE(:,ILES_BU) + ZLES_PROF(:)
     !
@@ -154,27 +154,27 @@ SELECT CASE (KBUDN)
     CALL LES_BUDGET_ANOMALY(PVARS,'Z',ZANOM)
     !
     !* action in KE budget
-    ZWORK_LES = ( ZANOM ** 2 - XW_ANOM ** 2 ) / XCURRENT_TSTEP_UVW
+    ZWORK_LES = ( ZANOM ** 2 - XW_ANOM ** 2 ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
     X_LES_BU_RES_KE(:,ILES_BU) = X_LES_BU_RES_KE(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in WThl budget
-    ZWORK_LES = ( ZANOM * XTHl_ANOM - XW_ANOM * XTHl_ANOM ) / XCURRENT_TSTEP_MET
+    !* action in WTHL budget
+    ZWORK_LES = ( ZANOM * XTHL_ANOM - XW_ANOM * XTHL_ANOM ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_WThl(:,ILES_BU) = X_LES_BU_RES_WThl(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_WTHL(:,ILES_BU) = X_LES_BU_RES_WTHL(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in WRt budget
+    !* action in WRT budget
     IF (LCURRENT_USERV) THEN
-      ZWORK_LES = ( ZANOM * XRt_ANOM - XW_ANOM * XRt_ANOM ) / XCURRENT_TSTEP_MET
+      ZWORK_LES = ( ZANOM * XRT_ANOM - XW_ANOM * XRT_ANOM ) / XCURRENT_TSTEP
       CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-      X_LES_BU_RES_WRt(:,ILES_BU) = X_LES_BU_RES_WRt(:,ILES_BU) + ZLES_PROF(:)
+      X_LES_BU_RES_WRT(:,ILES_BU) = X_LES_BU_RES_WRT(:,ILES_BU) + ZLES_PROF(:)
     END IF
     !
-    !* action in WSv budget
+    !* action in WSV budget
     DO JSV=1,NSV
-      ZWORK_LES = ( ZANOM * XSv_ANOM(:,:,:,JSV) - XW_ANOM * XSv_ANOM(:,:,:,JSV)) / XCURRENT_TSTEP_SV
+      ZWORK_LES = ( ZANOM * XSV_ANOM(:,:,:,JSV) - XW_ANOM * XSV_ANOM(:,:,:,JSV)) / XCURRENT_TSTEP
       CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-      X_LES_BU_RES_WSv(:,ILES_BU,JSV) = X_LES_BU_RES_WSv(:,ILES_BU,JSV) + ZLES_PROF(:)
+      X_LES_BU_RES_WSV(:,ILES_BU,JSV) = X_LES_BU_RES_WSV(:,ILES_BU,JSV) + ZLES_PROF(:)
     END DO
     !
     !* update fields
@@ -187,27 +187,27 @@ SELECT CASE (KBUDN)
     XCURRENT_RTHLS = XCURRENT_RTHLS + PVARS - XCURRENT_RTHS
     CALL LES_BUDGET_ANOMALY(XCURRENT_RTHLS,'-',ZANOM)
     !
-    !* action in WThl budget
-    ZWORK_LES = ( ZANOM * XW_ANOM - XW_ANOM * XTHl_ANOM ) / XCURRENT_TSTEP_MET
+    !* action in WTHL budget
+    ZWORK_LES = ( ZANOM * XW_ANOM - XW_ANOM * XTHL_ANOM ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_WThl(:,ILES_BU) = X_LES_BU_RES_WThl(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_WTHL(:,ILES_BU) = X_LES_BU_RES_WTHL(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in Thl2 budget
-    ZWORK_LES = ( ZANOM ** 2 - XTHl_ANOM**2 ) / XCURRENT_TSTEP_MET
+    !* action in THL2 budget
+    ZWORK_LES = ( ZANOM ** 2 - XTHL_ANOM**2 ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_Thl2(:,ILES_BU) = X_LES_BU_RES_Thl2(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_THL2(:,ILES_BU) = X_LES_BU_RES_THL2(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in ThlRt budget
+    !* action in THLRT budget
     IF (LCURRENT_USERV) THEN
-      ZWORK_LES = ( ZANOM * XRt_ANOM - XRt_ANOM * XTHl_ANOM ) / &
-                    XCURRENT_TSTEP_MET
+      ZWORK_LES = ( ZANOM * XRT_ANOM - XRT_ANOM * XTHL_ANOM ) / &
+                    XCURRENT_TSTEP
       CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-      X_LES_BU_RES_ThlRt(:,ILES_BU) = X_LES_BU_RES_ThlRt(:,ILES_BU) + ZLES_PROF(:)
+      X_LES_BU_RES_THLRT(:,ILES_BU) = X_LES_BU_RES_THLRT(:,ILES_BU) + ZLES_PROF(:)
     END IF
     !
     !* update fields
     XCURRENT_RTHS = PVARS
-    XThl_ANOM = ZANOM
+    XTHL_ANOM = ZANOM
 !
 !* Tke
 !
@@ -223,99 +223,99 @@ SELECT CASE (KBUDN)
 !* Rv, Rr, Ri, Rs, Rg, Rh
 !
   CASE(6,8,9,10,11,12)
-    !* transformation into conservative variables: Rt
+    !* transformation into conservative variables: RT
     XCURRENT_RRTS = XCURRENT_RRTS + PVARS(:,:,:) - XCURRENT_RRS(:,:,:,KBUDN-5)
     CALL LES_BUDGET_ANOMALY(XCURRENT_RRTS,'-',ZANOM)
     !
-    !* action in WRt budget
-    ZWORK_LES = ( ZANOM * XW_ANOM - XW_ANOM * XRt_ANOM ) / XCURRENT_TSTEP_MET
+    !* action in WRT budget
+    ZWORK_LES = ( ZANOM * XW_ANOM - XW_ANOM * XRT_ANOM ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_WRt(:,ILES_BU) = X_LES_BU_RES_WRt(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_WRT(:,ILES_BU) = X_LES_BU_RES_WRT(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in Rt2 budget
-    ZWORK_LES = ( ZANOM **2 - XRt_ANOM **2 ) / XCURRENT_TSTEP_MET
+    !* action in RT2 budget
+    ZWORK_LES = ( ZANOM **2 - XRT_ANOM **2 ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_Rt2(:,ILES_BU) = X_LES_BU_RES_Rt2(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_RT2(:,ILES_BU) = X_LES_BU_RES_RT2(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in ThlRt budget
-    ZWORK_LES = ( ZANOM * XThl_ANOM - XThl_ANOM * XRt_ANOM ) / &
-                  XCURRENT_TSTEP_MET
+    !* action in THLRT budget
+    ZWORK_LES = ( ZANOM * XTHL_ANOM - XTHL_ANOM * XRT_ANOM ) / &
+                  XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_ThlRt(:,ILES_BU) = X_LES_BU_RES_ThlRt(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_THLRT(:,ILES_BU) = X_LES_BU_RES_THLRT(:,ILES_BU) + ZLES_PROF(:)
     !
     !* update fields
     XCURRENT_RRS(:,:,:,KBUDN-5) = PVARS
-    XRt_ANOM = ZANOM
+    XRT_ANOM = ZANOM
 !
 !* Rc
 !
   CASE(7)
-    !* transformation into conservative variables: theta_l; Rt
+    !* transformation into conservative variables: theta_l; RT
     XCURRENT_RRTS  = XCURRENT_RRTS  + PVARS(:,:,:) - XCURRENT_RRS(:,:,:,KBUDN-5)
     XCURRENT_RTHLS = XCURRENT_RTHLS - XCURRENT_L_O_EXN_CP &
                                     * (PVARS(:,:,:) - XCURRENT_RRS(:,:,:,KBUDN-5))
 
-    !* anomaly of Thl
+    !* anomaly of THL
     ALLOCATE(ZTHL_ANOM(IIU,IJU,NLES_K))
     CALL LES_BUDGET_ANOMALY(XCURRENT_RTHLS,'-',ZTHL_ANOM)
-    !* anomaly of Rt
+    !* anomaly of RT
     CALL LES_BUDGET_ANOMALY(XCURRENT_RRTS,'-',ZANOM)
     !
-    !* action in WThl budget
-    ZWORK_LES = ( ZTHL_ANOM * XW_ANOM - XThl_ANOM * XW_ANOM ) / &
-                  XCURRENT_TSTEP_MET
+    !* action in WTHL budget
+    ZWORK_LES = ( ZTHL_ANOM * XW_ANOM - XTHL_ANOM * XW_ANOM ) / &
+                  XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_WThl(:,ILES_BU) = X_LES_BU_RES_WThl(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_WTHL(:,ILES_BU) = X_LES_BU_RES_WTHL(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in Thl2 budget
-    ZWORK_LES = ( ZTHL_ANOM **2 - XThl_ANOM **2 ) / XCURRENT_TSTEP_MET
+    !* action in THL2 budget
+    ZWORK_LES = ( ZTHL_ANOM **2 - XTHL_ANOM **2 ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_Thl2(:,ILES_BU) = X_LES_BU_RES_Thl2(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_THL2(:,ILES_BU) = X_LES_BU_RES_THL2(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in ThlRt budget
-    ZWORK_LES = ( ZANOM * ZTHL_ANOM - XRt_ANOM * XThl_ANOM ) / &
-                  XCURRENT_TSTEP_MET
+    !* action in THLRT budget
+    ZWORK_LES = ( ZANOM * ZTHL_ANOM - XRT_ANOM * XTHL_ANOM ) / &
+                  XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_ThlRt(:,ILES_BU) = X_LES_BU_RES_ThlRt(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_THLRT(:,ILES_BU) = X_LES_BU_RES_THLRT(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in WRt budget
-    ZWORK_LES = ( ZANOM * XW_ANOM - XRt_ANOM * XW_ANOM ) /  &
-                  XCURRENT_TSTEP_MET
+    !* action in WRT budget
+    ZWORK_LES = ( ZANOM * XW_ANOM - XRT_ANOM * XW_ANOM ) /  &
+                  XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_WRt(:,ILES_BU) = X_LES_BU_RES_WRt(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_WRT(:,ILES_BU) = X_LES_BU_RES_WRT(:,ILES_BU) + ZLES_PROF(:)
     !
-    !* action in Rt2 budget
-    ZWORK_LES = ( ZANOM **2 - XRt_ANOM **2 ) / XCURRENT_TSTEP_MET
+    !* action in RT2 budget
+    ZWORK_LES = ( ZANOM **2 - XRT_ANOM **2 ) / XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_Rt2(:,ILES_BU) = X_LES_BU_RES_Rt2(:,ILES_BU) + ZLES_PROF(:)
+    X_LES_BU_RES_RT2(:,ILES_BU) = X_LES_BU_RES_RT2(:,ILES_BU) + ZLES_PROF(:)
     !
     !
     !* update fields
     XCURRENT_RRS(:,:,:,KBUDN-5) = PVARS
-    XRt_ANOM = ZANOM
-    XThl_ANOM = ZTHL_ANOM
+    XRT_ANOM = ZANOM
+    XTHL_ANOM = ZTHL_ANOM
     DEALLOCATE(ZTHL_ANOM)
 !
-!* Sv
+!* SV
 !
   CASE(13:)
     CALL LES_BUDGET_ANOMALY(PVARS,'-',ZANOM)
     !
-    !* action in WSv budget
-    ZWORK_LES = ( ZANOM * XW_ANOM - XSv_ANOM(:,:,:,KBUDN-12) * XW_ANOM ) / &
-                  XCURRENT_TSTEP_SV
+    !* action in WSV budget
+    ZWORK_LES = ( ZANOM * XW_ANOM - XSV_ANOM(:,:,:,KBUDN-12) * XW_ANOM ) / &
+                  XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_WSv(:,ILES_BU,KBUDN-12) = X_LES_BU_RES_WSv(:,ILES_BU,KBUDN-12) + ZLES_PROF(:)
+    X_LES_BU_RES_WSV(:,ILES_BU,KBUDN-12) = X_LES_BU_RES_WSV(:,ILES_BU,KBUDN-12) + ZLES_PROF(:)
     !
-    !* action in Sv2 budget
-    ZWORK_LES = ( ZANOM **2 - XSv_ANOM(:,:,:,KBUDN-12) **2 ) / &
-                  XCURRENT_TSTEP_SV
+    !* action in SV2 budget
+    ZWORK_LES = ( ZANOM **2 - XSV_ANOM(:,:,:,KBUDN-12) **2 ) / &
+                  XCURRENT_TSTEP
     CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, ZLES_PROF)
-    X_LES_BU_RES_Sv2(:,ILES_BU,KBUDN-12) = X_LES_BU_RES_Sv2(:,ILES_BU,KBUDN-12) + ZLES_PROF(:)
+    X_LES_BU_RES_SV2(:,ILES_BU,KBUDN-12) = X_LES_BU_RES_SV2(:,ILES_BU,KBUDN-12) + ZLES_PROF(:)
     !
     !* update fields
     XCURRENT_RSVS(:,:,:,KBUDN-12) = PVARS
-    XSv_ANOM(:,:,:,KBUDN-12) = ZANOM
+    XSV_ANOM(:,:,:,KBUDN-12) = ZANOM
 
 END SELECT
 !
@@ -338,12 +338,8 @@ CHARACTER (LEN=*), INTENT(IN)  :: HBU     ! Identifier of the Budget of the
                                           ! variable that is considered
 INTEGER,           INTENT(OUT) :: KLES_BU ! LES budget identifier
 !
-IF (HBU(1:4)=='ADVX') THEN
-  KLES_BU = NLES_TOTADVH
-ELSE IF (HBU(1:4)=='ADVY') THEN
-  KLES_BU = NLES_TOTADVH
-ELSE IF (HBU(1:4)=='ADVZ') THEN
-  KLES_BU = NLES_TOTADVV
+IF (HBU(1:3)=='ADV') THEN
+  KLES_BU = NLES_TOTADV
 ELSE IF (HBU(1:3)=='REL') THEN
   KLES_BU = NLES_RELA
 ELSE IF (HBU(1:5)=='VTURB') THEN
@@ -397,16 +393,16 @@ INTEGER :: IINFO_ll
     SELECT CASE (HGRID)
       CASE ('X')
         ZRHODJ(:,:,:) = MXM(XCURRENT_RHODJ)
-        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP_UVW
+        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP
       CASE ('Y')
         ZRHODJ(:,:,:) = MYM(XCURRENT_RHODJ)
-        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP_UVW
+        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP
       CASE ('Z')
         ZRHODJ(:,:,:) = MZM(1,IKU,1,XCURRENT_RHODJ)
-        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP_UVW
+        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP
       CASE DEFAULT
         ZRHODJ(:,:,:) =     XCURRENT_RHODJ
-        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP_MET
+        ZS(:,:,:) =  PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP
     END SELECT
 
     NULLIFY(TZFIELDS_ll)
diff --git a/src/MNH/les_budget_tendn.f90 b/src/MNH/les_budget_tendn.f90
index a906e957f..c8709c461 100644
--- a/src/MNH/les_budget_tendn.f90
+++ b/src/MNH/les_budget_tendn.f90
@@ -114,11 +114,11 @@ ALLOCATE(ZRT         (IIU,IJU,IKU))
 CALL THL_RT_FROM_TH_R(LUSERV, LUSERC, LUSERR,             &
                       LUSERI, LUSERS, LUSERG, LUSERH,     &
                       XCURRENT_L_O_EXN_CP,                &
-                      XTHM, XRM,                          &
+                      XTHT, XRT,                          &
                       ZTHL, ZRT                           )
 
 !
-!* anomalies at previous time-step (instant 'M')
+!* anomalies at time-step 
 !  ---------------------------------------------
 !
 ALLOCATE(ZU_ANOM    (IIU,IJU,NLES_K))
@@ -128,13 +128,13 @@ ALLOCATE(ZTHL_ANOM  (IIU,IJU,NLES_K))
 ALLOCATE(ZRT_ANOM   (IIU,IJU,NLES_K))
 ALLOCATE(ZSV_ANOM   (IIU,IJU,NLES_K,NSV))
 
-CALL LES_ANOMALY_FIELD(MXF(XUM),ZU_ANOM)
-CALL LES_ANOMALY_FIELD(MYF(XVM),ZV_ANOM)
-CALL LES_ANOMALY_FIELD(MZF(1,IKU,1,XWM),ZW_ANOM)
+CALL LES_ANOMALY_FIELD(MXF(XUT),ZU_ANOM)
+CALL LES_ANOMALY_FIELD(MYF(XVT),ZV_ANOM)
+CALL LES_ANOMALY_FIELD(MZF(1,IKU,1,XWT),ZW_ANOM)
 CALL LES_ANOMALY_FIELD(ZTHL,ZTHL_ANOM)
 CALL LES_ANOMALY_FIELD(ZRT,ZRT_ANOM)
 DO JSV=1,NSV
-  CALL LES_ANOMALY_FIELD(XSVM(:,:,:,JSV),ZSV_ANOM(:,:,:,JSV))
+  CALL LES_ANOMALY_FIELD(XSVT(:,:,:,JSV),ZSV_ANOM(:,:,:,JSV))
 END DO
 DEALLOCATE(ZTHL)
 DEALLOCATE(ZRT)
@@ -143,52 +143,50 @@ ALLOCATE(ZWORK_LES(IIU,IJU,NLES_K))
 !
 !* KE budget
 !
-ZWORK_LES = (XU_ANOM * XU_ANOM - ZU_ANOM * ZU_ANOM) / XCURRENT_TSTEP_UVW &
-           +(XV_ANOM * XV_ANOM - ZV_ANOM * ZV_ANOM) / XCURRENT_TSTEP_UVW &
-           +(XW_ANOM * XW_ANOM - ZW_ANOM * ZW_ANOM) / XCURRENT_TSTEP_UVW
+ZWORK_LES = (XU_ANOM * XU_ANOM - ZU_ANOM * ZU_ANOM) / XCURRENT_TSTEP &
+           +(XV_ANOM * XV_ANOM - ZV_ANOM * ZV_ANOM) / XCURRENT_TSTEP &
+           +(XW_ANOM * XW_ANOM - ZW_ANOM * ZW_ANOM) / XCURRENT_TSTEP
 CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_KE(:,NLES_TEND))
 
 !* WThl budget
 
-ZWORK_LES = (XW_ANOM * XTHL_ANOM - ZW_ANOM * ZTHL_ANOM) / XCURRENT_TSTEP_MET
+ZWORK_LES = (XW_ANOM * XTHL_ANOM - ZW_ANOM * ZTHL_ANOM) / XCURRENT_TSTEP
 CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_WThl(:,NLES_TEND))
 
 !* Thl2 budget
 
-ZWORK_LES = (XTHL_ANOM * XTHL_ANOM - ZTHL_ANOM * ZTHL_ANOM) / XCURRENT_TSTEP_MET
+ZWORK_LES = (XTHL_ANOM * XTHL_ANOM - ZTHL_ANOM * ZTHL_ANOM) / XCURRENT_TSTEP
 CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_Thl2(:,NLES_TEND))
 
 
 IF (LUSERV) THEN
 !* ThlRt budget
-  ZWORK_LES = (XRT_ANOM * XTHL_ANOM - ZRT_ANOM * ZTHL_ANOM) / XCURRENT_TSTEP_MET
+  ZWORK_LES = (XRT_ANOM * XTHL_ANOM - ZRT_ANOM * ZTHL_ANOM) / XCURRENT_TSTEP
   CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_ThlRt(:,NLES_TEND))
 
 !* Rt2 budget
-  ZWORK_LES = (XRT_ANOM * XRT_ANOM - ZRT_ANOM * ZRT_ANOM) / XCURRENT_TSTEP_MET
+  ZWORK_LES = (XRT_ANOM * XRT_ANOM - ZRT_ANOM * ZRT_ANOM) / XCURRENT_TSTEP
   CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_Rt2(:,NLES_TEND))
 
 !* WRt budget
-  ZWORK_LES = (XRT_ANOM * XW_ANOM - ZRT_ANOM * ZW_ANOM) / XCURRENT_TSTEP_MET
+  ZWORK_LES = (XRT_ANOM * XW_ANOM - ZRT_ANOM * ZW_ANOM) / XCURRENT_TSTEP
   CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_WRt(:,NLES_TEND))
 
 END IF
 
 DO JSV=1,NSV
 !* WSv budget
-  ZWORK_LES = (XW_ANOM * XSV_ANOM(:,:,:,JSV) - ZW_ANOM * ZSV_ANOM(:,:,:,JSV)) / &
-               XCURRENT_TSTEP_SV
+  ZWORK_LES = (XW_ANOM * XSV_ANOM(:,:,:,JSV) - ZW_ANOM * ZSV_ANOM(:,:,:,JSV)) / XCURRENT_TSTEP
   CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_WSv(:,NLES_TEND,JSV))
 
 !* Sv2 budget
-  ZWORK_LES = (XSV_ANOM(:,:,:,JSV)**2 - ZSV_ANOM(:,:,:,JSV)**2) / &
-               XCURRENT_TSTEP_SV
+  ZWORK_LES = (XSV_ANOM(:,:,:,JSV)**2 - ZSV_ANOM(:,:,:,JSV)**2) / XCURRENT_TSTEP
   CALL LES_MEAN_ll(-ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_RES_Sv2(:,NLES_TEND,JSV))
 END DO
 
 !* Tke budget
 ALLOCATE(ZTEND(IIU,IJU,IKU))
-ZTEND(:,:,:) = -(XRTKES*XCURRENT_TSTEP_UVW/XRHODJ-XTKEM) / XCURRENT_TSTEP_UVW
+ZTEND(:,:,:) = -(XRTKES*XCURRENT_TSTEP/XRHODJ-XTKET) / XCURRENT_TSTEP
 CALL LES_VER_INT( ZTEND, ZWORK_LES )
 CALL LES_MEAN_ll(ZWORK_LES,LLES_CURRENT_CART_MASK,X_LES_BU_SBG_Tke(:,NLES_TEND))
 DEALLOCATE(ZTEND)
diff --git a/src/MNH/les_cloud_masksn.f90 b/src/MNH/les_cloud_masksn.f90
index 4ed7e339d..f23baf7c5 100644
--- a/src/MNH/les_cloud_masksn.f90
+++ b/src/MNH/les_cloud_masksn.f90
@@ -88,7 +88,7 @@ REAL, DIMENSION(:),       ALLOCATABLE :: ZMEANRC
 !
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
 !
-IKU = SIZE(XTHM,3)
+IKU = SIZE(XTHT,3)
 !
 !-------------------------------------------------------------------------------
 !
@@ -102,40 +102,40 @@ ZRT = 0.
 IRR=0
 IF (LUSERV) THEN
   IRR=IRR+1
-  ZRT = ZRT + XRM(:,:,:,1)
+  ZRT = ZRT + XRT(:,:,:,1)
 END IF
 IF (LUSERC) THEN
   IRR=IRR+1
   IRRC=IRR
-  ZRT = ZRT + XRM(:,:,:,IRRC)
+  ZRT = ZRT + XRT(:,:,:,IRRC)
 END IF
 IF (LUSERR) THEN
   IRR=IRR+1
   IRRR=IRR
-  ZRT = ZRT + XRM(:,:,:,IRRR)
+  ZRT = ZRT + XRT(:,:,:,IRRR)
 END IF
 IF (LUSERI) THEN
   IRR=IRR+1
   IRRI=IRR
-  ZRT = ZRT + XRM(:,:,:,IRRI)
+  ZRT = ZRT + XRT(:,:,:,IRRI)
 END IF
 IF (LUSERS) THEN
   IRR=IRR+1
   IRRS=IRR
-  ZRT = ZRT + XRM(:,:,:,IRRS)
+  ZRT = ZRT + XRT(:,:,:,IRRS)
 END IF
 IF (LUSERG) THEN
   IRR=IRR+1
   IRRG=IRR
-  ZRT = ZRT + XRM(:,:,:,IRRG)
+  ZRT = ZRT + XRT(:,:,:,IRRG)
 END IF
 !
 !
 !* computes fields on the LES grid in order to compute masks
 !
 ALLOCATE(ZTHV     (IIU,IJU,IKU))
-ZTHV = XTHM
-IF (LUSERV) ZTHV=ZTHV*(1.+XRV/XRD*XRM(:,:,:,1))/(1.+ZRT(:,:,:))
+ZTHV = XTHT
+IF (LUSERV) ZTHV=ZTHV*(1.+XRV/XRD*XRT(:,:,:,1))/(1.+ZRT(:,:,:))
 !
 !-------------------------------------------------------------------------------
 !
@@ -163,20 +163,20 @@ ZWORK1D=0.
 ZWORK3D=0.  
 ZWORK3DB=0.
 !
-CALL LES_VER_INT(MZF(1,IKU,1,XWM), ZW_LES)
+CALL LES_VER_INT(MZF(1,IKU,1,XWT), ZW_LES)
 IF (NSV_CS>0) THEN
   DO JSV=NSV_CSBEG, NSV_CSEND
-    CALL LES_VER_INT(  XSVM(:,:,:,JSV),  &
+    CALL LES_VER_INT(  XSVT(:,:,:,JSV),  &
                        ZSV_LES(:,:,:,JSV-NSV_CSBEG+1) )
   END DO
 END IF
 IF (LUSERC) THEN
-  CALL LES_VER_INT(XRM(:,:,:,IRRC), ZRC_LES)
+  CALL LES_VER_INT(XRT(:,:,:,IRRC), ZRC_LES)
 ELSE
   ZRC_LES = 0.
 END IF
 IF (LUSERI) THEN
-  CALL LES_VER_INT(XRM(:,:,:,IRRI), ZRI_LES)
+  CALL LES_VER_INT(XRT(:,:,:,IRRI), ZRI_LES)
 ELSE
   ZRI_LES = 0.
 END IF
@@ -186,7 +186,7 @@ CALL LES_ANOMALY_FIELD(ZTHV,ZTHV_ANOM)
 !
 IF (NSV_CS>0) THEN
  DO JSV=NSV_CSBEG, NSV_CSEND
-  ZWORK3D(:,:,:)=XSVM(:,:,:,JSV)
+  ZWORK3D(:,:,:)=XSVT(:,:,:,JSV)
   CALL LES_ANOMALY_FIELD(ZWORK3D,ZWORK3DB)
   ZSV_ANOM(:,:,:,JSV-NSV_CSBEG+1)=ZWORK3DB(:,:,:)
   CALL LES_STDEV(ZWORK3DB,ZWORK1D)
@@ -350,9 +350,6 @@ IF (LLES_MY_MASK) THEN
   ALLOCATE(LLES_CURRENT_MY_MASK(IIU,IJU,NLES_K))
   DO JI=1,NLES_MASKS_USER
     LLES_CURRENT_MY_MASKS (:,:,:,JI) = .FALSE.
-!   IF (JI==1) LLES_CURRENT_MY_MASKS (12:17,52:57,:,JI) = .TRUE.      
-!   IF (JI==2) LLES_CURRENT_MY_MASKS (12:17,57:62,:,JI) = .TRUE.      
-!   IF (JI==3) LLES_CURRENT_MY_MASKS (12:17,62:67,:,JI) = .TRUE.      
   END DO
 !
 END IF
@@ -415,6 +412,4 @@ END DO
 END SUBROUTINE LES_STDEV
 !-------------------------------------------------------------------------------  
 !
-!-------------------------------------------------------------------------------
-!
 END SUBROUTINE LES_CLOUD_MASKS_n   
diff --git a/src/MNH/les_ini_timestepn.f90 b/src/MNH/les_ini_timestepn.f90
index 8bf40a2af..0b53ad024 100644
--- a/src/MNH/les_ini_timestepn.f90
+++ b/src/MNH/les_ini_timestepn.f90
@@ -11,12 +11,9 @@ MODULE MODI_LES_INI_TIMESTEP_n
 !
 INTERFACE LES_INI_TIMESTEP_n
 !
-      SUBROUTINE LES_INI_TIMESTEP_n(KTCOUNT,PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV)
+      SUBROUTINE LES_INI_TIMESTEP_n(KTCOUNT)
 !
 INTEGER, INTENT(IN) :: KTCOUNT ! current model time-step
-REAL,    INTENT(IN) :: PTSTEP_UVW ! leap-frog  time-step
-REAL,    INTENT(IN) :: PTSTEP_MET ! forward-in-time  time-step
-REAL,    INTENT(IN) :: PTSTEP_SV  ! forward-in-time  time-step
 !
 END SUBROUTINE LES_INI_TIMESTEP_n
 !
@@ -25,7 +22,7 @@ END INTERFACE
 END MODULE MODI_LES_INI_TIMESTEP_n
 
 !     ##############################
-      SUBROUTINE  LES_INI_TIMESTEP_n(KTCOUNT,PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV)
+      SUBROUTINE  LES_INI_TIMESTEP_n(KTCOUNT)
 !     ##############################
 !
 !
@@ -90,9 +87,6 @@ IMPLICIT NONE
 !
 !
 INTEGER, INTENT(IN) :: KTCOUNT ! current model time-step
-REAL,    INTENT(IN) :: PTSTEP_UVW ! leap-frog  time-step
-REAL,    INTENT(IN) :: PTSTEP_MET ! forward-in-time  time-step
-REAL,    INTENT(IN) :: PTSTEP_SV  ! forward-in-time  time-step
 !
 !
 !       0.2  declaration of local variables
@@ -170,11 +164,9 @@ XLES_DATIME(16,NLES_TCOUNT) = TDTCUR%TIME
 !
 XLES_TRAJT(NLES_TCOUNT,1) = (KTCOUNT-1) * XTSTEP
 !
-!* time-step
+!* forward-in-time time-step
 !
-XCURRENT_TSTEP_UVW = PTSTEP_UVW 
-XCURRENT_TSTEP_MET = PTSTEP_MET 
-XCURRENT_TSTEP_SV  = PTSTEP_SV  
+XCURRENT_TSTEP = XTSTEP
 !
 !-------------------------------------------------------------------------------
 !
@@ -187,7 +179,7 @@ IJB_ll=IYOR_ll+IJB-1
 IIE_ll=IXOR_ll+IIE-1
 IJE_ll=IYOR_ll+IJE-1
 !
-IKU = SIZE(XTHM,3)
+IKU = SIZE(XTHT,3)
 !
 IMI = GET_CURRENT_MODEL_INDEX()
 !
@@ -250,37 +242,37 @@ IF (LUSERC) THEN
   !
   !* Exner function
   !
-  ZEXN(:,:,:) = (XPABSM/XP00)**(XRD/XCPD)
+  ZEXN(:,:,:) = (XPABST/XP00)**(XRD/XCPD)
   !
   !* Latent heat of vaporization
   !
-  ZL(:,:,:) = XLVTT + (XCPD-XCL) * (XTHM(:,:,:)*ZEXN(:,:,:)-XTT)
+  ZL(:,:,:) = XLVTT + (XCPD-XCL) * (XTHT(:,:,:)*ZEXN(:,:,:)-XTT)
   !
   !* heat capacity at constant pressure of the humid air
   !
   ZCP(:,:,:) = XCPD
   IRR=2
-  ZCP(:,:,:) = ZCP(:,:,:) + XCPV * XRM(:,:,:,1)
-  ZCP(:,:,:) = ZCP(:,:,:) + XCL  * XRM(:,:,:,2)
+  ZCP(:,:,:) = ZCP(:,:,:) + XCPV * XRT(:,:,:,1)
+  ZCP(:,:,:) = ZCP(:,:,:) + XCL  * XRT(:,:,:,2)
   IF (LUSERR) THEN
     IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCL  * XRM(:,:,:,IRR)
+    ZCP(:,:,:) = ZCP(:,:,:) + XCL  * XRT(:,:,:,IRR)
   END IF
   IF (LUSERI) THEN
     IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRM(:,:,:,IRR)
+    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
   END IF
   IF (LUSERS) THEN
     IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRM(:,:,:,IRR)
+    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
   END IF
   IF (LUSERG) THEN
     IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRM(:,:,:,IRR)
+    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
   END IF
   IF (LUSERH) THEN
     IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRM(:,:,:,IRR)
+    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
   END IF
   !
   !* L / (Exn * Cp)
@@ -373,19 +365,19 @@ ALLOCATE(ZRT (IIU,IJU,IKU))
 CALL THL_RT_FROM_TH_R(LUSERV, LUSERC, LUSERR,             &
                       LUSERI, LUSERS, LUSERG, LUSERH,     &
                       XCURRENT_L_O_EXN_CP,                &
-                      XTHM, XRM,                          &
+                      XTHT, XRT,                          &
                       ZTHL, ZRT                           )
 !
 !*      4.2  anomaly fields on the LES grid
 !            ------------------------------
 !
-CALL LES_ANOMALY_FIELD(MXF(XUM),XU_ANOM)
-CALL LES_ANOMALY_FIELD(MYF(XVM),XV_ANOM)
-CALL LES_ANOMALY_FIELD(MZF(1,IKU,1,XWM),XW_ANOM)
+CALL LES_ANOMALY_FIELD(MXF(XUT),XU_ANOM)
+CALL LES_ANOMALY_FIELD(MYF(XVT),XV_ANOM)
+CALL LES_ANOMALY_FIELD(MZF(1,IKU,1,XWT),XW_ANOM)
 CALL LES_ANOMALY_FIELD(ZTHL,XTHL_ANOM)
 IF (LUSERV) CALL LES_ANOMALY_FIELD(ZRT,XRT_ANOM)
 DO JSV=1,NSV
-  CALL LES_ANOMALY_FIELD(XSVM(:,:,:,JSV),XSV_ANOM(:,:,:,JSV))
+  CALL LES_ANOMALY_FIELD(XSVT(:,:,:,JSV),XSV_ANOM(:,:,:,JSV))
 END DO
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/les_masksn.f90 b/src/MNH/les_masksn.f90
index 06ff0a97f..3ab2c06fd 100644
--- a/src/MNH/les_masksn.f90
+++ b/src/MNH/les_masksn.f90
@@ -148,7 +148,7 @@ IJB_ll=IYOR_ll+IJB-1
 IIE_ll=IXOR_ll+IIE-1
 IJE_ll=IYOR_ll+IJE-1
 !
-IKU = SIZE(XTHM,3)
+IKU = SIZE(XTHT,3)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/les_res_tr.f90 b/src/MNH/les_res_tr.f90
index 46f0f8a61..966e6cd54 100644
--- a/src/MNH/les_res_tr.f90
+++ b/src/MNH/les_res_tr.f90
@@ -232,8 +232,7 @@ CALL LES_MEAN_ll( ZWORK_LES, LLES_CURRENT_CART_MASK, X_LES_BU_SBG_Tke(:,NLES_ADV
 !*      4.   Advection by resolved flow
 !            --------------------------
 !
-X_LES_BU_SBG_Tke(:,NLES_ADVR) = X_LES_BU_SBG_Tke(:,NLES_TOTADVH) &
-                              + X_LES_BU_SBG_Tke(:,NLES_TOTADVV) &
+X_LES_BU_SBG_Tke(:,NLES_ADVR) = X_LES_BU_SBG_Tke(:,NLES_TOTADV) &
                               - X_LES_BU_SBG_Tke(:,NLES_ADVM)
 !
 !-------------------------------------------------------------------------------
@@ -241,46 +240,38 @@ X_LES_BU_SBG_Tke(:,NLES_ADVR) = X_LES_BU_SBG_Tke(:,NLES_TOTADVH) &
 !*      5.   Turbulent transport
 !            -------------------
 !
-X_LES_BU_RES_Ke(:,NLES_TR  ) = X_LES_BU_RES_Ke(:,NLES_TOTADVH) &
-                             + X_LES_BU_RES_Ke(:,NLES_TOTADVV) &
+X_LES_BU_RES_Ke(:,NLES_TR  ) = X_LES_BU_RES_Ke(:,NLES_TOTADV) &
                              - X_LES_BU_RES_Ke(:,NLES_ADVM)    &
                              - X_LES_BU_RES_Ke(:,NLES_DP)
 !
-X_LES_BU_RES_Thl2(:,NLES_TR  ) = X_LES_BU_RES_Thl2(:,NLES_TOTADVH) &
-                               + X_LES_BU_RES_Thl2(:,NLES_TOTADVV) &
+X_LES_BU_RES_Thl2(:,NLES_TR  ) = X_LES_BU_RES_Thl2(:,NLES_TOTADV) &
                                - X_LES_BU_RES_Thl2(:,NLES_ADVM)    &
                                - X_LES_BU_RES_Thl2(:,NLES_DP)
 !
-X_LES_BU_RES_WThl(:,NLES_TR  ) = X_LES_BU_RES_WThl(:,NLES_TOTADVH) &
-                               + X_LES_BU_RES_WThl(:,NLES_TOTADVV) &
+X_LES_BU_RES_WThl(:,NLES_TR  ) = X_LES_BU_RES_WThl(:,NLES_TOTADV) &
                                - X_LES_BU_RES_WThl(:,NLES_ADVM)    &
                                - X_LES_BU_RES_WThl(:,NLES_DP)
 !
 IF (OUSERV) THEN
-  X_LES_BU_RES_Rt2(:,NLES_TR  ) = X_LES_BU_RES_Rt2(:,NLES_TOTADVH) &
-                                + X_LES_BU_RES_Rt2(:,NLES_TOTADVV) &
+  X_LES_BU_RES_Rt2(:,NLES_TR  ) = X_LES_BU_RES_Rt2(:,NLES_TOTADV) &
                                 - X_LES_BU_RES_Rt2(:,NLES_ADVM)    &
                                 - X_LES_BU_RES_Rt2(:,NLES_DP)
   !
-  X_LES_BU_RES_WRt(:,NLES_TR  ) = X_LES_BU_RES_WRt(:,NLES_TOTADVH) &
-                                + X_LES_BU_RES_WRt(:,NLES_TOTADVV) &
+  X_LES_BU_RES_WRt(:,NLES_TR  ) = X_LES_BU_RES_WRt(:,NLES_TOTADV) &
                                 - X_LES_BU_RES_WRt(:,NLES_ADVM)    &
                                 - X_LES_BU_RES_WRt(:,NLES_DP)
   !
-  X_LES_BU_RES_ThlRt(:,NLES_TR) = X_LES_BU_RES_ThlRt(:,NLES_TOTADVH) &
-                                + X_LES_BU_RES_ThlRt(:,NLES_TOTADVV) &
+  X_LES_BU_RES_ThlRt(:,NLES_TR) = X_LES_BU_RES_ThlRt(:,NLES_TOTADV) &
                                 - X_LES_BU_RES_ThlRt(:,NLES_ADVM)    &
                                 - X_LES_BU_RES_ThlRt(:,NLES_DP)
 END IF
 !
 DO JSV=1,NSV
-  X_LES_BU_RES_Sv2(:,NLES_TR  ,JSV) = X_LES_BU_RES_Sv2(:,NLES_TOTADVH,JSV) &
-                                    + X_LES_BU_RES_Sv2(:,NLES_TOTADVV,JSV) &
+  X_LES_BU_RES_Sv2(:,NLES_TR  ,JSV) = X_LES_BU_RES_Sv2(:,NLES_TOTADV,JSV) &
                                     - X_LES_BU_RES_Sv2(:,NLES_ADVM,JSV)    &
                                     - X_LES_BU_RES_Sv2(:,NLES_DP,JSV)
   !
-  X_LES_BU_RES_WSv(:,NLES_TR  ,JSV) = X_LES_BU_RES_WSv(:,NLES_TOTADVH,JSV) &
-                                    + X_LES_BU_RES_WSv(:,NLES_TOTADVV,JSV) &
+  X_LES_BU_RES_WSv(:,NLES_TR  ,JSV) = X_LES_BU_RES_WSv(:,NLES_TOTADV,JSV) &
                                     - X_LES_BU_RES_WSv(:,NLES_ADVM,JSV)    &
                                     - X_LES_BU_RES_WSv(:,NLES_DP,JSV)
 END DO
diff --git a/src/MNH/lesn.f90 b/src/MNH/lesn.f90
index d4110abab..835eb70d1 100644
--- a/src/MNH/lesn.f90
+++ b/src/MNH/lesn.f90
@@ -44,7 +44,6 @@
 USE MODD_CST
 USE MODD_CTURB, ONLY : XFTOP_O_FSURF
 !
-USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_LES_BUDGET
 USE MODD_CONF
@@ -206,7 +205,7 @@ IIU_ll = IIMAX_ll+JPHEXT
 IJU_ll = IJMAX_ll+JPHEXT
 IIA_ll=JPHEXT+1
 IJA_ll=JPHEXT+1
-IKU=SIZE(XVM,3)
+IKU=SIZE(XVT,3)
 IKE=IKU-JPVEXT
 IKB=1+JPVEXT
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
@@ -405,15 +404,15 @@ ELSE
 END IF
 !
 !
-ALLOCATE(ZEXN (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZRHO (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZRT  (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZTHV (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZTHL (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZEW  (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZMASSF (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZTEMP (IIU,IJU,SIZE(XTHM,3)))
-ALLOCATE(ZREHU (IIU,IJU,SIZE(XTHM,3)))
+ALLOCATE(ZEXN (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZRHO (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZRT  (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZTHV (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZTHL (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZEW  (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZMASSF (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZTEMP (IIU,IJU,SIZE(XTHT,3)))
+ALLOCATE(ZREHU (IIU,IJU,SIZE(XTHT,3)))
 ALLOCATE(CHAMPXY1 (IIU,IJU,1))
 !
 !-------------------------------------------------------------------------------
@@ -421,14 +420,14 @@ ALLOCATE(CHAMPXY1 (IIU,IJU,1))
 !*      1.2  preliminary calculations
 !            ------------------------
 !
-ZEXN(:,:,:) = (XPABSM/XP00)**(XRD/XCPD)
+ZEXN(:,:,:) = (XPABST/XP00)**(XRD/XCPD)
 !
 !
 !* computation of relative humidity
-ZTEMP=XTHM*ZEXN
+ZTEMP=XTHT*ZEXN
 ZEW=EXP (XALPW -XBETAW/ZTEMP-XGAMW*ALOG(ZTEMP))
 IF (LUSERV) THEN
-  ZREHU(:,:,:)=100.*XRM(:,:,:,1)*XPABSM(:,:,:)/((XRD/XRV+XRM(:,:,:,1))*ZEW(:,:,:))
+  ZREHU(:,:,:)=100.*XRT(:,:,:,1)*XPABST(:,:,:)/((XRD/XRV+XRT(:,:,:,1))*ZEW(:,:,:))
 ELSE
   ZREHU(:,:,:)=0.
 END IF
@@ -436,22 +435,22 @@ END IF
 CALL THL_RT_FROM_TH_R(LUSERV, LUSERC, LUSERR,             &
                       LUSERI, LUSERS, LUSERG, LUSERH,     &
                       XCURRENT_L_O_EXN_CP,                &
-                      XTHM, XRM,                          &
+                      XTHT, XRT,                          &
                       ZTHL, ZRT                           )
 !
 !* computation of density and virtual potential temperature
 !
-ZTHV=XTHM
-IF (LUSERV) ZTHV=ZTHV*(1.+XRV/XRD*XRM(:,:,:,1))/(1.+ZRT(:,:,:))
+ZTHV=XTHT
+IF (LUSERV) ZTHV=ZTHV*(1.+XRV/XRD*XRT(:,:,:,1))/(1.+ZRT(:,:,:))
 !
 IF (CEQNSYS=='DUR') THEN
-  ZRHO=XPABSM/(XRD*ZTHV*ZEXN)
+  ZRHO=XPABST/(XRD*ZTHV*ZEXN)
 ELSE
   ZRHO=XRHODREF*( 1. + (XCPD-XRD)/XRD*(ZEXN/XEXNREF - 1.) - (ZTHV/XTHVREF - 1.) )
 END IF
 !
 ! computation of mass flux
-ZMASSF=MZM(1,IKU,1,ZRHO)*XWM
+ZMASSF=MZM(1,IKU,1,ZRHO)*XWT
 !
 !-------------------------------------------------------------------------------
 !
@@ -472,20 +471,20 @@ IF (CRAD /= 'NONE') THEN
 END IF
 !
 CALL LES_VER_INT( XZZ   , ZZZ_LES)
-CALL LES_VER_INT( XPABSM, ZP_LES )
-CALL LES_VER_INT( GZ_M_M(1,IKU,1,XPABSM,XDZZ), ZDPDZ_LES )
+CALL LES_VER_INT( XPABST, ZP_LES )
+CALL LES_VER_INT( GZ_M_M(1,IKU,1,XPABST,XDZZ), ZDPDZ_LES )
 !
-CALL LES_VER_INT( MXF(XUM)  ,ZU_LES  )
-CALL LES_VER_INT( MYF(XVM)  ,ZV_LES  )
-CALL LES_VER_INT( MZF(1,IKU,1,XWM)  ,ZW_LES  )
+CALL LES_VER_INT( MXF(XUT)  ,ZU_LES  )
+CALL LES_VER_INT( MYF(XVT)  ,ZV_LES  )
+CALL LES_VER_INT( MZF(1,IKU,1,XWT)  ,ZW_LES  )
 CALL LES_VER_INT( MZF(1,IKU,1,ZMASSF) ,ZMF_LES)
-CALL LES_VER_INT(     XTHM  ,ZTH_LES )
-CALL LES_VER_INT( MXF(MZF(1,IKU,1,GZ_U_UW(1,IKU,1,XUM,XDZZ))), ZDUDZ_LES )
-CALL LES_VER_INT( MYF(MZF(1,IKU,1,GZ_V_VW(1,IKU,1,XVM,XDZZ))), ZDVDZ_LES )
-CALL LES_VER_INT( GZ_W_M(1,IKU,1,XWM,XDZZ), ZDWDZ_LES )
+CALL LES_VER_INT(     XTHT  ,ZTH_LES )
+CALL LES_VER_INT( MXF(MZF(1,IKU,1,GZ_U_UW(1,IKU,1,XUT,XDZZ))), ZDUDZ_LES )
+CALL LES_VER_INT( MYF(MZF(1,IKU,1,GZ_V_VW(1,IKU,1,XVT,XDZZ))), ZDVDZ_LES )
+CALL LES_VER_INT( GZ_W_M(1,IKU,1,XWT,XDZZ), ZDWDZ_LES )
 CALL LES_VER_INT( ZEXN, ZEXN_LES)  
 !
-CALL LES_VER_INT( GZ_M_M(1,IKU,1,XTHM,XDZZ), ZDTHDZ_LES )
+CALL LES_VER_INT( GZ_M_M(1,IKU,1,XTHT,XDZZ), ZDTHDZ_LES )
 !
 CALL LES_VER_INT(ZRHO, ZRHO_LES)
 !
@@ -493,18 +492,18 @@ IF (LUSERV) CALL LES_VER_INT(ZTHV, ZTHV_LES)
 CALL LES_VER_INT(ZTHL, ZTHL_LES)
 CALL LES_VER_INT( GZ_M_M(1,IKU,1,ZTHL,XDZZ), ZDTHLDZ_LES )
 !
-CALL LES_VER_INT(     XTKEM ,ZTKE_LES)
+CALL LES_VER_INT(     XTKET ,ZTKE_LES)
 IRR = 0
 IF (LUSERV) THEN
   IRR = IRR + 1
-  CALL LES_VER_INT(     XRM(:,:,:,IRR)  ,ZRV_LES )
+  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRV_LES )
   CALL LES_VER_INT(     ZRT(:,:,:)      ,ZRT_LES )
   CALL LES_VER_INT( GZ_M_M(1,IKU,1,ZRT,XDZZ), ZDRTDZ_LES )
   CALL LES_VER_INT(   ZREHU(:,:,:)     ,ZREHU_LES)
 END IF
 IF (LUSERC) THEN
   IRR = IRR + 1
-  CALL LES_VER_INT(     XRM(:,:,:,IRR)  ,ZRC_LES )
+  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRC_LES )
   ALLOCATE(ZINDCLD (IIU,IJU,NLES_K))
   ALLOCATE(ZINDCLD2(IIU,IJU,NLES_K))
   ZINDCLD = CEILING(ZRC_LES-1.E-6)
@@ -516,7 +515,7 @@ ELSE
 END IF
 IF (LUSERR) THEN
   IRR = IRR + 1
-  CALL LES_VER_INT(     XRM(:,:,:,IRR)  ,ZRR_LES )
+  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRR_LES )
   CALL LES_VER_INT(     XINPRR3D(:,:,:), ZINPRR3D_LES)
   CALL LES_VER_INT(    XEVAP3D(:,:,:), ZEVAP3D_LES)
 END IF
@@ -552,24 +551,24 @@ ENDIF
 !                    
 IF (LUSERI) THEN
   IRR = IRR + 1
-  CALL LES_VER_INT(     XRM(:,:,:,IRR)  ,ZRI_LES )
+  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRI_LES )
 END IF
 IF (LUSERS) THEN
   IRR = IRR + 1
-  CALL LES_VER_INT(     XRM(:,:,:,IRR)  ,ZRS_LES )
+  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRS_LES )
 END IF
 IF (LUSERG) THEN
   IRR = IRR + 1
-  CALL LES_VER_INT(     XRM(:,:,:,IRR)  ,ZRG_LES )
+  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRG_LES )
 END IF
 IF (LUSERH) THEN
   IRR = IRR + 1
-  CALL LES_VER_INT(     XRM(:,:,:,IRR)  ,ZRH_LES )
+  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRH_LES )
 END IF
 IF (NSV>0) THEN
   DO JSV=1,NSV
-    CALL LES_VER_INT(  XSVM(:,:,:,JSV), ZSV_LES(:,:,:,JSV) )
-    CALL LES_VER_INT( GZ_M_M(1,IKU,1,XSVM(:,:,:,JSV),XDZZ), ZDSVDZ_LES(:,:,:,JSV) )
+    CALL LES_VER_INT(  XSVT(:,:,:,JSV), ZSV_LES(:,:,:,JSV) )
+    CALL LES_VER_INT( GZ_M_M(1,IKU,1,XSVT(:,:,:,JSV),XDZZ), ZDSVDZ_LES(:,:,:,JSV) )
   END DO
 END IF
 !
@@ -780,30 +779,30 @@ END IF
 !
 !* note that velocity fields are previously localized on the MASS points
 !
-CALL SPEC_VER_INT(IMI, MXF(XUM)  ,ZU_SPEC  )
-CALL SPEC_VER_INT(IMI, MYF(XVM)  ,ZV_SPEC  )
-CALL SPEC_VER_INT(IMI, MZF(1,IKU,1,XWM)  ,ZW_SPEC  )
-CALL SPEC_VER_INT(IMI,     XTHM  ,ZTH_SPEC )
+CALL SPEC_VER_INT(IMI, MXF(XUT)  ,ZU_SPEC  )
+CALL SPEC_VER_INT(IMI, MYF(XVT)  ,ZV_SPEC  )
+CALL SPEC_VER_INT(IMI, MZF(1,IKU,1,XWT)  ,ZW_SPEC  )
+CALL SPEC_VER_INT(IMI,     XTHT  ,ZTH_SPEC )
 IF (LUSERC) CALL SPEC_VER_INT(IMI,     ZTHL  ,ZTHL_SPEC)
 IRR = 0
 IF (LUSERV) THEN
   IRR = IRR + 1
-  CALL SPEC_VER_INT(IMI,     XRM(:,:,:,IRR)  ,ZRV_SPEC )
+  CALL SPEC_VER_INT(IMI,     XRT(:,:,:,IRR)  ,ZRV_SPEC )
 END IF
 IF (LUSERC) THEN
   IRR = IRR + 1
-  CALL SPEC_VER_INT(IMI,     XRM(:,:,:,IRR)  ,ZRC_SPEC )
+  CALL SPEC_VER_INT(IMI,     XRT(:,:,:,IRR)  ,ZRC_SPEC )
 END IF
 IF (LUSERR) THEN
   IRR = IRR + 1
 END IF
 IF (LUSERI) THEN
   IRR = IRR + 1
-  CALL SPEC_VER_INT(IMI,     XRM(:,:,:,IRR)  ,ZRI_SPEC )
+  CALL SPEC_VER_INT(IMI,     XRT(:,:,:,IRR)  ,ZRI_SPEC )
 END IF
 IF (NSV>0) THEN
   DO JSV=1,NSV
-    CALL SPEC_VER_INT(IMI,  XSVM(:,:,:,JSV), ZSV_SPEC(:,:,:,JSV) )
+    CALL SPEC_VER_INT(IMI,  XSVT(:,:,:,JSV), ZSV_SPEC(:,:,:,JSV) )
   END DO
 END IF
 !
diff --git a/src/MNH/ls_coupling.f90 b/src/MNH/ls_coupling.f90
index b9f61e799..43ceae651 100644
--- a/src/MNH/ls_coupling.f90
+++ b/src/MNH/ls_coupling.f90
@@ -265,7 +265,7 @@ INTEGER                :: IIMAX,IJMAX,IKMAX       !  Dimensions  of the physical
 INTEGER                :: IKU             !  Dimensions of arrays in 
                                                   ! initial file
 LOGICAL               :: GLSOURCE ! switch for the source term (for ini_ls and ini_lb)
-CHARACTER(LEN=4), DIMENSION(KSV)    :: YGETSVM
+!CHARACTER(LEN=4), DIMENSION(KSV)    :: YGETSVM
 !
 !-------------------------------------------------------------------------------
 !
@@ -318,30 +318,30 @@ CALL INI_LS(CCPLFILE(NCPL_CUR),HLUOUT,HGETRVM,GLSOURCE,PLSUS,PLSVS,PLSWS,PLSTHS,
 !
 GLSOURCE=.TRUE.
 !
-YGETSVM(1:KSV) = HGETSVM(1:KSV)
-IF ( LUSECHEM .AND. (.NOT. OCH_INIT_FIELD) ) &
-    YGETSVM(NSV_CHEMBEG: NSV_CHEMEND) = 'INIT'
-IF (HCONF == 'RESTA')  THEN
-   IF (NSV_USER /= 0) YGETSVM(1/NSV_USER) = 'INIT'
-   IF (NSV_C2R2 /= 0) YGETSVM(NSV_C2R2BEG: NSV_C2R2END) = 'INIT'
-   IF (NSV_C1R3 /= 0) YGETSVM(NSV_C1R3BEG: NSV_C1R3END) = 'INIT'
-   IF (NSV_ELEC /= 0) YGETSVM(NSV_ELECBEG: NSV_ELECEND) = 'INIT'
-   IF (NSV_LG   /= 0) YGETSVM(NSV_LGBEG: NSV_LGEND) = 'INIT'
-   IF (NSV_LNOX /= 0) YGETSVM(NSV_LNOXBEG: NSV_LNOXEND) = 'INIT'
-   IF (NSV_DST  /= 0) YGETSVM(NSV_DSTBEG: NSV_DSTEND) = 'INIT'
-   IF (NSV_SLT  /= 0) YGETSVM(NSV_SLTBEG: NSV_SLTEND) = 'INIT'
-   IF (NSV_DSTDEP /= 0) YGETSVM(NSV_DSTDEPBEG: NSV_DSTDEPEND) = 'INIT'
-   IF (NSV_SLTDEP /= 0) YGETSVM(NSV_SLTDEPBEG: NSV_SLTDEPEND) = 'INIT'
-   IF (NSV_PP   /= 0) YGETSVM(NSV_PPBEG: NSV_PPEND) = 'INIT'
-   IF (NSV_CS   /= 0) YGETSVM(NSV_CSBEG: NSV_CSEND) = 'INIT'
-END IF
+!YGETSVM(1:KSV) = HGETSVM(1:KSV)
+!IF ( LUSECHEM .AND. (.NOT. OCH_INIT_FIELD) ) &
+!    YGETSVM(NSV_CHEMBEG: NSV_CHEMEND) = 'INIT'
+!IF (HCONF == 'RESTA')  THEN
+!   IF (NSV_USER /= 0) YGETSVM(1/NSV_USER) = 'INIT'
+!   IF (NSV_C2R2 /= 0) YGETSVM(NSV_C2R2BEG: NSV_C2R2END) = 'INIT'
+!   IF (NSV_C1R3 /= 0) YGETSVM(NSV_C1R3BEG: NSV_C1R3END) = 'INIT'
+!   IF (NSV_ELEC /= 0) YGETSVM(NSV_ELECBEG: NSV_ELECEND) = 'INIT'
+!   IF (NSV_LG   /= 0) YGETSVM(NSV_LGBEG: NSV_LGEND) = 'INIT'
+!   IF (NSV_LNOX /= 0) YGETSVM(NSV_LNOXBEG: NSV_LNOXEND) = 'INIT'
+!   IF (NSV_DST  /= 0) YGETSVM(NSV_DSTBEG: NSV_DSTEND) = 'INIT'
+!   IF (NSV_SLT  /= 0) YGETSVM(NSV_SLTBEG: NSV_SLTEND) = 'INIT'
+!   IF (NSV_DSTDEP /= 0) YGETSVM(NSV_DSTDEPBEG: NSV_DSTDEPEND) = 'INIT'
+!   IF (NSV_SLTDEP /= 0) YGETSVM(NSV_SLTDEPBEG: NSV_SLTDEPEND) = 'INIT'
+!   IF (NSV_PP   /= 0) YGETSVM(NSV_PPBEG: NSV_PPEND) = 'INIT'
+!   IF (NSV_CS   /= 0) YGETSVM(NSV_CSBEG: NSV_CSEND) = 'INIT'
+!END IF
 !
 CALL INI_LB(CCPLFILE(NCPL_CUR),HLUOUT,GLSOURCE,KSV,                   &
      KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
      KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
      KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
      HGETTKEM,HGETRVM,HGETRCM,HGETRRM,HGETRIM,HGETRSM,                &
-     HGETRGM,HGETRHM,YGETSVM,                                         &
+     HGETRGM,HGETRHM,HGETSVM,                                         &
      PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,            &
      PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS,            &
      PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
diff --git a/src/MNH/mean_field.f90 b/src/MNH/mean_field.f90
index ac9c0ecde..32a63739e 100755
--- a/src/MNH/mean_field.f90
+++ b/src/MNH/mean_field.f90
@@ -6,31 +6,21 @@
 !
 INTERFACE
 
-      SUBROUTINE MEAN_FIELD(PUM, PVM, PWM, PTHM, PTKEM,PPABSM,PUT, PVT, &
-                            PWT, PTHT, PPABST,KTCOUNT,PTSTEP)
-
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUM, PVM, PWM   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKEM           !   at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM   ! variables
+      SUBROUTINE MEAN_FIELD(PUT, PVT, PWT, PTHT, PTKET,PPABST)   
 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT   ! variables
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET   ! variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST   ! variables
 
-INTEGER, INTENT(IN)  :: KTCOUNT ! Temporal loop COUNTer
-REAL,    INTENT(IN)  :: PTSTEP            !  Effective Time step
-
 END SUBROUTINE MEAN_FIELD
 
 END INTERFACE
 
 END MODULE MODI_MEAN_FIELD
 !
-!     ##################################################################################
-       SUBROUTINE MEAN_FIELD(PUM, PVM, PWM, PTHM, PTKEM, PPABSM,PUT, PVT, &
-                             PWT, PTHT, PPABST,KTCOUNT,PTSTEP)
-!     ###############################################################################
+!     #######################################################
+      SUBROUTINE MEAN_FIELD(PUT, PVT, PWT, PTHT, PTKET,PPABST)   
+!     #######################################################
 !
 !!****  *MEAN_FIELD * -
 !!
@@ -66,40 +56,32 @@ IMPLICIT NONE
 
 !*       0.1   Declarations of dummy arguments :
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUM, PVM, PWM   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKEM           !   at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM   ! variables
-
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT   ! variables
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET   ! variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST   ! variables
 
-INTEGER, INTENT(IN)  :: KTCOUNT ! Temporal loop COUNTer
-REAL,    INTENT(IN) :: PTSTEP            !  Effective Time step
 !
 !*       0.2   Declarations of local variables :
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) ::  ZTEMPM, ZTEMPT
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) ::  ZTEMPT
 !-----------------------------------------------------------------------
 !1. MEAN
 !
-   ZTEMPM = PTHM*(((PPABSM)/XP00)**(XRD/XCPD))
    ZTEMPT = PTHT*(((PPABST)/XP00)**(XRD/XCPD))
 !
-   XUM_MEAN  = PUM + XUM_MEAN 
-   XVM_MEAN  = PVM + XVM_MEAN
-   XWM_MEAN  = PWM + XWM_MEAN
-   XTHM_MEAN = PTHM + XTHM_MEAN
-   XTEMPM_MEAN = ZTEMPM + XTEMPM_MEAN
-   XTKEM_MEAN = PTKEM + XTKEM_MEAN
-   XPABSM_MEAN = PPABSM + XPABSM_MEAN
+   XUM_MEAN  = PUT + XUM_MEAN 
+   XVM_MEAN  = PVT + XVM_MEAN
+   XWM_MEAN  = PWT + XWM_MEAN
+   XTHM_MEAN = PTHT + XTHM_MEAN
+   XTEMPM_MEAN = ZTEMPT + XTEMPM_MEAN
+   XTKEM_MEAN = PTKET + XTKEM_MEAN
+   XPABSM_MEAN = PPABST + XPABSM_MEAN
 !
-   XU2_MEAN  = PUM**2 + XU2_MEAN 
-   XV2_MEAN  = PVM**2 + XV2_MEAN
-   XW2_MEAN  = PWM**2 + XW2_MEAN
-   XTH2_MEAN = PTHM**2 + XTH2_MEAN
-   XTEMP2_MEAN = ZTEMPM**2 + XTEMP2_MEAN
-   XPABS2_MEAN = PPABSM**2 + XPABS2_MEAN
+   XU2_MEAN  = PUT**2 + XU2_MEAN 
+   XV2_MEAN  = PVT**2 + XV2_MEAN
+   XW2_MEAN  = PWT**2 + XW2_MEAN
+   XTH2_MEAN = PTHT**2 + XTH2_MEAN
+   XTEMP2_MEAN = ZTEMPT**2 + XTEMP2_MEAN
+   XPABS2_MEAN = PPABST**2 + XPABS2_MEAN
 !
    MEAN_COUNT = MEAN_COUNT + 1
 !
diff --git a/src/MNH/mesonh.f90 b/src/MNH/mesonh.f90
index 76ed87604..ae1c70378 100644
--- a/src/MNH/mesonh.f90
+++ b/src/MNH/mesonh.f90
@@ -92,6 +92,8 @@ USE MODI_VERSION
 USE MODI_INIT_MNH
 USE MODI_DEALLOC_SURFEX
 !
+USE MODE_MPPDB
+!
 IMPLICIT NONE 
 !
 !*       0.1    declarations of local variables
@@ -107,6 +109,7 @@ INTEGER       :: IINFO_ll                     ! return code of // routines
 !*       1.    INITIALIZATION
 !              --------------
 ! Switch to model 1 variables
+CALL MPPDB_INIT()
 CALL GOTO_MODEL(1)
 !
 CALL INITIO_ll()
@@ -127,7 +130,7 @@ GEXIT=.FALSE.
 DO JMODEL=1,NMODEL
   CALL GO_TOMODEL_ll(JMODEL,IINFO_ll)
   CALL GOTO_MODEL(JMODEL)
-  CSTORAGE_TYPE='MT'
+  CSTORAGE_TYPE='TT'
   CALL MODEL_n(1,GEXIT)
 END DO
 !
@@ -156,7 +159,12 @@ END DO
 !*       3.    FINALIZE THE PARALLEL SESSION
 !              -----------------------------
 !
-CALL END_PARA_ll(IINFO_ll)
+IF (LCHECK) THEN
+  CALL MPPDB_BARRIER()
+  CALL MPPDB_BARRIER()
+ELSE
+  CALL END_PARA_ll(IINFO_ll)
+END IF
 !
 !
 CALL DEALLOC_SURFEX
diff --git a/src/MNH/mf_turb.f90 b/src/MNH/mf_turb.f90
index 39e38a202..7871f0c5b 100644
--- a/src/MNH/mf_turb.f90
+++ b/src/MNH/mf_turb.f90
@@ -6,7 +6,7 @@ INTERFACE
 !     #################################################################
       SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV,                  &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
-                PIMPL, PTSTEP, PTSTEP_MET, PTSTEP_SV,                 &
+                PIMPL, PTSTEP,                                        &
                 PDZZ,                                                 &
                 PRHODJ,                                               &
                 PTHLM,PTHVM,PRTM,PUM,PVM,PSVM,                        &
@@ -33,8 +33,6 @@ INTEGER,                INTENT(IN)   :: KSV_LGBEG ! first index of lag. tracer
 INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL       ! degree of implicitness
 REAL,                 INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,                 INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,                 INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 !
 REAL, DIMENSION(:,:), INTENT(IN)   :: PDZZ        ! metric coefficients
 
@@ -80,7 +78,7 @@ END MODULE MODI_MF_TURB
 !     #################################################################
       SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV,                  &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
-                PIMPL, PTSTEP, PTSTEP_MET, PTSTEP_SV,                 &
+                PIMPL, PTSTEP,                                        &
                 PDZZ,                                                 &
                 PRHODJ,                                               &
                 PTHLM,PTHVM,PRTM,PUM,PVM,PSVM,                        &
@@ -154,8 +152,6 @@ INTEGER,                INTENT(IN)   :: KSV_LGBEG ! first index of lag. tracer
 INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL       ! degree of implicitness
 REAL,                 INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,                 INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,                 INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 !
 REAL, DIMENSION(:,:), INTENT(IN)   :: PDZZ        ! metric coefficients
 
@@ -253,25 +249,25 @@ ENDIF
 ! 3.1 Compute the tendency for the conservative potential temperature
 !     (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point)
 !
-CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PTHLM,PFLXZTHMF,-PEMF,PTSTEP_MET,PIMPL,  &
+CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PTHLM,PFLXZTHMF,-PEMF,PTSTEP,PIMPL,  &
                       PDZZ,PRHODJ,ZVARS )
 ! compute new flux
 PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-MZM_MF(KKA,KKU,KKL,ZVARS(:,:)))
 
 !!! compute THL tendency
 !
-PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP_MET
+PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP
 
 !
 ! 3.2 Compute the tendency for the conservative mixing ratio
 !
-CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP_MET,PIMPL,  &
+CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP,PIMPL,  &
                                  PDZZ,PRHODJ,ZVARS )
 ! compute new flux
 PFLXZRMF(:,:) =  PEMF(:,:)*(PRT_UP(:,:)-MZM_MF(KKA,KKU,KKL,ZVARS(:,:)))
 
 !!! compute RT tendency
-PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP_MET
+PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP
 !
 
 IF (OMIXUV) THEN
@@ -320,12 +316,12 @@ DO JSV=1,ISV
   !     (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point)
   !
   CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PSVM(:,:,JSV),PFLXZSVMF(:,:,JSV),&
-                        -PEMF,PTSTEP_SV,PIMPL,PDZZ,PRHODJ,ZVARS )
+                        -PEMF,PTSTEP,PIMPL,PDZZ,PRHODJ,ZVARS )
   ! compute new flux
   PFLXZSVMF(:,:,JSV) = PEMF(:,:)*(PSV_UP(:,:,JSV)-MZM_MF(KKA,KKU,KKL,ZVARS))
 
   ! compute Sv tendency
-  PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP_SV
+  PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP
 
 ENDDO
 !
diff --git a/src/MNH/modd_advn.f90 b/src/MNH/modd_advn.f90
index a5184e54a..128ed4e0e 100644
--- a/src/MNH/modd_advn.f90
+++ b/src/MNH/modd_advn.f90
@@ -33,6 +33,8 @@
 !!      Original     23/10/95  (Vila, lafore) For new scalar advection schemes
 !!      C.Lac       24/04/06  Introduction of CUVW_ADV_SCHEME and
 !!                            removal of CFV_ADV_SCHEME
+!!      J.-P. Pinty  20/03/10 Add NWENO_ORDER
+!!      C.Lac and V.Masson    Add CTEMP_SCHEME and TIME SPLITTING
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -46,24 +48,31 @@ TYPE ADV_t
   CHARACTER(LEN=6)       :: CMET_ADV_SCHEME, CSV_ADV_SCHEME, CUVW_ADV_SCHEME
                                   ! Control the selected advection scheme
                                   ! for the scalar variables
+  CHARACTER(LEN=4)       :: CTEMP_SCHEME
 !
-  INTEGER                :: NLITER  ! Number iterations MPDATA
-  REAL, DIMENSION(:,:,:), POINTER :: XRTHMS=>NULL()    ! Source of (rho theta)
-                                        ! advection for PPM
-  REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL()   ! Idem for kinetic energy
-  REAL, DIMENSION(:,:,:,:), POINTER :: XRRMS=>NULL()   ! Idem for Moist variables
-  REAL, DIMENSION(:,:,:,:), POINTER :: XRSVMS=>NULL()  ! Idem for  addi. scalar
+  INTEGER                :: NWENO_ORDER ! Order of the WENO scheme (3 or 5)
 !
+  INTEGER                :: NSPLIT      ! Number of time splitting   
+                                        ! for advection  
+!
+  LOGICAL                :: LSPLIT_CFL  ! Flag to automatically choose number of iterations
+  REAL                   :: XSPLIT_CFL  ! Limit of CFL to automatically choose number of iterations
+!
+  LOGICAL                :: LCFL_WRIT   ! Flag to write CFL fields in output file               
+!
+REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL()   ! Advection TKE source term
 END TYPE ADV_t
 
 TYPE(ADV_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: ADV_MODEL
 
 CHARACTER(LEN=6), POINTER :: CMET_ADV_SCHEME=>NULL(), CSV_ADV_SCHEME=>NULL(), CUVW_ADV_SCHEME=>NULL()
-INTEGER, POINTER :: NLITER=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XRTHMS=>NULL()
+CHARACTER(LEN=4), POINTER :: CTEMP_SCHEME=>NULL()
+INTEGER, POINTER :: NWENO_ORDER=>NULL()
+INTEGER, POINTER :: NSPLIT=>NULL()
+LOGICAL, POINTER :: LSPLIT_CFL=>NULL()
+LOGICAL, POINTER :: LCFL_WRIT=>NULL()
+REAL,    POINTER :: XSPLIT_CFL=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL()
-REAL, DIMENSION(:,:,:,:), POINTER :: XRRMS=>NULL()
-REAL, DIMENSION(:,:,:,:), POINTER :: XRSVMS=>NULL()
 
 
 CONTAINS
@@ -72,20 +81,19 @@ SUBROUTINE ADV_GOTO_MODEL(KFROM, KTO)
 INTEGER, INTENT(IN) :: KFROM, KTO
 !
 ! Save current state for allocated arrays
-ADV_MODEL(KFROM)%XRTHMS=>XRTHMS
 ADV_MODEL(KFROM)%XRTKEMS=>XRTKEMS
-ADV_MODEL(KFROM)%XRRMS=>XRRMS
-ADV_MODEL(KFROM)%XRSVMS=>XRSVMS
 !
 ! Current model is set to model KTO
 CUVW_ADV_SCHEME=>ADV_MODEL(KTO)%CUVW_ADV_SCHEME
 CMET_ADV_SCHEME=>ADV_MODEL(KTO)%CMET_ADV_SCHEME
 CSV_ADV_SCHEME=>ADV_MODEL(KTO)%CSV_ADV_SCHEME
-NLITER=>ADV_MODEL(KTO)%NLITER
-XRTHMS=>ADV_MODEL(KTO)%XRTHMS
+CTEMP_SCHEME=>ADV_MODEL(KTO)%CTEMP_SCHEME
+NWENO_ORDER=>ADV_MODEL(KTO)%NWENO_ORDER
+NSPLIT=>ADV_MODEL(KTO)%NSPLIT         
+LSPLIT_CFL=>ADV_MODEL(KTO)%LSPLIT_CFL         
+LCFL_WRIT=>ADV_MODEL(KTO)%LCFL_WRIT          
+XSPLIT_CFL=>ADV_MODEL(KTO)%XSPLIT_CFL         
 XRTKEMS=>ADV_MODEL(KTO)%XRTKEMS
-XRRMS=>ADV_MODEL(KTO)%XRRMS
-XRSVMS=>ADV_MODEL(KTO)%XRSVMS
 
 END SUBROUTINE ADV_GOTO_MODEL
 
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index 6e8058eab..4c872ca99 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -169,9 +169,7 @@ LOGICAL, SAVE :: LBU_RU     ! True when the budget of RU is performed
 !                         
 INTEGER, SAVE :: NASSEU     ! time filter
 INTEGER, SAVE :: NNESTU     ! Efffect of 2way nesting on U
-INTEGER, SAVE :: NADVXU     ! advection along X
-INTEGER, SAVE :: NADVYU     ! advection along Y
-INTEGER, SAVE :: NADVZU     ! advection along Z 
+INTEGER, SAVE :: NADVU      ! advection 
 INTEGER, SAVE :: NFRCU      ! forcing
 INTEGER, SAVE :: NNUDU      ! nudging
 INTEGER, SAVE :: NCURVU     ! curvature
@@ -192,9 +190,7 @@ LOGICAL, SAVE :: LBU_RV     ! True when the budget of RV is performed
 !
 INTEGER, SAVE :: NASSEV     ! time filter
 INTEGER, SAVE :: NNESTV     ! Efffect of 2way nesting on V
-INTEGER, SAVE :: NADVXV     ! advection along X 
-INTEGER, SAVE :: NADVYV     ! advection along Y 
-INTEGER, SAVE :: NADVZV     ! advection along Z 
+INTEGER, SAVE :: NADVV      ! advection 
 INTEGER, SAVE :: NFRCV      ! forcing
 INTEGER, SAVE :: NNUDV      ! nudging
 INTEGER, SAVE :: NCURVV     ! curvature
@@ -215,9 +211,7 @@ LOGICAL, SAVE :: LBU_RW     ! True when the budget of RW is performed
 !                                                  
 INTEGER, SAVE :: NASSEW     ! time filter
 INTEGER, SAVE :: NNESTW     ! Efffect of 2way nesting on W
-INTEGER, SAVE :: NADVXW     ! advection along X
-INTEGER, SAVE :: NADVYW     ! advection along Y
-INTEGER, SAVE :: NADVZW     ! advection along Z 
+INTEGER, SAVE :: NADVW      ! advection
 INTEGER, SAVE :: NFRCW      ! forcing
 INTEGER, SAVE :: NNUDW      ! nudging
 INTEGER, SAVE :: NCURVW     ! curvature
@@ -238,9 +232,6 @@ LOGICAL, SAVE :: LBU_RTH    ! True when the budget of RTH is performed
 INTEGER, SAVE :: NASSETH    ! time filter
 INTEGER, SAVE :: NNESTTH    ! Efffect of 2way nesting on Th
 INTEGER, SAVE :: NADVTH     ! Total advection for PPM
-INTEGER, SAVE :: NADVXTH    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYTH    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZTH    ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCTH     ! forcing
 INTEGER, SAVE :: N2DADVTH   ! 2d advecting forcing
 INTEGER, SAVE :: N2DRELTH   ! 2d relaxation forcing
@@ -283,9 +274,6 @@ LOGICAL, SAVE :: LBU_RTKE   ! True when the budget of RTKE is performed
 !
 INTEGER, SAVE :: NASSETKE   ! time filter
 INTEGER, SAVE :: NADVTKE    ! Total advection for PPM
-INTEGER, SAVE :: NADVXTKE   ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYTKE   ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZTKE   ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCTKE    ! forcing
 INTEGER, SAVE :: NDIFTKE    ! numerical diffusion
 INTEGER, SAVE :: NRELTKE    ! relaxation
@@ -305,9 +293,6 @@ LOGICAL, SAVE :: LBU_RRV   ! true when the budget of RRV is performed
 INTEGER, SAVE :: NASSERV   ! time filter
 INTEGER, SAVE :: NNESTRV   ! Effect of 2way nesting on Rv
 INTEGER, SAVE :: NADVRV    ! Total advection for PPM
-INTEGER, SAVE :: NADVXRV   ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYRV   ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZRV   ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCRV    ! forcing
 INTEGER, SAVE :: N2DADVRV  ! 2d advecting forcing
 INTEGER, SAVE :: N2DRELRV  ! 2d relaxation forcing
@@ -335,9 +320,6 @@ LOGICAL, SAVE :: LBU_RRC    ! True when the budget of RRC is performed
 INTEGER, SAVE :: NASSERC    ! time filter
 INTEGER, SAVE :: NNESTRC    ! Efffect of 2way nesting on Rc
 INTEGER, SAVE :: NADVRC     ! Total advection for PPM
-INTEGER, SAVE :: NADVXRC    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYRC    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZRC    ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCRC     ! forcing
 INTEGER, SAVE :: NDIFRC     ! numerical diffusion
 INTEGER, SAVE :: NRELRC     ! relaxation
@@ -368,9 +350,6 @@ LOGICAL, SAVE :: LBU_RRR    ! True when the budget of RRR is performed
 INTEGER, SAVE :: NASSERR    ! time filter
 INTEGER, SAVE :: NNESTRR    ! Efffect of 2way nesting on Rr
 INTEGER, SAVE :: NADVRR     ! Total advection for PPM
-INTEGER, SAVE :: NADVXRR    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYRR    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZRR    ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCRR     ! forcing
 INTEGER, SAVE :: NDIFRR     ! numerical diffusion
 INTEGER, SAVE :: NRELRR     ! relaxation
@@ -397,9 +376,6 @@ LOGICAL, SAVE :: LBU_RRI    ! True when the budget of RRI is performed
 INTEGER, SAVE :: NASSERI    ! time filter
 INTEGER, SAVE :: NNESTRI    ! Efffect of 2way nesting on Ri
 INTEGER, SAVE :: NADVRI     ! Total advection for PPM
-INTEGER, SAVE :: NADVXRI    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYRI    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZRI    ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCRI     ! forcing
 INTEGER, SAVE :: NDIFRI     ! numerical diffusion
 INTEGER, SAVE :: NRELRI     ! relaxation
@@ -429,9 +405,6 @@ LOGICAL, SAVE :: LBU_RRS    ! True when the budget of RRS is performed
 INTEGER, SAVE :: NASSERS    ! time filter
 INTEGER, SAVE :: NNESTRS    ! Efffect of 2way nesting on Rs
 INTEGER, SAVE :: NADVRS     ! Total advection for PPM
-INTEGER, SAVE :: NADVXRS    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYRS    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZRS    ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCRS     ! forcing
 INTEGER, SAVE :: NDIFRS     ! numerical diffusion
 INTEGER, SAVE :: NRELRS     ! relaxation
@@ -456,9 +429,6 @@ LOGICAL, SAVE :: LBU_RRG    ! True when the budget of RRG is performed
 INTEGER, SAVE :: NASSERG    ! time filter
 INTEGER, SAVE :: NNESTRG    ! Efffect of 2way nesting on Rg
 INTEGER, SAVE :: NADVRG     ! Total advection for PPM
-INTEGER, SAVE :: NADVXRG    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYRG    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZRG    ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCRG     ! forcing
 INTEGER, SAVE :: NDIFRG     ! numerical diffusion
 INTEGER, SAVE :: NRELRG     ! relaxation
@@ -484,9 +454,6 @@ LOGICAL, SAVE :: LBU_RRH    ! True when the budget of RRH is performed
 INTEGER, SAVE :: NASSERH    ! time filter
 INTEGER, SAVE :: NNESTRH    ! Efffect of 2way nesting on Rh
 INTEGER, SAVE :: NADVRH     ! Total advection for PPM
-INTEGER, SAVE :: NADVXRH    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYRH    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZRH    ! advection along Z (all except PPM) 
 INTEGER, SAVE :: NFRCRH     ! forcing
 INTEGER, SAVE :: NDIFRH     ! numerical diffusion
 INTEGER, SAVE :: NRELRH     ! relaxation
@@ -503,9 +470,6 @@ LOGICAL, SAVE :: LBU_RSV    ! True when the budget of RSVx is performed
 INTEGER, SAVE :: NASSESV    ! Asselin-Robert time filter
 INTEGER, SAVE :: NNESTSV    ! Efffect of 2way nesting on Sv
 INTEGER, SAVE :: NADVSV     ! Total advection for PPM
-INTEGER, SAVE :: NADVXSV    ! advection along X (all except PPM)
-INTEGER, SAVE :: NADVYSV    ! advection along Y (all except PPM)
-INTEGER, SAVE :: NADVZSV    ! advection along Z (all except PPM)
 INTEGER, SAVE :: NFRCSV     ! forcing
 INTEGER, SAVE :: NDIFSV     ! numerical diffusion
 INTEGER, SAVE :: NRELSV     ! relaxation
diff --git a/src/MNH/modd_conf.f90 b/src/MNH/modd_conf.f90
index 71e5b94ba..f3213f702 100644
--- a/src/MNH/modd_conf.f90
+++ b/src/MNH/modd_conf.f90
@@ -53,12 +53,8 @@
 IMPLICIT NONE
 !
 CHARACTER (LEN=5),SAVE :: CCONF  ! Configuration of models
-                                 !  'START' for start configuration (variables
-                                 ! at time t and t-dt are the same in the
-                                 ! initial file)
+                                 !  'START' for start configuration 
                                  !  'RESTART' for restart configuration 
-                                 ! (variables  at time t and t-dt are different)   
-                                 !  'POST' for post-treatment configuration 
 LOGICAL,SAVE      :: LTHINSHELL  ! Logical for thinshell approximation
                                  ! .TRUE.  = thinshell approximation
                                  ! .FALSE. = no thinshell approximation
@@ -118,4 +114,6 @@ LOGICAL,SAVE      :: LNEUTRAL ! True if ref. theta field is uniform
 !
 LOGICAL,SAVE      :: LCPL_AROME  ! true if coupling file are issued from AROME
 !
+LOGICAL,SAVE      :: LCHECK ! To test reproducibility
+!
 END MODULE MODD_CONF
diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90
index 0f6d36b1d..0161ce516 100644
--- a/src/MNH/modd_fieldn.f90
+++ b/src/MNH/modd_fieldn.f90
@@ -43,6 +43,11 @@
 !!                     11/04/96  (J.-P. Pinty) add the ice concentration
 !!                     25/07/97  (J. Stein) Change the variable pressure
 !!                     20/05/06  Remove EPS
+!!                        11/11  (C.Lac) FIT version : Remove t-Dt fields except for 
+!!                                       radiative cooling (microphysics) +
+!!                               add pressure contribution to the tendencies for
+!!                               momentum (noted _PRES) + microphysics contrib
+!!                               for Theta and r (noted _CLD)
 !!
 !-------------------------------------------------------------------------------
 !
@@ -53,78 +58,72 @@ 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 :: XUT=>NULL(),XVT=>NULL(),XWT=>NULL()
                                       ! U,V,W  at time t
   REAL, DIMENSION(:,:,:), POINTER :: XRUS=>NULL(),XRVS=>NULL(),XRWS=>NULL()
                                       ! Source of (rho U), (rho V), (rho w) 
-  REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL()     ! (rho theta) at time t-dt
+  REAL, DIMENSION(:,:,:), POINTER :: XRUS_PRES=>NULL(),XRVS_PRES=>NULL(),XRWS_PRES=>NULL()
   REAL, DIMENSION(:,:,:), POINTER :: XTHT=>NULL()     ! (rho theta) at time t
   REAL, DIMENSION(:,:,:), POINTER :: XRTHS=>NULL()    ! Source of (rho theta)
-  REAL, DIMENSION(:,:,:), POINTER :: XTKEM=>NULL()    ! Kinetic energy 
-                                                     ! at time t-dt
+  REAL, DIMENSION(:,:,:), POINTER :: XRTHS_CLD=>NULL()    ! Source of (rho theta) from resolved_cloud
   REAL, DIMENSION(:,:,:), POINTER :: XTKET=>NULL()    ! Kinetic energy
                                                      ! at time t
   REAL, DIMENSION(:,:,:), POINTER :: XRTKES=>NULL()   ! Source of kinetic energy
                                                      ! (rho e)
-  REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL()   ! absolute pressure at
-                                                     ! time t-dt
   REAL, DIMENSION(:,:,:), POINTER :: XPABST=>NULL()   ! absolute pressure at
                                                      ! time t
-  REAL, DIMENSION(:,:,:,:), POINTER :: XRM=>NULL()    ! Moist variables 
-                                                     ! at time t-dt
   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 :: XSVM=>NULL()   ! Additionnal scalar
-                                                     ! variables at time t-dt
+  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                          ::   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 :: XSRCM=>NULL()    ! turbulent flux <s'Rc'>
-                                                     ! at t- delta t
   REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL()    ! turbulent flux <s'Rc'>
                                                      ! at t
   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
+  REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL()      ! Theta at Previous time step 
 !
 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 :: XUT=>NULL(),XVT=>NULL(),XWT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRUS=>NULL(),XRVS=>NULL(),XRWS=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XRUS_PRES=>NULL(),XRVS_PRES=>NULL(),XRWS_PRES=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XTHT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRTHS=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XTKEM=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XRTHS_CLD=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XTKET=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRTKES=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XPABST=>NULL()
-REAL, DIMENSION(:,:,:,:), POINTER :: XRM=>NULL()
 REAL, DIMENSION(:,:,:,:), POINTER :: XRT=>NULL()
 REAL, DIMENSION(:,:,:,:), POINTER :: XRRS=>NULL()
-REAL, DIMENSION(:,:,:,:), POINTER :: XSVM=>NULL()
+REAL, DIMENSION(:,:,:,:), POINTER :: XRRS_CLD=>NULL()
 REAL, DIMENSION(:,:,:,:), POINTER :: XSVT=>NULL()
 REAL, DIMENSION(:,:,:,:), POINTER :: XRSVS=>NULL()
+REAL, DIMENSION(:,:,:,:), POINTER :: XRSVS_CLD=>NULL()
 REAL, POINTER :: XDRYMASST=>NULL()
 REAL, POINTER :: XDRYMASSS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSRC=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XSRCM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XCIT=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XRCM=>NULL()
 
 CONTAINS
 
@@ -132,68 +131,68 @@ SUBROUTINE 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)%XUT=>XUT
 FIELD_MODEL(KFROM)%XVT=>XVT
 FIELD_MODEL(KFROM)%XWT=>XWT
 FIELD_MODEL(KFROM)%XRUS=>XRUS
 FIELD_MODEL(KFROM)%XRVS=>XRVS
 FIELD_MODEL(KFROM)%XRWS=>XRWS
-FIELD_MODEL(KFROM)%XTHM=>XTHM
+FIELD_MODEL(KFROM)%XRUS_PRES=>XRUS_PRES
+FIELD_MODEL(KFROM)%XRVS_PRES=>XRVS_PRES
+FIELD_MODEL(KFROM)%XRWS_PRES=>XRWS_PRES
 FIELD_MODEL(KFROM)%XTHT=>XTHT
 FIELD_MODEL(KFROM)%XRTHS=>XRTHS
-FIELD_MODEL(KFROM)%XTKEM=>XTKEM
+FIELD_MODEL(KFROM)%XRTHS_CLD=>XRTHS_CLD
 FIELD_MODEL(KFROM)%XTKET=>XTKET
 FIELD_MODEL(KFROM)%XRTKES=>XRTKES
-FIELD_MODEL(KFROM)%XPABSM=>XPABSM
 FIELD_MODEL(KFROM)%XPABST=>XPABST
-FIELD_MODEL(KFROM)%XRM=>XRM
 FIELD_MODEL(KFROM)%XRT=>XRT
 FIELD_MODEL(KFROM)%XRRS=>XRRS
-FIELD_MODEL(KFROM)%XSVM=>XSVM
+FIELD_MODEL(KFROM)%XRRS_CLD=>XRRS_CLD
 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)%XSRCM=>XSRCM
 FIELD_MODEL(KFROM)%XSRCT=>XSRCT
 FIELD_MODEL(KFROM)%XCIT=>XCIT
+FIELD_MODEL(KFROM)%XTHM=>XTHM
+FIELD_MODEL(KFROM)%XPABSM=>XPABSM
+FIELD_MODEL(KFROM)%XRCM=>XRCM
 !
 ! Current model is set to model KTO
-XUM=>FIELD_MODEL(KTO)%XUM
-XVM=>FIELD_MODEL(KTO)%XVM
-XWM=>FIELD_MODEL(KTO)%XWM
 XUT=>FIELD_MODEL(KTO)%XUT
 XVT=>FIELD_MODEL(KTO)%XVT
 XWT=>FIELD_MODEL(KTO)%XWT
 XRUS=>FIELD_MODEL(KTO)%XRUS
 XRVS=>FIELD_MODEL(KTO)%XRVS
 XRWS=>FIELD_MODEL(KTO)%XRWS
-XTHM=>FIELD_MODEL(KTO)%XTHM
+XRUS_PRES=>FIELD_MODEL(KTO)%XRUS_PRES
+XRVS_PRES=>FIELD_MODEL(KTO)%XRVS_PRES
+XRWS_PRES=>FIELD_MODEL(KTO)%XRWS_PRES
 XTHT=>FIELD_MODEL(KTO)%XTHT
 XRTHS=>FIELD_MODEL(KTO)%XRTHS
-XTKEM=>FIELD_MODEL(KTO)%XTKEM
+XRTHS_CLD=>FIELD_MODEL(KTO)%XRTHS_CLD
 XTKET=>FIELD_MODEL(KTO)%XTKET
 XRTKES=>FIELD_MODEL(KTO)%XRTKES
-XPABSM=>FIELD_MODEL(KTO)%XPABSM
 XPABST=>FIELD_MODEL(KTO)%XPABST
-XRM=>FIELD_MODEL(KTO)%XRM
 XRT=>FIELD_MODEL(KTO)%XRT
 XRRS=>FIELD_MODEL(KTO)%XRRS
-XSVM=>FIELD_MODEL(KTO)%XSVM
+XRRS_CLD=>FIELD_MODEL(KTO)%XRRS_CLD
 XSVT=>FIELD_MODEL(KTO)%XSVT
 XRSVS=>FIELD_MODEL(KTO)%XRSVS
+XRSVS_CLD=>FIELD_MODEL(KTO)%XRSVS_CLD
 XDRYMASST=>FIELD_MODEL(KTO)%XDRYMASST
 XDRYMASSS=>FIELD_MODEL(KTO)%XDRYMASSS
 XSRC=>FIELD_MODEL(KTO)%XSRC
 XSIGS=>FIELD_MODEL(KTO)%XSIGS
 XCLDFR=>FIELD_MODEL(KTO)%XCLDFR
-XSRCM=>FIELD_MODEL(KTO)%XSRCM
 XSRCT=>FIELD_MODEL(KTO)%XSRCT
 XCIT=>FIELD_MODEL(KTO)%XCIT
+XTHM=>FIELD_MODEL(KTO)%XTHM
+XPABSM=>FIELD_MODEL(KTO)%XPABSM
+XRCM=>FIELD_MODEL(KTO)%XRCM
 
 END SUBROUTINE FIELD_GOTO_MODEL
 
diff --git a/src/MNH/modd_getn.f90 b/src/MNH/modd_getn.f90
index 414a01219..22135986b 100644
--- a/src/MNH/modd_getn.f90
+++ b/src/MNH/modd_getn.f90
@@ -58,27 +58,23 @@ IMPLICIT NONE
 
 TYPE GET_t
 !
-  CHARACTER (LEN=4) :: CGETUM, CGETVM, CGETWM !  Get indicator for 
-                                                 ! U,V,W at time t-dt
   CHARACTER (LEN=4) :: CGETUT, CGETVT, CGETWT !  Get indicator for
                                                  ! U,V,W at time t 
-  CHARACTER (LEN=4) :: CGETTHM,CGETTHT        !  Get indicator for theta
+  CHARACTER (LEN=4) :: CGETTHT                !  Get indicator for theta
                                                  ! at time t-dt and at time t
-  CHARACTER (LEN=4) :: CGETPABSM, CGETPABST   !  Get indicator for
+  CHARACTER (LEN=4) :: CGETPABST              !  Get indicator for
                                                  ! the absolute pressure at
                                                  ! time t-dt and t
-  CHARACTER (LEN=4)  :: CGETTKEM,CGETTKET     !  Get indicator for TKE
+  CHARACTER (LEN=4)  :: CGETTKET              !  Get indicator for TKE
                                                  ! at time t-dt and at time t
-  CHARACTER (LEN=4)  :: CGETRVM,CGETRCM,CGETRRM !  Get indicator for  Rv
-  CHARACTER (LEN=4)  :: CGETRIM,CGETRSM,CGETRGM !  Rc,Rr,Ri,Rs,Rg,Rh
-  CHARACTER (LEN=4)  :: CGETRHM                 ! at time t-dt 
   CHARACTER (LEN=4)  :: CGETRVT,CGETRCT,CGETRRT !  Get indicator for Rv
   CHARACTER (LEN=4)  :: CGETRIT,CGETRST,CGETRGT ! Rc,Rr,Ri,Rs,Rg,Rh
   CHARACTER (LEN=4)  :: CGETRHT                 ! at time t 
-!JUAN
-  CHARACTER (LEN=4), DIMENSION(:), POINTER :: CGETSVM=>NULL(),CGETSVT=>NULL() !  Get indicator 
-                                ! for the Scalar Var. at time t-dt and t
-!JUAN
+  CHARACTER (LEN=4)  :: CGETINPRC,CGETINPRR,CGETINPRS !  Get indicator for
+                                                 ! 2D precip fields
+  CHARACTER (LEN=4)  :: CGETINPRG,CGETINPRH
+  CHARACTER (LEN=4), DIMENSION(:), POINTER :: CGETSVT=>NULL() !  Get indicator 
+                                ! for the Scalar Var. at time t
   CHARACTER (LEN=4) :: CGETLSUM, CGETLSVM, CGETLSWM   !  Get indicator for 
                                 ! U,V,W for Larger Scales at time t-dt
   CHARACTER (LEN=4) :: CGETLSTHM, CGETLSRVM     !  Get indicator for 
@@ -87,7 +83,7 @@ TYPE GET_t
                                 ! and SRC related to the subgrid condensation
   CHARACTER (LEN=4)  :: CGETCLDFR             !  Get indicator for the
                                 ! CLouD FRaction
-  CHARACTER (LEN=4)  :: CGETSRCM, CGETSRCT    !  Get indicator for SRCM
+  CHARACTER (LEN=4)  :: CGETSRCT              !  Get indicator for SRCM
                                 ! and SRCT related to the subgrid condensation
   CHARACTER (LEN=4)  :: CGETCIT               !  Get indicator for the
                                                  ! primary ice concentration
@@ -107,23 +103,21 @@ END TYPE GET_t
 TYPE(GET_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: GET_MODEL
 LOGICAL    , DIMENSION(JPMODELMAX),         SAVE :: GET_FIRST_CALL = .TRUE.
 
-CHARACTER (LEN=4), POINTER :: CGETUM=>NULL(), CGETVM=>NULL(), CGETWM=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETUT=>NULL(), CGETVT=>NULL(), CGETWT=>NULL()
-CHARACTER (LEN=4), POINTER :: CGETTHM=>NULL(),CGETTHT=>NULL()
-CHARACTER (LEN=4), POINTER :: CGETPABSM=>NULL(), CGETPABST=>NULL()
-CHARACTER (LEN=4), POINTER :: CGETTKEM=>NULL(),CGETTKET=>NULL()
-CHARACTER (LEN=4), POINTER :: CGETRVM=>NULL(),CGETRCM=>NULL(),CGETRRM=>NULL()
-CHARACTER (LEN=4), POINTER :: CGETRIM=>NULL(),CGETRSM=>NULL(),CGETRGM=>NULL()
-CHARACTER (LEN=4), POINTER :: CGETRHM=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETTHT=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETPABST=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETTKET=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETRVT=>NULL(),CGETRCT=>NULL(),CGETRRT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETRIT=>NULL(),CGETRST=>NULL(),CGETRGT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETRHT=>NULL()
-CHARACTER (LEN=4), DIMENSION(:), POINTER :: CGETSVM=>NULL(),CGETSVT=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETINPRC=>NULL(), CGETINPRR=>NULL(), CGETINPRS=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETINPRG=>NULL(), CGETINPRH=>NULL()
+CHARACTER (LEN=4), DIMENSION(:), POINTER :: CGETSVT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETLSUM=>NULL(), CGETLSVM=>NULL(), CGETLSWM=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETLSTHM=>NULL(), CGETLSRVM=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETSIGS=>NULL(),CGETSRC=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETCLDFR=>NULL()
-CHARACTER (LEN=4), POINTER :: CGETSRCM=>NULL(), CGETSRCT=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETSRCT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETCIT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETCONV=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETRAD=>NULL()
@@ -140,7 +134,6 @@ INTEGER, INTENT(IN) :: KFROM, KTO
 !
 !JUAN
 IF (GET_FIRST_CALL(KTO)) THEN
-ALLOCATE (GET_MODEL(KTO)%CGETSVM(JPSVMAX))
 ALLOCATE (GET_MODEL(KTO)%CGETSVT(JPSVMAX))
 GET_FIRST_CALL(KTO) = .FALSE.
 ENDIF
@@ -149,25 +142,12 @@ ENDIF
 ! Save current state for allocated arrays
 !
 ! Current model is set to model KTO
-CGETUM=>GET_MODEL(KTO)%CGETUM
-CGETVM=>GET_MODEL(KTO)%CGETVM
-CGETWM=>GET_MODEL(KTO)%CGETWM
 CGETUT=>GET_MODEL(KTO)%CGETUT
 CGETVT=>GET_MODEL(KTO)%CGETVT
 CGETWT=>GET_MODEL(KTO)%CGETWT
-CGETTHM=>GET_MODEL(KTO)%CGETTHM
 CGETTHT=>GET_MODEL(KTO)%CGETTHT
-CGETPABSM=>GET_MODEL(KTO)%CGETPABSM
 CGETPABST=>GET_MODEL(KTO)%CGETPABST
-CGETTKEM=>GET_MODEL(KTO)%CGETTKEM
 CGETTKET=>GET_MODEL(KTO)%CGETTKET
-CGETRVM=>GET_MODEL(KTO)%CGETRVM
-CGETRCM=>GET_MODEL(KTO)%CGETRCM
-CGETRRM=>GET_MODEL(KTO)%CGETRRM
-CGETRIM=>GET_MODEL(KTO)%CGETRIM
-CGETRSM=>GET_MODEL(KTO)%CGETRSM
-CGETRGM=>GET_MODEL(KTO)%CGETRGM
-CGETRHM=>GET_MODEL(KTO)%CGETRHM
 CGETRVT=>GET_MODEL(KTO)%CGETRVT
 CGETRCT=>GET_MODEL(KTO)%CGETRCT
 CGETRRT=>GET_MODEL(KTO)%CGETRRT
@@ -175,7 +155,11 @@ CGETRIT=>GET_MODEL(KTO)%CGETRIT
 CGETRST=>GET_MODEL(KTO)%CGETRST
 CGETRGT=>GET_MODEL(KTO)%CGETRGT
 CGETRHT=>GET_MODEL(KTO)%CGETRHT
-CGETSVM=>GET_MODEL(KTO)%CGETSVM
+CGETINPRC=>GET_MODEL(KTO)%CGETINPRC
+CGETINPRR=>GET_MODEL(KTO)%CGETINPRR
+CGETINPRS=>GET_MODEL(KTO)%CGETINPRS
+CGETINPRG=>GET_MODEL(KTO)%CGETINPRG
+CGETINPRH=>GET_MODEL(KTO)%CGETINPRH
 CGETSVT=>GET_MODEL(KTO)%CGETSVT
 CGETLSUM=>GET_MODEL(KTO)%CGETLSUM
 CGETLSVM=>GET_MODEL(KTO)%CGETLSVM
@@ -185,7 +169,6 @@ CGETLSRVM=>GET_MODEL(KTO)%CGETLSRVM
 CGETSIGS=>GET_MODEL(KTO)%CGETSIGS
 CGETSRC=>GET_MODEL(KTO)%CGETSRC
 CGETCLDFR=>GET_MODEL(KTO)%CGETCLDFR
-CGETSRCM=>GET_MODEL(KTO)%CGETSRCM
 CGETSRCT=>GET_MODEL(KTO)%CGETSRCT
 CGETCIT=>GET_MODEL(KTO)%CGETCIT
 CGETCONV=>GET_MODEL(KTO)%CGETCONV
diff --git a/src/MNH/modd_les_budget.f90 b/src/MNH/modd_les_budget.f90
index 7f1d9c96c..19c00aca4 100644
--- a/src/MNH/modd_les_budget.f90
+++ b/src/MNH/modd_les_budget.f90
@@ -48,9 +48,7 @@ REAL :: XTIME_LES_BU_PROCESS
 ! time spent in subgrid LES computations in this time-step for budgets
 ! for this process only (advection, microphysics, etc...)
 !
-REAL :: XCURRENT_TSTEP_UVW
-REAL :: XCURRENT_TSTEP_MET
-REAL :: XCURRENT_TSTEP_SV 
+REAL :: XCURRENT_TSTEP
 !-------------------------------------------------------------------------------
 !
 !* variables of current model needed in budget computations
@@ -111,8 +109,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: X_LES_BU_SBG_Tke
 !
 !* index for each processus taken into account in the budgets
 !
-INTEGER :: NLES_TOTADVH
-INTEGER :: NLES_TOTADVV
+INTEGER :: NLES_TOTADV
 INTEGER :: NLES_RELA
 INTEGER :: NLES_RAD
 INTEGER :: NLES_GRAV
diff --git a/src/MNH/modd_past_fieldn.f90 b/src/MNH/modd_past_fieldn.f90
new file mode 100644
index 000000000..0930cc843
--- /dev/null
+++ b/src/MNH/modd_past_fieldn.f90
@@ -0,0 +1,81 @@
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 modd 2006/06/27 14:17:24
+!-----------------------------------------------------------------
+!     ###################
+      MODULE MODD_PAST_FIELD_n
+!     ###################
+!
+!!****  *MODD_PAST_FIELD$n* - declaration of prognostic variables
+!!
+!!    PURPOSE
+!!    -------
+!       The purpose of this declarative module is to specify  the 
+!     prognostic variables. 
+!
+!!
+!!**  IMPLICIT ARGUMENTS
+!!    ------------------
+!!      None 
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book2 of documentation of Meso-NH (module MODD_PAST_FIELDn)
+!!      Technical Specifications Report of the Meso-NH (chapters 2 and 3)
+!!      
+!!
+!!    AUTHOR
+!!    ------
+!!	V. Masson    *Meteo France*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original       01/2013                       
+
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.   DECLARATIONS
+!             ------------
+!
+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 :: XDUM=>NULL(),XDVM=>NULL(),XDWM=>NULL()
+
+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
+
+END SUBROUTINE PAST_FIELD_GOTO_MODEL
+
+END MODULE MODD_PAST_FIELD_n
diff --git a/src/MNH/modd_sub_modeln.f90 b/src/MNH/modd_sub_modeln.f90
index 0bec31b55..387496fe3 100644
--- a/src/MNH/modd_sub_modeln.f90
+++ b/src/MNH/modd_sub_modeln.f90
@@ -31,6 +31,7 @@ TYPE SUB_MODEL_t
   REAL*8,DIMENSION(2)    :: XT_START
   REAL*8,DIMENSION(2)    :: XT_STORE,XT_BOUND,XT_GUESS
   REAL*8,DIMENSION(2)    :: XT_ADV,XT_SOURCES,XT_DRAG
+  REAL*8,DIMENSION(2)    :: XT_ADVUVW,XT_GRAV
   REAL*8,DIMENSION(2)    :: XT_DIFF,XT_RELAX,XT_PARAM,XT_SPECTRA
   REAL*8,DIMENSION(2)    :: XT_HALO,XT_RAD_BOUND,XT_PRESS
   REAL*8,DIMENSION(2)    :: XT_CLOUD,XT_STEP_SWA,XT_STEP_MISC
@@ -39,7 +40,7 @@ TYPE SUB_MODEL_t
   REAL*8,DIMENSION(2)    :: XT_RAD,XT_DCONV,XT_GROUND,XT_TRACER,XT_MAFL
   REAL*8,DIMENSION(2)    :: XT_TURB,XT_2WAY,XT_SHADOWS
   REAL*8,DIMENSION(2)    :: XT_FORCING,XT_NUDGING,XT_CHEM
-!
+
   REAL, DIMENSION(:,:,:), POINTER :: ZWT_ACT_NUC=>NULL()
                              ! Vertical motion used for ACTivation/NUCleation
   LOGICAL, DIMENSION(:,:), POINTER :: GMASKkids=>NULL() ! kids domains mask
@@ -57,6 +58,7 @@ INTEGER, POINTER :: IOUT=>NULL()
 REAL*8,DIMENSION(:), POINTER :: XT_START=>NULL()
 REAL*8,DIMENSION(:), POINTER :: XT_STORE=>NULL(),XT_BOUND=>NULL(),XT_GUESS=>NULL()
 REAL*8,DIMENSION(:), POINTER :: XT_ADV=>NULL(),XT_SOURCES=>NULL(),XT_DRAG=>NULL()
+REAL*8,DIMENSION(:), POINTER :: XT_ADVUVW=>NULL(),XT_GRAV=>NULL()
 REAL*8,DIMENSION(:), POINTER :: XT_DIFF=>NULL(),XT_RELAX=>NULL(),XT_PARAM=>NULL(),XT_SPECTRA=>NULL()
 REAL*8,DIMENSION(:), POINTER :: XT_HALO=>NULL(),XT_RAD_BOUND=>NULL(),XT_PRESS=>NULL()
 REAL*8,DIMENSION(:), POINTER :: XT_CLOUD=>NULL(),XT_STEP_SWA=>NULL(),XT_STEP_MISC=>NULL()
@@ -107,6 +109,8 @@ XT_STORE=>SUB_MODEL_MODEL(KTO)%XT_STORE
 XT_BOUND=>SUB_MODEL_MODEL(KTO)%XT_BOUND
 XT_GUESS=>SUB_MODEL_MODEL(KTO)%XT_GUESS
 XT_ADV=>SUB_MODEL_MODEL(KTO)%XT_ADV
+XT_ADVUVW=>SUB_MODEL_MODEL(KTO)%XT_ADVUVW
+XT_GRAV=>SUB_MODEL_MODEL(KTO)%XT_GRAV
 XT_SOURCES=>SUB_MODEL_MODEL(KTO)%XT_SOURCES
 XT_DRAG=>SUB_MODEL_MODEL(KTO)%XT_DRAG
 XT_DIFF=>SUB_MODEL_MODEL(KTO)%XT_DIFF
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 344190c08..ee6754b46 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -2,11 +2,10 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
-! masdev4_7 BUG1 2007/06/15 17:47:18
 !-----------------------------------------------------------------
-!     #################
+!     ###################
       MODULE MODI_MODEL_n
-!     #################
+!     ###################
 !
 INTERFACE
 !
@@ -220,7 +219,8 @@ END MODULE MODI_MODEL_n
 !!                   10/11/2009 (P. Aumond) Add mean moments
 !!                   Nov, 12, 2009 (C. Barthe) add cloud electrification and lightning flashes
 !!                   July 2010 (M. Leriche) add ice phase chemical species
-!!
+!!                   April 2011 (C.Lac) : Remove instant M 
+!!                   April 2011 (C.Lac, V.Masson) : Time splitting for advection
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -263,6 +263,7 @@ USE MODD_DYN_n
 USE MODD_DYNZD_n
 USE MODD_ADV_n
 USE MODD_FIELD_n
+USE MODD_PAST_FIELD_n
 USE MODD_MEAN_FIELD_n
 USE MODD_MEAN_FIELD
 USE MODD_LSFIELD_n
@@ -294,7 +295,10 @@ USE MODD_CLOUD_MF_n
 USE MODI_INITIAL_GUESS
 USE MODI_MEAN_FIELD
 USE MODI_BOUNDARIES
-USE MODI_ADVECTION
+USE MODI_ADVECTION_METSV
+USE MODI_ADVECTION_UVW     
+USE MODI_ADVECTION_UVW_CEN 
+USE MODI_GRAVITY_IMPL         
 USE MODI_DYN_SOURCES
 USE MODI_RELAXATION
 USE MODI_NUM_DIFF
@@ -362,6 +366,7 @@ USE MODI_LES_N
 USE MODN_NCOUT
 USE MODE_UTIL
 #endif
+USE MODI_GET_HALO
 !
 IMPLICIT NONE
 !
@@ -376,6 +381,7 @@ LOGICAL, INTENT(INOUT):: OEXIT
 !
 INTEGER :: ILUOUT      ! Logical unit number for the output listing
 INTEGER :: IIU,IJU,IKU ! array size in first, second and third dimensions
+INTEGER :: IIB,IIE,IJB,IJE,IKB,IKE ! index values for the physical subdomain
 INTEGER :: JSV,JRR     ! Loop index for scalar and moist variables
 CHARACTER (LEN=28) :: YFMFILE   ! name of the OUTPUT FM-file
 CHARACTER (LEN=28) :: YDADFILE  ! name of the corresponding DAD model OUTPUT FM-file
@@ -465,6 +471,14 @@ REAL, DIMENSION(:,:,:,:), POINTER :: DPTR_XRM,DPTR_XSVM,DPTR_XRRS,DPTR_XRSVS
 REAL, DIMENSION(:,:), POINTER :: DPTR_XINPRC,DPTR_XINPRR,DPTR_XINPRS,DPTR_XINPRG
 REAL, DIMENSION(:,:), POINTER :: DPTR_XINPRH,DPTR_XPRCONV,DPTR_XPRSCONV
 LOGICAL, DIMENSION(:,:),POINTER :: DPTR_GMASKkids
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZRUS,ZRVS,ZRWS
+!
+! for various testing
+INTEGER :: IK
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZTMP
+!
+TYPE(LIST_ll), POINTER :: TZFIELDC_ll   ! list of fields to exchange
+TYPE(HALO2LIST_ll), POINTER :: TZHALO2C_ll   ! list of fields to exchange
 !
 !-------------------------------------------------------------------------------
 !
@@ -473,24 +487,6 @@ LOGICAL, DIMENSION(:,:),POINTER :: DPTR_GMASKkids
 ITYPE = 1
 IMI = GET_CURRENT_MODEL_INDEX()
 !
-IF ((CCONF=='START').AND.(KTCOUNT==1)) THEN
-  ZTSTEP_UVW = XTSTEP
-ELSE
-  ZTSTEP_UVW = 2.*XTSTEP
-END IF
-!
-IF (CMET_ADV_SCHEME(1:3) == 'PPM') THEN
-  ZTSTEP_MET = XTSTEP
-ELSE
-  ZTSTEP_MET = 2.*XTSTEP
-END IF
-!
-IF (CSV_ADV_SCHEME(1:3) == 'PPM') THEN
-  ZTSTEP_SV = XTSTEP
-ELSE
-  ZTSTEP_SV = 2.*XTSTEP
-END IF
-!
 !*       1.0   update NSV_* variables for current model
 !              ----------------------------------------
 !
@@ -504,6 +500,9 @@ CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
 !
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
 IKU=NKMAX+2*JPVEXT
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
+IKB=1+JPVEXT
+IKE=IKU-JPVEXT
 !
 IF (IMI==1) THEN
   GSTEADY_DMASS=LSTEADYLS
@@ -515,15 +514,10 @@ END IF
 !
 IF (KTCOUNT == 1) THEN
 !
-  NULLIFY(TZFIELDS_ll,TZLSFIELD_ll,TZFIELDM_ll)
-  NULLIFY(TZHALO2M_ll)
-  NULLIFY(TZLSHALO2_ll)
-  NULLIFY(TZFIELDT_ll)
+  NULLIFY(TZFIELDS_ll,TZLSFIELD_ll,TZFIELDT_ll)
   NULLIFY(TZHALO2T_ll)
-  NULLIFY(TZFIELDMT_ll)
-  NULLIFY(TZHALO2MT_ll)
+  NULLIFY(TZLSHALO2_ll)
   NULLIFY(TZFIELDSC_ll)
-  NULLIFY(TZHALO2SC_ll)
 !
   ALLOCATE(ZWT_ACT_NUC(SIZE(XWT,1),SIZE(XWT,2),SIZE(XWT,3)))
   ALLOCATE(GMASKkids(SIZE(XWT,1),SIZE(XWT,2)))
@@ -557,14 +551,20 @@ IF (KTCOUNT == 1) THEN
   CALL ADD3DFIELD_ll(TZFIELDS_ll, XRVS)
   CALL ADD3DFIELD_ll(TZFIELDS_ll, XRWS)
   CALL ADD3DFIELD_ll(TZFIELDS_ll, XRTHS)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XRUS_PRES)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XRVS_PRES)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XRWS_PRES)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XRTHS_CLD)
   IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll(TZFIELDS_ll, XRTKES)
   DO JRR=1,NRR
     CALL ADD3DFIELD_ll(TZFIELDS_ll, XRRS(:,:,:,JRR))
+    CALL ADD3DFIELD_ll(TZFIELDS_ll, XRRS_CLD(:,:,:,JRR))
   ENDDO
   DO JSV=1,NSV
     CALL ADD3DFIELD_ll(TZFIELDS_ll, XRSVS(:,:,:,JSV))
+    CALL ADD3DFIELD_ll(TZFIELDS_ll, XRSVS_CLD(:,:,:,JSV))
   ENDDO
-  IF (SIZE(XSRCM,1) /= 0) CALL ADD3DFIELD_ll(TZFIELDS_ll, XSRCM)
+  IF (SIZE(XSRCT,1) /= 0) CALL ADD3DFIELD_ll(TZFIELDS_ll, XSRCT)
   !
   IF ((LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV) .AND. NHALO==1 ) THEN
   !
@@ -578,25 +578,25 @@ IF (KTCOUNT == 1) THEN
       CALL ADD3DFIELD_ll(TZLSFIELD_ll, XLSRVM)
     ENDIF
   !
-  !                 c) Fields at t-dt
+  !                 c) Fields at t
   !
-    CALL ADD3DFIELD_ll(TZFIELDM_ll, XUM)
-    CALL ADD3DFIELD_ll(TZFIELDM_ll, XVM)
-    CALL ADD3DFIELD_ll(TZFIELDM_ll, XWM)
-    CALL ADD3DFIELD_ll(TZFIELDM_ll, XTHM)
-    IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll(TZFIELDM_ll, XTKEM)
+    CALL ADD3DFIELD_ll(TZFIELDT_ll, XUT)
+    CALL ADD3DFIELD_ll(TZFIELDT_ll, XVT)
+    CALL ADD3DFIELD_ll(TZFIELDT_ll, XWT)
+    CALL ADD3DFIELD_ll(TZFIELDT_ll, XTHT)
+    IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll(TZFIELDT_ll, XTKET)
     DO JRR=1,NRR
-      CALL ADD3DFIELD_ll(TZFIELDM_ll, XRM(:,:,:,JRR))
+      CALL ADD3DFIELD_ll(TZFIELDT_ll, XRT(:,:,:,JRR))
     ENDDO
     DO JSV=1,NSV
-      CALL ADD3DFIELD_ll(TZFIELDM_ll, XSVM(:,:,:,JSV))
+      CALL ADD3DFIELD_ll(TZFIELDT_ll, XSVT(:,:,:,JSV))
     ENDDO
   !
   !*       1.5   Initialize the list of fields for the halo updates (2nd layer)
   !
     INBVAR = 4+NRR+NSV
     IF (SIZE(XRTKES,1) /= 0) INBVAR=INBVAR+1
-    IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2M_ll,INBVAR,IIU,IJU,IKU)
+    IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2T_ll,INBVAR,IIU,IJU,IKU)
     IF( NHALO==1 ) CALL INIT_HALO2_ll(TZLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU)
   !
   !*       1.6   Initialise the 2nd layer of the halo of the LS fields
@@ -604,44 +604,6 @@ IF (KTCOUNT == 1) THEN
     IF ( LSTEADYLS .AND. NHALO==1 ) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll)
   END IF
   !
-  !        1.7  Initialize the list of fields (2nd layer) time t if 4th order
-!             advection schemes are used
-!
-   IF( CUVW_ADV_SCHEME == "CEN4TH" .AND. NHALO==1 ) THEN
-!
-      CALL ADD3DFIELD_ll(TZFIELDMT_ll, XUT)
-      CALL ADD3DFIELD_ll(TZFIELDMT_ll, XVT)
-      CALL ADD3DFIELD_ll(TZFIELDMT_ll, XWT)
-!
-      INBVAR = 3
-      IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,IIU,IJU,IKU)
-!
-   END IF
-!
-   IF( CMET_ADV_SCHEME == "CEN4TH" .AND. NHALO==1 ) THEN 
-!
-      CALL ADD3DFIELD_ll(TZFIELDT_ll, XTHT)
-      IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll(TZFIELDT_ll, XTKET)
-      DO JRR=1,NRR
-         CALL ADD3DFIELD_ll(TZFIELDT_ll, XRT(:,:,:,JRR))
-      ENDDO
-!
-      INBVAR = 1+NRR
-      IF (SIZE(XRTKES,1) /= 0) INBVAR=INBVAR+1
-      IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2T_ll,INBVAR,IIU,IJU,IKU)
-!
-   END IF
-!
-   IF( CSV_ADV_SCHEME == "CEN4TH" .AND. NHALO==1 ) THEN 
-!
-      DO JSV=1,NSV
-         CALL ADD3DFIELD_ll(TZFIELDSC_ll, XSVT(:,:,:,JSV))
-      ENDDO
-
-      INBVAR = NSV
-      IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2SC_ll,INBVAR,IIU,IJU,IKU)
-!
-   END IF
 !
   !
   XT_START = 0.0
@@ -652,6 +614,8 @@ IF (KTCOUNT == 1) THEN
   XT_FORCING   = 0.0
   XT_NUDGING   = 0.0
   XT_ADV       = 0.0
+  XT_ADVUVW    = 0.0
+  XT_GRAV      = 0.0
   XT_SOURCES   = 0.0
   !
   XT_DIFF      = 0.0
@@ -849,8 +813,7 @@ CALL BOUNDARIES (                                                   &
             XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,   &
             XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS,   &
             XRHODJ,                                                 &
-            XUM, XVM, XWM, XTHM, XTKEM, XRM, XSVM,XSRCM,            &
-            XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT                   )
+            XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -935,7 +898,7 @@ DO JOUT = 1,NOUT_NUMB
     !
     ! Reinitialize Lagragian variables at every model output
     IF (LLG .AND. LINIT_LG .AND. CINIT_LG=='FMOUT') THEN
-      CALL INI_LG(XXHAT,XYHAT,XZZ,XSVM,XSVT,XLBXSVM,XLBYSVM)
+      CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
       IF (NVERB>=5) THEN
         WRITE(UNIT=ILUOUT,FMT=*) '************************************'
         WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(YFMFILE),' output'
@@ -1004,12 +967,9 @@ XTIME_BU   = 0.0
 ZTIME1 = ZTIME2
 XTIME_BU_PROCESS = 0.
 !
-CALL INITIAL_GUESS ( NRR, NSV, KTCOUNT, XRHODJ,IMI,                         &
-                     XUM, XVM, XWM, XTHM, XRM, XTKEM, XSVM,                 &
-                     ZTSTEP_UVW, ZTSTEP_MET, ZTSTEP_SV,                     &
+CALL INITIAL_GUESS ( NRR, NSV, KTCOUNT, XRHODJ,IMI, XTSTEP,                 &
                      XRUS, XRVS, XRWS, XRTHS, XRRS, XRTKES, XRSVS,          &
-                     CMET_ADV_SCHEME,CSV_ADV_SCHEME, CUVW_ADV_SCHEME,       &
-                     XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT  )
+                     XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT )
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1022,7 +982,7 @@ XT_GUESS = XT_GUESS + ZTIME2 - ZTIME1 - XTIME_BU_PROCESS
 !
 XTIME_LES_BU   = 0.0
 XTIME_LES      = 0.0
-IF (LLES) CALL LES_INI_TIMESTEP_n(KTCOUNT,ZTSTEP_UVW,ZTSTEP_MET,ZTSTEP_SV)
+IF (LLES) CALL LES_INI_TIMESTEP_n(KTCOUNT)
 !
 !-------------------------------------------------------------------------------
 !
@@ -1039,13 +999,13 @@ GMASKkids(:,:)=.FALSE.
 IF (NMODEL>1) THEN
   ! correct an ifort bug
   DPTR_XRHODJ=>XRHODJ
-  DPTR_XUM=>XUM
-  DPTR_XVM=>XVM
-  DPTR_XWM=>XWM
-  DPTR_XTHM=>XTHM
-  DPTR_XRM=>XRM
-  DPTR_XTKEM=>XTKEM
-  DPTR_XSVM=>XSVM
+  DPTR_XUM=>XUT
+  DPTR_XVM=>XVT
+  DPTR_XWM=>XWT
+  DPTR_XTHM=>XTHT
+  DPTR_XRM=>XRT
+  DPTR_XTKEM=>XTKET
+  DPTR_XSVM=>XSVT
   DPTR_XRUS=>XRUS
   DPTR_XRVS=>XRVS
   DPTR_XRWS=>XRWS
@@ -1076,50 +1036,6 @@ CALL SECOND_MNH2(ZTIME2)
 XT_2WAY = XT_2WAY + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
 !
 !-------------------------------------------------------------------------------
-!
-!*       9.    ADVECTION
-!              ---------
-!
-ZTIME1 = ZTIME2
-XTIME_BU_PROCESS = 0.
-XTIME_LES_BU_PROCESS = 0.
-!
-IF (LNEUTRAL) XTHT=XTHT-XTHVREF
-!
-IF (CUVW_ADV_SCHEME == "CEN4TH" .AND. NHALO == 1 ) THEN
-   CALL UPDATE_HALO2_ll(TZFIELDMT_ll, TZHALO2MT_ll, IINFO_ll)
-ENDIF
-!
-IF (CMET_ADV_SCHEME == "CEN4TH" .AND. NHALO == 1 ) THEN
-   CALL UPDATE_HALO2_ll(TZFIELDT_ll,  TZHALO2T_ll,  IINFO_ll)
-ENDIF
-!
-IF (CSV_ADV_SCHEME == "CEN4TH" .AND. NHALO == 1 ) THEN
-   CALL UPDATE_HALO2_ll(TZFIELDSC_ll, TZHALO2SC_ll, IINFO_ll)
-ENDIF
-!
-CALL ADVECTION ( CUVW_ADV_SCHEME, CMET_ADV_SCHEME, CSV_ADV_SCHEME,   &
-                 NLITER, CLBCX, CLBCY,                               &
-                 NRR, NSV, KTCOUNT, ZTSTEP_MET, ZTSTEP_SV,           &
-                 XUM, XVM, XWM, XTHM, XRM, XTKEM, XSVM,              &
-                 XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT,              &
-                 XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY,               &
-                 XRUS, XRVS, XRWS, XRTHS, XRRS, XRTKES,              &
-                 XRSVS, TZHALO2MT_ll, TZHALO2T_ll, TZHALO2SC_ll      )
-!
-IF (LNEUTRAL) XTHT=XTHT+XTHVREF
-!
-IF (NMODEL_CLOUD==IMI .AND. CTURBLEN_CLOUD/='NONE') THEN
-  CALL TURB_CLOUD_INDEX(ZTSTEP_MET,YFMFILE,CLUOUT,                &
-                        LTURB_DIAG,GCLOSE_OUT,NRRI,               &
-                        XRRS,XRM,XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY, &
-                        XCEI )
-END IF
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-XT_ADV = XT_ADV + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
-!
 !-------------------------------------------------------------------------------
 !
 !*       10.    FORCING
@@ -1131,18 +1047,17 @@ XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
 IF ( LFORCING ) THEN
-  CALL FORCING(XTSTEP, ZTSTEP_UVW,LUSERV,XRHODJ,XCORIOZ,XZHAT,XZZ,TDTCUR,&
+  CALL FORCING(XTSTEP,LUSERV,XRHODJ,XCORIOZ,XZHAT,XZZ,TDTCUR,&
                XUFRC_PAST, XVFRC_PAST,                &
                XUT,XVT,XWT,XTHT,XTKET,XRT,XSVT,       &
-               XUM,XVM,XWM,XTHM,XTKEM,XRM,XSVM,       &
                XRUS,XRVS,XRWS,XRTHS,XRTKES,XRRS,XRSVS,IMI)
 END IF
 !
 IF ( L2D_ADV_FRC ) THEN 
-  CALL ADV_FORCING_n(XRHODJ,TDTCUR,XTHM,XRM,XZZ,XRTHS,XRRS)
+  CALL ADV_FORCING_n(XRHODJ,TDTCUR,XTHT,XRT,XZZ,XRTHS,XRRS)
 END IF
 IF ( L2D_REL_FRC ) THEN 
-  CALL REL_FORCING_n(XRHODJ,TDTCUR,XTHM,XRM,XZZ,XRTHS,XRRS)
+  CALL REL_FORCING_n(XRHODJ,TDTCUR,XTHT,XRT,XZZ,XRTHS,XRRS)
 END IF
 !
 CALL SECOND_MNH2(ZTIME2)
@@ -1162,7 +1077,7 @@ XTIME_LES_BU_PROCESS = 0.
 !
 IF ( LNUDGING ) THEN
   CALL NUDGING(LUSERV,XRHODJ,XTNUDGING,         &
-               XUM,XVM,XWM,XTHM,XRM,            &
+               XUT,XVT,XWT,XTHT,XRT,            &
                XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM, &
                XRUS,XRVS,XRWS,XRTHS,XRRS)
 
@@ -1187,7 +1102,7 @@ IF( LTRANS ) THEN
   XVT(:,:,:) = XVT(:,:,:) + XVTRANS
 END IF
 !
-CALL DYN_SOURCES( NRR,NRRL, NRRI,IMI,                           &
+CALL DYN_SOURCES( NRR,NRRL, NRRI,                              &
                   XUT, XVT, XWT, XTHT, XRT,                    &
                   XCORIOX, XCORIOY, XCORIOZ, XCURVX, XCURVY,   &
                   XRHODJ, XZZ, XTHVREF, XEXNREF,               &
@@ -1215,16 +1130,16 @@ XTIME_LES_BU_PROCESS = 0.
 IF ( LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV ) THEN
 !
   IF( NHALO==1 ) THEN
-    CALL UPDATE_HALO2_ll(TZFIELDM_ll, TZHALO2M_ll, IINFO_ll)
+    CALL UPDATE_HALO2_ll(TZFIELDT_ll, TZHALO2T_ll, IINFO_ll)
     IF ( .NOT. LSTEADYLS) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll)
   ENDIF
   CALL NUM_DIFF ( CLBCX, CLBCY, NRR, NSV,                               &
                   XDK2U, XDK4U, XDK2TH, XDK4TH, XDK2SV, XDK4SV, IMI,    &
-                  XUM, XVM, XWM, XTHM, XTKEM, XRM, XSVM,                &
+                  XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT,                &
                   XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XRHODJ,               &
                   XRUS, XRVS, XRWS, XRTHS, XRTKES, XRRS, XRSVS,         &
                   LZDIFFU,LNUMDIFU, LNUMDIFTH, LNUMDIFSV,               &
-                  TZHALO2M_ll, TZLSHALO2_ll,XZDIFFU_HALO2      )
+                  TZHALO2T_ll, TZLSHALO2_ll,XZDIFFU_HALO2      )
 END IF
 !
 DO JSV = NSV_CHEMBEG,NSV_CHEMEND
@@ -1277,7 +1192,7 @@ ZTIME1 = ZTIME2
 XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
-IF(LVE_RELAX .OR. LVE_RELAX_GRD .OR. LHORELAX_UVWTH .OR. LHORELAX_RV .OR.                   &
+IF(LVE_RELAX .OR. LVE_RELAX_GRD .OR. LHORELAX_UVWTH .OR. LHORELAX_RV .OR.&
    LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI .OR. LHORELAX_RS .OR.   &
    LHORELAX_RG .OR. LHORELAX_RH .OR. LHORELAX_TKE .OR.                   &
    ANY(LHORELAX_SV)) THEN
@@ -1289,7 +1204,7 @@ IF(LVE_RELAX .OR. LVE_RELAX_GRD .OR. LHORELAX_UVWTH .OR. LHORELAX_RV .OR.
                    LHORELAX_SVCHEM,LHORELAX_SVCHIC,LHORELAX_SVAER,     &
                    LHORELAX_SVDST,LHORELAX_SVSLT,LHORELAX_SVPP,        &
                    LHORELAX_SVCS, KTCOUNT,NRR,NSV,XTSTEP,XRHODJ,       &
-                   XUM, XVM, XWM, XTHM, XRM, XSVM, XTKEM,              &
+                   XUT, XVT, XWT, XTHT, XRT, XSVT, XTKET,              &
                    XLSUM, XLSVM, XLSWM, XLSTHM,                        &
                    XLBXUM, XLBXVM, XLBXWM, XLBXTHM,                    &
                    XLBXRM, XLBXSVM, XLBXTKEM,                          &
@@ -1303,7 +1218,7 @@ IF(LVE_RELAX .OR. LVE_RELAX_GRD .OR. LHORELAX_UVWTH .OR. LHORELAX_RV .OR.
 END IF
 
 IF (CELEC.NE.'NONE' .AND. LRELAX2FW_ION) THEN
-   CALL RELAX2FW_ION (KTCOUNT, IMI, XTSTEP, XRHODJ, XSVM, NALBOT,      &
+   CALL RELAX2FW_ION (KTCOUNT, IMI, XTSTEP, XRHODJ, XSVT, NALBOT,      &
                       XALK, LMASK_RELAX, XKWRELAX, XRSVS )   
 END IF                      
 !
@@ -1329,16 +1244,16 @@ IF ( LNETCDF .AND. GCLOSE_OUT ) THEN
   DEF_NC=.FALSE.
   LLFIFM = .TRUE.
 END IF
-CALL PHYS_PARAM_n(KTCOUNT,ZTSTEP_UVW,ZTSTEP_MET,ZTSTEP_SV,YFMFILE,           &
-                  GCLOSE_OUT,CUVW_ADV_SCHEME,CMET_ADV_SCHEME,CSV_ADV_SCHEME, &
-                  XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL,XT_DRAG,      & 
-                  XT_TURB,XT_TRACER,XT_CHEM,ZTIME,GMASKkids)
+CALL PHYS_PARAM_n(KTCOUNT,YFMFILE, GCLOSE_OUT,                        &
+                  XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL,       &
+                  XT_DRAG,XT_TURB,XT_TRACER,                          &
+                  XT_CHEM,ZTIME,GMASKkids)
 DEF_NC=.TRUE.
 #else
-CALL PHYS_PARAM_n(KTCOUNT,ZTSTEP_UVW,ZTSTEP_MET,ZTSTEP_SV,YFMFILE,           &
-                  GCLOSE_OUT,CUVW_ADV_SCHEME,CMET_ADV_SCHEME,CSV_ADV_SCHEME, &
-                  XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL,XT_DRAG,      & 
-                  XT_TURB,XT_TRACER,XT_CHEM,ZTIME,GMASKkids)
+CALL PHYS_PARAM_n(KTCOUNT,YFMFILE, GCLOSE_OUT,                        &
+                  XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL,       &
+                  XT_DRAG,XT_TURB,XT_TRACER,                          &
+                  XT_CHEM,ZTIME,GMASKkids)
 #endif                  
 !
 IF (CDCONV/='NONE') THEN
@@ -1405,9 +1320,9 @@ IF (.NOT. LSTEADYLS) THEN
       NCPL_CUR=NCPL_CUR+1         ! coupling one, LS sources are refreshed
       !
       CALL LS_COUPLING(CLUOUT,XTSTEP,GSTEADY_DMASS,CCONF,                   &
-             CGETTKEM,                                                      &
-             CGETRVM,CGETRCM,CGETRRM,CGETRIM,                               &
-             CGETRSM,CGETRGM,CGETRHM,CGETSVM,LCH_INIT_FIELD,NSV,            &
+             CGETTKET,                                                      &
+             CGETRVT,CGETRCT,CGETRRT,CGETRIT,                               &
+             CGETRST,CGETRGT,CGETRHT,CGETSVT,LCH_INIT_FIELD, NSV,           &
              NIMAX_ll,NJMAX_ll,                                             &
              NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,             &
              NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                 &
@@ -1473,17 +1388,124 @@ XT_COUPL = XT_COUPL + ZTIME2 - ZTIME1
 !
 !-------------------------------------------------------------------------------
 !
+!
+!*       9.    ADVECTION
+!              ---------
+!
+ZTIME1 = ZTIME2
+XTIME_BU_PROCESS = 0.
+XTIME_LES_BU_PROCESS = 0.
+!
+!
+!
+ CALL ADVECTION_METSV ( CLUOUT, YFMFILE, GCLOSE_OUT,CUVW_ADV_SCHEME, &
+                 CMET_ADV_SCHEME, CSV_ADV_SCHEME, NSPLIT,            &
+                 LSPLIT_CFL, XSPLIT_CFL, LCFL_WRIT,                  &
+                 CLBCX, CLBCY, NRR, NSV, KTCOUNT, XTSTEP,            &
+                 XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT,              &
+                 XTHVREF, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY,      &
+                 XRTHS, XRRS, XRTKES, XRSVS,                         &
+                 XRTHS_CLD, XRRS_CLD, XRSVS_CLD, XRTKEMS             )
+!
+CALL SECOND_MNH2(ZTIME2)
+!
+XT_ADV = XT_ADV + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
+!
+ZTIME1 = ZTIME2
+XTIME_BU_PROCESS = 0.
+XTIME_LES_BU_PROCESS = 0.
+!
+ZRWS = XRWS
+!
+CALL GRAVITY_IMPL ( CLBCX, CLBCY, NRR, NRRL, NRRI,XTSTEP,            &
+                 XTHT, XRT, XTHVREF, XRHODJ, XRWS, XRTHS, XRRS,      &
+                 XRTHS_CLD, XRRS_CLD                                 )   
+!
+! At the initial instant the difference with the ref state creates a 
+! vertical velocity production that must not be advected as it is 
+! compensated by the pressure gradient
+!
+IF (KTCOUNT == 1 .AND. CCONF=='START') XRWS_PRES = - (XRWS - ZRWS) 
+!
+CALL SECOND_MNH2(ZTIME2)
+!
+XT_GRAV = XT_GRAV + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
+! 
+ZTIME1 = ZTIME2
+XTIME_BU_PROCESS = 0.
+XTIME_LES_BU_PROCESS = 0.
+!
+IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN
+  IF (NHALO==1 .AND. CUVW_ADV_SCHEME=='CEN4TH') THEN
+    NULLIFY(TZFIELDC_ll)
+    NULLIFY(TZHALO2C_ll)
+      CALL ADD3DFIELD_ll(TZFIELDC_ll, XUT)
+      CALL ADD3DFIELD_ll(TZFIELDC_ll, XVT)
+      CALL ADD3DFIELD_ll(TZFIELDC_ll, XWT)
+      CALL INIT_HALO2_ll(TZHALO2C_ll,3,IIU,IJU,IKU)
+      CALL UPDATE_HALO_ll(TZFIELDC_ll,IINFO_ll)
+      CALL UPDATE_HALO2_ll(TZFIELDC_ll, TZHALO2C_ll, IINFO_ll)
+  END IF
+ CALL ADVECTION_UVW_CEN(CUVW_ADV_SCHEME,                &
+                           CLBCX, CLBCY,                           &
+                           XTSTEP, KTCOUNT,                        &
+                           XUM, XVM, XWM, XDUM, XDVM, XDWM,        &
+                           XUT, XVT, XWT,                          &
+                           XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY,   &
+                           XRUS,XRVS, XRWS,                        &
+                           TZHALO2C_ll                             )
+  IF (NHALO==1 .AND. CUVW_ADV_SCHEME=='CEN4TH') THEN
+    CALL CLEANLIST_ll(TZFIELDC_ll)
+    NULLIFY(TZFIELDC_ll)
+    CALL  DEL_HALO2_ll(TZHALO2C_ll)
+    NULLIFY(TZHALO2C_ll)
+  END IF
+ELSE
+
+  CALL ADVECTION_UVW(CUVW_ADV_SCHEME, CTEMP_SCHEME,                  &
+                 NWENO_ORDER, NSPLIT,                                &
+                 CLBCX, CLBCY, XTSTEP,                               &
+                 XUT, XVT, XWT,                                      &
+                 XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY,               &
+                 XRUS, XRVS, XRWS,                                   &
+                 XRUS_PRES, XRVS_PRES, XRWS_PRES                     )
+END IF
+!
+!
+CALL SECOND_MNH2(ZTIME2)
+!
+XT_ADVUVW = XT_ADVUVW + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
+!
+!-------------------------------------------------------------------------------
+!
+IF (NMODEL_CLOUD==IMI .AND. CTURBLEN_CLOUD/='NONE') THEN
+  CALL TURB_CLOUD_INDEX(XTSTEP,YFMFILE,CLUOUT,                    &
+                        LTURB_DIAG,GCLOSE_OUT,NRRI,               &
+                        XRRS,XRT,XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY, &
+                        XCEI )
+END IF
+!
+!-------------------------------------------------------------------------------
+!
 !*       18.    LATERAL BOUNDARY CONDITION FOR THE NORMAL VELOCITY
 !               --------------------------------------------------
 !
 ZTIME1 = ZTIME2
+!
+ZRUS=XRUS
+ZRVS=XRVS
+ZRWS=XRWS
 !
   CALL RAD_BOUND (CLBCX,CLBCY,CTURB,XRIMKMAX,            &
-                ZTSTEP_UVW, XDXHAT, XDYHAT, XZHAT,       &
-                XUM, XVM, XUT, XVT,                      &
+                XTSTEP,                                  &
+                XDXHAT, XDYHAT, XZHAT,                   &
+                XUT, XVT,                                &
                 XLBXUM, XLBYVM, XLBXUS, XLBYVS,          &
                 XCPHASE, XCPHASE_PBL, XRHODJ,            &
-                XTKEM,XRUS, XRVS, XRWS                   )
+                XTKET,XRUS, XRVS, XRWS                   )
+ZRUS=XRUS-ZRUS
+ZRVS=XRVS-ZRVS
+ZRWS=XRWS-ZRWS
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1500,15 +1522,25 @@ XTIME_LES_BU_PROCESS = 0.
 !
 !
 IF(.NOT. L1D) THEN
-  CALL PRESSUREZ (CLUOUT,                           &
+!
+  XRUS_PRES = XRUS
+  XRVS_PRES = XRVS
+  XRWS_PRES = XRWS
+!
+  CALL PRESSUREZ( CLUOUT,                                                &
                   CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,KTCOUNT, XRELAX,IMI, &
                   XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY,XDXHATM,XDYHATM,XRHOM, &
-                  XAF,XBFY,XCF,XTRIGSX,XTRIGSY,NIFAXX,NIFAXY,XPABSM,     &
+                  XAF,XBFY,XCF,XTRIGSX,XTRIGSY,NIFAXX,NIFAXY,            &
                   NRR,NRRL,NRRI,XDRYMASST,XREFMASS,XMASS_O_PHI0,         &
                   XTHT,XRT,XRHODREF,XTHVREF,XRVREF,XEXNREF, XLINMASS,    &
                   XRUS, XRVS, XRWS, XPABST,                              &
                   XBFB,&
                   XBF_SXP2_YP1_Z) !JUAN Z_SPLITING
+!
+  XRUS_PRES = XRUS - XRUS_PRES + ZRUS
+  XRVS_PRES = XRVS - XRVS_PRES + ZRVS
+  XRWS_PRES = XRWS - XRWS_PRES + ZRWS
+!
 END IF
 !
 CALL SECOND_MNH2(ZTIME2)
@@ -1540,6 +1572,9 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
     ZWT_ACT_NUC(:,:,:) = 0.
   END IF
 !
+  XRTHS_CLD  = XRTHS
+  XRRS_CLD   = XRRS
+  XRSVS_CLD  = XRSVS
   IF (CSURF=='EXTE') THEN
     ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2)))
     ALLOCATE (ZTOWN(SIZE(XRHODJ,1),SIZE(XRHODJ,2)))
@@ -1552,13 +1587,12 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
                           NSPLITG, IMI, KTCOUNT,                               &
                           CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM,         &
-                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,ZTSTEP_MET,&
-                          XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF,               &
-                          XPABSM, XPABST, XTHM, XTHT,XRM,XRT,XSIGS,VSIGQSAT,   &
-                          XMFCONV,                                             &
-                          ZWT_ACT_NUC, XRTHS, XRRS,                            &
-                          XSVM, XSVT, XRSVS,                                   &
-                          XSRCM, XCLDFR,XCIT,                                  &
+                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,XTSTEP,    &
+                          XZZ, XRHODJ, XRHODREF, XEXNREF,                      &
+                          XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
+                          XPABSM, ZWT_ACT_NUC, XRTHS, XRRS,                    &
+                          XSVT, XRSVS,                                         &
+                          XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,   &
                           XCF_MF,XRC_MF, XRI_MF,                               &
                           XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
@@ -1568,13 +1602,12 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
                           NSPLITG, IMI, KTCOUNT,                               &
                           CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM,         &
-                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,ZTSTEP_MET,&
-                          XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF,               &
-                          XPABSM, XPABST, XTHM, XTHT,XRM,XRT,XSIGS,VSIGQSAT,   &
-                          XMFCONV,                                             &
-                          ZWT_ACT_NUC, XRTHS, XRRS,                            &
-                          XSVM, XSVT, XRSVS,                                   &
-                          XSRCM, XCLDFR,XCIT,                                  &
+                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,XTSTEP,    &
+                          XZZ, XRHODJ, XRHODREF, XEXNREF,                      &
+                          XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
+                          XPABSM, ZWT_ACT_NUC, XRTHS, XRRS,                    &
+                          XSVT, XRSVS,                                         &
+                          XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,   &
                           XCF_MF,XRC_MF, XRI_MF,                               &
                           XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
@@ -1588,13 +1621,12 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
                           NSPLITG, IMI, KTCOUNT,                               &
                           CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM,         &
-                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,ZTSTEP_MET,&
+                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,           &
                           XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF,               &
-                          XPABSM, XPABST, XTHM, XTHT,XRM,XRT,XSIGS,VSIGQSAT,   &
-                          XMFCONV,                                             &
-                          ZWT_ACT_NUC, XRTHS, XRRS,                            &
-                          XSVM, XSVT, XRSVS,                                   &
-                          XSRCM, XCLDFR,XCIT,                                  &
+                          XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
+                          XPABSM, ZWT_ACT_NUC, XRTHS, XRRS,                    &
+                          XSVT, XRSVS,                                         &
+                          XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC, LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,  &
                           XCF_MF,XRC_MF, XRI_MF,                               &
                           XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
@@ -1604,19 +1636,21 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
                           NSPLITG, IMI, KTCOUNT,                               &
                           CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM,         &
-                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,ZTSTEP_MET,&
+                          GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,           &
                           XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF,               &
-                          XPABSM, XPABST, XTHM, XTHT,XRM,XRT,XSIGS,VSIGQSAT,   &
-                          XMFCONV,                                             &
-                          ZWT_ACT_NUC, XRTHS, XRRS,                            &
-                          XSVM, XSVT, XRSVS,                                   &
-                          XSRCM, XCLDFR,XCIT,                                  &
+                          XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
+                          XPABSM, ZWT_ACT_NUC, XRTHS, XRRS,                    &
+                          XSVT, XRSVS,                                         &
+                          XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC, LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,  &
                           XCF_MF,XRC_MF, XRI_MF,                               &
                           XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
                           XINPRS, XINPRG, XINPRH, XSOLORG, XMI                 )
 #endif
   END IF
+  XRTHS_CLD  = XRTHS - XRTHS_CLD
+  XRRS_CLD   = XRRS  - XRRS_CLD
+  XRSVS_CLD  = XRSVS - XRSVS_CLD
 !
   IF (CCLOUD /= 'REVE' ) THEN
     XACPRR = XACPRR + XINPRR * XTSTEP
@@ -1652,6 +1686,9 @@ XTIME_LES_BU_PROCESS = 0.
 IF (CELEC /= 'NONE' .AND. (CCLOUD(1:3) == 'ICE')) THEN
   ZWT_ACT_NUC(:,:,:) = 0.
 !
+  XRTHS_CLD = XRTHS
+  XRRS_CLD  = XRRS
+  XRSVS_CLD = XRRS
   IF (CSURF=='EXTE') THEN
     ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2)))
     ALLOCATE (ZTOWN(SIZE(XRHODJ,1),SIZE(XRHODJ,2)))
@@ -1659,14 +1696,13 @@ IF (CELEC /= 'NONE' .AND. (CCLOUD(1:3) == 'ICE')) THEN
     ZTOWN(:,:)= 0.
     CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:))
     CALL RESOLVED_ELEC_n (CCLOUD, CSCONV, CMF_CLOUD,                     &
-                          NRR, NSPLITR, IMI, KTCOUNT,CUVW_ADV_SCHEME,    &
+                          NRR, NSPLITR, IMI, KTCOUNT,                    &
                           CLBCX, CLBCY, YFMFILE, CLUOUT, CRAD, CTURBDIM, &
                           GCLOSE_OUT, LSUBG_COND, LSIGMAS,VSIGQSAT,CSUBG_AUCV,   &
-                          ZTSTEP_MET, XZZ, XRHODJ, XRHODREF, XEXNREF,    &
-                          XPABSM, XPABST, XTHM, XTHT, XRTHS, XWT,        &
-                          XRM, XRT, XRRS,                                &
-                          XSVM, XSVT, XRSVS, XCIT,                       &
-                          XSIGS, XSRCM, XCLDFR, XMFCONV, XCF_MF, XRC_MF, &
+                          XTSTEP, XZZ, XRHODJ, XRHODREF, XEXNREF,        &
+                          XPABST, XTHT, XRTHS, XWT,  XRT, XRRS,          &
+                          XSVT, XRSVS, XCIT,                             &
+                          XSIGS, XSRCT, XCLDFR, XMFCONV, XCF_MF, XRC_MF, &
                           XRI_MF, LSEDIC, LWARM,                         &
                           XINPRC, XINPRR, XINPRR3D, XEVAP3D,             &
                           XINPRS, XINPRG, XINPRH,                        &
@@ -1674,18 +1710,20 @@ IF (CELEC /= 'NONE' .AND. (CCLOUD(1:3) == 'ICE')) THEN
     DEALLOCATE(ZTOWN)
   ELSE
     CALL RESOLVED_ELEC_n (CCLOUD, CSCONV, CMF_CLOUD,                     &
-                          NRR, NSPLITR, IMI, KTCOUNT,CUVW_ADV_SCHEME,    &
+                          NRR, NSPLITR, IMI, KTCOUNT,                    &
                           CLBCX, CLBCY, YFMFILE, CLUOUT, CRAD, CTURBDIM, &
                           GCLOSE_OUT, LSUBG_COND, LSIGMAS,VSIGQSAT, CSUBG_AUCV,   &
-                          ZTSTEP_MET, XZZ, XRHODJ, XRHODREF, XEXNREF,    &
-                          XPABSM, XPABST, XTHM, XTHT, XRTHS, XWT,        &
-                          XRM, XRT, XRRS,                                &
-                          XSVM, XSVT, XRSVS, XCIT,                       &
-                          XSIGS, XSRCM, XCLDFR, XMFCONV, XCF_MF, XRC_MF, &
+                          XTSTEP, XZZ, XRHODJ, XRHODREF, XEXNREF,        &
+                          XPABST, XTHT, XRTHS, XWT,                      &
+                          XRT, XRRS, XSVT, XRSVS, XCIT,                  &
+                          XSIGS, XSRCT, XCLDFR, XMFCONV, XCF_MF, XRC_MF, &
                           XRI_MF, LSEDIC, LWARM,                         &
                           XINPRC, XINPRR, XINPRR3D, XEVAP3D,             &
                           XINPRS, XINPRG, XINPRH                         )
   END IF
+  XRTHS_CLD = XRTHS - XRTHS_CLD
+  XRRS_CLD  = XRRS  - XRRS_CLD
+  XRSVS_CLD = XRSVS - XRSVS_CLD
 !
   XACPRR = XACPRR + XINPRR * XTSTEP
   IF ((CCLOUD(1:3) == 'ICE' .AND. LSEDIC)) & 
@@ -1721,8 +1759,7 @@ XT_SPECTRA = XT_SPECTRA + ZTIME2 - ZTIME1 + XTIME_LES_BU + XTIME_LES
 !               --------------------
 !
 IF (LMEAN_FIELD) THEN
-   CALL MEAN_FIELD(XUM, XVM, XWM, XTHM, XTKEM, XPABSM,&
-   XUT, XVT, XWT, XTHT, XPABST,KTCOUNT,ZTSTEP_UVW)
+   CALL MEAN_FIELD(XUT, XVT, XWT, XTHT, XTKET, XPABST)
 END IF
 !
 !-------------------------------------------------------------------------------
@@ -1732,7 +1769,7 @@ END IF
 !
 ZTIME1 = ZTIME2
 !
-CALL EXCHANGE (ZTSTEP_UVW,ZTSTEP_MET,ZTSTEP_SV,NRR,NSV,XRHODJ,TZFIELDS_ll, &
+CALL EXCHANGE (XTSTEP,NRR,NSV,XRHODJ,TZFIELDS_ll,     &
                XRUS, XRVS,XRWS,XRTHS,XRRS,XRTKES,XRSVS)
 !
 CALL SECOND_MNH2(ZTIME2)
@@ -1747,8 +1784,8 @@ XT_HALO = XT_HALO + ZTIME2 - ZTIME1
 ZTIME1 = ZTIME2
 XTIME_BU_PROCESS = 0.
 !
-CALL ENDSTEP  ( XTSTEP,ZTSTEP_UVW,ZTSTEP_MET,ZTSTEP_SV,   &
-                NRR,NSV,KTCOUNT,IMI,XRHODJ,               &
+CALL ENDSTEP  ( XTSTEP,NRR,NSV,KTCOUNT,IMI,               &
+                CUVW_ADV_SCHEME,XRHODJ,                   &
                 XRUS,XRVS,XRWS,XDRYMASSS,                 &
                 XRTHS,XRRS,XRTKES,XRSVS,                  &
                 XLSUS,XLSVS,XLSWS,                        &
@@ -1757,17 +1794,15 @@ CALL ENDSTEP  ( XTSTEP,ZTSTEP_UVW,ZTSTEP_MET,ZTSTEP_SV,   &
                 XLBXTHS,XLBXRS,XLBXTKES,XLBXSVS,          &
                 XLBYUS,XLBYVS,XLBYWS,                     &
                 XLBYTHS,XLBYRS,XLBYTKES,XLBYSVS,          &
-                XUM,XVM,XWM,XPABSM,                       &
-                XTHM,XRM,XTKEM,XSVM,XSRCM,                &
+                XUM,XVM,XWM,                              &
                 XUT,XVT,XWT,XPABST,XDRYMASST,             &
-                XTHT, XRT, XTKET, XSVT,XSRCT,             &
+                XTHT, XRT, XTHM, XRCM, XPABSM,XTKET, XSVT,&
                 XLSUM,XLSVM,XLSWM,                        &
                 XLSTHM,XLSRVM,                            &
                 XLBXUM,XLBXVM,XLBXWM,                     &
                 XLBXTHM,XLBXRM,XLBXTKEM,XLBXSVM,          &
                 XLBYUM,XLBYVM,XLBYWM,                     &
-                XLBYTHM,XLBYRM,XLBYTKEM,XLBYSVM,          &
-                CMET_ADV_SCHEME, CSV_ADV_SCHEME           )
+                XLBYTHM,XLBYRM,XLBYTKEM,XLBYSVM           )
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1832,8 +1867,7 @@ CALL END_DIAG_IN_RUN
 ZTIME1 = ZTIME2
 !
 IF (NBUMOD==IMI .AND. CBUTYPE/='NONE') THEN
-  CALL ENDSTEP_BUDGET(CFMDIAC,CLUOUT,KTCOUNT,TDTCUR,TDTMOD,XTSTEP, &
-                      ZTSTEP_UVW,ZTSTEP_MET,ZTSTEP_SV,NSV )
+  CALL ENDSTEP_BUDGET(CFMDIAC,CLUOUT,KTCOUNT,TDTCUR,TDTMOD,XTSTEP,NSV)
 END IF
 !
 CALL SECOND_MNH2(ZTIME2)
@@ -1853,7 +1887,7 @@ END IF
 !-------------------------------------------------------------------------------
 !
 !*       27.    CURRENT TIME REFRESH
-!               -------------------
+!               --------------------
 !
 TDTCUR%TIME=TDTCUR%TIME + XTSTEP
 CALL ADD_FORECAST_TO_DATE(TDTCUR%TDATE%YEAR, &
@@ -1941,7 +1975,9 @@ IF (OEXIT) THEN
     CALL TIME_STAT_ll(TIMEZ%T_WRIT2D_ALL ,ZTOT,    '   W2D_ALL ','-')
   CALL TIME_STAT_ll(XT_GUESS,ZTOT,      ' INITIAL_GUESS','=')
   CALL TIME_STAT_ll(XT_2WAY,ZTOT,       ' TWO WAY','=')
-  CALL TIME_STAT_ll(XT_ADV,ZTOT,        ' ADVECTION','=')
+  CALL TIME_STAT_ll(XT_ADV,ZTOT,        ' ADVECTION MET','=')
+  CALL TIME_STAT_ll(XT_ADVUVW,ZTOT,     ' ADVECTION UVW','=')
+  CALL TIME_STAT_ll(XT_GRAV,ZTOT,       ' GRAVITY','=')
   CALL TIME_STAT_ll(XT_FORCING,ZTOT,    ' FORCING','=')
   CALL TIME_STAT_ll(XT_NUDGING,ZTOT,    ' NUDGING','=')
   CALL TIME_STAT_ll(XT_SOURCES,ZTOT,    ' DYN_SOURCES','=')
@@ -1986,6 +2022,7 @@ IF (OEXIT) THEN
   !
   ZALL   = XT_1WAY + XT_BOUND   + XT_STORE   + XT_GUESS    +  XT_2WAY   + &
            XT_ADV  + XT_FORCING + XT_NUDGING + XT_SOURCES  +  XT_DIFF   + &
+           XT_ADVUVW  + XT_GRAV +                                         &
            XT_RELAX+ XT_PARAM   + XT_COUPL   + XT_RAD_BOUND+XT_PRESS    + &
            XT_CLOUD+  XT_HALO   + XT_SPECTRA + XT_STEP_SWA +XT_STEP_MISC+ &
            XT_STEP_BUD
diff --git a/src/MNH/modn_advn.f90 b/src/MNH/modn_advn.f90
index e6df66b7c..49d9807df 100644
--- a/src/MNH/modn_advn.f90
+++ b/src/MNH/modn_advn.f90
@@ -27,9 +27,11 @@
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!      Original    23/10/95  (Vila, Lafore) Implementation scalar advection scheme
-!!      C.Lac       24/04/06  Introduction of CUVW_ADV_SCHEME and
-!!                            removal of CFV_ADV_SCHEME
+!!      Original     23/10/95  (Vila, lafore) For new scalar advection schemes
+!!      C.Lac        24/04/06  Introduction of CUVW_ADV_SCHEME and
+!!                             removal of CFV_ADV_SCHEME
+!!      J.-P. Pinty  20/03/10  Add NWENO_ORDER
+!!      C.Lac, V.Masson        Add CTEMP_SCHEME and time splitting
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -39,16 +41,25 @@ USE MODD_ADV_n, ONLY: &
          CUVW_ADV_SCHEME_n => CUVW_ADV_SCHEME, &
          CMET_ADV_SCHEME_n => CMET_ADV_SCHEME, &
          CSV_ADV_SCHEME_n => CSV_ADV_SCHEME, &
-         NLITER_n => NLITER
+         CTEMP_SCHEME_n => CTEMP_SCHEME, &
+         NWENO_ORDER_n => NWENO_ORDER, &
+         LSPLIT_CFL_n => LSPLIT_CFL, &
+         LCFL_WRIT_n => LCFL_WRIT, &
+         XSPLIT_CFL_n => XSPLIT_CFL
 !
 IMPLICIT NONE
 !
 CHARACTER(LEN=6)  :: CUVW_ADV_SCHEME
 CHARACTER(LEN=6)  :: CMET_ADV_SCHEME
 CHARACTER(LEN=6)  :: CSV_ADV_SCHEME
-INTEGER  :: NLITER
+CHARACTER(LEN=4)  :: CTEMP_SCHEME
+INTEGER  :: NWENO_ORDER
+LOGICAL  :: LSPLIT_CFL     
+LOGICAL  :: LCFL_WRIT     
+REAL     :: XSPLIT_CFL     
 !
-NAMELIST/NAM_ADVn/CUVW_ADV_SCHEME,CMET_ADV_SCHEME,CSV_ADV_SCHEME,NLITER
+NAMELIST/NAM_ADVn/CUVW_ADV_SCHEME,CMET_ADV_SCHEME,CSV_ADV_SCHEME,CTEMP_SCHEME, &
+                  NWENO_ORDER,LSPLIT_CFL,XSPLIT_CFL,LCFL_WRIT             
 !
 CONTAINS
 !
@@ -56,14 +67,22 @@ SUBROUTINE INIT_NAM_ADVn
   CUVW_ADV_SCHEME = CUVW_ADV_SCHEME_n
   CMET_ADV_SCHEME = CMET_ADV_SCHEME_n
   CSV_ADV_SCHEME = CSV_ADV_SCHEME_n
-  NLITER = NLITER_n
+  CTEMP_SCHEME = CTEMP_SCHEME_n
+  NWENO_ORDER = NWENO_ORDER_n
+  LSPLIT_CFL = LSPLIT_CFL_n
+  LCFL_WRIT = LCFL_WRIT_n
+  XSPLIT_CFL = XSPLIT_CFL_n
 END SUBROUTINE INIT_NAM_ADVn
 
 SUBROUTINE UPDATE_NAM_ADVn
   CUVW_ADV_SCHEME_n = CUVW_ADV_SCHEME
   CMET_ADV_SCHEME_n = CMET_ADV_SCHEME
   CSV_ADV_SCHEME_n = CSV_ADV_SCHEME
-  NLITER_n = NLITER
+  CTEMP_SCHEME_n = CTEMP_SCHEME
+  NWENO_ORDER_n = NWENO_ORDER
+  LSPLIT_CFL_n = LSPLIT_CFL      
+  LCFL_WRIT_n = LCFL_WRIT      
+  XSPLIT_CFL_n = XSPLIT_CFL      
 END SUBROUTINE UPDATE_NAM_ADVn
 
 END MODULE MODN_ADV_n
diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90
index 0410d481f..ecc42f680 100644
--- a/src/MNH/modn_budget.f90
+++ b/src/MNH/modn_budget.f90
@@ -233,59 +233,57 @@ IMPLICIT NONE
 NAMELIST/NAM_BUDGET/CBUTYPE, NBUMOD, XBULEN, NBUKL, NBUKH, LBU_KCP, XBUWRI, &
                     NBUIL, NBUIH, NBUJL, NBUJH, LBU_ICP, LBU_JCP, NBUMASK 
 !
-NAMELIST/NAM_BU_RU/LBU_RU, NASSEU, NNESTU, NADVXU, NADVYU, NADVZU, NFRCU, NNUDU, &
+NAMELIST/NAM_BU_RU/LBU_RU, NASSEU, NNESTU, NADVU, NFRCU, NNUDU, &
                    NCURVU, NCORU, NDIFU, NRELU, NDRAGU, NHTURBU, NVTURBU, NMAFLU, NPRESU  
 !
-NAMELIST/NAM_BU_RV/LBU_RV, NASSEV, NNESTV, NADVXV, NADVYV, NADVZV, NFRCV, NNUDV, &
+NAMELIST/NAM_BU_RV/LBU_RV, NASSEV, NNESTV, NADVV, NFRCV, NNUDV, &
                    NCURVV, NCORV, NDIFV, NRELV, NDRAGV, NHTURBV, NVTURBV, NMAFLV, NPRESV  
 
-NAMELIST/NAM_BU_RW/LBU_RW, NASSEW, NNESTW, NADVXW, NADVYW, NADVZW, NFRCW, NNUDW, &
+NAMELIST/NAM_BU_RW/LBU_RW, NASSEW, NNESTW, NADVW, NFRCW, NNUDW, &
                    NCURVW, NCORW, NGRAVW, NDIFW, NRELW, NHTURBW, NVTURBW, NPRESW
 !
-NAMELIST/NAM_BU_RTH/LBU_RTH, NASSETH, NNESTTH, NADVTH, NADVXTH, NADVYTH, NADVZTH, NFRCTH, &
-                   N2DADVTH,N2DRELTH, &                   
+NAMELIST/NAM_BU_RTH/LBU_RTH, NASSETH, NNESTTH, NADVTH, NFRCTH, &
                    NNUDTH, NPREFTH, NDIFTH, NRELTH, NRADTH, NDCONVTH, NHTURBTH, &
                    NVTURBTH, NDISSHTH, NNEGATH, NREVATH, NCONDTH, NHENUTH, NHONTH, &
                    NSFRTH, NDEPSTH, NDEPGTH,NRIMTH, NACCTH, NCFRZTH, NWETGTH, &
                    NDRYGTH, NGMLTTH, NIMLTTH, NBERFITH, NCDEPITH, NWETHTH, NHMLTTH, &
                    NMAFLTH
 !
-NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE, NADVXTKE, NADVYTKE, NADVZTKE,     &
+NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE,    &
                      NFRCTKE, NDIFTKE, NRELTKE, NDRAGTKE,                           &
                      NDPTKE, NTPTKE, NDISSTKE, NTRTKE
 !
-NAMELIST/NAM_BU_RRV/LBU_RRV, NASSERV, NNESTRV, NADVRV, NADVXRV, NADVYRV, NADVZRV, NFRCRV, &
-                    N2DADVRV,N2DRELRV, &           
+NAMELIST/NAM_BU_RRV/LBU_RRV, NASSERV, NNESTRV, NADVRV, NFRCRV, &
                     NNUDRV, NDIFRV, NRELRV, NDCONVRV, NHTURBRV, NVTURBRV, NNEGARV, &
                     NREVARV, NCONDRV, NHENURV, NDEPSRV, NDEPGRV, NCDEPIRV, NMAFLRV
 ! 
-NAMELIST/NAM_BU_RRC/LBU_RRC, NASSERC, NNESTRC, NADVRC, NADVXRC, NADVYRC, NADVZRC, NFRCRC, &
+NAMELIST/NAM_BU_RRC/LBU_RRC, NASSERC, NNESTRC, NADVRC, NFRCRC, &
                     NDIFRC, NRELRC, NDCONVRC, NHTURBRC, NVTURBRC, NNEGARC, NACCRRC, &
                     NAUTORC, NCONDRC, NHONRC, NRIMRC, NWETGRC, NDRYGRC, NIMLTRC,   &
                     NBERFIRC, NCDEPIRC, NHENURC, NSEDIRC, NWETHRC
 ! 
-NAMELIST/NAM_BU_RRR/LBU_RRR, NASSERR, NNESTRR, NADVRR, NADVXRR, NADVYRR, NADVZRR, NFRCRR, &
+NAMELIST/NAM_BU_RRR/LBU_RRR, NASSERR, NNESTRR, NADVRR, NFRCRR, &
                     NDIFRR, NRELRR, NNEGARR, NACCRRR, NAUTORR, NREVARR, NSEDIRR,    &
                     NSFRRR, NACCRR, NCFRZRR, NWETGRR, NDRYGRR, NGMLTRR, NWETHRR,    &
                     NHMLTRR
 ! 
-NAMELIST/NAM_BU_RRI/LBU_RRI, NASSERI, NNESTRI, NADVRI, NADVXRI, NADVYRI, NADVZRI, NFRCRI, &
+NAMELIST/NAM_BU_RRI/LBU_RRI, NASSERI, NNESTRI, NADVRI, NFRCRI, &
                     NDIFRI, NRELRI, NDCONVRI, NHTURBRI, NVTURBRI, NNEGARI, NSEDIRI, &
                     NHENURI, NHONRI, NAGGSRI, NAUTSRI, NCFRZRI, NWETGRI, NDRYGRI,   &
                     NIMLTRI, NBERFIRI, NCDEPIRI, NWETHRI
 ! 
-NAMELIST/NAM_BU_RRS/LBU_RRS, NASSERS, NNESTRS, NADVRS, NADVXRS, NADVYRS, NADVZRS, NFRCRS, &
+NAMELIST/NAM_BU_RRS/LBU_RRS, NASSERS, NNESTRS, NADVRS, NFRCRS, &
                     NDIFRS, NRELRS, NNEGARS, NSEDIRS, NDEPSRS, NAGGSRS, NAUTSRS,    &
                     NRIMRS, NACCRS, NCMELRS, NWETGRS, NDRYGRS, NWETHRS
 ! 
-NAMELIST/NAM_BU_RRG/LBU_RRG, NASSERG, NNESTRG, NADVRG, NADVXRG, NADVYRG, NADVZRG, NFRCRG, &
+NAMELIST/NAM_BU_RRG/LBU_RRG, NASSERG, NNESTRG, NADVRG, NFRCRG, &
                     NDIFRG, NRELRG, NNEGARG, NSEDIRG, NSFRRG, NDEPGRG, NRIMRG, NACCRG,    &
                     NCMELRG, NCFRZRG, NWETGRG, NDRYGRG, NGMLTRG, NWETHRG
 ! 
-NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NADVXRH, NADVYRH, NADVZRH, NFRCRH, &
+NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NFRCRH, &
                     NDIFRH, NRELRH, NNEGARH, NSEDIRH, NWETGRH, NWETHRH, NHMLTRH
 ! 
-NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NADVXSV, NADVYSV, NADVZSV, NFRCSV, &
+NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NFRCSV, &
                      NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV,       &
                      NNEGASV,                                                              & 
                      NAUTOQC, NACCRQC, NRIMQC, NWETGQC, NDRYGQC, NIMLTQC, NBERFIQC,        &
diff --git a/src/MNH/modn_conf.f90 b/src/MNH/modn_conf.f90
index 424425c47..f78ef558a 100644
--- a/src/MNH/modn_conf.f90
+++ b/src/MNH/modn_conf.f90
@@ -78,6 +78,6 @@ USE MODD_CONF
 IMPLICIT NONE
 !
 NAMELIST/NAM_CONF/CCONF,LFLAT,NMODEL,CEQNSYS,NVERB,CEXP,CSEG,LFORCING, &
-                  NHALO,CSPLIT,LLG,LINIT_LG,CINIT_LG,LNOMIXLG
+                  NHALO,CSPLIT,LLG,LINIT_LG,CINIT_LG,LNOMIXLG,LCHECK
 !
 END MODULE MODN_CONF
diff --git a/src/MNH/one_wayn.f90 b/src/MNH/one_wayn.f90
index 26025ad4b..66d26b3b5 100644
--- a/src/MNH/one_wayn.f90
+++ b/src/MNH/one_wayn.f90
@@ -319,7 +319,7 @@ GVERT_INTERP=.TRUE.
 ZJ(:,:,:)   =0.
 ZRHOD(:,:,:)=0.
 !
-IRR=MIN(SIZE(XRM,4),SIZE(PLBXRM,4))
+IRR=MIN(SIZE(XRT,4),SIZE(PLBXRM,4))
 ISV_USER=MIN(NSV_USER_A(KDAD),NSV_USER_A(KMI))
 !
 IF (LWEST_ll() .AND. LEAST_ll()) THEN
@@ -822,14 +822,14 @@ IF(.NOT. OSTEADY_DMASS) THEN
 !
 !*       4.5 segment beginning (we have first to recover the dry mass at T-DT)
 !
-    IF(SIZE(XRM,4) == 0) THEN
+    IF(SIZE(XRT,4) == 0) THEN
                           ! dry air case
 !                           ------------
-      ZRHOD(:,:,:) = XPABSM(:,:,:)/(XPABSM(:,:,:)/XP00)**ZRD_O_CPD/(XRD*XTHM(:,:,:))
+      ZRHOD(:,:,:) = XPABST(:,:,:)/(XPABST(:,:,:)/XP00)**ZRD_O_CPD/(XRD*XTHT(:,:,:))
     ELSE                  ! moist air case
 !                           --------------
-      ZRHOD(:,:,:) = XPABSM(:,:,:)/(XPABSM(:,:,:)/XP00)**ZRD_O_CPD/(XRD*XTHM(:,:,:) &
-                                                       *(1.+ZRV_O_RD*XRM(:,:,:,1)))
+      ZRHOD(:,:,:) = XPABST(:,:,:)/(XPABST(:,:,:)/XP00)**ZRD_O_CPD/(XRD*XTHT(:,:,:) &
+                                                       *(1.+ZRV_O_RD*XRT(:,:,:,1)))
     ENDIF
 !
 !
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index 6041caa91..d7f3c5ca2 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -54,6 +54,7 @@ END MODULE MODI_PASPOL
 !!    C.Lac 30/09/2010 Bugs for reproducibility : position of release +
 !!                            GET_INDICE_ll replaced by GET_PHYSICAL_ll +
 !!                            remove the diffusion at the release 
+!!    C.Lac 11/11 Remove instant M
 !! --------------------------------------------------------------------------
 !       
 !!    EXTERNAL
@@ -461,8 +462,6 @@ ZSSCUR=TDTCUR%TIME
 !
 WHERE (XSVT(:,:,:,NSV_PPBEG:NSV_PPEND) <0.0) &
         XSVT(:,:,:,NSV_PPBEG:NSV_PPEND)=0.0
-WHERE (XSVM(:,:,:,NSV_PPBEG:NSV_PPEND) <0.0) &
-        XSVM(:,:,:,NSV_PPBEG:NSV_PPEND)=0.0
 !
 DO JSV=1,NSV_PP
    !
@@ -536,9 +535,8 @@ DO JSV=1,NSV_PP
             !
             !
             IF (.NOT.GBEGEMIS(JSV)) THEN
-               XSVM(:,:,:,IP) =  XSVT(:,:,:,IP)
                XRSVS(:,:,:,IP) =  XRSVS(:,:,:,IP) &
-                                 +XRHODJ(:,:,:)*XSVM(:,:,:,IP)/PTSTEP
+                                 +XRHODJ(:,:,:)*XSVT(:,:,:,IP)/PTSTEP
                GBEGEMIS(JSV)= .TRUE.
             ELSE
                XRSVS(:,:,:,IP) = XRSVS(:,:,:,IP) &
@@ -563,7 +561,7 @@ END DO            ! BOUCLE sur les rejets.
 !
 !*	3.1 Calcul de la masse volumique de l'air en Kg/m3.
 !
-ZRHOM(:,:,:)=XPABSM(:,:,:)/(XRD*XTHM(:,:,:)*((XPABSM(:,:,:)/XP00)**(XRD/XCPD)))
+ZRHOM(:,:,:)=XPABST(:,:,:)/(XRD*XTHT(:,:,:)*((XPABST(:,:,:)/XP00)**(XRD/XCPD)))
 !
 !
 !*	3.2 Passage en g/m3.
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index 5fd03a7ca..eb0f6e215 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -5,24 +5,17 @@
 !
 INTERFACE
 !
-      SUBROUTINE PHYS_PARAM_n(KTCOUNT,PTSTEP,PTSTEP_MET,PTSTEP_SV,HFMFILE,OCLOSE_OUT,      &
-                              HUVW_ADV_SCHEME,HMET_ADV_SCHEME,HSV_ADV_SCHEME,              &
+      SUBROUTINE PHYS_PARAM_n(KTCOUNT,HFMFILE,OCLOSE_OUT,                                  &
                               PRAD,PSHADOWS,PKAFR,PGROUND,PMAFL,PDRAG,PTURB,PTRACER,PCHEM, &
                               PTIME_BU, OMASKkids                                          )           
 
 !
 INTEGER,           INTENT(IN)     :: KTCOUNT   ! temporal iteration count
-REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 CHARACTER (LEN=28),INTENT(IN)     :: HFMFILE   ! name of the synchronous 
                                                ! OUTPUT FM-file
 LOGICAL,           INTENT(IN)     :: OCLOSE_OUT! conditional closure of the 
                                                ! OUTPUT FM-file
 ! advection schemes                   
-CHARACTER(LEN=6),  INTENT(IN)     :: HUVW_ADV_SCHEME
-CHARACTER(LEN=6),  INTENT(IN)     :: HSV_ADV_SCHEME
-CHARACTER(LEN=6),  INTENT(IN)     :: HMET_ADV_SCHEME
 REAL*8,DIMENSION(2), INTENT(INOUT)  :: PRAD,PSHADOWS,PKAFR,PGROUND,PTURB,PMAFL,PDRAG,PTRACER ! to store CPU
                                                ! time for computing time
                                         
@@ -37,8 +30,7 @@ END INTERFACE
 END MODULE MODI_PHYS_PARAM_n
 !
 !     ######################################################################
-      SUBROUTINE PHYS_PARAM_n(KTCOUNT,PTSTEP,PTSTEP_MET,PTSTEP_SV,HFMFILE,OCLOSE_OUT,      &
-                              HUVW_ADV_SCHEME,HMET_ADV_SCHEME,HSV_ADV_SCHEME,              &
+      SUBROUTINE PHYS_PARAM_n(KTCOUNT,HFMFILE,OCLOSE_OUT,                                  &
                               PRAD,PSHADOWS,PKAFR,PGROUND,PMAFL,PDRAG,PTURB,PTRACER,PCHEM, &
                               PTIME_BU, OMASKkids                                          )           
 !     ######################################################################
@@ -218,7 +210,8 @@ END MODULE MODI_PHYS_PARAM_n
 !!                    06/2010    (P.Peyrille)  add Call to aerozon.f90 if LAERO_FT=T
 !!                                to update 
 !!                                aerosols and ozone climatology at each call to
-!!                                phys_param otherwise it is constant to monthly average 
+!!                                phys_param otherwise it is constant to monthly average
+!!                    03/2013  (C.Lac) FIT temporal scheme
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -276,6 +269,7 @@ USE MODD_SUB_PHYS_PARAM_n
 USE MODD_PARAM_MFSHALL_n
 USE MODI_SHALLOW_MF_PACK
 USE MODD_CLOUD_MF_n
+USE MODD_ADV_n,            ONLY : XRTKEMS
 !
 USE MODI_SURF_RAD_MODIF
 USE MODI_GROUND_PARAM_n
@@ -326,17 +320,11 @@ IMPLICIT NONE
 !*      0.1    declarations of arguments
 !
 INTEGER,           INTENT(IN)     :: KTCOUNT   ! temporal iteration count
-REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 CHARACTER (LEN=28),INTENT(IN)     :: HFMFILE   ! name of the synchronous 
                                                ! OUTPUT FM-file
 LOGICAL,           INTENT(IN)     :: OCLOSE_OUT! conditional closure of the 
                                                ! OUTPUT FM-file
 ! advection schemes                   
-CHARACTER(LEN=6),  INTENT(IN)     :: HUVW_ADV_SCHEME
-CHARACTER(LEN=6),  INTENT(IN)     :: HSV_ADV_SCHEME
-CHARACTER(LEN=6),  INTENT(IN)     :: HMET_ADV_SCHEME
 REAL*8,DIMENSION(2), INTENT(INOUT)  :: PRAD,PSHADOWS,PKAFR,PGROUND,PTURB,PMAFL,PDRAG,PTRACER ! to store CPU
                                                ! time for computing time
                                                !        statistics
@@ -398,11 +386,10 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE  :: ZRC, ZRI, ZWT ! additional dummies
 REAL, DIMENSION(:,:),   ALLOCATABLE  :: ZDXDY         ! grid area
                     ! for rc, ri, w required if main variables not allocated
 !
-INTEGER :: IIU, IJU, IKU, II                              ! dimensional indexes
+INTEGER :: IIU, IJU, IKU                              ! dimensional indexes
 !
 INTEGER     :: JSV              ! Loop index for Scalar Variables
 INTEGER     :: JSWB             ! loop on SW spectral bands
-CHARACTER(LEN=1) :: YINST_SFU   ! temporal location of the surface friction flux
 INTEGER     :: IIB,IIE,IJB,IJE, IKB, IKE
 INTEGER     :: IMODEIDX
               ! index values for the Beginning or the End of the physical
@@ -433,7 +420,6 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE  :: ZSAVE_DIRFLASWD, ZSAVE_SCAFLASWD,ZSAVE
 !
 !-----------------------------------------------------------------------------
 !
-YINST_SFU ='M'
 NULLIFY(TZFIELDS_ll)
 IMI=GET_CURRENT_MODEL_INDEX()
 !
@@ -903,7 +889,7 @@ IF( CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) THEN
       ENDDO
       !
       DO JSV=NSV_DSTBEG,NSV_DSTEND
-        ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP_SV / XRHODJ(:,:,:) 
+        ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
       ENDDO
       CALL PPP2DUST(ZSVDST(IIB:IIE,IJB:IJE,IKB:IKE,:), XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),&
               PSIG3D=ZSIGDST(IIB:IIE,IJB:IJE,IKB:IKE,:), PRG3D=ZRGDST(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
@@ -930,7 +916,7 @@ IF( CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) THEN
       ENDDO
       !
       DO JSV=NSV_SLTBEG,NSV_SLTEND
-        ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP_SV / XRHODJ(:,:,:) 
+        ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
       ENDDO
       CALL PPP2SALT(ZSVSLT(IIB:IIE,IJB:IJE,IKB:IKE,:), XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),&
               PSIG3D=ZSIGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:), PRG3D=ZRGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
@@ -955,7 +941,7 @@ IF( CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) THEN
   IF ((LDUST).AND.(LCHTRANS)) THEN ! dust convective balance
     IF (CPROGRAM == "MESONH") THEN
       DO JSV=NSV_DSTBEG,NSV_DSTEND
-          ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP_SV / XRHODJ(:,:,:) 
+          ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
       ENDDO
     ELSE
       DO JSV=NSV_DSTBEG,NSV_DSTEND
@@ -966,7 +952,7 @@ IF( CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) THEN
                     XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), ZSIGDST(IIB:IIE,IJB:IJE,IKB:IKE,:),&
                     ZRGDST(IIB:IIE,IJB:IJE,IKB:IKE,:))
     DO JSV=NSV_DSTBEG,NSV_DSTEND
-      XRSVS(:,:,:,JSV) =  ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) * XRHODJ(:,:,:) / PTSTEP_SV
+      XRSVS(:,:,:,JSV) =  ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) * XRHODJ(:,:,:) / XTSTEP
     ENDDO
     !
     DEALLOCATE(ZSVDST)
@@ -978,7 +964,7 @@ IF( CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) THEN
   IF ((LSALT).AND.(LCHTRANS)) THEN ! sea salt convective balance
     IF (CPROGRAM == "MESONH") THEN
       DO JSV=NSV_SLTBEG,NSV_SLTEND
-        ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP_SV / XRHODJ(:,:,:) 
+        ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
       ENDDO
     ELSE
       DO JSV=NSV_SLTBEG,NSV_SLTEND
@@ -989,7 +975,7 @@ IF( CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) THEN
                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), ZSIGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
                   ZRGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:))
     DO JSV=NSV_SLTBEG,NSV_SLTEND
-      XRSVS(:,:,:,JSV) =  ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) * XRHODJ(:,:,:) / PTSTEP_SV
+      XRSVS(:,:,:,JSV) =  ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) * XRHODJ(:,:,:) / XTSTEP
     ENDDO
     !
     DEALLOCATE(ZSVSLT)
@@ -1065,8 +1051,6 @@ IF (CSURF=='EXTE') THEN
   IF( LTRANS ) THEN
     XUT(:,:,1+JPVEXT) = XUT(:,:,1+JPVEXT) + XUTRANS
     XVT(:,:,1+JPVEXT) = XVT(:,:,1+JPVEXT) + XVTRANS
-    XUM(:,:,1+JPVEXT) = XUM(:,:,1+JPVEXT) + XUTRANS
-    XVM(:,:,1+JPVEXT) = XVM(:,:,1+JPVEXT) + XVTRANS
   END IF
   !
   ALLOCATE(ZDIR_ALB(IIU,IJU,NSWB_MNH))
@@ -1145,13 +1129,10 @@ IF (CSURF=='EXTE') THEN
   DEALLOCATE(ZEMIS   )
   DEALLOCATE(ZTSRAD  )
   !
-  YINST_SFU='M'
   !
   IF( LTRANS ) THEN
     XUT(:,:,1+JPVEXT) = XUT(:,:,1+JPVEXT) - XUTRANS
     XVT(:,:,1+JPVEXT) = XVT(:,:,1+JPVEXT) - XVTRANS
-    XUM(:,:,1+JPVEXT) = XUM(:,:,1+JPVEXT) - XUTRANS
-    XVM(:,:,1+JPVEXT) = XVM(:,:,1+JPVEXT) - XVTRANS
   END IF
 !
 ELSE
@@ -1175,10 +1156,10 @@ PGROUND = PGROUND + ZTIME2 - ZTIME1
 IF (IMI==1) THEN  ! On calcule les flus turb. comme preconise par PP
 
    ! Heat eddy fluxes
-   IF ( LTH_FLX ) CALL EDDY_FLUX_n(IMI,KTCOUNT,XVM,XTHM,XRHODJ,XRTHS,XVTH_FLUX_M,XWTH_FLUX_M)
+   IF ( LTH_FLX ) CALL EDDY_FLUX_n(IMI,KTCOUNT,XVT,XTHT,XRHODJ,XRTHS,XVTH_FLUX_M,XWTH_FLUX_M)
    !
    ! Momentum eddy fluxes
-   IF ( LUV_FLX ) CALL EDDYUV_FLUX_n(IMI,CLUOUT,KTCOUNT,XVM,XTHM,XRHODJ,XRHODREF,XPABSM,XRVS,XVU_FLUX_M)
+   IF ( LUV_FLX ) CALL EDDYUV_FLUX_n(IMI,CLUOUT,KTCOUNT,XVT,XTHT,XRHODJ,XRHODREF,XPABSM,XRVS,XVU_FLUX_M)
 
 ELSE
    ! TEST pour maille infèrieure à 20km ? 
@@ -1198,7 +1179,7 @@ END IF
 !
 ZTIME1 = ZTIME2
 !
-IF (LPASPOL) CALL PASPOL(PTSTEP_SV, ZSFSV, ILUOUT, NVERB, OCLOSE_OUT, HFMFILE, CLUOUT )
+IF (LPASPOL) CALL PASPOL(XTSTEP, ZSFSV, ILUOUT, NVERB, OCLOSE_OUT, HFMFILE, CLUOUT )
 !
 !
 !*        4b.  PASSIVE POLLUTANTS FOR MASS-FLUX SCHEME DIAGNOSTICS
@@ -1301,77 +1282,43 @@ IF ( CTURB == 'TKEL' ) THEN
   IF( LTRANS ) THEN
     XUT(:,:,:) = XUT(:,:,:) + XUTRANS
     XVT(:,:,:) = XVT(:,:,:) + XVTRANS
-    XUM(:,:,:) = XUM(:,:,:) + XUTRANS
-    XVM(:,:,:) = XVM(:,:,:) + XVTRANS
   END IF
 !
 !
 IF(ALLOCATED(XTHW_FLUX))  THEN
  DEALLOCATE(XTHW_FLUX)
- ALLOCATE(XTHW_FLUX(SIZE(XTHM,1),SIZE(XTHM,2),SIZE(XTHM,3)))
+ ALLOCATE(XTHW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
 ELSE
- ALLOCATE(XTHW_FLUX(SIZE(XTHM,1),SIZE(XTHM,2),SIZE(XTHM,3)))
+ ALLOCATE(XTHW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
 END IF
 
 IF(ALLOCATED(XRCW_FLUX))  THEN
  DEALLOCATE(XRCW_FLUX)
- ALLOCATE(XRCW_FLUX(SIZE(XTHM,1),SIZE(XTHM,2),SIZE(XTHM,3)))
+ ALLOCATE(XRCW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
 ELSE
- ALLOCATE(XRCW_FLUX(SIZE(XTHM,1),SIZE(XTHM,2),SIZE(XTHM,3)))
+ ALLOCATE(XRCW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
 END IF
 !
 IF(ALLOCATED(XSVW_FLUX))  THEN
  DEALLOCATE(XSVW_FLUX)
- ALLOCATE(XSVW_FLUX(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),SIZE(XSVM,4)))
+ ALLOCATE(XSVW_FLUX(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),SIZE(XSVT,4)))
 ELSE
- ALLOCATE(XSVW_FLUX(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),SIZE(XSVM,4)))
+ ALLOCATE(XSVW_FLUX(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),SIZE(XSVT,4)))
 END IF
 !
-IF (HMET_ADV_SCHEME(1:3) == 'PPM') THEN
- IF (HSV_ADV_SCHEME(1:3) == 'PPM') THEN
-  CALL TURB(1,IKU,1,IMI,NRR, NRRL, NRRI, CLBCX, CLBCY, 1,NMODEL_CLOUD,              &
+   CALL TURB(1,IKU,1,IMI,NRR, NRRL, NRRI, CLBCX, CLBCY, 1,NMODEL_CLOUD,     &
       OCLOSE_OUT,LTURB_FLX,LTURB_DIAG,LSUBG_COND,LRMC01,                    &
-      CTURBDIM,CTURBLEN,CTOM,CTURBLEN_CLOUD,YINST_SFU,XIMPL,                &
-      PTSTEP,PTSTEP_MET, PTSTEP_SV,HFMFILE,CLUOUT,          &
+      CTURBDIM,CTURBLEN,CTOM,CTURBLEN_CLOUD,XIMPL,                          &
+      XTSTEP,HFMFILE,CLUOUT,                                                &
       XDXX,XDYY,XDZZ,XDZX,XDZY,XZZ,                                         &
       XDIRCOSXW,XDIRCOSYW,XDIRCOSZW,XCOSSLOPE,XSINSLOPE,                    &
       XRHODJ,XTHVREF,XRHODREF,                                              &
       ZSFTH,ZSFRV,ZSFSV,ZSFU,ZSFV,                                          &
-      XPABSM,XUM,XVM,XWM,XTKET,XSVT,XSRCM,XBL_DEPTH,XSBL_DEPTH,             &
-      XUT,XVT,XWT,XCEI,XCEI_MIN,XCEI_MAX,XCOEF_AMPL_SAT,                    &
+      XPABST,XUT,XVT,XWT,XTKET,XSVT,XSRCT,XBL_DEPTH,XSBL_DEPTH,             &
+      XCEI,XCEI_MIN,XCEI_MAX,XCOEF_AMPL_SAT,                                &
       XTHT,XRT,                                                             &
-      XRUS,XRVS,XRWS,XRTHS,XRRS,XRSVS,XRTKES,XSIGS, XWTHVMF,                &
+      XRUS,XRVS,XRWS,XRTHS,XRRS,XRSVS,XRTKES,XRTKEMS, XSIGS, XWTHVMF,       &
       XTHW_FLUX, XRCW_FLUX, XSVW_FLUX                                       )
-  ELSE
-   CALL TURB(1,IKU,1,IMI,NRR, NRRL, NRRI, CLBCX, CLBCY, 1,NMODEL_CLOUD,             &
-      OCLOSE_OUT,LTURB_FLX,LTURB_DIAG,LSUBG_COND,LRMC01,                    &
-      CTURBDIM,CTURBLEN,CTOM,CTURBLEN_CLOUD,YINST_SFU,XIMPL,                &
-      PTSTEP,PTSTEP_MET, PTSTEP_SV,HFMFILE,CLUOUT,          &
-      XDXX,XDYY,XDZZ,XDZX,XDZY,XZZ,                                         &
-      XDIRCOSXW,XDIRCOSYW,XDIRCOSZW,XCOSSLOPE,XSINSLOPE,                    &
-      XRHODJ,XTHVREF,XRHODREF,                                              &
-      ZSFTH,ZSFRV,ZSFSV,ZSFU,ZSFV,                                          &
-      XPABSM,XUM,XVM,XWM,XTKET,XSVM,XSRCM,XBL_DEPTH,XSBL_DEPTH,             &
-      XUT,XVT,XWT,XCEI,XCEI_MIN,XCEI_MAX,XCOEF_AMPL_SAT,                    &
-      XTHT,XRT,                                                             &
-      XRUS,XRVS,XRWS,XRTHS,XRRS,XRSVS,XRTKES,XSIGS, XWTHVMF,                &
-      XTHW_FLUX, XRCW_FLUX, XSVW_FLUX                                       )
-  END IF
-ELSE
-  CALL TURB(1,IKU,1,IMI,NRR, NRRL, NRRI, CLBCX, CLBCY, 1,NMODEL_CLOUD,              &
-      OCLOSE_OUT,LTURB_FLX,LTURB_DIAG,LSUBG_COND,LRMC01,                    &
-      CTURBDIM,CTURBLEN,CTOM,CTURBLEN_CLOUD,YINST_SFU,XIMPL,                &
-      PTSTEP,PTSTEP_MET, PTSTEP_SV,HFMFILE,CLUOUT,          &
-      XDXX,XDYY,XDZZ,XDZX,XDZY,XZZ,                                         &
-      XDIRCOSXW,XDIRCOSYW,XDIRCOSZW,XCOSSLOPE,XSINSLOPE,                    &
-      XRHODJ,XTHVREF,XRHODREF,                                              &
-      ZSFTH,ZSFRV,ZSFSV,ZSFU,ZSFV,                                          &
-      XPABSM,XUM,XVM,XWM,XTKEM,XSVM,XSRCM,XBL_DEPTH,XSBL_DEPTH,             &
-      XUT,XVT,XWT,XCEI,XCEI_MIN,XCEI_MAX,XCOEF_AMPL_SAT,                    &
-      XTHM,XRM,                                                             &
-      XRUS,XRVS,XRWS,XRTHS,XRRS,XRSVS,XRTKES,XSIGS, XWTHVMF,                &
-      XTHW_FLUX, XRCW_FLUX, XSVW_FLUX                                       )
-END IF
 !
 IF (LRMC01) THEN
   CALL ADD2DFIELD_ll(TZFIELDS_ll,XSBL_DEPTH)
@@ -1402,37 +1349,15 @@ IF (CSCONV == 'EDKF') THEN
      ALLOCATE(ZEXN (IIU,IJU,IKU))
      ALLOCATE(ZSIGMF (IIU,IJU,IKU))
      ZSIGMF(:,:,:)=0.    
-     ZEXN(:,:,:)=(XPABSM(:,:,:)/XP00)**(XRD/XCPD)  
- IF (HMET_ADV_SCHEME(1:3) == 'PPM') THEN
-   IF (HSV_ADV_SCHEME(1:3) == 'PPM') THEN
-     CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI, CMF_UPDRAFT, CMF_CLOUD, LMIXUV,  &
-                   OCLOSE_OUT,LMF_FLX,HFMFILE,CLUOUT,ZTIME_LES_MF,        &
-                   XIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,               &
-                   XDZZ, XZZ,                                             &
-                   XRHODJ, XRHODREF, XPABSM, ZEXN, ZSFTH, ZSFRV,          &
-                   XTHT,XRT,XUM,XVM,XTKET,XSVT,                           &
-                   XRTHS,XRRS,XRUS,XRVS,XRSVS,                            &
-                   ZSIGMF,XRC_MF, XRI_MF, XCF_MF, XWTHVMF)
-   ELSE
+     ZEXN(:,:,:)=(XPABST(:,:,:)/XP00)**(XRD/XCPD)  
      CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI, CMF_UPDRAFT, CMF_CLOUD, LMIXUV,  &
                    OCLOSE_OUT,LMF_FLX,HFMFILE,CLUOUT,ZTIME_LES_MF,        &
-                   XIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,               &
+                   XIMPL_MF, XTSTEP,                                      &
                    XDZZ, XZZ,                                             &
-                   XRHODJ, XRHODREF, XPABSM, ZEXN, ZSFTH, ZSFRV,          &
-                   XTHT,XRT,XUM,XVM,XTKET,XSVM,                           &
+                   XRHODJ, XRHODREF, XPABST, ZEXN, ZSFTH, ZSFRV,          &
+                   XTHT,XRT,XUT,XVT,XTKET,XSVT,                           &
                    XRTHS,XRRS,XRUS,XRVS,XRSVS,                            &
                    ZSIGMF,XRC_MF, XRI_MF, XCF_MF, XWTHVMF)
-   END IF
- ELSE
-     CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI, CMF_UPDRAFT, CMF_CLOUD, LMIXUV,  &
-                   OCLOSE_OUT,LMF_FLX,HFMFILE,CLUOUT,ZTIME_LES_MF,        &
-                   XIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,               &
-                   XDZZ, XZZ,                                             &
-                   XRHODJ, XRHODREF, XPABSM, ZEXN, ZSFTH, ZSFRV,          &
-                   XTHM,XRM,XUM,XVM,XTKEM,XSVM,                           &
-                   XRTHS,XRRS,XRUS,XRVS,XRSVS,                            &
-                   ZSIGMF,XRC_MF, XRI_MF, XCF_MF, XWTHVMF)
- END IF
 !
 ELSE
     XWTHVMF(:,:,:)=0.
@@ -1446,8 +1371,6 @@ CALL SECOND_MNH2(ZTIME4)
   IF( LTRANS ) THEN
     XUT(:,:,:) = XUT(:,:,:) - XUTRANS
     XVT(:,:,:) = XVT(:,:,:) - XVTRANS
-    XUM(:,:,:) = XUM(:,:,:) - XUTRANS
-    XVM(:,:,:) = XVM(:,:,:) - XVTRANS
   END IF
 
   IF (CMF_CLOUD == 'STAT') THEN
@@ -1480,7 +1403,7 @@ XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
 IF (LUSECHEM) THEN
-  CALL CH_MONITOR_n(ZWETDEPAER,KTCOUNT,PTSTEP_SV, ILUOUT, NVERB)
+  CALL CH_MONITOR_n(ZWETDEPAER,KTCOUNT,XTSTEP, ILUOUT, NVERB)
 END IF
 !
 ! For inert aerosol (dust and sea salt) => aer_monitor_n
@@ -1514,7 +1437,7 @@ IF ((LDUST).OR.(LSALT)) THEN
     END IF
 
 !
-        CALL AER_MONITOR_n(KTCOUNT,PTSTEP_SV, ILUOUT, NVERB, GCLD)
+        CALL AER_MONITOR_n(KTCOUNT,XTSTEP, ILUOUT, NVERB, GCLD)
 END IF
 !
 !
diff --git a/src/MNH/ppm_met.f90 b/src/MNH/ppm_met.f90
index dd222013f..db973e51b 100644
--- a/src/MNH/ppm_met.f90
+++ b/src/MNH/ppm_met.f90
@@ -7,11 +7,10 @@ INTERFACE
 !
       SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT,              &
                           PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
-                          PTHT, PTKET, PRT,                       &
+                          PRHOX1, PRHOX2, PRHOY1, PRHOY2,         &
+                          PRHOZ1, PRHOZ2, PTHT, PTKET, PRT,       &
                           PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME    )
 !
-USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
-!
 CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
 CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
 CHARACTER (LEN=6),               INTENT(IN) :: HMET_ADV_SCHEME
@@ -23,6 +22,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! Courant
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  ! numbers
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+! Temporary advected rhodj
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOX1,PRHOX2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOY1,PRHOY2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOZ1,PRHOZ2
 !
 REAL,                     INTENT(IN)    :: PTSTEP ! Single Time step 
 !
@@ -41,7 +44,8 @@ END MODULE MODI_PPM_MET
 !     ######################################################################
       SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT,              &
                           PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
-                          PTHT, PTKET, PRT,                       &
+                          PRHOX1, PRHOX2, PRHOY1, PRHOY2,         &
+                          PRHOZ1, PRHOZ2, PTHT, PTKET, PRT,       &
                           PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME    )
 !     ######################################################################
 !
@@ -71,6 +75,7 @@ END MODULE MODI_PPM_MET
 !!    MODIFICATIONS
 !!    -------------
 !!      Original 11.05.2006. T.Maric
+!!      Modification : 11.2011 C.Lac, V.Masson : Advection of (theta_l,r_t) 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -81,11 +86,8 @@ END MODULE MODI_PPM_MET
 !
 USE MODD_PARAMETERS
 USE MODD_CONF
-USE MODD_BUDGET
-USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
 !
 USE MODI_SHUMAN
-USE MODI_BUDGET
 USE MODI_PPM
 USE MODI_ADVEC_PPM_ALGO
 !
@@ -108,6 +110,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! contravariant
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  !  components
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! of momentum
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+! Temporary advected rhodj
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOX1,PRHOX2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOY1,PRHOY2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOZ1,PRHOZ2
 !
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step 
 !
@@ -130,12 +136,6 @@ INTEGER :: IGRID ! localisation on the model grid
 ! Advection source term calulated in the PPM algorithm
 REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
 !
-! Temporary advected rhodj
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOY1,ZRHOY2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOZ1,ZRHOZ2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT
-!
 !-------------------------------------------------------------------------------
 !
 !*       1.     COMPUTES THE DOMAIN DIMENSIONS
@@ -150,36 +150,24 @@ GTKEALLOC = SIZE(PTKET,1) /= 0
 !
 IGRID = 1
 !
-! Calculate the advection of the density RHODJ to pass to the algorithm
-!
-ZUNIT = 1.0
-ZRHOX1 = PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHODJ, PTSTEP)
-ZRHOY1 = PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOX1, PTSTEP)
-ZRHOZ1 = PPM_S0_Z(IGRID, ZUNIT, PCRW, ZRHOY1, PTSTEP)
-ZRHOZ2 = PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHODJ, PTSTEP)
-ZRHOY2 = PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOZ2, PTSTEP)
-ZRHOX2 = PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, ZRHOY2, PTSTEP)
-!
 !
 ! Potential temperature
 !
 CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
-                    ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
+                    PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
                     ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
 ! add the advection to the sources
 PRTHS = PRTHS +  ZSRC 
 !
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADV_BU_RTH')
 !
 ! Turbulence variables
 !
 IF (GTKEALLOC) THEN
    CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTKET,PRHODJ,PTSTEP, &
-                       ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
+                       PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
                        ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
   PRTKES = PRTKES + ZSRC
 !
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADV_BU_RTKE')
 !
 END IF
 !
@@ -189,19 +177,11 @@ END IF
 !
 DO JRR=1,KRR
 !
-   CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PRT(:,:,:,JRR), &
-                       PRHODJ, PTSTEP, &
-                       ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
-                       ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
+   CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID,           &
+                       PRT(:,:,:,JRR), PRHODJ, PTSTEP,                 &
+                       PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
+                       ZSRC, KTCOUNT, PCRU, PCRV, PCRW                 )
    PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZSRC(:,:,:)
-!
-   IF (JRR==1.AND.LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'ADV_BU_RRV') 
-   IF (JRR==2.AND.LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'ADV_BU_RRC') 
-   IF (JRR==3.AND.LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8,'ADV_BU_RRR') 
-   IF (JRR==4.AND.LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'ADV_BU_RRI') 
-   IF (JRR==5.AND.LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADV_BU_RRS') 
-   IF (JRR==6.AND.LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADV_BU_RRG') 
-   IF (JRR==7.AND.LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADV_BU_RRH') 
 !
 END DO
 !
diff --git a/src/MNH/ppm_rhodj.f90 b/src/MNH/ppm_rhodj.f90
new file mode 100644
index 000000000..1b328780b
--- /dev/null
+++ b/src/MNH/ppm_rhodj.f90
@@ -0,0 +1,114 @@
+!
+!     #####################
+      MODULE MODI_PPM_RHODJ  
+!     #####################
+!
+INTERFACE
+!
+      SUBROUTINE PPM_RHODJ (HLBCX,HLBCY,                          &
+                          PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
+                          PRHOX1, PRHOX2, PRHOY1, PRHOY2,         &
+                          PRHOZ1, PRHOZ2                          )
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! Contravariants compon.
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  ! 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+!
+REAL,                     INTENT(IN)    :: PTSTEP ! Single Time step 
+! Temporary advected rhodj
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOX1,PRHOX2
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOY1,PRHOY2
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOZ1,PRHOZ2
+!
+END SUBROUTINE PPM_RHODJ   
+!
+END INTERFACE
+!
+END MODULE MODI_PPM_RHODJ
+!
+!     ######################################################################
+      SUBROUTINE PPM_RHODJ (HLBCX,HLBCY,                          &
+                          PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
+                          PRHOX1, PRHOX2, PRHOY1, PRHOY2,         &
+                          PRHOZ1, PRHOZ2                          )
+!     ######################################################################
+!
+!!****  *PPM_RHODJ * 
+!!
+!!    PURPOSE
+!!    -------
+!!    Calculate the advection of the density RHODJ to pass to the algorithm PPM
+!!
+!!**  METHOD
+!!    ------
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original 11.05.2006. T.Maric
+!!      C.Lac 04.2011 Splitted from ppm_met.f90 and ppm_scalar.f90
+!!                    to limit duplication in the time splitting
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODI_PPM             
+!
+!
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
+CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! contravariant
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  !  components
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! of momentum
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+! Temporary advected rhodj
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOX1,PRHOX2
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOY1,PRHOY2
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOZ1,PRHOZ2
+!
+REAL,                     INTENT(IN)    :: PTSTEP ! Time step 
+!
+!*       0.2   Declarations of local variables :
+!
+INTEGER :: IGRID ! localisation on the model grid
+!
+REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT
+!
+!-------------------------------------------------------------------------------
+!
+!
+IGRID = 1
+!
+ZUNIT = 1.0
+PRHOX1 = PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHODJ, PTSTEP)
+PRHOY1 = PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, PRHOX1, PTSTEP)
+PRHOZ1 = PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHOY1, PTSTEP)
+PRHOZ2 = PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHODJ, PTSTEP)
+PRHOY2 = PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, PRHOZ2, PTSTEP)
+PRHOX2 = PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHOY2, PTSTEP)
+!
+!
+END SUBROUTINE PPM_RHODJ
diff --git a/src/MNH/ppm_scalar.f90 b/src/MNH/ppm_scalar.f90
index a366043c8..cf61579a2 100644
--- a/src/MNH/ppm_scalar.f90
+++ b/src/MNH/ppm_scalar.f90
@@ -8,7 +8,9 @@ INTERFACE
 !
       SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, KTCOUNT,   &
                      PCRU, PCRV, PCRW, PTSTEP, PRHODJ,    &
-                     PSVT, PRSVS, HSV_ADV_SCHEME  ) 
+                     PRHOX1, PRHOX2, PRHOY1, PRHOY2,      &
+                     PRHOZ1, PRHOZ2,                      &
+                     PSVT, PRSVS, HSV_ADV_SCHEME          ) 
 !
 USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
 !
@@ -23,6 +25,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! Courant
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  ! numbers
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+! Temporary advected rhodj
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOX1,PRHOX2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOY1,PRHOY2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOZ1,PRHOZ2
 !
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step 
 !
@@ -38,9 +44,11 @@ END INTERFACE
 END MODULE MODI_PPM_SCALAR
 !
 !     ######################################################################
-      SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, KTCOUNT,  &
-                     PCRU, PCRV, PCRW, PTSTEP, PRHODJ,   &
-                     PSVT, PRSVS, HSV_ADV_SCHEME  ) 
+      SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, KTCOUNT,   &
+                     PCRU, PCRV, PCRW, PTSTEP, PRHODJ,    &
+                     PRHOX1, PRHOX2, PRHOY1, PRHOY2,      &
+                     PRHOZ1, PRHOZ2,                      &
+                     PSVT, PRSVS, HSV_ADV_SCHEME          ) 
 !     ######################################################################
 !
 !!****  *PPM_SCALAR * 
@@ -69,6 +77,7 @@ END MODULE MODI_PPM_SCALAR
 !!    MODIFICATIONS
 !!    -------------
 !!      Original 11.05.2006. T.Maric
+!!      Modification : 11.2011 C.Lac, V.Masson : Advection of (theta_l,r_t) 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -79,11 +88,9 @@ END MODULE MODI_PPM_SCALAR
 !
 USE MODD_PARAMETERS
 USE MODD_CONF
-USE MODD_BUDGET
 USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
 !
 USE MODI_SHUMAN
-USE MODI_BUDGET
 USE MODI_PPM
 USE MODI_ADVEC_PPM_ALGO
 !
@@ -103,6 +110,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! contravariant
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  !  components
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! of momentum
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+! Temporary advected rhodj
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOX1,PRHOX2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOY1,PRHOY2
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHOZ1,PRHOZ2
 !
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step 
 !
@@ -122,11 +133,6 @@ INTEGER :: IGRID ! localisation on the model grid
 ! Advection source term calulated in the PPM algorithm
 REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
 !
-! Temporary advected rhodj
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOY1,ZRHOY2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOZ1,ZRHOZ2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT
 !
 !-------------------------------------------------------------------------------
 !
@@ -135,28 +141,16 @@ REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT
 !
 IGRID = 1
 !
-! Calculate the advection of the density RHODJ to pass to the algorithm
-!
-ZUNIT = 1.0
-ZRHOX1 = PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHODJ, PTSTEP)
-ZRHOY1 = PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOX1, PTSTEP)
-ZRHOZ1 = PPM_S0_Z(IGRID, ZUNIT, PCRW, ZRHOY1, PTSTEP)
-ZRHOZ2 = PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHODJ, PTSTEP)
-ZRHOY2 = PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOZ2, PTSTEP)
-ZRHOX2 = PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, ZRHOY2, PTSTEP)
-!
 ! Case with KSV tracers
 !
 DO JSV=1,KSV
 !
    CALL ADVEC_PPM_ALGO(HSV_ADV_SCHEME, HLBCX, HLBCY, IGRID, PSVT(:,:,:,JSV), & 
                        PRHODJ, PTSTEP, & 
-                       ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
+                       PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
                        ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
 ! add the advection to the sources
    PRSVS(:,:,:,JSV) =  PRSVS(:,:,:,JSV) + ZSRC(:,:,:)   
-!
-   IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADV_BU_RSV')
 !
 END DO
 !
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index ef79ccd22..07dd4fcab 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -380,6 +380,7 @@ USE MODI_GOTO_SURFEX
 USE MODI_PGD_GRID_SURF_ATM
 USE MODI_SPLIT_GRID
 USE MODI_PGD_SURF_ATM
+USE MODI_ICE_ADJUST_BIS
 USE MODI_WRITE_PGD_SURF_ATM_n
 USE MODI_PREP_SURF_MNH
 USE MODI_ALLOC_SURFEX
@@ -848,10 +849,7 @@ CALL SET_XEND_ll(NIMAX_ll+2*JPHEXT, 1)
 CALL SET_YOR_ll(1, 1)
 CALL SET_YEND_ll(NJMAX_ll+2*JPHEXT, 1)
 CALL SET_DAD_ll(0, 1)
-!JUAN
-! CALL INI_PARA_ll(IINFO_ll)
 CALL INI_PARAZ_ll(IINFO_ll)
-!JUAN
 !
 ! sizes of arrays of the extended sub-domain
 !
@@ -861,7 +859,6 @@ CALL GET_INDICE_ll(NIB,NJB,NIE,NJE)
 CALL GET_OR_ll('B',IXOR,IYOR)
 NKB=1+JPVEXT
 NKU=NKMAX+2*JPVEXT
-!JUAN
 !
 !*       4.3  Global variables absent from the modules :
 !
@@ -880,13 +877,13 @@ END SELECT
 !
 !*       4.4   Prognostic variables at M instant (module MODD_FIELD1):
 !
-ALLOCATE(XUM(NIU,NJU,NKU))
-ALLOCATE(XVM(NIU,NJU,NKU))
-ALLOCATE(XWM(NIU,NJU,NKU))
-ALLOCATE(XTHM(NIU,NJU,NKU))
-ALLOCATE(XPABSM(NIU,NJU,NKU))
-ALLOCATE(XRM(NIU,NJU,NKU,NRR))
-ALLOCATE(XSVM(NIU,NJU,NKU,NSV))
+ALLOCATE(XUT(NIU,NJU,NKU))
+ALLOCATE(XVT(NIU,NJU,NKU))
+ALLOCATE(XWT(NIU,NJU,NKU))
+ALLOCATE(XTHT(NIU,NJU,NKU))
+ALLOCATE(XPABST(NIU,NJU,NKU))
+ALLOCATE(XRT(NIU,NJU,NKU,NRR))
+ALLOCATE(XSVT(NIU,NJU,NKU,NSV))
 !
 !*       4.5   Grid variables (module MODD_GRID1 and MODD_METRICS1):
 !
@@ -1481,20 +1478,20 @@ CALL TOTAL_DMASS(CLUOUT,XJ,XRHODREF,XDRYMASST)
 !*       5.6    Complete prognostic variables (multipliy by  rhoJ) at time t :
 !
 ! U grid   : gridpoint 2
-IF (LWEST_ll())  XUM(1,:,:)    = 2.*XUM(2,:,:) - XUM(3,:,:)
+IF (LWEST_ll())  XUT(1,:,:)    = 2.*XUT(2,:,:) - XUT(3,:,:)
 ! V grid   : gridpoint 3
-IF (LSOUTH_ll())  XVM(:,1,:)    = 2.*XVM(:,2,:) - XVM(:,3,:)
+IF (LSOUTH_ll())  XVT(:,1,:)    = 2.*XVT(:,2,:) - XVT(:,3,:)
 ! SV : gridpoint 1
-XSVM(:,:,:,:) = 0.
+XSVT(:,:,:,:) = 0.
 !
 !
 !*       5.7   Larger scale fields initialization :
 !
-XLSUM(:,:,:) = XUM(:,:,:)        ! these fields do not satisfy the 
-XLSVM(:,:,:) = XVM(:,:,:)        ! lower boundary condition but are 
-XLSWM(:,:,:) = XWM(:,:,:)        ! in equilibrium
-XLSTHM(:,:,:)= XTHM(:,:,:)
-XLSRVM(:,:,:)= XRM(:,:,:,1)
+XLSUM(:,:,:) = XUT(:,:,:)        ! these fields do not satisfy the 
+XLSVM(:,:,:) = XVT(:,:,:)        ! lower boundary condition but are 
+XLSWM(:,:,:) = XWT(:,:,:)        ! in equilibrium
+XLSTHM(:,:,:)= XTHT(:,:,:)
+XLSRVM(:,:,:)= XRT(:,:,:,1)
 !
 ! enforce the vertical homogeneity under the ground and above the top of
 ! the model for the LS fields
@@ -1515,42 +1512,42 @@ END IF
 ILBX=SIZE(XLBXUM,1)
 ILBY=SIZE(XLBYUM,2)
 IF(LWEST_ll() .AND. .NOT. L1D) THEN
-  XLBXUM(1:NRIMX+1,        :,:)     = XUM(2:NRIMX+2,        :,:)
-  XLBXVM(1:NRIMX+1,        :,:)     = XVM(1:NRIMX+1,        :,:)
-  XLBXWM(1:NRIMX+1,        :,:)     = XWM(1:NRIMX+1,        :,:)
-  XLBXTHM(1:NRIMX+1,        :,:)   = XTHM(1:NRIMX+1,        :,:)
-  XLBXRM(1:NRIMX+1,        :,:,:)   = XRM(1:NRIMX+1,        :,:,:)
+  XLBXUM(1:NRIMX+1,        :,:)     = XUT(2:NRIMX+2,        :,:)
+  XLBXVM(1:NRIMX+1,        :,:)     = XVT(1:NRIMX+1,        :,:)
+  XLBXWM(1:NRIMX+1,        :,:)     = XWT(1:NRIMX+1,        :,:)
+  XLBXTHM(1:NRIMX+1,        :,:)   = XTHT(1:NRIMX+1,        :,:)
+  XLBXRM(1:NRIMX+1,        :,:,:)   = XRT(1:NRIMX+1,        :,:,:)
 ENDIF
 IF(LEAST_ll() .AND. .NOT. L1D) THEN
-  XLBXUM(ILBX-NRIMX:ILBX,:,:)     = XUM(NIU-NRIMX:NIU,    :,:)
-  XLBXVM(ILBX-NRIMX:ILBX,:,:)     = XVM(NIU-NRIMX:NIU,    :,:)
-  XLBXWM(ILBX-NRIMX:ILBX,:,:)     = XWM(NIU-NRIMX:NIU,    :,:)
-  XLBXTHM(ILBX-NRIMX:ILBX,:,:)   = XTHM(NIU-NRIMX:NIU,    :,:)
-  XLBXRM(ILBX-NRIMX:ILBX,:,:,:)   = XRM(NIU-NRIMX:NIU,    :,:,:)
+  XLBXUM(ILBX-NRIMX:ILBX,:,:)     = XUT(NIU-NRIMX:NIU,    :,:)
+  XLBXVM(ILBX-NRIMX:ILBX,:,:)     = XVT(NIU-NRIMX:NIU,    :,:)
+  XLBXWM(ILBX-NRIMX:ILBX,:,:)     = XWT(NIU-NRIMX:NIU,    :,:)
+  XLBXTHM(ILBX-NRIMX:ILBX,:,:)   = XTHT(NIU-NRIMX:NIU,    :,:)
+  XLBXRM(ILBX-NRIMX:ILBX,:,:,:)   = XRT(NIU-NRIMX:NIU,    :,:,:)
 ENDIF
 IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYUM(:,1:NRIMY+1,        :)     = XUM(:,1:NRIMY+1,      :)
-  XLBYVM(:,1:NRIMY+1,        :)     = XVM(:,2:NRIMY+2,      :)
-  XLBYWM(:,1:NRIMY+1,        :)     = XWM(:,1:NRIMY+1,  :)
-  XLBYTHM(:,1:NRIMY+1,        :)    = XTHM(:,1:NRIMY+1,      :)
-  XLBYRM(:,1:NRIMY+1,        :,:)   = XRM(:,1:NRIMY+1,      :,:)
+  XLBYUM(:,1:NRIMY+1,        :)     = XUT(:,1:NRIMY+1,      :)
+  XLBYVM(:,1:NRIMY+1,        :)     = XVT(:,2:NRIMY+2,      :)
+  XLBYWM(:,1:NRIMY+1,        :)     = XWT(:,1:NRIMY+1,  :)
+  XLBYTHM(:,1:NRIMY+1,        :)    = XTHT(:,1:NRIMY+1,      :)
+  XLBYRM(:,1:NRIMY+1,        :,:)   = XRT(:,1:NRIMY+1,      :,:)
 ENDIF
 IF(LNORTH_ll().AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYUM(:,ILBY-NRIMY:ILBY,:)     = XUM(:,NJU-NRIMY:NJU,  :)
-  XLBYVM(:,ILBY-NRIMY:ILBY,:)     = XVM(:,NJU-NRIMY:NJU,  :)
-  XLBYWM(:,ILBY-NRIMY:ILBY,:)     = XWM(:,NJU-NRIMY:NJU,  :)
-  XLBYTHM(:,ILBY-NRIMY:ILBY,:)    = XTHM(:,NJU-NRIMY:NJU,  :)
-  XLBYRM(:,ILBY-NRIMY:ILBY,:,:)   = XRM(:,NJU-NRIMY:NJU,  :,:)
+  XLBYUM(:,ILBY-NRIMY:ILBY,:)     = XUT(:,NJU-NRIMY:NJU,  :)
+  XLBYVM(:,ILBY-NRIMY:ILBY,:)     = XVT(:,NJU-NRIMY:NJU,  :)
+  XLBYWM(:,ILBY-NRIMY:ILBY,:)     = XWT(:,NJU-NRIMY:NJU,  :)
+  XLBYTHM(:,ILBY-NRIMY:ILBY,:)    = XTHT(:,NJU-NRIMY:NJU,  :)
+  XLBYRM(:,ILBY-NRIMY:ILBY,:,:)   = XRT(:,NJU-NRIMY:NJU,  :,:)
 ENDIF
 DO JSV = 1, NSV
   IF(LWEST_ll() .AND. .NOT. L1D) &
-  XLBXSVM(1:NRIMX+1,        :,:,JSV)   = XSVM(1:NRIMX+1,        :,:,JSV)
+  XLBXSVM(1:NRIMX+1,        :,:,JSV)   = XSVT(1:NRIMX+1,        :,:,JSV)
   IF(LEAST_ll() .AND. .NOT. L1D) &
-  XLBXSVM(ILBX-NRIMX:ILBX,:,:,JSV)   = XSVM(NIU-NRIMX:NIU,    :,:,JSV)
+  XLBXSVM(ILBX-NRIMX:ILBX,:,:,JSV)   = XSVT(NIU-NRIMX:NIU,    :,:,JSV)
   IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-  XLBYSVM(:,1:NRIMY+1,        :,JSV)   = XSVM(:,1:NRIMY+1,      :,JSV)
+  XLBYSVM(:,1:NRIMY+1,        :,JSV)   = XSVT(:,1:NRIMY+1,      :,JSV)
   IF(LNORTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-  XLBYSVM(:,ILBY-NRIMY:ILBY,:,JSV)   = XSVM(:,NJU-NRIMY:NJU,  :,JSV)
+  XLBYSVM(:,ILBY-NRIMY:ILBY,:,JSV)   = XSVT(:,NJU-NRIMY:NJU,  :,JSV)
 END DO
 !
 !
@@ -1561,7 +1558,9 @@ IF(LPERTURB) CALL SET_PERTURB(CEXPRE)
 !
 !*       5.9   Anelastic correction and pressure:
 !
+CALL ICE_ADJUST_BIS(XPABST,XTHT,XRT)
 IF ( .NOT. L1D ) CALL PRESSURE_IN_PREP(XDXX,XDYY,XDZX,XDZY,XDZZ)
+CALL ICE_ADJUST_BIS(XPABST,XTHT,XRT)
 !
 !
 !*       5.10  Compute THETA, vapor and cloud mixing ratio
@@ -1577,40 +1576,40 @@ IF (CIDEAL == 'RSOU') THEN
   ALLOCATE(ZFRAC_ICE(NIU,NJU,NKU))
   ALLOCATE(ZRSATW(NIU,NJU,NKU))
   ALLOCATE(ZRSATI(NIU,NJU,NKU))             
-  ZRT=XRM(:,:,:,1)+XRM(:,:,:,2)+XRM(:,:,:,4)
-  ZEXN=(XPABSM/XP00) ** (XRD/XCPD)
-  ZT=XTHM*(XPABSM/XP00)**(XRD/XCPD)
-  ZCPH=XCPD+ XCPV * XRM(:,:,:,1)+ XCL *XRM(:,:,:,2)  + XCI * XRM(:,:,:,4)
+  ZRT=XRT(:,:,:,1)+XRT(:,:,:,2)+XRT(:,:,:,4)
+  ZEXN=(XPABST/XP00) ** (XRD/XCPD)
+  ZT=XTHT*(XPABST/XP00)**(XRD/XCPD)
+  ZCPH=XCPD+ XCPV * XRT(:,:,:,1)+ XCL *XRT(:,:,:,2)  + XCI * XRT(:,:,:,4)
   ZLVOCPEXN = (XLVTT + (XCPV-XCL) * (ZT-XTT))/(ZCPH*ZEXN)
   ZLSOCPEXN = (XLSTT + (XCPV-XCI) * (ZT-XTT))/(ZCPH*ZEXN)
-  ZTHL=XTHM-ZLVOCPEXN*XRM(:,:,:,2)-ZLSOCPEXN*XRM(:,:,:,4)
+  ZTHL=XTHT-ZLVOCPEXN*XRT(:,:,:,2)-ZLSOCPEXN*XRT(:,:,:,4)
   DEALLOCATE(ZEXN)         
   DEALLOCATE(ZT)       
   DEALLOCATE(ZCPH)        
   DEALLOCATE(ZLVOCPEXN)        
   DEALLOCATE(ZLSOCPEXN)
-  CALL TH_R_FROM_THL_RT_3D('T',ZFRAC_ICE,XPABSM,ZTHL,ZRT,XTHM,XRM(:,:,:,1), &
-      XRM(:,:,:,2),XRM(:,:,:,4),ZRSATW, ZRSATI)
+  CALL TH_R_FROM_THL_RT_3D('T',ZFRAC_ICE,XPABST,ZTHL,ZRT,XTHT,XRT(:,:,:,1), &
+                            XRT(:,:,:,2),XRT(:,:,:,4),ZRSATW, ZRSATI)
   DEALLOCATE(ZTHL) 
   DEALLOCATE(ZRT)
 ! Coherence test
   IF ((.NOT. LUSERI) ) THEN
-    IF (MAXVAL(XRM(:,:,:,4))/= 0) THEN
+    IF (MAXVAL(XRT(:,:,:,4))/= 0) THEN
        WRITE(NLUOUT,FMT=*) "*********************************"             
        WRITE(NLUOUT,FMT=*) 'WARNING'      
        WRITE(NLUOUT,FMT=*) 'YOU HAVE LUSERI=FALSE '
        WRITE(NLUOUT,FMT=*) ' BUT WITH YOUR RADIOSOUNDING Ri/=0'
-       WRITE(NLUOUT,FMT=*) MINVAL(XRM(:,:,:,4)),MAXVAL(XRM(:,:,:,4))
+       WRITE(NLUOUT,FMT=*) MINVAL(XRT(:,:,:,4)),MAXVAL(XRT(:,:,:,4))
        WRITE(NLUOUT,FMT=*) "*********************************"       
     ENDIF  
   ENDIF
   IF ((.NOT. LUSERC)) THEN
-    IF (MAXVAL(XRM(:,:,:,2))/= 0) THEN          
+    IF (MAXVAL(XRT(:,:,:,2))/= 0) THEN          
       WRITE(NLUOUT,FMT=*) "*********************************"
       WRITE(NLUOUT,FMT=*) 'WARNING'    
       WRITE(NLUOUT,FMT=*) 'YOU HAVE LUSERC=FALSE '
       WRITE(NLUOUT,FMT=*) 'BUT WITH YOUR RADIOSOUNDING RC/=0'
-      WRITE(NLUOUT,FMT=*) MINVAL(XRM(:,:,:,2)),MAXVAL(XRM(:,:,:,2))      
+      WRITE(NLUOUT,FMT=*) MINVAL(XRT(:,:,:,2)),MAXVAL(XRT(:,:,:,2))      
       WRITE(NLUOUT,FMT=*) "*********************************"
     ENDIF  
   ENDIF
@@ -1626,7 +1625,7 @@ END IF
 !
 !  before calling chemistry
 CCONF = 'START'
-CSTORAGE_TYPE='TT'                  ! instant t and t-dt are the same
+CSTORAGE_TYPE='TT'                  
 CALL CLOSE_ll(CEXPRE,IOSTAT=NRESP)  ! Close the EXPRE file 
 !
 IF ( LCH_INIT_FIELD ) CALL CH_INIT_FIELD_n(1, NLUOUT, NVERB)
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index 5623df432..9c2bd1256 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -407,6 +407,7 @@ USE MODI_MNHREAD_ZS_DUMMY_n
 USE MODI_MNHWRITE_ZS_DUMMY_n
 USE MODI_COMPARE_DAD 
 USE MODI_PREP_SURF_MNH
+USE MODI_ICE_ADJUST_BIS
 !
 USE MODD_CONF            ! declaration modules
 USE MODD_CONF_n
@@ -942,6 +943,13 @@ IF (ALLOCATED(XZSMT_LS)) DEALLOCATE(XZSMT_LS)
 !
 !-------------------------------------------------------------------------------
 !
+!
+!*      13.    MICROPHYSICAL ADJUSTMENT
+!              ------------------------
+!CALL ICE_ADJUST_BIS(XPABST,XTHT,XRT)
+!
+!-------------------------------------------------------------------------------
+!
 !*      13.    ANELASTIC CORRECTION
 !              --------------------
 !
@@ -952,6 +960,13 @@ ZDYN = ZTIME2 - ZTIME1
 !
 !-------------------------------------------------------------------------------
 !
+!*      13.    MICROPHYSICAL ADJUSTMENT
+!              ------------------------
+!
+!CALL ICE_ADJUST_BIS(XPABST,XTHT,XRT)
+!
+!-------------------------------------------------------------------------------
+!
 !*      14.    INITIALIZATION OF THE REMAINING PROGNOSTIC VARIABLES (COPIES)
 !              -------------------------------------------------------------
 !
@@ -978,8 +993,7 @@ CALL BOUNDARIES (                                                 &
           XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
           XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
           XRHODJ,                                                 &
-          XUM, XVM, XWM, XTHM, XTKEM, XRM, XSVM,XSRCM,            &
-          XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT                   )
+          XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 !
 CALL SECOND_MNH(ZTIME2)
 ZMISC = ZMISC + ZTIME2 - ZTIME1
@@ -992,7 +1006,7 @@ ZMISC = ZMISC + ZTIME2 - ZTIME1
 ZTIME1 = ZTIME2
 !
 IF (YATMFILETYPE=='GRIBEX' .AND. NVERB>1) THEN
-  CALL ERROR_ON_TEMPERATURE(XT_LS,XPMASS_LS,XPABSM,XPS_LS,XPSURF)
+  CALL ERROR_ON_TEMPERATURE(XT_LS,XPMASS_LS,XPABST,XPS_LS,XPSURF)
 END IF
 !
 IF (YATMFILETYPE=='GRIBEX') THEN
diff --git a/src/MNH/pressure_in_prep.f90 b/src/MNH/pressure_in_prep.f90
index 5a7c8e7ea..e11e41b68 100644
--- a/src/MNH/pressure_in_prep.f90
+++ b/src/MNH/pressure_in_prep.f90
@@ -82,13 +82,11 @@ USE MODD_DIM_n
 USE MODD_GRID_n
 USE MODD_LBC_n
 USE MODD_PARAMETERS
-USE MODD_FIELD_n, ONLY: XUM,XVM,XWM
+USE MODD_FIELD_n, ONLY: XUT,XVT,XWT
 USE MODD_DYN_n
 USE MODD_REF_n
 USE MODD_CST
-!JUAN REALZ
 USE MODE_MPPDB
-!JUAN REALZ
 !
 IMPLICIT NONE
 !
@@ -123,11 +121,9 @@ INTEGER      :: IKU
 INTEGER      :: IINFO_ll
 REAL         :: ZMAXRES
 TYPE(LIST_ll), POINTER :: TZFIELDS_ll   ! list of fields to exchange
-!JUAN
 REAL                  :: ZMAXVAL,ZRESIDUAL
 INTEGER, DIMENSION(3) :: IMAXLOC
 INTEGER               :: I,J,K
-!JUAN
 !-------------------------------------------------------------------------------
 !
 !*       1.    Initialisations
@@ -143,10 +139,9 @@ IKB=1+JPVEXT
 IKE=NKMAX+JPVEXT
 IKU=IKE+JPVEXT
 !
-ZU(:,:,:) = XUM(:,:,:)
-ZV(:,:,:) = XVM(:,:,:)
-ZW(:,:,:) = XWM(:,:,:)
-
+ZU(:,:,:) = XUT(:,:,:)
+ZV(:,:,:) = XVT(:,:,:)
+ZW(:,:,:) = XWT(:,:,:)
 !
 NULLIFY(TZFIELDS_ll)
 !
@@ -156,22 +151,19 @@ NULLIFY(TZFIELDS_ll)
 !              ----
 !
 DO
-  XUM(:,:,:) = ZU(:,:,:)
-  XVM(:,:,:) = ZV(:,:,:)
-  XWM(:,:,:) = ZW(:,:,:)
-!JUAN REALZ
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, XUM)
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, XVM)
-  CALL ADD3DFIELD_ll(TZFIELDS_ll, XWM)
+  XUT(:,:,:) = ZU(:,:,:)
+  XVT(:,:,:) = ZV(:,:,:)
+  XWT(:,:,:) = ZW(:,:,:)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XUT)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XVT)
+  CALL ADD3DFIELD_ll(TZFIELDS_ll, XWT)
   CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
   CALL CLEANLIST_ll(TZFIELDS_ll)
 
-  CALL MPPDB_CHECK3D(XUM,"PREP::XUM",PRECISION)
-  CALL MPPDB_CHECK3D(XVM,"PREP::XVM",PRECISION)
-  CALL MPPDB_CHECK3D(XWM,"PREP::XWM",PRECISION)
+  CALL MPPDB_CHECK3D(XUT,"PREP::XUM",PRECISION)
+  CALL MPPDB_CHECK3D(XVT,"PREP::XVM",PRECISION)
+  CALL MPPDB_CHECK3D(XWT,"PREP::XWM",PRECISION)
   CALL MPPDB_CHECK3D(XRHODJ,"PREP::XRHODJ",PRECISION)
-
-!JUAN REALZ
 !
 !-------------------------------------------------------------------------------
 !
@@ -184,16 +176,16 @@ DO
   IF (CPRESOPT=='RICHA') &
     WRITE(ILUOUT0,*) 'XRELAX   = ',XRELAX
 !
-  CALL ANEL_BALANCE_n('M',ZRESIDUAL)
+  CALL ANEL_BALANCE_n(ZRESIDUAL)
 !
 !-------------------------------------------------------------------------------
 !
 !*       4.    compute the residual divergence
 !              -------------------------------
 !
-  ZRU(:,:,:) = XUM(:,:,:) * MXM(XRHODJ)
-  ZRV(:,:,:) = XVM(:,:,:) * MYM(XRHODJ)
-  ZRW(:,:,:) = XWM(:,:,:) * MZM(1,IKU,1,XRHODJ)
+  ZRU(:,:,:) = XUT(:,:,:) * MXM(XRHODJ)
+  ZRV(:,:,:) = XVT(:,:,:) * MYM(XRHODJ)
+  ZRW(:,:,:) = XWT(:,:,:) * MZM(1,IKU,1,XRHODJ)
 !
   CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRU)
   CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRV)
@@ -208,32 +200,8 @@ DO
     ELSE
       ZDIV=ZDIV/XRHODJ/XTH00*XRHODREF*XTHVREF*(1.+XRVREF)
     END IF
-    !JUAN FAUX ZMAXVAL=MAX_ll( ABS(ZDIV),IINFO_ll)
-    !JUAN FAUX IMAXLOC=MAXLOC( ABS(ZDIV(IIB:IIE,IJB:IJE,IKB:IKE)))
-    !JUAN FAUX WRITE(ILUOUT0,*) 'JUAN1 residual divergence / 2 DT = ',   &
-    !JUAN FAUX ZMAXVAL,  ' located at ',    &
-    !JUAN FAUX IMAXLOC
-    !WRITE(ILUOUT0,*) 'JUAN1 residual divergence / 2 DT = ',   &
-    !ZRESIDUAL
-!!$    DO K=1,size(ZDIV,3)
-!!$    DO J=1,size(ZDIV,2)
-!!$    DO I=1,size(ZDIV,1)
-!!$     IF ( ABS(ZDIV(I,J,K)) .EQ. ZMAXVAL ) THEN
-!!$	PRINT*,"I=",I," J=",J," K=",K," ZMAXVAL=",ZDIV(I,J,K)
-!!$	PRINT*,"SI=",size(ZDIV,1)," SJ=",size(ZDIV,2)," SK=",size(ZDIV,3)
-!!$     ENDIF
-!!$    ENDDO
-!!$    ENDDO
-!!$    ENDDO
   ELSEIF( CEQNSYS=='MAE' .OR. CEQNSYS=='LHE' ) THEN
     ZDIV=ZDIV/XRHODJ*XRHODREF
-    !JUAN FAUX ZMAXVAL=MAX_ll( ABS(ZDIV),IINFO_ll)
-    !JUAN FAUX IMAXLOC=MAXLOC( ABS(ZDIV(IIB:IIE,IJB:IJE,IKB:IKE)))
-    !JUAN FAUX WRITE(ILUOUT0,*) 'JUAN2 residual divergence / 2 DT = ',   &
-    !JUAN FAUX ZMAXVAL,  ' located at ',    &
-    !JUAN FAUX IMAXLOC
-    !WRITE(ILUOUT0,*) 'JUAN2 residual divergence / 2 DT = ',   &
-    !ZRESIDUAL
   END IF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90
index 646d87c89..5cfac5aa5 100644
--- a/src/MNH/pressurez.f90
+++ b/src/MNH/pressurez.f90
@@ -9,10 +9,10 @@ MODULE MODI_PRESSUREZ
 !
 INTERFACE
 !
-      SUBROUTINE PRESSUREZ(HLUOUT,                      &
+      SUBROUTINE PRESSUREZ(HLUOUT,                                         &
       HLBCX,HLBCY,HPRESOPT,KITR,OITRADJ,KTCOUNT,PRELAX,KMI,                &
-      PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY,PDXHATM,PDYHATM,PRHOM,               &
-      PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,PPABSM,                    &
+      PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY,PDXHATM,PDYHATM,PRHOT,               &
+      PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                           &
       KRR,KRRL,KRRI,PDRYMASST,PREFMASS,PMASS_O_PHI0,                       &
       PTHT,PRT,PRHODREF,PTHVREF,PRVREF,PEXNREF,PLINMASS,                   &
       PRUS,PRVS,PRWS,PPABST,                                               &
@@ -48,7 +48,7 @@ REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
 REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
                                                 ! direction
 !
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  mean of XRHODJ on the plane x y
+REAL, DIMENSION (:), INTENT(IN) :: PRHOT         !  mean of XRHODJ on the plane x y
                                                  !  localized at a mass level
 !
 REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
@@ -65,7 +65,6 @@ REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
 INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
 INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
 !
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABSM      ! pressure (t-dt)
 !
 INTEGER,                  INTENT(IN)    :: KRR   ! Total number of water var.
 INTEGER,                  INTENT(IN)    :: KRRL  ! Number of liquid water var.
@@ -107,10 +106,10 @@ END INTERFACE
 !
 END MODULE MODI_PRESSUREZ
 !     ######################################################################
-      SUBROUTINE PRESSUREZ(HLUOUT,                      &
+      SUBROUTINE PRESSUREZ(HLUOUT,                                         &
       HLBCX,HLBCY,HPRESOPT,KITR,OITRADJ,KTCOUNT,PRELAX,KMI,                &
-      PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY,PDXHATM,PDYHATM,PRHOM,               &
-      PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,PPABSM,                    &
+      PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY,PDXHATM,PDYHATM,PRHOT,               &
+      PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                           &
       KRR,KRRL,KRRI,PDRYMASST,PREFMASS,PMASS_O_PHI0,                       &
       PTHT,PRT,PRHODREF,PTHVREF,PRVREF,PEXNREF,PLINMASS,                   &
       PRUS,PRVS,PRWS,PPABST,                                               &
@@ -277,7 +276,7 @@ REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
 REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
                                                 ! direction
 !
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  mean of XRHODJ on the plane x y
+REAL, DIMENSION (:), INTENT(IN) :: PRHOT         !  mean of XRHODJ on the plane x y
                                                  !  localized at a mass level
 !
 REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
@@ -294,8 +293,6 @@ REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
 INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
 INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
 !
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABSM      ! pressure (t-dt)
-!
 INTEGER,                  INTENT(IN)    :: KRR   ! Total number of water var.
 INTEGER,                  INTENT(IN)    :: KRRL  ! Number of liquid water var.
 INTEGER,                  INTENT(IN)    :: KRRI  ! Number of ice water var.
@@ -335,7 +332,7 @@ REAL, OPTIONAL                     :: PRESIDUAL
 !
 !                                                           Metric coefficients:
 !
-REAL, DIMENSION(SIZE(PPABSM,1),SIZE(PPABSM,2),SIZE(PPABSM,3)) :: ZDV_SOURCE
+REAL, DIMENSION(SIZE(PPABST,1),SIZE(PPABST,2),SIZE(PPABST,3)) :: ZDV_SOURCE
 !                                                   ! divergence of the sources
 !
 INTEGER :: IIB          ! indice I for the first inner mass point along x
@@ -347,7 +344,7 @@ INTEGER :: IKE          ! indice K for the last inner mass point along z
 INTEGER :: ILUOUT       ! Logical unit of output listing
 INTEGER :: IRESP        ! Return code of FM routines
 !
-REAL, DIMENSION(SIZE(PPABSM,1),SIZE(PPABSM,2),SIZE(PPABSM,3)) :: ZTHETAV, &
+REAL, DIMENSION(SIZE(PPABST,1),SIZE(PPABST,2),SIZE(PPABST,3)) :: ZTHETAV, &
                         ! virtual potential temperature
                                                                  ZPHIT
                         ! MAE + DUR => Exner function perturbation
@@ -381,7 +378,7 @@ CALL GET_PHYSICAL_ll(IIB,IJB,IIE,IJE)
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
 !
 IKB= 1+JPVEXT
-IKU= SIZE(PPABSM,3)
+IKU= SIZE(PPABST,3)
 IKE= IKU - JPVEXT
 !
 ZPABS_S(:,:) = 0.
@@ -452,10 +449,10 @@ IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN
     ZTHETAV(:,:,:) = PTHT(:,:,:)
   END IF
   !
-  ZPHIT(:,:,:)=(PPABSM(:,:,:)/XP00)**(XRD/XCPD)-PEXNREF(:,:,:)
+  ZPHIT(:,:,:)=(PPABST(:,:,:)/XP00)**(XRD/XCPD)-PEXNREF(:,:,:)
   !
 ELSEIF(CEQNSYS=='LHE') THEN
-  ZPHIT(:,:,:)= ((PPABSM(:,:,:)/XP00)**(XRD/XCPD)-PEXNREF(:,:,:))   &
+  ZPHIT(:,:,:)= ((PPABST(:,:,:)/XP00)**(XRD/XCPD)-PEXNREF(:,:,:))   &
                * XCPD * PTHVREF(:,:,:)
   !
 END IF
@@ -463,10 +460,10 @@ END IF
 IF(CEQNSYS=='LHE'.AND. LFLAT .AND. LCARTESIAN) THEN
    ! flat cartesian LHE case -> exact solution
  IF ( HPRESOPT /= "ZRESI" ) THEN
-  CALL FLAT_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,         &
+  CALL FLAT_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOT,PAF,PBF,PCF,         &
                PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZDV_SOURCE,ZPHIT)
  ELSE
-  CALL FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,         &
+  CALL FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOT,PAF,PBF,PCF,         &
                PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZDV_SOURCE,ZPHIT,& 
                PBFB,&
                PBF_SXP2_YP1_Z)
@@ -476,22 +473,22 @@ ELSE
   CASE('RICHA')     ! Richardson's method
 !
     CALL RICHARDSON(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,ZTHETAV,      &
-    PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                        &
+    PDXHATM,PDYHATM,PRHOT,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                        &
     KIFAXX,KIFAXY,KITR,KTCOUNT,PRELAX,ZDV_SOURCE,ZPHIT)
 !
    CASE('CGRAD')     ! Conjugate Gradient method
      CALL CONJGRAD(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,ZTHETAV,       &
-     PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                       &
+     PDXHATM,PDYHATM,PRHOT,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                       &
      KIFAXX,KIFAXY,KITR,ZDV_SOURCE,ZPHIT)
 !
   CASE('CRESI')     ! Conjugate Residual method
     CALL CONRESOL(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,ZTHETAV,       &
-    PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                       &
+    PDXHATM,PDYHATM,PRHOT,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                       &
     KIFAXX,KIFAXY,KITR,ZDV_SOURCE,ZPHIT)
 !
   CASE('ZRESI')     ! Conjugate Residual method
     CALL CONRESOLZ(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,ZTHETAV,       &
-    PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                       &
+    PDXHATM,PDYHATM,PRHOT,PAF,PBF,PCF,PTRIGSX,PTRIGSY,                       &
     KIFAXX,KIFAXY,KITR,ZDV_SOURCE,ZPHIT,                                     &
     PBFB,&
     PBF_SXP2_YP1_Z) !JUAN Z_SPLITING
diff --git a/src/MNH/rad_bound.f90 b/src/MNH/rad_bound.f90
index dd102ea70..9d33f8315 100644
--- a/src/MNH/rad_bound.f90
+++ b/src/MNH/rad_bound.f90
@@ -12,10 +12,10 @@ INTERFACE
 !
       SUBROUTINE RAD_BOUND (HLBCX,HLBCY,HTURB,PRIMKMAX,               &
                         PTSTEP,PDXHAT,PDYHAT,PZHAT,                   &
-                        PUM,PVM,PUT,PVT,                              &
+                        PUT,PVT,                                      &
                         PLBXUM,PLBYVM,PLBXUS,PLBYVS,                  &
                         PCPHASE,PCPHASE_PBL,PRHODJ,                   &
-                        PTKEM,PRUS,PRVS,PRWS                          )
+                        PTKET,PRUS,PRVS,PRWS                          )
 ! 
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
 CHARACTER(LEN=4),               INTENT(IN) :: HTURB         ! Turbulence scheme
@@ -27,8 +27,7 @@ REAL,      DIMENSION(:),  INTENT(IN) :: PDXHAT      ! X-direc. meshlength
 REAL,      DIMENSION(:),  INTENT(IN) :: PDYHAT      ! Y-direc. meshlength
 REAL,      DIMENSION(:),  INTENT(IN) :: PZHAT       ! height level without orography
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUM,PVM     ! Horizontal momentum 
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT,PVT     ! at t-dt , t
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT,PVT     ! at t
 !
 ! Lateral Boundary fields at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBXUM,PLBYVM    
@@ -40,7 +39,7 @@ REAL,                     INTENT(IN) :: PCPHASE_PBL ! prescribed PBL phase veloc
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ      ! Jacobian * dry density 
                                                     ! of the reference state 
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTKEM ! TKE at t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTKET ! TKE at t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT):: PRUS,PRVS   ! Horizontal and Vertical
 REAL, DIMENSION(:,:,:),   INTENT(INOUT):: PRWS        ! momentum tendencies
@@ -54,10 +53,10 @@ END MODULE MODI_RAD_BOUND
 !     #################################################################
       SUBROUTINE RAD_BOUND (HLBCX,HLBCY,HTURB,PRIMKMAX,               &
                         PTSTEP,PDXHAT,PDYHAT,PZHAT,                   &
-                        PUM,PVM,PUT,PVT,                              &
+                        PUT,PVT,                                      &
                         PLBXUM,PLBYVM,PLBXUS,PLBYVS,                  &
                         PCPHASE,PCPHASE_PBL,PRHODJ,                   &
-                        PTKEM,PRUS,PRVS,PRWS                          )
+                        PTKET,PRUS,PRVS,PRWS                          )
 !     #################################################################
 !
 !!****  *RAD_BOUND* - routine computing the velocity components normal to
@@ -146,7 +145,8 @@ END MODULE MODI_RAD_BOUND
 !!                                       in the PBL
 !!      Juan 25/02/2010: BUG add ZTKEX = 0.0 
 !!      Modification   08/10  (V.Masson) Bug correction and add cphase_profile
-!!      Escobar     9/11/2010 : cphas_profile : array bound problem if NO Turb =>  PTKEM optional
+!!      Escobar     9/11/2010 : cphas_profile : array bound problem if NO Turb =>  PTKET optional
+!!      Lac.C.       2011     : Adaptation to FIT temporal scheme
 !!      Modification 06/13     (C.Lac)   Introduction of cphase_pbl                                        
 !!      
 !-------------------------------------------------------------------------------
@@ -179,8 +179,7 @@ REAL,      DIMENSION(:),  INTENT(IN) :: PDXHAT      ! X-direc. meshlength
 REAL,      DIMENSION(:),  INTENT(IN) :: PDYHAT      ! Y-direc. meshlength
 REAL,      DIMENSION(:),  INTENT(IN) :: PZHAT       ! height level without orography
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUM,PVM     ! Horizontal momentum 
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT,PVT     ! at t-dt , t
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PUT,PVT     ! at t
 !
 ! Lateral Boundary fields at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBXUM,PLBYVM    
@@ -192,7 +191,7 @@ REAL,                     INTENT(IN) :: PCPHASE_PBL ! prescribed PBL phase veloc
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ      ! Jacobian * dry density 
                                                     ! of the reference state 
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKEM ! TKE at t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKET ! TKE at t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT):: PRUS,PRVS   ! Horizontal and Vertical
 REAL, DIMENSION(:,:,:),   INTENT(INOUT):: PRWS        ! momentum tendancies
@@ -225,6 +224,7 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,3)) :: ZCPHASY! Normalized Phase velocity
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,3)) :: ZPHASY ! Phase velocity
 !                                                  ! for V field at Y-boundaries
 REAL                                     :: ZTSTEP ! effective time step
+REAL                                     :: ZALPHA2! implicitness of the damping
 !
 !-------------------------------------------------------------------------------
 !
@@ -241,9 +241,11 @@ IKE = SIZE(PUT,3) - JPVEXT
 !*       1.2  Compute the inverse of the applicable timestep
 !
 !
-ZTSTEP = PTSTEP / 2.
-ZINVTSTEP = 0.5/ZTSTEP
+ZTSTEP = PTSTEP 
+ZINVTSTEP = 1./PTSTEP
 ZKTSTEP   = PRIMKMAX*ZTSTEP
+! ZALPHA2 = O : explicit ; ZALPHA2 = 1 : implicit ; ZALPHA2 = 0.5 SI
+ZALPHA2 = 1. 
 !
 !-------------------------------------------------------------------------------
 !-------------------------------------------------------------------------------
@@ -270,14 +272,14 @@ SELECT CASE ( HLBCX(1) )
   CASE ('OPEN')
 !
     IF (HTURB /= "NONE" ) THEN
-       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASX,PTKEM(IIB,:,:))
+       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASX,PTKET(IIB,:,:))
     ELSE
        CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASX)
     END IF
 
     ZCPHASX(:,:) = MAX ( 0., MIN ( 1.,                                      & 
-                      (-PUM(IIB,:,:) + ZPHASX(:,:) ) * ZTSTEP / PDXHAT(IIB)  )    )
-                      ! notice that ZCPHASX=0. when ZPHASX  < PUM(IIB,:,:)  
+                      (-PUT(IIB,:,:) + ZPHASX(:,:) ) * ZTSTEP / PDXHAT(IIB)  )    )
+                      ! notice that ZCPHASX=0. when ZPHASX  < PUT(IIB,:,:)  
 !
 !
     IF ( SIZE(PLBXUS,1) == 0 ) THEN
@@ -293,14 +295,22 @@ SELECT CASE ( HLBCX(1) )
 !  
 !     ============================================================
 !
-    PRUS (IIB,:,:) =(PRHODJ(IIB-1,:,:) + PRHODJ(IIB,:,:)) * 0.5 *           &
-                     (  (1. - ZCPHASX(:,:) - ZKTSTEP) * PUM(IIB  ,:,:)      &
-                       + 2. * ZCPHASX(:,:)            * PUT(IIB+1,:,:)      &
-            +2.* (   ZLBEU (:,:) * ZTSTEP                                   &
-                  -  ZLBGU (:,:) * ZCPHASX(:,:)                             &
-                  +  ZKTSTEP*( ZLBXU(:,:) )       )                         &
-                     ) * ZINVTSTEP / (1.+ ZCPHASX(:,:) +ZKTSTEP)
-!
+!     PRUS (IIB,:,:) =(PRHODJ(IIB-1,:,:) + PRHODJ(IIB,:,:)) * 0.5 *           &
+!                    (  (1. - ZCPHASX(:,:) - ZKTSTEP) * PUM(IIB  ,:,:)      &
+!                      + 2. * ZCPHASX(:,:)            * PUT(IIB+1,:,:)      &
+!           +2.* (   ZLBEU (:,:) * ZTSTEP                                   &
+!                 -  ZLBGU (:,:) * ZCPHASX(:,:)                             &
+!                 +  ZKTSTEP*( ZLBXU(:,:) )       )                         &
+!                    ) * ZINVTSTEP / (1.+ ZCPHASX(:,:) +ZKTSTEP)
+!
+      PRUS (IIB,:,:) =(PRHODJ(IIB-1,:,:) + PRHODJ(IIB,:,:)) * 0.5 *          &
+                       ZINVTSTEP / (1.+ ZKTSTEP * ZALPHA2 )  *               &
+            (  (1. - ZCPHASX(:,:) - ZKTSTEP * (1. - ZALPHA2)) * PUT(IIB,:,:) &
+                         +  ZCPHASX(:,:)            * PUT(IIB+1  ,:,:)       &
+              + (   ZLBEU (:,:) * ZTSTEP                                     &
+                    -  ZLBGU (:,:) * ZCPHASX(:,:)                            &
+                    +  ZKTSTEP*ZLBXU(:,:)   )  )  
+
 !
 !
 END SELECT
@@ -331,13 +341,13 @@ SELECT CASE ( HLBCX(2) )
   CASE ('OPEN')
 !
     IF (HTURB /= "NONE" ) THEN
-       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASX,PTKEM(IIE,:,:))
+       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASX,PTKET(IIE,:,:))
     ELSE
        CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASX)
     END IF
 !
     ZCPHASX(:,:) = MAX ( 0., MIN ( 1.,                                  &
-                    ( PUM(IIE+1,:,:) + ZPHASX(:,:) ) * ZTSTEP/PDXHAT(IIE)  )      )
+                    ( PUT(IIE+1,:,:) + ZPHASX(:,:) ) * ZTSTEP/PDXHAT(IIE)  )      )
 !
 ! 
     ILBX=SIZE(PLBXUM,1)
@@ -354,13 +364,21 @@ SELECT CASE ( HLBCX(2) )
 !     
 !     ============================================================
 ! 
-    PRUS (IIE+1,:,:) =(PRHODJ(IIE+1,:,:) + PRHODJ(IIE,:,:)) * 0.5 *           &
-                       (  (1. - ZCPHASX(:,:) - ZKTSTEP) * PUM(IIE+1,:,:)      &
-                         + 2. * ZCPHASX(:,:)            * PUT(IIE  ,:,:)      &
-              +2.* (   ZLBEU (:,:) * ZTSTEP                                   &
-                    +  ZLBGU (:,:) * ZCPHASX(:,:)                             &
-                    +  ZKTSTEP*ZLBXU(:,:)   )                                 &
-                       ) * ZINVTSTEP / (1.+ZCPHASX(:,:) +ZKTSTEP)
+!     PRUS (IIE+1,:,:) =(PRHODJ(IIE+1,:,:) + PRHODJ(IIE,:,:)) * 0.5 *         &
+!                      (  (1. - ZCPHASX(:,:) - ZKTSTEP) * PUM(IIE+1,:,:)      &
+!                        + 2. * ZCPHASX(:,:)            * PUT(IIE  ,:,:)      &
+!             +2.* (   ZLBEU (:,:) * ZTSTEP                                   &
+!                   +  ZLBGU (:,:) * ZCPHASX(:,:)                             &
+!                   +  ZKTSTEP*ZLBXU(:,:)   )                                 &
+!                      ) * ZINVTSTEP / (1.+ZCPHASX(:,:) +ZKTSTEP)
+! 
+      PRUS (IIE+1,:,:) =(PRHODJ(IIE+1,:,:) + PRHODJ(IIE,:,:)) * 0.5 *           &
+                       ZINVTSTEP / (1.+ ZKTSTEP * ZALPHA2 )  *                  &
+            (  (1. - ZCPHASX(:,:) - ZKTSTEP * (1. - ZALPHA2) ) * PUT(IIE+1,:,:) &
+                         +  ZCPHASX(:,:)            * PUT(IIE  ,:,:)            &
+              + (   ZLBEU (:,:) * ZTSTEP                                        &
+                    +  ZLBGU (:,:) * ZCPHASX(:,:)                               &
+                    +  ZKTSTEP*ZLBXU(:,:)   )  )   
 !
 !
 !
@@ -393,13 +411,13 @@ SELECT CASE ( HLBCY(1) )
   CASE ('OPEN')
 !
     IF (HTURB /= "NONE" ) THEN
-       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASY,PTKEM(:,IJB,:))
+       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASY,PTKET(:,IJB,:))
     ELSE
        CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASY)
     END IF    
 !
     ZCPHASY(:,:) = MAX ( 0., MIN ( 1.,                                      &
-                    (-PVM(:,IJB,:) + ZPHASY(:,:) ) * ZTSTEP/ PDYHAT(IJB)   )      )
+                    (-PVT(:,IJB,:) + ZPHASY(:,:) ) * ZTSTEP/ PDYHAT(IJB)   )      )
 !
     IF ( SIZE(PLBYVS,1) == 0 ) THEN
       ZLBEV (:,:) = 0.
@@ -414,13 +432,22 @@ SELECT CASE ( HLBCY(1) )
 !  
 !     ============================================================
 !
-    PRVS (:,IJB,:) =(PRHODJ(:,IJB-1,:) + PRHODJ(:,IJB,:)) * 0.5 *           &
-                     (  (1. - ZCPHASY(:,:) - ZKTSTEP) * PVM(:,IJB  ,:)      &
-                       + 2. * ZCPHASY(:,:)  * PVT(:,IJB+1,:)                &
-            +2.* (   ZLBEV (:,:) * ZTSTEP                                   &
-                  -  ZLBGV (:,:) * ZCPHASY(:,:)                             &
-                  +  ZKTSTEP*ZLBYV(:,:)       )                             &
-                     ) * ZINVTSTEP / (1.+ ZCPHASY(:,:) +ZKTSTEP)
+!     PRVS (:,IJB,:) =(PRHODJ(:,IJB-1,:) + PRHODJ(:,IJB,:)) * 0.5 *           &
+!                    (  (1. - ZCPHASY(:,:) - ZKTSTEP) * PVM(:,IJB  ,:)      &
+!                      + 2. * ZCPHASY(:,:)  * PVT(:,IJB+1,:)                &
+!           +2.* (   ZLBEV (:,:) * ZTSTEP                                   &
+!                 -  ZLBGV (:,:) * ZCPHASY(:,:)                             &
+!                 +  ZKTSTEP*ZLBYV(:,:)       )                             &
+!                    ) * ZINVTSTEP / (1.+ ZCPHASY(:,:) +ZKTSTEP)
+      PRVS (:,IJB,:) =(PRHODJ(:,IJB-1,:) + PRHODJ(:,IJB,:)) * 0.5 *        &
+                       ZINVTSTEP / (1.+ ZKTSTEP * ZALPHA2 )  *             &
+          (  (1. - ZCPHASY(:,:) - ZKTSTEP * (1. - ZALPHA2) ) * PVT(:,IJB,:)&
+                         +  ZCPHASY(:,:)            * PVT(:,IJB+1,:)       &
+              + (   ZLBEV (:,:) * ZTSTEP                                   &
+                    -  ZLBGV (:,:) * ZCPHASY(:,:)                          &
+                    +  ZKTSTEP*ZLBYV(:,:)   )  )   
+!
+!
 !
 !
 END SELECT
@@ -451,13 +478,13 @@ SELECT CASE ( HLBCY(2) )
   CASE ('OPEN')
 !
     IF (HTURB /= "NONE" ) THEN
-       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASY,PTKEM(:,IJE,:))
+       CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASY,PTKET(:,IJE,:))
     ELSE
        CALL CPHASE_PROFILE(PZHAT,PCPHASE,PCPHASE_PBL,ZPHASY)
     END IF    
 !
     ZCPHASY(:,:) = MAX ( 0., MIN ( 1.,                                      &
-                    ( PVM(:,IJE+1,:) + ZPHASY(:,:) ) * ZTSTEP/PDYHAT(IJE)  )      )
+                    ( PVT(:,IJE+1,:) + ZPHASY(:,:) ) * ZTSTEP/PDYHAT(IJE)  )      )
 !
     ILBY=SIZE(PLBYVM,2)
     IF ( SIZE(PLBYVS,1) == 0 ) THEN
@@ -473,14 +500,22 @@ SELECT CASE ( HLBCY(2) )
 !  
 !     ============================================================
 !
-    PRVS (:,IJE+1,:) =(PRHODJ(:,IJE+1,:) + PRHODJ(:,IJE,:)) * 0.5 *           &
-                       (  (1. - ZCPHASY(:,:) - ZKTSTEP) * PVM(:,IJE+1,:)      &
-                         + 2. * ZCPHASY(:,:)  * PVT(:,IJE  ,:)                &
-              +2.* (   ZLBEV (:,:) * ZTSTEP                                   &
+!     PRVS (:,IJE+1,:) =(PRHODJ(:,IJE+1,:) + PRHODJ(:,IJE,:)) * 0.5 *           &
+!                      (  (1. - ZCPHASY(:,:) - ZKTSTEP) * PVM(:,IJE+1,:)      &
+!                        + 2. * ZCPHASY(:,:)  * PVT(:,IJE  ,:)                &
+!             +2.* (   ZLBEV (:,:) * ZTSTEP                                   &
+!                   +  ZLBGV (:,:) * ZCPHASY(:,:)                             &
+!                   +  ZKTSTEP* ZLBYV(:,:)   )                                &
+!                      ) * ZINVTSTEP / (1.+ ZCPHASY(:,:) +ZKTSTEP)
+!
+      PRVS (:,IJE+1,:) =(PRHODJ(:,IJE+1,:) + PRHODJ(:,IJE,:)) * 0.5 *         &
+                       ZINVTSTEP / (1.+ ZKTSTEP * ZALPHA2 )  *                &
+           (  (1. - ZCPHASY(:,:) - ZKTSTEP * (1. - ZALPHA2) ) * PVT(:,IJE+1,:)&
+                         +  ZCPHASY(:,:)            * PVT(:,IJE,:)            &
+              + (   ZLBEV (:,:) * ZTSTEP                                      &
                     +  ZLBGV (:,:) * ZCPHASY(:,:)                             &
-                    +  ZKTSTEP* ZLBYV(:,:)   )                                &
-                       ) * ZINVTSTEP / (1.+ ZCPHASY(:,:) +ZKTSTEP)
-!
+                    +  ZKTSTEP*ZLBYV(:,:)   )  )   
+! 
 !
 END SELECT
 !
diff --git a/src/MNH/rain_c2r2.f90 b/src/MNH/rain_c2r2.f90
index ba6d73d43..d9de848d7 100644
--- a/src/MNH/rain_c2r2.f90
+++ b/src/MNH/rain_c2r2.f90
@@ -9,13 +9,13 @@
 !      ######################
 !
 INTERFACE
-      SUBROUTINE RAIN_C2R2 (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP_MET, PTSTEP,  &
+      SUBROUTINE RAIN_C2R2 (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,              &
                             KMI, HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ,      &
                             PRHODREF, PEXNREF,                                  &
-                            PPABSM, PPABST, PTHM, PTHT, PRVT, PRCM, PRCT,       &
-                            PRRT, PRRM,                                         &
+                            PPABST, PTHT, PRVT, PRCT,                           &
+                            PRRT, PTHM, PRCM, PPABSM,                           &
                             PW_NU, PTHS, PRVS, PRCS, PRRS,                      &
-                            PCNT, PCCT, PCRM, PCRT, PCNS, PCCS, PCRS,           &
+                            PCNT, PCCT, PCRT, PCNS, PCCS, PCRS,                 &
                             PINPRC, PINPRR, PINPRR3D, PEVAP3D,PAEROT,           &
                             PSOLORG, PMI, HACTCCN                               )
 !
@@ -30,8 +30,6 @@ LOGICAL,                  INTENT(IN)    :: ORAIN   ! switch to activate the
                                                    ! rain formation by coalescence
 INTEGER,                  INTENT(IN)    :: KSPLITR ! Number of small time step 
                                       ! integration for  rain sedimendation
-REAL,                     INTENT(IN)    :: PTSTEP_MET   ! Effective Time step
-                                        ! for meteorological scalar variables
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step :XTSTEP in namelist
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
@@ -45,15 +43,14 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF ! Reference Exner function
 !
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM   ! Pressure time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at time t-Dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU   ! updraft velocity used for
                                                    ! the nucleation param.
@@ -64,7 +61,6 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRRS    ! Rain water m.r. source
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCNT    ! Water vapor C. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCCT    ! Cloud water C. at t
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRM    ! Rain water C. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRT    ! Rain water C. at t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCNS    ! Water vapor C. source
@@ -84,13 +80,13 @@ END SUBROUTINE RAIN_C2R2
 END INTERFACE
 END MODULE MODI_RAIN_C2R2
 !     ######################################################################
-      SUBROUTINE RAIN_C2R2 (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP_MET, PTSTEP,  &
+      SUBROUTINE RAIN_C2R2 (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,              &
                             KMI, HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ,      &
                             PRHODREF, PEXNREF,                                  &
-                            PPABSM, PPABST, PTHM, PTHT, PRVT, PRCM, PRCT,       &
-                            PRRT, PRRM,                                         &
+                            PPABST, PTHT, PRVT,  PRCT,                          &
+                            PRRT, PTHM, PRCM, PPABSM,                           &
                             PW_NU, PTHS, PRVS, PRCS, PRRS,                      &
-                            PCNT, PCCT, PCRM, PCRT, PCNS, PCCS, PCRS,           &
+                            PCNT, PCCT,  PCRT, PCNS, PCCS, PCRS,                &
                             PINPRC, PINPRR, PINPRR3D, PEVAP3D,PAEROT,           &
                             PSOLORG, PMI, HACTCCN                               )
 !     ######################################################################
@@ -230,8 +226,6 @@ LOGICAL,                  INTENT(IN)    :: ORAIN   ! switch to activate the
                                                    ! rain formation by coalescence
 INTEGER,                  INTENT(IN)    :: KSPLITR ! Number of small time step 
                                       ! integration for  rain sedimendation
-REAL,                     INTENT(IN)    :: PTSTEP_MET   ! Effective Time step
-                                        ! for meteorological scalar variables
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step :XTSTEP in namelist
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
@@ -245,15 +239,14 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF ! Reference Exner function
 !
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! Pressure time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at time t-Dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU   ! updraft velocity used for
                                                    ! the nucleation param.
@@ -264,7 +257,6 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRRS    ! Rain water m.r. source
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCNT    ! Water vapor C. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCCT    ! Cloud water C. at t
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRM    ! Rain water C. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCRT    ! Rain water C. at t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCNS    ! Water vapor C. source
@@ -396,8 +388,8 @@ IKE=SIZE(PZZ,3) - JPVEXT
 !
 ISIZE = SIZE(XRTMIN);ALLOCATE(ZRTMIN(ISIZE))
 ISIZE = SIZE(XCTMIN);ALLOCATE(ZCTMIN(ISIZE))
-ZRTMIN(:) = XRTMIN(:) / PTSTEP_MET
-ZCTMIN(:) = XCTMIN(:) / PTSTEP_MET
+ZRTMIN(:) = XRTMIN(:) / PTSTEP
+ZCTMIN(:) = XCTMIN(:) / PTSTEP
 !
 ZWLBDC3(:,:,:) = 1.E30
 ZWLBDC(:,:,:)  = 1.E10
@@ -414,7 +406,6 @@ WHERE (PRRT(:,:,:)>XRTMIN(3) .AND. PCRT(:,:,:)>XCTMIN(3))
   ZWLBDR(:,:,:)  = ZWLBDR3(:,:,:)**XLBEXR
 END WHERE
 ZT(:,:,:)  = PTHT(:,:,:) * (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
 !
 !-------------------------------------------------------------------------------
 !
@@ -422,9 +413,9 @@ ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
 !   	        --------------------------------------
 !
 IF ((HACTCCN == 'ABRK').AND.((LORILAM).OR.(LDUST).OR.(LSALT))) THEN
-CALL AER_NUCLEATION
+  CALL AER_NUCLEATION
 ELSE
-CALL C2R2_NUCLEATION
+  CALL C2R2_NUCLEATION
 ENDIF
 
 !
@@ -506,7 +497,7 @@ END IF
 !
 !*       6.2    time splitting loop initialization        
 !
-ZTSPLITR= PTSTEP_MET / FLOAT(KSPLITR)
+ZTSPLITR= PTSTEP / FLOAT(KSPLITR)
 !
 CALL C2R2_SEDIMENTATION
 ! 
@@ -541,11 +532,11 @@ INTEGER                           :: JL       ! and PACK intrinsics
 !  the precipitating fields are larger than a minimal value only !!!
 
 ZPRRS(:,:,:) = 0.0
-ZPRRS(:,:,:) = PRRS(:,:,:)-PRRM(:,:,:)/PTSTEP_MET
-PRRS(:,:,:)  = PRRM(:,:,:)/PTSTEP_MET
+ZPRRS(:,:,:) = PRRS(:,:,:)-PRRT(:,:,:)/PTSTEP
+PRRS(:,:,:)  = PRRT(:,:,:)/PTSTEP
 ZPCRS(:,:,:) = 0.0
-ZPCRS(:,:,:) = PCRS(:,:,:)-PCRM(:,:,:)/PTSTEP_MET
-PCRS(:,:,:)  = PCRM(:,:,:)/PTSTEP_MET
+ZPCRS(:,:,:) = PCRS(:,:,:)-PCRT(:,:,:)/PTSTEP
+PCRS(:,:,:)  = PCRT(:,:,:)/PTSTEP
 !
 DO JN = 1 , KSPLITR
   GSEDIM(:,:,:) = .FALSE.
@@ -566,11 +557,11 @@ DO JN = 1 , KSPLITR
       PRRS(:,:,:) = PRRS(:,:,:) + ZPRRS(:,:,:)/KSPLITR
       PCRS(:,:,:) = PCRS(:,:,:) + ZPCRS(:,:,:)/KSPLITR
       IF( OSEDC ) THEN
-        PCCS(:,:,:) = PCCS(:,:,:) * PTSTEP_MET
-        PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP_MET
+        PCCS(:,:,:) = PCCS(:,:,:) * PTSTEP
+        PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP
       END IF
-      PCRS(:,:,:) = PCRS(:,:,:) * PTSTEP_MET
-      PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP_MET
+      PCRS(:,:,:) = PCRS(:,:,:) * PTSTEP
+      PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP
       DO JK = IKB , IKE
         ZW(:,:,JK)=ZTSPLITR/(PZZ(:,:,JK+1)-PZZ(:,:,JK))
       END DO
@@ -625,7 +616,7 @@ DO JN = 1 , KSPLITR
     END IF
 !             
    END IF
-!          
+!         
    IF( OSEDC ) THEN
      DO JK = IKB , IKE
         PRCS(:,:,JK) = PRCS(:,:,JK) + ZW(:,:,JK)*    &
@@ -696,11 +687,11 @@ DO JN = 1 , KSPLITR
 !
   IF( JN==KSPLITR ) THEN
       IF( OSEDC ) THEN
-        PRCS(:,:,:) = PRCS(:,:,:) / PTSTEP_MET
-        PCCS(:,:,:) = PCCS(:,:,:) / PTSTEP_MET
+        PRCS(:,:,:) = PRCS(:,:,:) / PTSTEP
+        PCCS(:,:,:) = PCCS(:,:,:) / PTSTEP
       END IF
-      PRRS(:,:,:) = PRRS(:,:,:) / PTSTEP_MET
-      PCRS(:,:,:) = PCRS(:,:,:) / PTSTEP_MET
+      PRRS(:,:,:) = PRRS(:,:,:) / PTSTEP
+      PCRS(:,:,:) = PCRS(:,:,:) / PTSTEP
   END IF
 !                    
   IF ( OSEDC .AND. OCLOSE_OUT ) THEN
@@ -783,6 +774,7 @@ ZTDT(:,:,:)   = 0.
 ZDRC(:,:,:)   = 0.
 
 IF (OACTIT) THEN
+  ZTM(:,:,:)    = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
   ZTDT(:,:,:)   = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP                              ! dT/dt
   ZDRC(:,:,:)   = (PRCT(:,:,:)-PRCM(:,:,:))/PTSTEP                          ! drc/dt
   ZTDT(:,:,:)   = MIN(0.,ZTDT(:,:,:)+(XG*PW_NU(:,:,:))/XCPD- &
@@ -935,9 +927,9 @@ IF( INUCT >= 1 ) THEN
 ! the CCN spectra formula uses ZSMAX in percent
 !
   IF (XCONC_CCN > 0.) THEN
-    ZZW1(:) = MIN( ZCONC_CCN(:),ZCHEN_TMP(:) * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) ) / PTSTEP_MET
+    ZZW1(:) = MIN( ZCONC_CCN(:),ZCHEN_TMP(:) * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) ) / PTSTEP
   ELSE
-    ZZW1(:) = ZCHEN_TMP(:) * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) / PTSTEP_MET
+    ZZW1(:) = ZCHEN_TMP(:) * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) / PTSTEP
   ENDIF
   ZW(:,:,:)   = PCNS(:,:,:)
   PCNS(:,:,:) = UNPACK( MAX( ZZW1(:),ZCNS(:) ),MASK=GNUCT(:,:,:), &
@@ -1058,6 +1050,7 @@ ZZW1LOG(:,:,:)= 0. ! supersaturation
 ZTDT(:,:,:)   = 0.
 ZDRC(:,:,:)   = 0.
 IF (OACTIT) THEN
+  ZTM(:,:,:)    = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
   ZTDT(:,:,:)   = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP                              ! dT/dt
   ZDRC(:,:,:)   = (PRCT(:,:,:)-PRCM(:,:,:))/PTSTEP                           ! drc/dt
   ZTDT(:,:,:)   = MIN(0.,ZTDT(:,:,:)+(XG*PW_NU(:,:,:))/XCPD- &
@@ -1078,7 +1071,7 @@ ELSE
            PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))
 END IF
 !
- INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
+INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
 
 IF( INUCT >= 1 ) THEN
   ALLOCATE(ZRVT(INUCT))
@@ -1139,7 +1132,7 @@ CALL CH_AER_ACTIVATION(ZAERO, ZZT, ZZW2, ZTDTBIS, ZRHODREF, ZPABST,&
 ! Nb de goutelettes activées
 
 !test
-ZZW1(:) = MAX(ZNCN(:)/PTSTEP_MET - ZCNS(:), 0.)
+ZZW1(:) = MAX(ZNCN(:)/PTSTEP - ZCNS(:), 0.)
 !
 ZW(:,:,:) = UNPACK( ZZW1(:),MASK=GNUCT(:,:,:),FIELD=0.0 ) 
 PCNS(:,:,:) = PCNS(:,:,:) + ZW(:,:,:)
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 67f26e72e..3525350c5 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -12,11 +12,11 @@ INTERFACE
       SUBROUTINE RAIN_ICE ( OSEDIC,HSEDIM, HSUBG_AUCV, OWARM, KKA, KKU, KKL,      &
                             KSPLITR, PTSTEP, KMI, KRR,                            &
                             PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
-                            PTHT, PRVT, PRCT, PRCM, PRRT, PRRM, PRIT, PRST, PRSM, &
-                            PRGT, PRGM, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, &
+                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
+                            PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
                             PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
                             PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                   &
-                            PRHT, PRHM, PRHS, PINPRH                              )
+                            PRHT, PRHS, PINPRH                                    )
 !
 !
 LOGICAL,                  INTENT(IN)    :: OSEDIC ! Switch for droplet sedim.
@@ -49,14 +49,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCLDFR  ! Cloud fraction
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRIT    ! Pristine ice m.r. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRST    ! Snow/aggregate m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRSM    ! Snow/aggregate m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRGT    ! Graupel/hail m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRGM    ! Graupel/hail m.r. at t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at t
 !
@@ -78,7 +74,6 @@ REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PSEA
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PTOWN
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
-REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHM    ! Hail m.r. at t-dt
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(INOUT) :: PRHS    ! Hail m.r. source
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(INOUT)     :: PINPRH! Hail instant precip
 
@@ -90,11 +85,11 @@ END MODULE MODI_RAIN_ICE
       SUBROUTINE RAIN_ICE ( OSEDIC, HSEDIM, HSUBG_AUCV, OWARM,KKA,KKU,KKL,        &
                             KSPLITR, PTSTEP, KMI, KRR,                            &
                             PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
-                            PTHT, PRVT, PRCT, PRCM, PRRT, PRRM, PRIT, PRST, PRSM, &
-                            PRGT, PRGM, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, &
+                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
+                            PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
                             PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
                             PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                   &
-                            PRHT, PRHM, PRHS, PINPRH                              )
+                            PRHT, PRHS, PINPRH                                    )
 !     ######################################################################
 !
 !!****  * -  compute the explicit microphysical sources
@@ -229,6 +224,7 @@ END MODULE MODI_RAIN_ICE
 !!      (S. Riette) Oct 2010 Better vectorisation of RAIN_ICE_SEDIMENTATION_STAT
 !!      (Y. Seity), 02-2012  add possibility to run with reversed vertical levels
 !!      Juan 24/09/2012: for BUG Pgi rewrite PACK function on mode_pack_pgi
+!!      (C. Lac) FIT temporal scheme : instant M removed
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -244,6 +240,7 @@ USE MODD_BUDGET
 USE MODD_LES
 USE MODI_BUDGET
 USE MODI_GAMMA
+USE MODE_FMWRIT
 !
 #ifdef MNH_PGI
 USE MODE_PACK_PGI
@@ -285,14 +282,10 @@ REAL, DIMENSION(:,:,:),     INTENT(IN)  :: PCLDFR! Convective Mass Flux Cloud fr
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRIT    ! Pristine ice m.r. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRST    ! Snow/aggregate m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRSM    ! Snow/aggregate m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRGT    ! Graupel/hail m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRGM    ! Graupel/hail m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS    ! Theta source
@@ -312,7 +305,6 @@ REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PSEA
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PTOWN
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
-REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHM    ! Hail m.r. at t-dt
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(INOUT) :: PRHS    ! Hail m.r. source
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(INOUT)     :: PINPRH! Hail instant precip
 !
@@ -434,8 +426,6 @@ REAL, DIMENSION(SIZE(XRTMIN))     :: ZRTMIN
 !
 INTEGER , DIMENSION(SIZE(GMICRO)) :: I1,I2,I3 ! Used to replace the COUNT
 INTEGER                           :: JL       ! and PACK intrinsics
-CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
 !
 !-------------------------------------------------------------------------------
 !
@@ -568,7 +558,7 @@ IF( IMICRO >= 0 ) THEN
         ALLOCATE(ZZW1(IMICRO,6))
  ENDIF
 !
-  IF (LBU_ENABLE .OR. LLES_CALL) THEN
+  IF (LBU_ENABLE .OR. LLES_CALL .OR. LCHECK) THEN
     ALLOCATE(ZRHODJ(IMICRO))
     ZRHODJ(:) = PACK( PRHODJ(:,:,:),MASK=GMICRO(:,:,:) )
   END IF
@@ -918,22 +908,22 @@ IF ( KRR == 7 ) ILENALLOCH = 0
 !
 IF (OSEDIC) THEN
   ZPRCS(:,:,:) = 0.0
-  ZPRCS(:,:,:) = PRCS(:,:,:)-PRCM(:,:,:)* ZINVTSTEP
-  PRCS(:,:,:)  = PRCM(:,:,:)* ZINVTSTEP
+  ZPRCS(:,:,:) = PRCS(:,:,:)-PRCT(:,:,:)* ZINVTSTEP
+  PRCS(:,:,:)  = PRCT(:,:,:)* ZINVTSTEP
 END IF
 ZPRRS(:,:,:) = 0.0
 ZPRSS(:,:,:) = 0.0
 ZPRGS(:,:,:) = 0.0
 IF ( KRR == 7 ) ZPRHS(:,:,:) = 0.0
 !
-ZPRRS(:,:,:) = PRRS(:,:,:)-PRRM(:,:,:)* ZINVTSTEP
-ZPRSS(:,:,:) = PRSS(:,:,:)-PRSM(:,:,:)* ZINVTSTEP
-ZPRGS(:,:,:) = PRGS(:,:,:)-PRGM(:,:,:)* ZINVTSTEP
-IF ( KRR == 7 ) ZPRHS(:,:,:) = PRHS(:,:,:)-PRHM(:,:,:)* ZINVTSTEP
-PRRS(:,:,:)  = PRRM(:,:,:)* ZINVTSTEP
-PRSS(:,:,:)  = PRSM(:,:,:)* ZINVTSTEP
-PRGS(:,:,:)  = PRGM(:,:,:)* ZINVTSTEP
-IF ( KRR == 7 ) PRHS(:,:,:)  = PRHM(:,:,:)* ZINVTSTEP
+ZPRRS(:,:,:) = PRRS(:,:,:)-PRRT(:,:,:)* ZINVTSTEP
+ZPRSS(:,:,:) = PRSS(:,:,:)-PRST(:,:,:)* ZINVTSTEP
+ZPRGS(:,:,:) = PRGS(:,:,:)-PRGT(:,:,:)* ZINVTSTEP
+IF ( KRR == 7 ) ZPRHS(:,:,:) = PRHS(:,:,:)-PRHT(:,:,:)* ZINVTSTEP
+PRRS(:,:,:)  = PRRT(:,:,:)* ZINVTSTEP
+PRSS(:,:,:)  = PRST(:,:,:)* ZINVTSTEP
+PRGS(:,:,:)  = PRGT(:,:,:)* ZINVTSTEP
+IF ( KRR == 7 ) PRHS(:,:,:)  = PRHT(:,:,:)* ZINVTSTEP
 !
 ! PRiS = Source of the previous time step + source created during the subtime
 ! step
@@ -1325,22 +1315,22 @@ ZRTMIN(:)    = XRTMIN(:) * ZINVTSTEP
 !
 IF (OSEDIC) THEN
   ZPRCS(:,:,:) = 0.0
-  ZPRCS(:,:,:) = PRCS(:,:,:)-PRCM(:,:,:)* ZINVTSTEP
-  PRCS(:,:,:)  = PRCM(:,:,:)* ZINVTSTEP
+  ZPRCS(:,:,:) = PRCS(:,:,:)-PRCT(:,:,:)* ZINVTSTEP
+  PRCS(:,:,:)  = PRCT(:,:,:)* ZINVTSTEP
 END IF
 ZPRRS(:,:,:) = 0.0
 ZPRSS(:,:,:) = 0.0
 ZPRGS(:,:,:) = 0.0
 IF ( KRR == 7 ) ZPRHS(:,:,:) = 0.0
 !
-ZPRRS(:,:,:) = PRRS(:,:,:)-PRRM(:,:,:)* ZINVTSTEP
-ZPRSS(:,:,:) = PRSS(:,:,:)-PRSM(:,:,:)* ZINVTSTEP
-ZPRGS(:,:,:) = PRGS(:,:,:)-PRGM(:,:,:)* ZINVTSTEP
-IF ( KRR == 7 ) ZPRHS(:,:,:) = PRHS(:,:,:)-PRHM(:,:,:)* ZINVTSTEP
-PRRS(:,:,:)  = PRRM(:,:,:)* ZINVTSTEP
-PRSS(:,:,:)  = PRSM(:,:,:)* ZINVTSTEP
-PRGS(:,:,:)  = PRGM(:,:,:)* ZINVTSTEP
-IF ( KRR == 7 ) PRHS(:,:,:)  = PRHM(:,:,:)* ZINVTSTEP
+ZPRRS(:,:,:) = PRRS(:,:,:)-PRRT(:,:,:)* ZINVTSTEP
+ZPRSS(:,:,:) = PRSS(:,:,:)-PRST(:,:,:)* ZINVTSTEP
+ZPRGS(:,:,:) = PRGS(:,:,:)-PRGT(:,:,:)* ZINVTSTEP
+IF ( KRR == 7 ) ZPRHS(:,:,:) = PRHS(:,:,:)-PRHT(:,:,:)* ZINVTSTEP
+PRRS(:,:,:)  = PRRT(:,:,:)* ZINVTSTEP
+PRSS(:,:,:)  = PRST(:,:,:)* ZINVTSTEP
+PRGS(:,:,:)  = PRGT(:,:,:)* ZINVTSTEP
+IF ( KRR == 7 ) PRHS(:,:,:)  = PRHT(:,:,:)* ZINVTSTEP
 !
 IF (OSEDIC) PRCS(:,:,:) = PRCS(:,:,:) + ZPRCS(:,:,:)
 PRRS(:,:,:) = PRRS(:,:,:) + ZPRRS(:,:,:)
diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90
index f2f875416..22be7b4e3 100644
--- a/src/MNH/rain_ice_elec.f90
+++ b/src/MNH/rain_ice_elec.f90
@@ -12,15 +12,14 @@ INTERFACE
       SUBROUTINE RAIN_ICE_ELEC (OSEDIC, HSUBG_AUCV, OWARM,                            &
                                 KSPLITR, PTSTEP, KMI, KRR,                            &
                                 PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
-                                PTHT, PRVT, PRCT, PRCM, PRRT, PRRM, PRIT, PRST, PRSM, &
-                                PRGT, PRGM, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, &
+                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
+                                PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
                                 PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
                                 PINPRS, PINPRG, PSIGS,                                &
                                 PQPIT, PQCT, PQRT, PQIT, PQST, PQGT, PQNIT,           &
                                 PQPIS, PQCS, PQRS, PQIS, PQSS, PQGS, PQNIS,           &
                                 PSEA, PTOWN,                                          &
-                                PRHT, PRHM, PRHS, PINPRH,                             &
-                                PQHT, PQHM, PQHS                                      )
+                                PRHT, PRHS, PINPRH, PQHT, PQHS                        )
 !
 !
 LOGICAL,                  INTENT(IN)    :: OSEDIC ! Switch for droplet sedim.
@@ -49,14 +48,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCLDFR  ! Cloud fraction
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRIT    ! Pristine ice m.r. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRST    ! Snow/aggregate m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRSM    ! Snow/aggregate m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRGT    ! Graupel/hail m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRGM    ! Graupel/hail m.r. at t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSIGS   ! Sigma_s at t
 !
@@ -95,11 +90,9 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PQGS    ! Graupel CMR source
 REAL, DIMENSION(:,:),   OPTIONAL, INTENT(IN)    :: PSEA
 REAL, DIMENSION(:,:),   OPTIONAL, INTENT(IN)    :: PTOWN
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PRHT    ! Hail m.r. at t
-REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PRHM    ! Hail m.r. at t-dt
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT) :: PRHS    ! Hail m.r. source
 REAL, DIMENSION(:,:),   OPTIONAL, INTENT(INOUT) :: PINPRH  ! Hail instant precip
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PQHT    ! Hail CMR at t
-REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PQHM    ! Hail CMR at t-dt
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT) :: PQHS    ! Hail CMR source
 !
 END SUBROUTINE RAIN_ICE_ELEC
@@ -110,15 +103,14 @@ END MODULE MODI_RAIN_ICE_ELEC
       SUBROUTINE RAIN_ICE_ELEC (OSEDIC, HSUBG_AUCV, OWARM,                            &
                                 KSPLITR, PTSTEP, KMI, KRR,                            &
                                 PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
-                                PTHT, PRVT, PRCT, PRCM, PRRT, PRRM, PRIT, PRST, PRSM, &
-                                PRGT, PRGM, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, &
+                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
+                                PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
                                 PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
                                 PINPRS, PINPRG, PSIGS,                                &
                                 PQPIT, PQCT, PQRT, PQIT, PQST, PQGT, PQNIT,           &
                                 PQPIS, PQCS, PQRS, PQIS, PQSS, PQGS, PQNIS,           &
                                 PSEA, PTOWN,                                          &
-                                PRHT, PRHM, PRHS, PINPRH,                             &
-                                PQHT, PQHM, PQHS                                      )
+                                PRHT, PRHS, PINPRH, PQHT, PQHS                        )
 !     ######################################################################
 !
 !!****  * -  compute the explicit microphysical sources
@@ -214,6 +206,7 @@ END MODULE MODI_RAIN_ICE_ELEC
 !!         C. Barthe (LACy)  Nov. 2009 : update to V4.8.1
 !!         M. Chong      26/01/10  Add Small ions parameters
 !!         J-P Pinty     31/03/11  Add hail
+!!         C. Lac        2011 : Adaptation to FIT temporal scheme
 !!         B. Tsenova    June 2012 Add new NI parameterizations
 !!         C. Barthe     June 2012 Dependance of RAR on the RELATIVE terminal velocity
 !!
@@ -275,14 +268,10 @@ REAL, DIMENSION(:,:,:), INTENT(IN)  :: PCLDFR! Convective Mass Flux Cloud fracti
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRCT    ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRRT    ! Rain water m.r. at t 
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRIT    ! Pristine ice m.r. at t
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRST    ! Snow/aggregate m.r. at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRSM    ! Snow/aggregate m.r. at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRGT    ! Graupel/hail m.r. at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRGM    ! Graupel/hail m.r. at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PSIGS   ! Sigma_s at t
 !
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHS    ! Theta source
@@ -320,11 +309,9 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PQGS    ! Graupel CMR source
 REAL, DIMENSION(:,:),   OPTIONAL, INTENT(IN)    :: PSEA
 REAL, DIMENSION(:,:),   OPTIONAL, INTENT(IN)    :: PTOWN
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PRHT    ! Hail m.r. at t
-REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PRHM    ! Hail m.r. at t-dt
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT) :: PRHS    ! Hail m.r. source
 REAL, DIMENSION(:,:),   OPTIONAL, INTENT(INOUT) :: PINPRH  ! Hail instant precip
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PQHT    ! Hail CMR at t
-REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN)    :: PQHM    ! Hail CMR at t-dt
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT) :: PQHS    ! Hail CMR source
 !
 !
@@ -1361,22 +1348,22 @@ INTEGER, DIMENSION(:), ALLOCATABLE :: ZCIS
 !
   IF (OSEDIC) THEN
     ZPRCS(:,:,:) = 0.0
-    ZPRCS(:,:,:) = PRCS(:,:,:) - PRCM(:,:,:) / PTSTEP
-    PRCS(:,:,:)  = PRCM(:,:,:) / PTSTEP
+    ZPRCS(:,:,:) = PRCS(:,:,:) - PRCT(:,:,:) / PTSTEP
+    PRCS(:,:,:)  = PRCT(:,:,:) / PTSTEP
   END IF
   ZPRRS(:,:,:) = 0.0
   ZPRSS(:,:,:) = 0.0
   ZPRGS(:,:,:) = 0.0
   IF (KRR == 7) ZPRHS(:,:,:) = 0.0
 !
-  ZPRRS(:,:,:) = PRRS(:,:,:) - PRRM(:,:,:) / PTSTEP
-  ZPRSS(:,:,:) = PRSS(:,:,:) - PRSM(:,:,:) / PTSTEP
-  ZPRGS(:,:,:) = PRGS(:,:,:) - PRGM(:,:,:) / PTSTEP
-  IF (KRR == 7) ZPRHS(:,:,:) = PRHS(:,:,:) - PRHM(:,:,:) / PTSTEP
-  PRRS(:,:,:)  = PRRM(:,:,:) / PTSTEP
-  PRSS(:,:,:)  = PRSM(:,:,:) / PTSTEP
-  PRGS(:,:,:)  = PRGM(:,:,:) / PTSTEP
-  IF (KRR == 7) PRHS(:,:,:) = PRHM(:,:,:) / PTSTEP
+  ZPRRS(:,:,:) = PRRS(:,:,:) - PRRT(:,:,:) / PTSTEP
+  ZPRSS(:,:,:) = PRSS(:,:,:) - PRST(:,:,:) / PTSTEP
+  ZPRGS(:,:,:) = PRGS(:,:,:) - PRGT(:,:,:) / PTSTEP
+  IF (KRR == 7) ZPRHS(:,:,:) = PRHS(:,:,:) - PRHT(:,:,:) / PTSTEP
+  PRRS(:,:,:)  = PRRT(:,:,:) / PTSTEP
+  PRSS(:,:,:)  = PRST(:,:,:) / PTSTEP
+  PRGS(:,:,:)  = PRGT(:,:,:) / PTSTEP
+  IF (KRR == 7) PRHS(:,:,:) = PRHT(:,:,:) / PTSTEP
   ZPQRS(:,:,:) = 0.0
   ZPQSS(:,:,:) = 0.0
   ZPQGS(:,:,:) = 0.0
@@ -1910,22 +1897,22 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZCONC3D !
 !
   IF (OSEDIC) THEN
     ZPRCS(:,:,:) = 0.0
-    ZPRCS(:,:,:) = PRCS(:,:,:) - PRCM(:,:,:) / PTSTEP
-    PRCS(:,:,:)  = PRCM(:,:,:) / PTSTEP
+    ZPRCS(:,:,:) = PRCS(:,:,:) - PRCT(:,:,:) / PTSTEP
+    PRCS(:,:,:)  = PRCT(:,:,:) / PTSTEP
   END IF
   ZPRRS(:,:,:) = 0.0
   ZPRSS(:,:,:) = 0.0
   ZPRGS(:,:,:) = 0.0
   IF (KRR == 7) ZPRHS(:,:,:) = 0.0
 !
-  ZPRRS(:,:,:) = PRRS(:,:,:) - PRRM(:,:,:) / PTSTEP
-  ZPRSS(:,:,:) = PRSS(:,:,:) - PRSM(:,:,:) / PTSTEP
-  ZPRGS(:,:,:) = PRGS(:,:,:) - PRGM(:,:,:) / PTSTEP
-  IF (KRR == 7) ZPRHS(:,:,:) = PRHS(:,:,:) - PRHM(:,:,:) / PTSTEP
-  PRRS(:,:,:)  = PRRM(:,:,:) / PTSTEP
-  PRSS(:,:,:)  = PRSM(:,:,:) / PTSTEP
-  PRGS(:,:,:)  = PRGM(:,:,:) / PTSTEP
-  IF (KRR == 7) PRHS(:,:,:)  = PRHM(:,:,:) / PTSTEP
+  ZPRRS(:,:,:) = PRRS(:,:,:) - PRRT(:,:,:) / PTSTEP
+  ZPRSS(:,:,:) = PRSS(:,:,:) - PRST(:,:,:) / PTSTEP
+  ZPRGS(:,:,:) = PRGS(:,:,:) - PRGT(:,:,:) / PTSTEP
+  IF (KRR == 7) ZPRHS(:,:,:) = PRHS(:,:,:) - PRHT(:,:,:) / PTSTEP
+  PRRS(:,:,:)  = PRRT(:,:,:) / PTSTEP
+  PRSS(:,:,:)  = PRST(:,:,:) / PTSTEP
+  PRGS(:,:,:)  = PRGT(:,:,:) / PTSTEP
+  IF (KRR == 7) PRHS(:,:,:)  = PRHT(:,:,:) / PTSTEP
 !
   IF (OSEDIC) PRCS(:,:,:) = PRCS(:,:,:) + ZPRCS(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) + ZPRRS(:,:,:)
diff --git a/src/MNH/rain_khko.f90 b/src/MNH/rain_khko.f90
index dba38cd42..71088f8fb 100644
--- a/src/MNH/rain_khko.f90
+++ b/src/MNH/rain_khko.f90
@@ -9,9 +9,10 @@
 !      ######################
 !
 INTERFACE
-      SUBROUTINE RAIN_KHKO (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP_MET, PTSTEP, & 
+      SUBROUTINE RAIN_KHKO (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,             & 
                             KMI, PZZ, PRHODJ, PRHODREF, PEXNREF,               &
-                            PPABSM, PPABST, PTHM, PTHT, PRVT, PRCM, PRCT, PRRT,&
+                            PPABST, PTHT, PRVT, PRCT, PRRT,                    &
+                            PTHM, PRCM,  PPABSM,                               &
                             PW_NU, PTHS, PRVS, PRCS, PRRS,                     &
                             PCNT, PCCT, PCRT, PCNS, PCCS, PCRS, PINPRC,PINPRR, &
                             PINPRR3D, PEVAP3D, PAEROT,                         &
@@ -28,8 +29,6 @@ LOGICAL,                  INTENT(IN)    :: ORAIN   ! switch to activate the
                                                    ! rain formation by coalescence
 INTEGER,                  INTENT(IN)    :: KSPLITR ! Number of small time step 
                                       ! integration for  rain sedimendation
-REAL,                     INTENT(IN)    :: PTSTEP_MET   ! Effective Time step
-                                        ! for meteorological scalar variables
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step :XTSTEP in namelist
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
@@ -39,14 +38,14 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF ! Reference Exner function
 !
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! Pressure time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at time t-Dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU   ! updraft velocity used for
                                                    ! the nucleation param.
@@ -76,9 +75,10 @@ END SUBROUTINE RAIN_KHKO
 END INTERFACE
 END MODULE MODI_RAIN_KHKO
 !     ######################################################################
-      SUBROUTINE RAIN_KHKO (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP_MET, PTSTEP, & 
+      SUBROUTINE RAIN_KHKO (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,             & 
                             KMI, PZZ, PRHODJ, PRHODREF, PEXNREF,               &
-                            PPABSM, PPABST, PTHM, PTHT, PRVT, PRCM, PRCT, PRRT,&
+                            PPABST, PTHT, PRVT, PRCT, PRRT,                    &
+                            PTHM, PRCM,  PPABSM,                               &
                             PW_NU, PTHS, PRVS, PRCS, PRRS,                     &
                             PCNT, PCCT, PCRT, PCNS, PCCS, PCRS, PINPRC,PINPRR, &
                             PINPRR3D, PEVAP3D, PAEROT,                         &
@@ -207,8 +207,6 @@ LOGICAL,                  INTENT(IN)    :: ORAIN   ! switch to activate the
                                                    ! rain formation by coalescence
 INTEGER,                  INTENT(IN)    :: KSPLITR ! Number of small time step 
                                       ! integration for  rain sedimendation
-REAL,                     INTENT(IN)    :: PTSTEP_MET   ! Effective Time step
-                                        ! for meteorological scalar variables
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step :XTSTEP in namelist
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
@@ -218,14 +216,14 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF ! Reference Exner function
 !
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM    ! Theta at time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! Pressure time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM    ! Cloud water m.r. at time t-Dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU   ! updraft velocity used for
                                                    ! the nucleation param.
@@ -351,8 +349,8 @@ ISIZE = SIZE(XRTMIN)
 ISIZE = SIZE(XCTMIN)
 ALLOCATE(ZCTMIN(ISIZE))
 ALLOCATE(ZRTMIN(ISIZE))
-ZRTMIN(:) = XRTMIN(:) / PTSTEP_MET
-ZCTMIN(:) = XCTMIN(:) / PTSTEP_MET
+ZRTMIN(:) = XRTMIN(:) / PTSTEP
+ZCTMIN(:) = XCTMIN(:) / PTSTEP
 !
 ZWLBDC3(:,:,:) = 1.E30
 ZWLBDC(:,:,:)  = 1.E10
@@ -389,7 +387,6 @@ ELSE
  ELSE
   ZEPS= XMV / XMD
   ZT(:,:,:)  = PTHT(:,:,:) * (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-  ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
 !
   ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:) * &
                    EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*LOG(ZT(:,:,:))) - 1.0)
@@ -441,7 +438,7 @@ IF (LBUDGET_SV) &
 !
 !*       6.1    time splitting loop initialization        
 !
-ZTSPLITR = PTSTEP_MET / FLOAT(KSPLITR)       ! Small time step
+ZTSPLITR = PTSTEP / FLOAT(KSPLITR)       ! Small time step
 !
 !
 !*       6.2    compute the sedimentation velocities for rain
@@ -496,14 +493,14 @@ INTEGER                           :: JL       ! and PACK intrinsics
 DO JN = 1 , KSPLITR
   GSEDIM(:,:,:) = .FALSE.
   IF( OSEDC ) THEN
-    GSEDIM(IIB:IIE,IJB:IJE,IKB:IKE) =                                   &
-            PRCT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP_MET>ZRTMIN(2) .OR.     &
-            (PRRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP_MET>ZRTMIN(3) .AND.   &
-            PCRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP_MET>ZCTMIN(3))
+    GSEDIM(IIB:IIE,IJB:IJE,IKB:IKE) =                               &
+            PRCT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP>ZRTMIN(2) .OR.     &
+            (PRRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP>ZRTMIN(3) .AND.   &
+            PCRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP>ZCTMIN(3))
   ELSE
-    GSEDIM(IIB:IIE,IJB:IJE,IKB:IKE) =                                   &
-            PRRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP_MET>ZRTMIN(3) .AND.    &
-            PCRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP_MET>ZCTMIN(3)
+    GSEDIM(IIB:IIE,IJB:IJE,IKB:IKE) =                               &
+            PRRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP>ZRTMIN(3) .AND.    &
+            PCRT(IIB:IIE,IJB:IJE,IKB:IKE)/PTSTEP>ZCTMIN(3)
   END IF
 !
   ISEDIM = COUNTJV( GSEDIM(:,:,:),I1(:),I2(:),I3(:))
@@ -512,11 +509,11 @@ DO JN = 1 , KSPLITR
 !
     IF( JN==1 ) THEN
       IF( OSEDC ) THEN
-        PCCS(:,:,:) = PCCS(:,:,:) * PTSTEP_MET
-        PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP_MET
+        PCCS(:,:,:) = PCCS(:,:,:) * PTSTEP
+        PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP
       END IF
-      PCRS(:,:,:) = PCRS(:,:,:) * PTSTEP_MET
-      PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP_MET
+      PCRS(:,:,:) = PCRS(:,:,:) * PTSTEP
+      PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP
       DO JK = IKB , IKE
         ZW(:,:,JK) = ZTSPLITR/(PZZ(:,:,JK+1) -PZZ(:,:,JK))
       END DO
@@ -627,11 +624,11 @@ DO JN = 1 , KSPLITR
     DEALLOCATE(ZZW3)
     IF( JN==KSPLITR ) THEN
       IF( OSEDC ) THEN
-        PRCS(:,:,:) = PRCS(:,:,:) / PTSTEP_MET
-        PCCS(:,:,:) = PCCS(:,:,:) / PTSTEP_MET
+        PRCS(:,:,:) = PRCS(:,:,:) / PTSTEP
+        PCCS(:,:,:) = PCCS(:,:,:) / PTSTEP
       END IF
-      PRRS(:,:,:) = PRRS(:,:,:) / PTSTEP_MET
-      PCRS(:,:,:) = PCRS(:,:,:) / PTSTEP_MET
+      PRRS(:,:,:) = PRRS(:,:,:) / PTSTEP
+      PCRS(:,:,:) = PCRS(:,:,:) / PTSTEP
     END IF
   END IF
 END DO
@@ -676,13 +673,13 @@ INTEGER                           :: J1
 ZEPS= XMV / XMD
 !
 ZT(:,:,:)  = PTHT(:,:,:) * (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
 !
 ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:) * &
                    EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*ALOG(ZT(:,:,:))) - 1.0)
 ZZW1LOG(:,:,:)= 0. ! supersaturation
 ZTDT(:,:,:) = 0.
 IF (OACTIT) THEN
+  ZTM(:,:,:)    = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
   ZTDT(:,:,:)   = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP                              ! dT/dt
   ZDRC(:,:,:)   = (PRCT(:,:,:)-PRCM(:,:,:))/PTSTEP                           ! drc/dt
   ZTDT(:,:,:)   = MIN(0.,ZTDT(:,:,:)+(XG*PW_NU(:,:,:))/XCPD- &
@@ -830,9 +827,9 @@ IF( INUCT >= 1 ) THEN
 ! the CCN spectra formula uses ZSMAX in percent
 !
  IF (XCONC_CCN > 0) THEN
-  ZZW1(:) = MIN( XCONC_CCN,XCHEN * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) ) / PTSTEP_MET
+  ZZW1(:) = MIN( XCONC_CCN,XCHEN * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) ) / PTSTEP
  ELSE
-  ZZW1(:) = XCHEN * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) / PTSTEP_MET
+  ZZW1(:) = XCHEN * (100.0*ZSMAX(:))**XKHEN * ZZW3(:) / PTSTEP
  ENDIF
   ZW(:,:,:)   = PCNS(:,:,:)
   PCNS(:,:,:) = UNPACK( MAX( ZZW1(:),ZCNS(:) ),MASK=GNUCT(:,:,:), &
@@ -918,7 +915,6 @@ INTEGER                           :: JSV
 ZEPS= XMV / XMD
 !
 ZT(:,:,:)  = PTHT(:,:,:) * (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
 !
 ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:) * &
                    EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*ALOG(ZT(:,:,:))) - 1.0)
@@ -926,6 +922,7 @@ ZZW1LOG(:,:,:)= 0. ! supersaturation
 ZTDT(:,:,:)   = 0.
 ZDRC(:,:,:)   = 0.
 IF (OACTIT) THEN
+  ZTM(:,:,:)    = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
   ZTDT(:,:,:)   = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP                              ! dT/dt
   ZDRC(:,:,:)   = (PRCT(:,:,:)-PRCM(:,:,:))/PTSTEP                           ! drc/dt
 ! Ratio 2 due to leap-frog
@@ -1008,7 +1005,7 @@ CALL CH_AER_ACTIVATION(ZAERO, ZZT, ZZW2, ZTDTBIS, ZRHODREF, ZPABST,&
 !test
 
     
-ZZW1(:) = MAX(ZNCN(:)/PTSTEP_MET - ZCNS(:), 0.)
+ZZW1(:) = MAX(ZNCN(:)/PTSTEP - ZCNS(:), 0.)
 !
 
 ZW(:,:,:) = UNPACK( ZZW1(:),MASK=GNUCT(:,:,:),FIELD=0.0 )
@@ -1018,7 +1015,7 @@ PCNS(:,:,:) = PCNS(:,:,:) + ZW(:,:,:)
 ! Modification reservoir eau (gaz et liquide)
 !
 ! valeur de petites goutelettes type brouillard (test)
-ZZW2(:) = MAX(ZNCN(:)/PTSTEP_MET - ZCNS(:), 0.)
+ZZW2(:) = MAX(ZNCN(:)/PTSTEP - ZCNS(:), 0.)
 ZZW1(:)=0.
 WHERE(ZZW2(:).gt.0.0)
 !    ZZW1(:) =(4.0/3.0)*XPI*1E3*ZZW2(:)*1E-6/ZRHODREF(:)
diff --git a/src/MNH/read_desfmn.f90 b/src/MNH/read_desfmn.f90
index ea7396a49..073f626ed 100644
--- a/src/MNH/read_desfmn.f90
+++ b/src/MNH/read_desfmn.f90
@@ -14,8 +14,7 @@ INTERFACE
                    OUSECHEM,OUSECHAQ,OUSECHIC,OCH_PH,OCH_CONV_LINOX,OSALT,       &
                    ODEPOS_SLT,ODUST,ODEPOS_DST,                                  &
                    OORILAM,ODEPOS_AER,OLG,OPASPOL,OCONDSAMP,KRIMX,KRIMY,KSV_USER,&
-                   HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,HEQNSYS,    &
-                   PTSTEP_OLD                                                    )
+                   HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,HEQNSYS     )
 USE MODD_PARAMETERS
 INTEGER,            INTENT(IN)  :: KMI    ! Model index
 CHARACTER (LEN=32), INTENT(IN)  :: HDESFM ! name of the DESFM file
@@ -58,7 +57,6 @@ CHARACTER (LEN=4),  INTENT(OUT) :: HSCONV ! Kind of shallow convection scheme
 CHARACTER (LEN=4),  INTENT(OUT) :: HCLOUD ! Kind of microphysical scheme
 CHARACTER (LEN=4),  INTENT(OUT) :: HELEC  ! Kind of electrical scheme
 CHARACTER (LEN=*),  INTENT(OUT) :: HEQNSYS! type of equations' system
-REAL,               INTENT(OUT) :: PTSTEP_OLD ! OLD Time STEP (DESFM)
 END SUBROUTINE READ_DESFM_n
 !
 END INTERFACE
@@ -70,8 +68,7 @@ END MODULE MODI_READ_DESFM_n
                    OUSECHEM,OUSECHAQ,OUSECHIC,OCH_PH,OCH_CONV_LINOX,OSALT,       &
                    ODEPOS_SLT,ODUST,ODEPOS_DST,                                  &
                    OORILAM,ODEPOS_AER,OLG,OPASPOL,OCONDSAMP,KRIMX,KRIMY,KSV_USER,&
-                   HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,HEQNSYS,    &
-                   PTSTEP_OLD                                                    )
+                   HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,HEQNSYS     )
 !     #########################################################################
 !
 !!****  *READ_DESFM_n * - routine to read  the descriptor file DESFM
@@ -255,7 +252,6 @@ CHARACTER (LEN=4),  INTENT(OUT) :: HSCONV ! Kind of shallow convection scheme
 CHARACTER (LEN=4),  INTENT(OUT) :: HCLOUD ! Kind of microphysical scheme
 CHARACTER (LEN=4),  INTENT(OUT) :: HELEC  ! Kind of electrical scheme
 CHARACTER (LEN=*),  INTENT(OUT) :: HEQNSYS! type of equations' system
-REAL,               INTENT(OUT) :: PTSTEP_OLD ! OLD Time STEP (DESFM)
 LOGICAL,            INTENT(OUT) :: OSALT    ! Sea Salt flag
 LOGICAL,            INTENT(OUT) :: OPASPOL  ! Passive pollutant flag
 LOGICAL,            INTENT(OUT) :: OCONDSAMP! Conditional sampling flag
@@ -492,8 +488,6 @@ HCLOUD = CCLOUD
 HELEC  = CELEC
 HEQNSYS = CEQNSYS
 !
-PTSTEP_OLD  = XTSTEP
-!
 !-------------------------------------------------------------------------------
 !
 !*       3.    WRITE DESFM ON OUTPUT LISTING
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index 924b0edf7..f3b4d3a6c 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -252,6 +252,7 @@ END MODULE MODI_READ_EXSEG_n
 !!                               convection scheme MODN_PARAM_MFSHALL_n
 !!      Modification   09/2009   (J.Escobar) add more info on relaxation problems
 !!      Modification   09/2011   (J.Escobar) re-add 'ZRESI' choose
+!!      Modification   12/2011   (C.Lac) Adaptation to FIT temporal scheme 
 !!      Modification   12/2012   (S.Bielli) add NAM_NCOUT for netcdf output
 !!------------------------------------------------------------------------------
 !
@@ -530,11 +531,14 @@ END IF
 !
 CALL TEST_NAM_VAR(ILUOUT,'CPRESOPT',CPRESOPT,'RICHA','CGRAD','CRESI','ZRESI')
 !
-CALL TEST_NAM_VAR(ILUOUT,'CUVW_ADV_SCHEME',CUVW_ADV_SCHEME,'CEN2ND','CEN4TH')
-CALL TEST_NAM_VAR(ILUOUT,'CMET_ADV_SCHEME',CMET_ADV_SCHEME,'CEN2ND','CEN4TH','FCT2ND','MPDATA', &
-                                                           'PPM_00','PPM_01','PPM_02')
-CALL TEST_NAM_VAR(ILUOUT,'CSV_ADV_SCHEME',CSV_ADV_SCHEME,'CEN2ND','CEN4TH','FCT2ND','MPDATA', &
-                                                         'PPM_00','PPM_01','PPM_02')
+CALL TEST_NAM_VAR(ILUOUT,'CUVW_ADV_SCHEME',CUVW_ADV_SCHEME, &
+       'CEN4TH','CEN2ND','WENO_K' ) 
+CALL TEST_NAM_VAR(ILUOUT,'CMET_ADV_SCHEME',CMET_ADV_SCHEME, &
+      &'PPM_00','PPM_01','PPM_02')
+CALL TEST_NAM_VAR(ILUOUT,'CSV_ADV_SCHEME',CSV_ADV_SCHEME,   &
+      &'PPM_00','PPM_01','PPM_02')
+CALL TEST_NAM_VAR(ILUOUT,'CTEMP_SCHEME',CTEMP_SCHEME,       &
+      & 'RK11','RK21','RK33','RK53' )
 !
 CALL TEST_NAM_VAR(ILUOUT,'CTURB',CTURB,'NONE','TKEL')
 CALL TEST_NAM_VAR(ILUOUT,'CRAD',CRAD,'NONE','FIXE','ECMW','TOPA')
@@ -992,7 +996,6 @@ END IF
 !*       3.1  Turbulence variable 
 !
 IF ((CTURB /= 'NONE').AND.(HTURB == 'NONE')) THEN
-  CGETTKEM ='INIT'
   CGETTKET ='INIT'
   WRITE(UNIT=ILUOUT,FMT=9001) KMI
   WRITE(UNIT=ILUOUT,FMT=*)'YOU WANT TO USE TURBULENCE KINETIC ENERGY TKE'
@@ -1000,14 +1003,12 @@ IF ((CTURB /= 'NONE').AND.(HTURB == 'NONE')) THEN
   WRITE(UNIT=ILUOUT,FMT=*)'TKE WILL BE INITIALIZED TO ZERO'
 ELSE 
   IF (CTURB /= 'NONE') THEN 
-    CGETTKEM ='READ'
     CGETTKET ='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETTKET='INIT' 
-  ELSE 
-    CGETTKEM ='SKIP'
-    CGETTKET ='SKIP'
+    IF ((CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETTKET='INIT' 
+  ELSE
+   CGETTKET ='SKIP'
   END IF
-END IF 
+END IF
 !
 !
 IF ((CTOM == 'TM06').AND.(HTOM /= 'TM06')) THEN
@@ -1046,15 +1047,11 @@ IF (LUSERV.AND. (.NOT.OUSERV)) THEN
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE VAPOR VARIABLE Rv WHEREAS IT  ", &
                   & "IS NOT IN INITIAL FMFILE",/,                           &
                   & "Rv WILL BE INITIALIZED TO ZERO")')
-  CGETRVM='INIT'
   CGETRVT='INIT'
 ELSE                                                                
   IF (LUSERV) THEN
-    CGETRVM='READ'
     CGETRVT='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETRVT='INIT' 
   ELSE
-    CGETRVM='SKIP'
     CGETRVT='SKIP'
   END IF
 END IF
@@ -1064,15 +1061,12 @@ IF (LUSERC.AND. (.NOT.OUSERC)) THEN
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE CLOUD VARIABLE Rc WHEREAS IT ",  &
                  &   " IS NOT IN INITIAL FMFILE",/,                        &
                  &   "Rc WILL BE INITIALIZED TO ZERO")')
-  CGETRCM='INIT'
   CGETRCT='INIT'
 ELSE
   IF (LUSERC) THEN
-    CGETRCM='READ'
     CGETRCT='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETRCT='INIT' 
+!   IF(CCONF=='START') CGETRCT='INIT' 
   ELSE
-    CGETRCM='SKIP'
     CGETRCT='SKIP'
   END IF
 END IF
@@ -1083,15 +1077,12 @@ IF (LUSERR.AND. (.NOT.OUSERR)) THEN
                   &  "IS NOT IN INITIAL FMFILE",/,                     &
                   &  " Rr WILL BE INITIALIZED TO ZERO")')
  
-  CGETRRM='INIT'
   CGETRRT='INIT'
 ELSE
   IF (LUSERR) THEN
-    CGETRRM='READ'
     CGETRRT='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETRRT='INIT' 
+!   IF( (CCONF=='START').AND. CPROGRAM /= 'DIAG') CGETRRT='INIT' 
   ELSE
-    CGETRRM='SKIP'
     CGETRRT='SKIP'
   END IF
 END IF
@@ -1101,15 +1092,12 @@ IF (LUSERI.AND. (.NOT.OUSERI)) THEN
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE ICE VARIABLE Ri WHEREAS IT ", &
                &    "IS NOT IN INITIAL FMFILE",/,                      &
                &     " Ri WILL BE INITIALIZED TO ZERO")')
-  CGETRIM='INIT'
   CGETRIT='INIT'
 ELSE
   IF (LUSERI) THEN
-    CGETRIM='READ'
     CGETRIT='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETRIT='INIT' 
+!   IF(CCONF=='START') CGETRIT='INIT' 
   ELSE
-    CGETRIM='SKIP'
     CGETRIT='SKIP'
   END IF
 END IF
@@ -1133,15 +1121,12 @@ IF (LUSERS.AND. (.NOT.OUSERS)) THEN
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE SNOW VARIABLE Rs WHEREAS IT ",&
                   &  "IS NOT IN INITIAL FMFILE",/,                       &
                   &  " Rs WILL BE INITIALIZED TO ZERO")')
-  CGETRSM='INIT'
   CGETRST='INIT'
 ELSE
   IF (LUSERS) THEN
-    CGETRSM='READ'
     CGETRST='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETRST='INIT' 
+!   IF ( (CCONF=='START').AND. CPROGRAM /= 'DIAG') CGETRST='INIT' 
   ELSE
-    CGETRSM='SKIP'
     CGETRST='SKIP'
   END IF
 END IF
@@ -1151,15 +1136,12 @@ IF (LUSERG.AND. (.NOT.OUSERG)) THEN
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE GRAUPEL VARIABLE Rg WHEREAS ",&
                    & " IT IS NOTIN INITIAL FMFILE",/,                    &
                    & "Rg WILL BE INITIALIZED TO ZERO")')
-  CGETRGM='INIT'
   CGETRGT='INIT'
 ELSE
   IF (LUSERG) THEN
-    CGETRGM='READ'
     CGETRGT='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETRGT='INIT' 
+!   IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETRGT='INIT' 
   ELSE
-    CGETRGM='SKIP'
     CGETRGT='SKIP'
   END IF
 END IF
@@ -1169,15 +1151,12 @@ IF (LUSERH.AND. (.NOT.OUSERH)) THEN
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE HAIL VARIABLE Rh WHEREAS",&
                   &  "IT IS NOT IN INITIAL FMFILE",/,                &
                   & " Rh WILL BE INITIALIZED TO ZERO")')
-   CGETRHM='INIT'
    CGETRHT='INIT'
 ELSE
   IF (LUSERH) THEN
-    CGETRHM='READ'
     CGETRHT='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETRHT='INIT' 
+!   IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETRHT='INIT' 
   ELSE
-    CGETRHM='SKIP'
     CGETRHT='SKIP'
   END IF
 END IF
@@ -1190,7 +1169,7 @@ IF (LUSERC.AND. (.NOT.OUSERC)) THEN
 ELSE
   IF ( LUSERC ) THEN
     CGETCLDFR = 'READ'
-    IF(HSTORAGE_TYPE=='TT') CGETCLDFR='INIT' 
+!   IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETCLDFR='INIT' 
   ELSE
     CGETCLDFR = 'SKIP'
   END IF
@@ -1205,17 +1184,14 @@ IF ( LUSERC .AND. CTURB /= 'NONE' ) THEN
     WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE MOIST TURBULENCE WHEREAS IT ",/, &
                  &   " WAS NOT THE CASE FOR THE INITIAL FMFILE GENERATION",/, &
                  &    "SRC AND SIGS ARE INITIALIZED TO 0")')
-    CGETSRCM ='INIT'
     CGETSRCT ='INIT'
     CGETSIGS ='INIT'
   ELSE
-    CGETSRCM ='READ'
     CGETSRCT ='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSRCT ='INIT'
+    IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETSRCT ='INIT'
     CGETSIGS ='READ'
   END IF
 ELSE
-  CGETSRCM ='SKIP'
   CGETSRCT ='SKIP'
   CGETSIGS ='SKIP'
 END IF
@@ -1268,35 +1244,34 @@ END IF
 !
 IF (NSV_USER == KSV_USER) THEN
   DO  JS = 1,KSV_USER             ! to read all the variables in initial file 
-    CGETSVM(JS)='READ'            ! and to initialize them 
     CGETSVT(JS)='READ'            ! and to initialize them 
-    IF(HSTORAGE_TYPE=='TT')CGETSVT(JS)='INIT'       ! with  these values  
+    IF(CCONF=='START')CGETSVT(JS)='INIT'       ! with  these values  
   END DO
 ELSEIF (NSV_USER > KSV_USER) THEN
+ IF (KSV_USER == 0) THEN
+    CGETSVT(1:NSV_USER)='INIT'
+ ELSE
   WRITE(UNIT=ILUOUT,FMT=9001) KMI
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE MORE ADDITIONAL SCALAR  " ,&
   &" VARIABLES THAN THERE ARE IN INITIAL FMFILE",/,                  &
   & "THE SUPPLEMENTARY VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
   DO  JS = 1,KSV_USER             ! to read all the variables in initial file 
-    CGETSVM(JS)='READ'            ! and to initialize them
     CGETSVT(JS)='READ'            ! and to initialize them
-    IF(HSTORAGE_TYPE=='TT')CGETSVT(JS)='INIT'        ! with  these values
+    IF(CCONF=='START')CGETSVT(JS)='INIT'        ! with  these values
   END DO
   DO JS = KSV_USER+1, NSV_USER    ! to initialize to zero supplementary
-    CGETSVM(JS)='INIT'            ! variables  (more variables needed than in
     CGETSVT(JS)='INIT'            ! initial file)
   END DO
+ END IF
 ELSE
   WRITE(UNIT=ILUOUT,FMT=9000) KMI
   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE LESS ADDITIONAL SCALAR  " ,&
   &" VARIABLES THAN THERE ARE IN INITIAL FMFILE")')
   DO  JS = 1,NSV_USER             ! to read the first NSV_USER variables in initial file 
-    CGETSVM(JS)='READ'            ! and to initialize with these values
     CGETSVT(JS)='READ'            ! and to initialize with these values
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(JS)='INIT'  
+    IF(CCONF=='START') CGETSVT(JS)='INIT'  
   END DO 
   DO  JS = NSV_USER + 1, KSV_USER ! to skip the last (KSV_USER-NSV_USER) variables
-    CGETSVM(JS)='SKIP'            ! in initial file
     CGETSVT(JS)='SKIP' 
   END DO
 END IF
@@ -1305,15 +1280,13 @@ END IF
 !
 IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN 
   IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO') THEN
-    CGETSVM(NSV_C2R2BEG:NSV_C2R2END)='READ'
     CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR C2R2 &
          & (or KHKO) SCHEME IN INITIAL FMFILE",/,&
          & "THE C2R2 (or KHKO) VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_C2R2BEG:NSV_C2R2END)='INIT'
     CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='INIT'
   END IF
 END IF
@@ -1322,15 +1295,13 @@ END IF
 !
 IF (CCLOUD == 'C3R5') THEN 
   IF (HCLOUD == 'C3R5') THEN
-    CGETSVM(NSV_C1R3BEG:NSV_C1R3END)='READ'
     CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR C3R5 &
          &SCHEME IN INITIAL FMFILE",/,&
          & "THE C1R3 VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_C1R3BEG:NSV_C1R3END)='INIT'
     CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='INIT'
   END IF
 END IF
@@ -1339,15 +1310,13 @@ END IF
 !
 IF (CELEC /= 'NONE') THEN 
   IF (HELEC /= 'NONE') THEN
-    CGETSVM(NSV_ELECBEG:NSV_ELECEND)='READ'
     CGETSVT(NSV_ELECBEG:NSV_ELECEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_ELECBEG:NSV_ELECEND)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_ELECBEG:NSV_ELECEND)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR ELECTRICAL &
          &SCHEME IN INITIAL FMFILE",/,&
          & "THE ELECTRICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_ELECBEG:NSV_ELECEND)='INIT'
     CGETSVT(NSV_ELECBEG:NSV_ELECEND)='INIT'
   END IF
 END IF
@@ -1356,30 +1325,26 @@ END IF
 !
 IF (LUSECHEM) THEN
   IF (OUSECHEM) THEN
-    CGETSVM(NSV_CHEMBEG:NSV_CHEMEND)='READ'
     CGETSVT(NSV_CHEMBEG:NSV_CHEMEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_CHEMBEG:NSV_CHEMEND)='INIT'
+    IF(CCONF=='START' .AND. LCH_INIT_FIELD ) CGETSVT(NSV_CHEMBEG:NSV_CHEMEND)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
          &SCHEME IN INITIAL FMFILE",/,&
          & "THE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_CHEMBEG:NSV_CHEMEND)='INIT'
     CGETSVT(NSV_CHEMBEG:NSV_CHEMEND)='INIT'
   END IF
 END IF
 ! add ice phase chemical species
 IF (LUSECHIC) THEN
   IF (OUSECHIC) THEN
-    CGETSVM(NSV_CHICBEG:NSV_CHICEND)='READ'
     CGETSVT(NSV_CHICBEG:NSV_CHICEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
          &SPECIES IN ICE PHASE IN INITIAL FMFILE",/,&
          & "THE ICE PHASE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")')
-    CGETSVM(NSV_CHICBEG:NSV_CHICEND)='INIT'
     CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
   END IF
 END IF
@@ -1409,15 +1374,13 @@ END IF
 !
 IF (LDUST) THEN
   IF (ODUST) THEN
-    CGETSVM(NSV_DSTBEG:NSV_DSTEND)='READ'
     CGETSVT(NSV_DSTBEG:NSV_DSTEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_DSTBEG:NSV_DSTEND)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_DSTBEG:NSV_DSTEND)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR DUST &
          &SCHEME IN INITIAL FMFILE",/,&
          & "THE DUST VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_DSTBEG:NSV_DSTEND)='INIT'
     CGETSVT(NSV_DSTBEG:NSV_DSTEND)='INIT'
   END IF
   IF (LDEPOS_DST(KMI)) THEN
@@ -1434,20 +1397,18 @@ IF (LDUST) THEN
   END IF  
 
    IF (ODEPOS_DST(KMI) ) THEN
-    CGETSVM(NSV_DSTDEPBEG:NSV_DSTDEPEND)='READ'
     CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'    
+    IF(CCONF=='START') CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'    
    ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and CLOUD DUST &
          &  SCHEME IN INITIAL FMFILE",/,&
          & "THE MOIST DUST VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'
     CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'    
    END IF
   END IF  
 
-  IF(NMODE_DST.gt.3 .OR. NMODE_DST.lt.1) THEN
+  IF(NMODE_DST.GT.3 .OR. NMODE_DST.LT.1) THEN
     WRITE(UNIT=ILUOUT,FMT=9003) KMI
     WRITE(UNIT=ILUOUT,FMT='("DUST MODES MUST BE BETWEEN 1 and 3 ")') 
  !callabortstop
@@ -1498,15 +1459,13 @@ END IF
 !
 IF (LSALT) THEN
   IF (OSALT) THEN
-    CGETSVM(NSV_SLTBEG:NSV_SLTEND)='READ'
     CGETSVT(NSV_SLTBEG:NSV_SLTEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR SALT &
          &SCHEME IN INITIAL FMFILE",/,&
          & "THE SALT VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_SLTBEG:NSV_SLTEND)='INIT'
     CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
   END IF
   IF (LDEPOS_SLT(KMI)) THEN
@@ -1523,19 +1482,17 @@ IF (LSALT) THEN
   END IF  
 
    IF (ODEPOS_SLT(KMI) ) THEN
-    CGETSVM(NSV_SLTDEPBEG:NSV_SLTDEPEND)='READ'
     CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
+    IF(CCONF=='START') CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
    ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and CLOUD SEA SALT &
          &  SCHEME IN INITIAL FMFILE",/,&
          & "THE MOIST SEA SALT VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'
     CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
    END IF
   END IF
-  IF(NMODE_SLT.gt.3 .OR. NMODE_SLT.lt.1) THEN
+  IF(NMODE_SLT.GT.3 .OR. NMODE_SLT.LT.1) THEN
     WRITE(UNIT=ILUOUT,FMT=9003) KMI
     WRITE(UNIT=ILUOUT,FMT='("SALT MODES MUST BE BETWEEN 1 and 3 ")') 
  !callabortstop
@@ -1585,15 +1542,13 @@ END IF
 !
 IF (LORILAM) THEN
   IF (OORILAM) THEN
-    CGETSVM(NSV_AERBEG:NSV_AEREND)='READ'
     CGETSVT(NSV_AERBEG:NSV_AEREND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_AERBEG:NSV_AEREND)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_AERBEG:NSV_AEREND)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR AEROSOL &
          &SCHEME IN INITIAL FMFILE",/,&
          & "THE AEROSOLS VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_AERBEG:NSV_AEREND)='INIT'
     CGETSVT(NSV_AERBEG:NSV_AEREND)='INIT'
   END IF
   IF (LDEPOS_AER(KMI)) THEN
@@ -1610,15 +1565,13 @@ IF (LORILAM) THEN
   END IF  
 
    IF (ODEPOS_AER(KMI) ) THEN
-    CGETSVM(NSV_AERDEPBEG:NSV_AERDEPEND)='READ'
     CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'    
+    IF(CCONF=='START') CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'    
    ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and IN CLOUD  &
          &  AEROSOL SCHEME IN INITIAL FMFILE",/,&
          & "THE MOIST AEROSOL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'
     CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'    
    END IF
   END IF
@@ -1640,9 +1593,8 @@ IF (LINIT_LG .AND. .NOT.(LLG)) THEN
 ENDIF
 IF (LLG) THEN
   IF (OLG .AND. .NOT.(LINIT_LG .AND. CPROGRAM=='MESONH')) THEN
-    CGETSVM(NSV_LGBEG:NSV_LGEND)='READ'
     CGETSVT(NSV_LGBEG:NSV_LGEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_LGBEG:NSV_LGEND)='INIT'
+    IF(CCONF=='START') CGETSVT(NSV_LGBEG:NSV_LGEND)='INIT'
   ELSE
     IF(.NOT.(LINIT_LG) .AND. CPROGRAM=='MESONH') THEN
       WRITE(UNIT=ILUOUT,FMT=9001) KMI
@@ -1650,14 +1602,8 @@ IF (LLG) THEN
                        & "THE LAGRANGIAN VARIABLES HAVE BEEN REINITIALIZED")')
       LINIT_LG=.TRUE.
     ENDIF
-    CGETSVM(NSV_LGBEG:NSV_LGEND)='INIT'
     CGETSVT(NSV_LGBEG:NSV_LGEND)='INIT'
   END IF
-  IF (CSV_ADV_SCHEME /= CMET_ADV_SCHEME) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT='("WITH LAGRANGIAN VARIABLES CSV_ADV_SCHEME = CMET_ADV_SCHEME")')
-      CSV_ADV_SCHEME = CMET_ADV_SCHEME
-  END IF
 END IF
 !
 !
@@ -1665,14 +1611,12 @@ END IF
 !
 IF (.NOT.LUSECHEM .AND. LCH_CONV_LINOX) THEN
   IF (.NOT.OUSECHEM .AND. OCH_CONV_LINOX) THEN
-    CGETSVM(NSV_LNOXBEG:NSV_LNOXEND)='READ'
     CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='READ'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9002) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR LINOX &
          &IN INITIAL FMFILE",/,&
          & "THE LINOX VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVM(NSV_LNOXBEG:NSV_LNOXEND)='INIT'
     CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='INIT'
   END IF
 END IF
@@ -1681,17 +1625,12 @@ END IF
 !
 IF (LPASPOL) THEN
   IF (OPASPOL) THEN
-    CGETSVM(NSV_PPBEG:NSV_PPEND)='READ'
     CGETSVT(NSV_PPBEG:NSV_PPEND)='READ'
-    IF (HSTORAGE_TYPE=='TT') THEN
-      CGETSVM(NSV_PPBEG:NSV_PPEND)='INIT'
-      CGETSVT(NSV_PPBEG:NSV_PPEND)='INIT'
-    END IF
+    IF(CCONF=='START') CGETSVT(NSV_PPBEG:NSV_PPEND)='INIT'    
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO PASSIVE SCALAR VARIABLES IN INITIAL FMFILE",/,&
                        & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
-    CGETSVM(NSV_PPBEG:NSV_PPEND)='INIT'
     CGETSVT(NSV_PPBEG:NSV_PPEND)='INIT'
   END IF
 END IF
@@ -1700,17 +1639,12 @@ END IF
 !
 IF (LCONDSAMP) THEN
   IF (OCONDSAMP) THEN
-    CGETSVM(NSV_CSBEG:NSV_CSEND)='READ'
     CGETSVT(NSV_CSBEG:NSV_CSEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') THEN
-      CGETSVM(NSV_CSBEG:NSV_CSEND)='INIT'
-      CGETSVT(NSV_CSBEG:NSV_CSEND)='INIT'
-    END IF
+    IF(CCONF=='START') CGETSVT(NSV_CSBEG:NSV_CSEND)='INIT'       
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
     WRITE(UNIT=ILUOUT,FMT='("THERE IS NO PASSIVE SCALAR VARIABLES IN INITIAL FMFILE",/,&
                        & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
-    CGETSVM(NSV_CSBEG:NSV_CSEND)='INIT'
     CGETSVT(NSV_CSBEG:NSV_CSEND)='INIT'
   END IF
 END IF
@@ -1790,7 +1724,7 @@ IF( CRAD == 'ECMW' .AND. CPROGRAM=='MESONH' ) THEN
   END IF
 END IF
 !
-IF( CRAD /= 'NONE' .AND. CPROGRAM=='MESONH' ) THEN
+IF ( CRAD /= 'NONE' .AND. CPROGRAM=='MESONH' ) THEN
   CGETRAD='READ'
   IF( HRAD == 'NONE' .AND. CCONF=='RESTA') THEN
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
@@ -1886,7 +1820,7 @@ END SELECT
 !
 CGETCONV = 'SKIP'
 !
-IF( (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) .AND. CPROGRAM=='MESONH') THEN
+IF ( (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) .AND. CPROGRAM=='MESONH') THEN
   CGETCONV = 'READ'
   IF( HDCONV == 'NONE' .AND. CCONF=='RESTA') THEN
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
@@ -1904,26 +1838,6 @@ END IF
 !*       3.7  configuration and model version
 !
 IF (KMI == 1) THEN                                                
-  IF ( CPROGRAM=='MESONH' ) THEN 
-    IF ( CCONF=='START' .AND. HCONF=='RESTA') THEN 
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("VARIABLES IN INITIAL FMFILE ARE NOT THE SAME ", &
-                   & "AT TIME T AND T-DT")') 
-      WRITE(UNIT=ILUOUT,FMT=*) 'AN EULER SCHEME IS NEVERTHELESS USED FOR THE FIRST TIME STEP.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'THUS, THE RESULT OF THE FIRST TIME STEP WILL REPLACE THE INFORMATION'
-      WRITE(UNIT=ILUOUT,FMT=*) 'AT TIME T WHICH WILL BE LOST FOR THIS SEGMENT'
-    END IF  
-    IF (CSTORAGE_TYPE/="MT" .AND. CCONF=="RESTA") THEN
-      WRITE(UNIT=ILUOUT,FMT=9003) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO RESTART a SIMULATION")')
-      WRITE(UNIT=ILUOUT,FMT='("but the initial file was not produced by a MESO-NH simulation.",&
-                & "The type of this file is ",A2," instead of MT")') CSTORAGE_TYPE
- !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
-    END IF
-  END IF  
 ! 
   IF (L1D.AND.(CLBCX(1)/='CYCL'.AND.CLBCX(2)/='CYCL' &
           .AND.CLBCY(1)/='CYCL'.AND.CLBCY(2)/='CYCL')) THEN
@@ -2012,14 +1926,6 @@ IF (KMI == 1) THEN
   ENDIF 
 END IF
 !        
-!*       4.2   stop for MPDATA using too much iterations
-!
-IF (NLITER > 3) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'USING MPDATA WITH ITERATIONS NUMBER GREATER THAN 3 IS &
-                 & EXPENSIVE'
-END IF
-!
 !*       4.3   check consistency in forcing switches
 !
 IF ( LFORCING ) THEN
diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index 9c9637ef0..326ffdfca 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -4,17 +4,15 @@
 !
 INTERFACE 
 !
-      SUBROUTINE READ_FIELD(HINIFILE,HLUOUT,KIU,KJU,KKU,PTSTEP_OLD,PTSTEP,   &
-            HGETTKEM,HGETRVM,HGETRCM,HGETRRM,HGETRIM,HGETRSM,                &
-            HGETRGM,HGETRHM,HGETSVM,HGETSRCM,                                &
+      SUBROUTINE READ_FIELD(HINIFILE,HLUOUT,KMASDEV,KIU,KJU,KKU,PTSTEP,      &
             HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,                &
             HGETRST,HGETRGT,HGETRHT,HGETSVT,HGETSRCT,HGETSIGS,HGETCLDFR,     &
-            HGETBL_DEPTH,HGETSBL_DEPTH,HGETPHC,HGETPHR,                      &
+            HGETBL_DEPTH,HGETSBL_DEPTH,HGETPHC,HGETPHR,HUVW_ADV_SCHEME,      &
             KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
-            PUM,PVM,PWM,PTHM,PPABSM,PTKEM,PRM,PSVM,PSRCM,                    &
-            PUT,PVT,PWT,PTHT,PPABST,PTKET,PRT,PSVT,PCIT,PDRYMASST,           &
+            PUM,PVM,PWM,                                                     &
+            PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRT,PSVT,PCIT,PDRYMASST,    &
             PSIGS,PSRCT,PCLDFR,PBL_DEPTH,PSBL_DEPTH,PWTHVMF,PPHC,PPHR,       &
             PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                 &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
@@ -23,8 +21,8 @@ INTERFACE
             PTENDTHFRC,PTENDRVFRC,PGXTHFRC,PGYTHFRC,PPGROUNDFRC,PATC,        &
             KADVFRC,TPDTADVFRC,PDTHFRC,PDRVFRC,                              &
             KRELFRC,TPDTRELFRC, PTHREL, PRVREL,                              &
-            PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M )
-
+            PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M,                              &
+            PRUS_PRES,PRVS_PRES,PRWS_PRES,PRTHS_CLD,PRRS_CLD,PRSVS_CLD       )
 !
 USE MODD_TIME ! for type DATE_TIME
 !
@@ -33,19 +31,13 @@ CHARACTER (LEN=*),         INTENT(IN)  :: HINIFILE
                              ! name of the initial file
 CHARACTER (LEN=*),         INTENT(IN)  :: HLUOUT        
                              ! name for output-listing of nested models
+INTEGER,                   INTENT(IN)  :: KMASDEV
+                             ! version of the input file
 INTEGER,                   INTENT(IN)  :: KIU, KJU, KKU   
                              ! array sizes in x, y and z  directions
-REAL,                      INTENT(IN)  :: PTSTEP_OLD   
-                             ! OLD Time STEP (DESFM)
 REAL,                      INTENT(IN)  :: PTSTEP       
                              ! current Time STEP   
 ! 
-CHARACTER (LEN=*),         INTENT(IN)  :: HGETTKEM,                          &
-                                          HGETRVM,HGETRCM,HGETRRM,           &
-                                          HGETRIM,HGETRSM,HGETRGM,HGETRHM,   &
-                                          HGETSRCM
-CHARACTER (LEN=*), DIMENSION(:),INTENT(IN)  :: HGETSVM
-!
 CHARACTER (LEN=*),         INTENT(IN)  :: HGETTKET,                          &
                                           HGETRVT,HGETRCT,HGETRRT,           &
                                           HGETRIT,HGETRST,HGETRGT,HGETRHT,   & 
@@ -56,6 +48,7 @@ CHARACTER (LEN=*), DIMENSION(:),INTENT(IN)  :: HGETSVT
 !
 ! GET indicators to know wether a given  variable should or not be read in the
 ! FM file at time t-deltat and t
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME ! advection scheme for wind
 !
 ! sizes of the West-east total LB area
 INTEGER, INTENT(IN) :: KSIZELBX_ll,KSIZELBXU_ll      ! for T,V,W and u 
@@ -66,13 +59,6 @@ INTEGER, INTENT(IN) :: KSIZELBY_ll,KSIZELBYV_ll      ! for T,U,W  and v
 INTEGER, INTENT(IN):: KSIZELBYTKE_ll                ! for TKE
 INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll    ! for Rx and SV 
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUM,PVM,PWM     ! U,V,W at t-dt
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PTHM,PTKEM      ! theta, tke and
-                                                          ! eps at t-dt
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABSM          ! pressure at t-dt
-REAL, DIMENSION(:,:,:,:),  INTENT(OUT) :: PRM,PSVM        ! moist and scalar
-                                                          ! variables at t-dt
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PSRCM           ! turbulent flux
-                                                          !  <s'Rc'> at t-dt
 REAL, DIMENSION(:,:),      INTENT(OUT) :: PBL_DEPTH       ! BL depth
 REAL, DIMENSION(:,:),      INTENT(OUT) :: PSBL_DEPTH      ! SBL depth
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PWTHVMF         ! MassFlux buoyancy flux
@@ -81,6 +67,7 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUT,PVT,PWT     ! U,V,W at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PTHT,PTKET      ! theta, tke and
                                                           ! eps at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABST          ! pressure at t
+REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABSM          ! pressure at t-1
 REAL, DIMENSION(:,:,:,:),  INTENT(OUT) :: PRT,PSVT        ! moist and scalar
                                                           ! variables at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PSRCT           ! turbulent flux
@@ -119,6 +106,9 @@ INTEGER,              INTENT(IN)  :: KRELFRC              ! number of forcing
 TYPE (DATE_TIME), DIMENSION(:), INTENT(OUT) :: TPDTRELFRC ! date of forcing profs.
 REAL, DIMENSION(:,:,:,:),   INTENT(OUT) :: PTHREL, PRVREL
 REAL, DIMENSION(:,:,:),     INTENT(OUT) :: PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M ! Eddy fluxes
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS_PRES, PRVS_PRES, PRWS_PRES
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS_CLD
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS_CLD, PRSVS_CLD
 !
 !
 END SUBROUTINE READ_FIELD
@@ -127,17 +117,15 @@ END INTERFACE
 !
 END MODULE MODI_READ_FIELD
 !     ######spl
-      SUBROUTINE READ_FIELD(HINIFILE,HLUOUT,KIU,KJU,KKU,PTSTEP_OLD,PTSTEP,   &
-            HGETTKEM,HGETRVM,HGETRCM,HGETRRM,HGETRIM,HGETRSM,                &
-            HGETRGM,HGETRHM,HGETSVM,HGETSRCM,                                &
+      SUBROUTINE READ_FIELD(HINIFILE,HLUOUT,KMASDEV,KIU,KJU,KKU,PTSTEP,      &
             HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,                &
             HGETRST,HGETRGT,HGETRHT,HGETSVT,HGETSRCT,HGETSIGS,HGETCLDFR,     &
-            HGETBL_DEPTH,HGETSBL_DEPTH,HGETPHC,HGETPHR,                      &
+            HGETBL_DEPTH,HGETSBL_DEPTH,HGETPHC,HGETPHR,HUVW_ADV_SCHEME,      &
             KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
-             PUM,PVM,PWM,PTHM,PPABSM,PTKEM,PRM,PSVM,PSRCM,                   &
-            PUT,PVT,PWT,PTHT,PPABST,PTKET,PRT,PSVT,PCIT,PDRYMASST,           &
+            PUM,PVM,PWM,                                                     &
+            PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRT,PSVT,PCIT,PDRYMASST,    &
             PSIGS,PSRCT,PCLDFR,PBL_DEPTH,PSBL_DEPTH,PWTHVMF,PPHC,PPHR,       &
             PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                 &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
@@ -146,7 +134,8 @@ END MODULE MODI_READ_FIELD
             PTENDTHFRC,PTENDRVFRC,PGXTHFRC,PGYTHFRC,PPGROUNDFRC,PATC,        &
             KADVFRC,TPDTADVFRC,PDTHFRC,PDRVFRC,                              &
             KRELFRC,TPDTRELFRC, PTHREL, PRVREL,                              &
-            PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M )
+            PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M,                              &
+            PRUS_PRES,PRVS_PRES,PRWS_PRES,PRTHS_CLD,PRRS_CLD, PRSVS_CLD      )
 !     ########################################################################
 !
 !!****  *READ_FIELD* - routine to read prognostic and surface fields
@@ -226,10 +215,11 @@ END MODULE MODI_READ_FIELD
 !!                      05/06     Remove EPS
 !!          M. Leriche  04/10     add pH in cloud water and rainwater
 !!          M. Leriche  07/10     treat NSV_* for ice phase chemical species
+!!          C.Lac       11/11     Suppress all the t-Dt fields
 !!          M.Tomasini, 
 !!          P. Peyrille   06/12   2D west african monsoon : add reading of ADV forcing and addy fluxes 
 !!          C.Lac       03/13     add prognostic supersaturation for C2R2/KHKO
-!!-------------------------------------------------------------------------------
+!-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
@@ -271,19 +261,13 @@ CHARACTER (LEN=*),         INTENT(IN)  :: HINIFILE
                              ! name of the initial file
 CHARACTER (LEN=*),         INTENT(IN)  :: HLUOUT        
                              ! name for output-listing of nested models
+INTEGER,                   INTENT(IN)  :: KMASDEV
+                             ! version of the input file
 INTEGER,                   INTENT(IN)  :: KIU, KJU, KKU   
                              ! array sizes in x, y and z  directions
-REAL,                      INTENT(IN)  :: PTSTEP_OLD   
-                             ! OLD Time STEP (DESFM)
 REAL,                      INTENT(IN)  :: PTSTEP       
                              ! current Time STEP   
 ! 
-CHARACTER (LEN=*),         INTENT(IN)  :: HGETTKEM,                          &
-                                          HGETRVM,HGETRCM,HGETRRM,           &
-                                          HGETRIM,HGETRSM,HGETRGM,HGETRHM,   &
-                                          HGETSRCM
-CHARACTER (LEN=*), DIMENSION(:),INTENT(IN)  :: HGETSVM
-!
 CHARACTER (LEN=*),         INTENT(IN)  :: HGETTKET,                          &
                                           HGETRVT,HGETRCT,HGETRRT,           &
                                           HGETRIT,HGETRST,HGETRGT,HGETRHT,   & 
@@ -295,6 +279,8 @@ CHARACTER (LEN=*), DIMENSION(:),INTENT(IN)  :: HGETSVT
 ! GET indicators to know wether a given  variable should or not be read in the
 ! FM file at time t-deltat and t
 !
+CHARACTER(LEN=6),         INTENT(IN)    :: HUVW_ADV_SCHEME ! advection scheme for wind
+!
 ! sizes of the West-east total LB area
 INTEGER, INTENT(IN) :: KSIZELBX_ll,KSIZELBXU_ll      ! for T,V,W and u 
 INTEGER, INTENT(IN) :: KSIZELBXTKE_ll                ! for TKE 
@@ -305,13 +291,6 @@ INTEGER, INTENT(IN):: KSIZELBYTKE_ll                ! for TKE
 INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll    ! for Rx and SV 
 !
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUM,PVM,PWM     ! U,V,W at t-dt
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PTHM,PTKEM      ! theta, tke and
-                                                          ! eps at t-dt
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABSM          ! pressure at t-dt
-REAL, DIMENSION(:,:,:,:),  INTENT(OUT) :: PRM,PSVM        ! moist and scalar
-                                                          ! variables at t-dt
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PSRCM           ! turbulent flux
-                                                          !  <s'Rc'> at t-dt
 REAL, DIMENSION(:,:),      INTENT(OUT) :: PBL_DEPTH       ! BL depth
 REAL, DIMENSION(:,:),      INTENT(OUT) :: PSBL_DEPTH      ! SBL depth
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PWTHVMF         ! MassFlux buoyancy flux
@@ -320,6 +299,7 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUT,PVT,PWT     ! U,V,W at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PTHT,PTKET      ! theta, tke and
                                                           ! eps at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABST          ! pressure at t
+REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABSM          ! pressure at t-1
 REAL, DIMENSION(:,:,:,:),  INTENT(OUT) :: PRT,PSVT        ! moist and scalar
                                                           ! variables at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PSRCT           ! turbulent flux
@@ -354,14 +334,17 @@ REAL, DIMENSION(:,:), INTENT(OUT) :: PTHFRC,PRVFRC
 REAL, DIMENSION(:,:), INTENT(OUT) :: PTENDTHFRC,PTENDRVFRC,PGXTHFRC,PGYTHFRC
 REAL, DIMENSION(:),   INTENT(OUT) :: PPGROUNDFRC
 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PATC
-!
+INTEGER,              INTENT(IN)  :: KADVFRC              ! number of forcing
+TYPE (DATE_TIME), DIMENSION(:), INTENT(OUT) :: TPDTADVFRC ! date of forcing profs.
+REAL, DIMENSION(:,:,:,:),   INTENT(OUT) :: PDTHFRC, PDRVFRC
+INTEGER,              INTENT(IN)  :: KRELFRC              ! number of forcing
+TYPE (DATE_TIME), DIMENSION(:), INTENT(OUT) :: TPDTRELFRC ! date of forcing profs.
+REAL, DIMENSION(:,:,:,:),   INTENT(OUT) :: PTHREL, PRVREL
 REAL, DIMENSION(:,:,:),     INTENT(OUT) :: PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M ! Eddy fluxes
-INTEGER,              INTENT(IN)  :: KADVFRC                 ! number of forcing
-TYPE (DATE_TIME), DIMENSION(:), INTENT(OUT) :: TPDTADVFRC    ! date of forcing profs.
-REAL, DIMENSION(:,:,:,:),   INTENT(OUT) :: PDTHFRC, PDRVFRC  ! advective forcing
-INTEGER,              INTENT(IN)  :: KRELFRC                 ! number of forcing
-TYPE (DATE_TIME), DIMENSION(:), INTENT(OUT) :: TPDTRELFRC    ! date of forcing profs.
-REAL, DIMENSION(:,:,:,:),   INTENT(OUT) :: PTHREL, PRVREL    ! relaxation forcing
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS_PRES, PRVS_PRES, PRWS_PRES
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS_CLD
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS_CLD, PRSVS_CLD
+!
 !
 !*       0.2   declarations of local variables
 !
@@ -412,465 +395,123 @@ IF (IRESP /= 0) YSTORAGE_TYPE='TT'
 !*       2.    READ PROGNOSTIC VARIABLES
 !              -------------------------
 !
-!*       2.1  Time t-dt:
+!*       2.1  Time t:
 !
-YRECFM = 'UM'
+IF (KMASDEV<50) THEN
+  YRECFM = 'UM'
+ELSE
+  YRECFM = 'UT'
+ENDIF
 YDIR='XY'
-CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PUM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PUT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
-YRECFM = 'VM'
+IF (KMASDEV<50) THEN
+  YRECFM = 'VM'
+ELSE
+  YRECFM = 'VT'
+END IF
 YDIR='XY'
-CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PVM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PVT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
-YRECFM = 'WM'
+IF (KMASDEV<50) THEN
+  YRECFM = 'WM'
+ELSE
+  YRECFM = 'WT'
+END IF
 YDIR='XY'
-CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PWM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PWT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
-YRECFM = 'THM'
+IF (KMASDEV<50) THEN
+  YRECFM = 'THM'
+ELSE
+  YRECFM = 'THT'
+END IF
 YDIR='XY'
-CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PTHM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PTHT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
-YRECFM = 'PABSM'
+IF (KMASDEV<50) THEN
+  YRECFM = 'PABSM'
+ELSE
+  YRECFM = 'PABST'
+END IF
 YDIR='XY'
-CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PPABSM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PPABST,IGRID,ILENCH,YCOMMENT,IRESP)
+PPABSM = PPABST
 !
-SELECT CASE(HGETTKEM)                   
-  CASE('READ') 
-    YRECFM = 'TKEM'
+SELECT CASE(HGETTKET)                   
+  CASE('READ')
+    IF (KMASDEV<50) THEN
+      YRECFM = 'TKEM'
+    ELSE
+      YRECFM = 'TKET'
+    END IF
     YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PTKEM,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PTKET,IGRID,ILENCH,YCOMMENT,IRESP)
   CASE('INIT')
-    PTKEM(:,:,:)=XTKEMIN
+    PTKET(:,:,:)=XTKEMIN
 END SELECT 
 !
 IRR=0
 !
-SELECT CASE(HGETRVM)             ! vapor
+SELECT CASE(HGETRVT)             ! vapor
   CASE('READ')
     IRR=IRR+1 
-    YRECFM='RVM'
+    IF (KMASDEV<50) THEN
+      YRECFM = 'RVM'
+    ELSE
+      YRECFM='RVT'
+    END IF
     YDIR='XY'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
-    PRM(:,:,:,IRR)=Z3D(:,:,:)
+    PRT(:,:,:,IRR)=Z3D(:,:,:)
   CASE('INIT')
     IRR=IRR+1 
-    PRM(:,:,:,IRR)=0.
+    PRT(:,:,:,IRR)=0.
 END SELECT 
 !
-SELECT CASE(HGETRCM)             ! cloud 
-  CASE('READ') 
-    IRR=IRR+1 
-    YRECFM='RCM'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    PRM(:,:,:,IRR)=Z3D(:,:,:)
-  CASE('INIT')
-    IRR=IRR+1 
-    PRM(:,:,:,IRR) = 0.
-END SELECT
-!
-SELECT CASE(HGETRRM)             ! rain 
-  CASE('READ') 
-    IRR=IRR+1 
-    YRECFM='RRM'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    PRM(:,:,:,IRR)=Z3D(:,:,:)
-  CASE('INIT')
-    IRR=IRR+1 
-    PRM(:,:,:,IRR) = 0.
-END SELECT
-!
-SELECT CASE(HGETRIM)             ! cloud ice
-  CASE('READ') 
-    IRR=IRR+1 
-    YRECFM='RIM'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    PRM(:,:,:,IRR)=Z3D(:,:,:)
-  CASE('INIT')
-    IRR=IRR+1 
-    PRM(:,:,:,IRR)=0.
-END SELECT
-!
-SELECT CASE(HGETRSM)             ! snow
-  CASE('READ')
-    IRR=IRR+1 
-    YRECFM='RSM'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    PRM(:,:,:,IRR)=Z3D(:,:,:)
-  CASE('INIT')
-    IRR=IRR+1 
-    PRM(:,:,:,IRR)=0.
-END SELECT
-!
-SELECT CASE(HGETRGM)             ! graupel
-  CASE('READ') 
-    IRR=IRR+1 
-    YRECFM='RGM'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    PRM(:,:,:,IRR)=Z3D(:,:,:)
-  CASE('INIT')
-    IRR=IRR+1 
-    PRM(:,:,:,IRR)=0.
-END SELECT
-!
-SELECT CASE(HGETRHM)             ! hail
+SELECT CASE(HGETRCT)             ! cloud 
   CASE('READ') 
-    IRR=IRR+1 
-    YRECFM='RHM'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    PRM(:,:,:,IRR)=Z3D(:,:,:)
-  CASE('INIT')
-    IRR=IRR+1 
-    PRM(:,:,:,IRR)=0.
-END SELECT
-!
-!             Scalar Variables Reading : Users, C2R2, C1R3, ELEC, Chemical SV
-!
-YDIR='XY'
-ISV= SIZE(PSVM,4)
-!
-DO JSV = 1, NSV_USER              ! initialize according to the get indicators
-  SELECT CASE(HGETSVM(JSV))
-    CASE ('READ')
-      WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV
-      CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-      PSVM(:,:,:,JSV) = Z3D(:,:,:)
-    CASE ('INIT')
-      PSVM(:,:,:,JSV) = 0. 
-  END SELECT
-END DO
-!
-DO JSV = NSV_C2R2BEG,NSV_C2R2END
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-    IF (LSUPSAT .AND. (HGETRVM == 'READ') ) THEN
-      ZWORK(:,:,:) = (PPABSM(:,:,:)/XP00 )**(XRD/XCPD)
-      ZWORK(:,:,:) = PTHM(:,:,:)*ZWORK(:,:,:)
-      ZWORK(:,:,:) = EXP(XALPW-XBETAW/ZWORK(:,:,:)-XGAMW*ALOG(ZWORK(:,:,:)))
-      !rvsat
-      ZWORK(:,:,:) = (XMV / XMD)*ZWORK(:,:,:)/(PPABSM(:,:,:)-ZWORK(:,:,:))
-      ZWORK(:,:,:) = PRM(:,:,:,1)/ZWORK(:,:,:) 
-      PSVM(:,:,:,NSV_C2R2END ) = ZWORK(:,:,:)
-    END IF
-  END SELECT
-END DO
-!
-DO JSV = NSV_C1R3BEG,NSV_C1R3END
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT
-END DO
-!
-DO JSV = NSV_ELECBEG,NSV_ELECEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT
-END DO
-!
-DO JSV = NSV_CHEMBEG,NSV_CHEMEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    CNAMES(JSV-NSV_CHEMBEG+1) = UPCASE(CNAMES(JSV-NSV_CHEMBEG+1))
-    YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT    
-END DO
-!
-DO JSV = NSV_CHICBEG,NSV_CHICEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    CICNAMES(JSV-NSV_CHICBEG+1) = UPCASE(CICNAMES(JSV-NSV_CHICBEG+1))
-    YRECFM=TRIM(CICNAMES(JSV-NSV_CHICBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT    
-END DO
-!
-DO JSV = NSV_SLTBEG,NSV_SLTEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT    
-END DO
-!
-DO JSV = NSV_SLTDEPBEG,NSV_SLTDEPEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT    
-END DO
-!
-DO JSV = NSV_DSTBEG,NSV_DSTEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT    
-END DO
-!
-DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)  
-    CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-END SELECT
-END DO
-
-DO JSV = NSV_AERBEG,NSV_AEREND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT    
-END DO
-!
-DO JSV = NSV_AERDEPBEG,NSV_AERDEPEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)  
-    CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-END SELECT
-END DO
-!
-DO JSV = NSV_LGBEG,NSV_LGEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'M'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT
-END DO
-!
-DO JSV = NSV_PPBEG,NSV_PPEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    IF ( IRESP ==0 ) THEN
-       PSVM(:,:,:,JSV) = Z3D(:,:,:)
+    IRR=IRR+1
+    IF (KMASDEV<50) THEN
+      YRECFM = 'RCM'
     ELSE
-       PSVM(:,:,:,JSV) = 0.
+      YRECFM='RCT'
     END IF
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT
-END DO
-!
-DO JSV = NSV_CSBEG,NSV_CSEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    IF ( IRESP ==0 ) THEN
-       PSVM(:,:,:,JSV) = Z3D(:,:,:)
-    ELSE
-       PSVM(:,:,:,JSV) = 0.
-    END IF
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT
-END DO
-!
-DO JSV = NSV_LNOXBEG,NSV_LNOXEND
-  SELECT CASE(HGETSVM(JSV))
-  CASE ('READ')
-    YRECFM='LINOXM'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVM(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVM(:,:,:,JSV) = 0.
-  END SELECT
-END DO
-!
-!*       2.2  LS fields at time t-dt:
-!
-!*       2.2a  3D LS fields  
-!
-!
-CALL INI_LS(HINIFILE,HLUOUT,HGETRVM,GLSOURCE,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM)
-!
-!
-!*       2.2b  2D "surfacic" LB fields   
-!
-!
-CALL INI_LB(HINIFILE,HLUOUT,GLSOURCE,ISV,                             &   
-     KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
-     KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
-     KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
-     HGETTKEM,HGETRVM,HGETRCM,HGETRRM,HGETRIM,HGETRSM,                &
-     HGETRGM,HGETRHM,HGETSVM,                                         &
-     PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
-     PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM             ) 
-!
-!*       2.3  Time t:
-!
-YRECFM = 'UT'
-YDIR='XY'
-IF (YSTORAGE_TYPE=='TT') THEN
-  PUT(:,:,:)   =PUM(:,:,:)
-ELSE
-  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PUT,IGRID,ILENCH,YCOMMENT,IRESP)
-ENDIF
-!
-YRECFM = 'VT'
-YDIR='XY'
-IF (YSTORAGE_TYPE=='TT') THEN
-  PVT(:,:,:)   =PVM(:,:,:)
-ELSE
-  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PVT,IGRID,ILENCH,YCOMMENT,IRESP)
-ENDIF
-!
-YRECFM = 'WT'
-YDIR='XY'
-IF (YSTORAGE_TYPE=='TT') THEN
-  PWT(:,:,:)   =PWM(:,:,:)
-ELSE
-  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PWT,IGRID,ILENCH,YCOMMENT,IRESP)
-ENDIF
-!
-YRECFM = 'THT'
-YDIR='XY'
-IF (YSTORAGE_TYPE=='TT') THEN
-  PTHT(:,:,:)   =PTHM(:,:,:)
-ELSE
-  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PTHT,IGRID,ILENCH,YCOMMENT,IRESP)
-ENDIF
-!
-YRECFM = 'PABST'
-YDIR='XY'
-IF (YSTORAGE_TYPE=='TT') THEN
-  PPABST(:,:,:)=PPABSM(:,:,:)
-ELSE
-  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PPABST,IGRID,ILENCH,YCOMMENT,IRESP)
-ENDIF
-!
-SELECT CASE(HGETTKET) 
-  CASE('READ')
-    YRECFM = 'TKET'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PTKET,IGRID,ILENCH,YCOMMENT,IRESP)
-  CASE('INIT') 
-    PTKET(:,:,:)=XTKEMIN
-    IF (YSTORAGE_TYPE=='TT') PTKET(:,:,:)=PTKEM(:,:,:)
-END SELECT
-!
-IRR=0
-SELECT CASE(HGETRVT)             ! vapor 
-  CASE('READ')
-    IRR=IRR+1 
-    YRECFM='RVT' 
     YDIR='XY'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     PRT(:,:,:,IRR)=Z3D(:,:,:)
   CASE('INIT')
     IRR=IRR+1 
-    PRT(:,:,:,IRR)=0. 
-    IF (YSTORAGE_TYPE=='TT')  PRT(:,:,:,IRR)=PRM(:,:,:,IRR)
+    PRT(:,:,:,IRR) = 0.
 END SELECT
 !
-SELECT CASE(HGETRCT)             ! cloud
-  CASE('READ')
-    IRR=IRR+1 
-    YRECFM='RCT'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    PRT(:,:,:,IRR)=Z3D(:,:,:)
-  CASE('INIT')
-    IRR=IRR+1 
-    PRT(:,:,:,IRR)=0.
-    IF (YSTORAGE_TYPE=='TT')  PRT(:,:,:,IRR)=PRM(:,:,:,IRR)
-END SELECT
-!
-SELECT CASE(HGETRRT)             ! rain
-  CASE('READ')
-    IRR=IRR+1 
-    YRECFM='RRT'
+SELECT CASE(HGETRRT)             ! rain 
+  CASE('READ') 
+    IRR=IRR+1
+    IF (KMASDEV<50) THEN
+      YRECFM = 'RRM'
+    ELSE
+      YRECFM ='RRT'
+    END IF 
     YDIR='XY'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     PRT(:,:,:,IRR)=Z3D(:,:,:)
   CASE('INIT')
     IRR=IRR+1 
-    PRT(:,:,:,IRR)=0.
-    IF (YSTORAGE_TYPE=='TT')  PRT(:,:,:,IRR)=PRM(:,:,:,IRR)
+    PRT(:,:,:,IRR) = 0.
 END SELECT
 !
 SELECT CASE(HGETRIT)             ! cloud ice
-  CASE('READ')
+  CASE('READ') 
     IRR=IRR+1 
-    YRECFM='RIT'
+    IF (KMASDEV<50) THEN
+      YRECFM = 'RIM'
+    ELSE
+      YRECFM ='RIT'
+    END IF 
     YDIR='XY'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
@@ -878,13 +519,16 @@ SELECT CASE(HGETRIT)             ! cloud ice
   CASE('INIT')
     IRR=IRR+1 
     PRT(:,:,:,IRR)=0.
-    IF (YSTORAGE_TYPE=='TT')  PRT(:,:,:,IRR)=PRM(:,:,:,IRR)
 END SELECT
 !
 SELECT CASE(HGETRST)             ! snow
-  CASE('READ') 
+  CASE('READ')
     IRR=IRR+1 
-    YRECFM='RST'
+    IF (KMASDEV<50) THEN
+      YRECFM = 'RSM'
+    ELSE
+      YRECFM ='RST'
+    END IF 
     YDIR='XY'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
@@ -892,13 +536,16 @@ SELECT CASE(HGETRST)             ! snow
   CASE('INIT')
     IRR=IRR+1 
     PRT(:,:,:,IRR)=0.
-    IF (YSTORAGE_TYPE=='TT')  PRT(:,:,:,IRR)=PRM(:,:,:,IRR)
 END SELECT
 !
 SELECT CASE(HGETRGT)             ! graupel
   CASE('READ') 
     IRR=IRR+1 
-    YRECFM='RGT'
+    IF (KMASDEV<50) THEN
+      YRECFM = 'RGM'
+    ELSE
+      YRECFM ='RGT'
+    END IF 
     YDIR='XY'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
@@ -906,13 +553,16 @@ SELECT CASE(HGETRGT)             ! graupel
   CASE('INIT')
     IRR=IRR+1 
     PRT(:,:,:,IRR)=0.
-    IF (YSTORAGE_TYPE=='TT')  PRT(:,:,:,IRR)=PRM(:,:,:,IRR)
 END SELECT
 !
-SELECT CASE(HGETRHT)             ! hail 
-  CASE('READ')
+SELECT CASE(HGETRHT)             ! hail
+  CASE('READ') 
     IRR=IRR+1 
-    YRECFM='RHT'
+    IF (KMASDEV<50) THEN
+      YRECFM = 'RHM'
+    ELSE
+      YRECFM ='RHT'
+    END IF 
     YDIR='XY'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
@@ -920,7 +570,6 @@ SELECT CASE(HGETRHT)             ! hail
   CASE('INIT')
     IRR=IRR+1 
     PRT(:,:,:,IRR)=0.
-    IF (YSTORAGE_TYPE=='TT')  PRT(:,:,:,IRR)=PRM(:,:,:,IRR)
 END SELECT
 !
 SELECT CASE(HGETCIT)             ! ice concentration
@@ -934,10 +583,12 @@ SELECT CASE(HGETCIT)             ! ice concentration
     PCIT(:,:,:)=0.
 END SELECT
 !
-!             Scalar Variables : Users, C2R2, C1R3, ELEC, Chemical
+!             Scalar Variables Reading : Users, C2R2, C1R3, ELEC, Chemical SV
 !
 YDIR='XY'
-DO JSV = 1, NSV_USER  ! initialize according to the get indicators
+ISV= SIZE(PSVT,4)
+!
+DO JSV = 1, NSV_USER              ! initialize according to the get indicators
   SELECT CASE(HGETSVT(JSV))
     CASE ('READ')
       WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
@@ -946,7 +597,6 @@ DO JSV = 1, NSV_USER  ! initialize according to the get indicators
       PSVT(:,:,:,JSV) = Z3D(:,:,:)
     CASE ('INIT')
       PSVT(:,:,:,JSV) = 0. 
-      IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
   END SELECT
 END DO
 !
@@ -958,8 +608,16 @@ DO JSV = NSV_C2R2BEG,NSV_C2R2END
          YCOMMENT,IRESP)
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
-    PSVT(:,:,:,JSV) = 0. 
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
+    PSVT(:,:,:,JSV) = 0.
+    IF (LSUPSAT .AND. (HGETRVT == 'READ') ) THEN
+      ZWORK(:,:,:) = (PPABST(:,:,:)/XP00 )**(XRD/XCPD)
+      ZWORK(:,:,:) = PTHT(:,:,:)*ZWORK(:,:,:)
+      ZWORK(:,:,:) = EXP(XALPW-XBETAW/ZWORK(:,:,:)-XGAMW*ALOG(ZWORK(:,:,:)))
+      !rvsat
+      ZWORK(:,:,:) = (XMV / XMD)*ZWORK(:,:,:)/(PPABST(:,:,:)-ZWORK(:,:,:))
+      ZWORK(:,:,:) = PRT(:,:,:,1)/ZWORK(:,:,:) 
+      PSVT(:,:,:,NSV_C2R2END ) = ZWORK(:,:,:)
+    END IF
   END SELECT
 END DO
 !
@@ -971,8 +629,7 @@ DO JSV = NSV_C1R3BEG,NSV_C1R3END
          YCOMMENT,IRESP)
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
-    PSVT(:,:,:,JSV) = 0. 
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
+    PSVT(:,:,:,JSV) = 0.
   END SELECT
 END DO
 !
@@ -984,8 +641,7 @@ DO JSV = NSV_ELECBEG,NSV_ELECEND
          YCOMMENT,IRESP)
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
-    PSVT(:,:,:,JSV) = 0. 
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
+    PSVT(:,:,:,JSV) = 0.
   END SELECT
 END DO
 !
@@ -998,11 +654,10 @@ DO JSV = NSV_CHEMBEG,NSV_CHEMEND
          YCOMMENT,IRESP)
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
-    PSVT(:,:,:,JSV) = 0. 
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
-  END SELECT
+    PSVT(:,:,:,JSV) = 0.
+  END SELECT    
 END DO
-!   
+!
 DO JSV = NSV_CHICBEG,NSV_CHICEND
   SELECT CASE(HGETSVT(JSV))
   CASE ('READ')
@@ -1013,8 +668,7 @@ DO JSV = NSV_CHICBEG,NSV_CHICEND
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
-  END SELECT
+  END SELECT    
 END DO
 !
 DO JSV = NSV_SLTBEG,NSV_SLTEND
@@ -1026,7 +680,6 @@ DO JSV = NSV_SLTBEG,NSV_SLTEND
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
   END SELECT    
 END DO
 !
@@ -1039,7 +692,6 @@ DO JSV = NSV_SLTDEPBEG,NSV_SLTDEPEND
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
   END SELECT    
 END DO
 !
@@ -1052,7 +704,6 @@ DO JSV = NSV_DSTBEG,NSV_DSTEND
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
   END SELECT    
 END DO
 !
@@ -1062,14 +713,12 @@ DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND
     YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'T'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
          YCOMMENT,IRESP)
-    PSVT(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
+    PSVT(:,:,:,JSV) = Z3D(:,:,:)  
+    CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
-  END SELECT    
+END SELECT
 END DO
 
-!
 DO JSV = NSV_AERBEG,NSV_AEREND
   SELECT CASE(HGETSVT(JSV))
   CASE ('READ')
@@ -1079,7 +728,6 @@ DO JSV = NSV_AERBEG,NSV_AEREND
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
   END SELECT    
 END DO
 !
@@ -1089,13 +737,12 @@ DO JSV = NSV_AERDEPBEG,NSV_AERDEPEND
     YRECFM=TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'T'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
          YCOMMENT,IRESP)
-    PSVT(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
+    PSVT(:,:,:,JSV) = Z3D(:,:,:)  
+    CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
-  END SELECT    
+END SELECT
 END DO
-!   
+!
 DO JSV = NSV_LGBEG,NSV_LGEND
   SELECT CASE(HGETSVT(JSV))
   CASE ('READ')
@@ -1105,20 +752,6 @@ DO JSV = NSV_LGBEG,NSV_LGEND
     PSVT(:,:,:,JSV) = Z3D(:,:,:)
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
-  END SELECT
-END DO
-!
-DO JSV = NSV_LNOXBEG,NSV_LNOXEND
-  SELECT CASE(HGETSVT(JSV))
-  CASE ('READ')
-    YRECFM='LINOXT'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-         YCOMMENT,IRESP)
-    PSVT(:,:,:,JSV) = Z3D(:,:,:)
-  CASE ('INIT')
-    PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
   END SELECT
 END DO
 !
@@ -1128,7 +761,7 @@ DO JSV = NSV_PPBEG,NSV_PPEND
     WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
          YCOMMENT,IRESP)
-    IF (IRESP == 0) THEN
+    IF ( IRESP ==0 ) THEN
        PSVT(:,:,:,JSV) = Z3D(:,:,:)
     ELSE
        PSVT(:,:,:,JSV) = 0.
@@ -1142,10 +775,8 @@ DO JSV = NSV_PPBEG,NSV_PPEND
     ENDIF
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    PATC(:,:,:,JSV-NSV_PPBEG+1) = 0. 
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
+    PATC(:,:,:,JSV-NSV_PPBEG+1) = 0.
   END SELECT
-!
 END DO
 !
 DO JSV = NSV_CSBEG,NSV_CSEND
@@ -1154,42 +785,149 @@ DO JSV = NSV_CSBEG,NSV_CSEND
     WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
          YCOMMENT,IRESP)
-    IF (IRESP == 0) THEN
+    IF ( IRESP ==0 ) THEN
        PSVT(:,:,:,JSV) = Z3D(:,:,:)
     ELSE
        PSVT(:,:,:,JSV) = 0.
     END IF
   CASE ('INIT')
     PSVT(:,:,:,JSV) = 0.
-    IF (YSTORAGE_TYPE=='TT')  PSVT(:,:,:,JSV)=PSVM(:,:,:,JSV)
   END SELECT
 END DO
 !
+DO JSV = NSV_LNOXBEG,NSV_LNOXEND
+  SELECT CASE(HGETSVT(JSV))
+  CASE ('READ')
+    YRECFM='LINOXT'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PSVT(:,:,:,JSV) = Z3D(:,:,:)
+  CASE ('INIT')
+    PSVT(:,:,:,JSV) = 0.
+  END SELECT
+END DO
 !
-!*       2.4  Some special variables:
+IF (CCONF == 'RESTA') THEN
+  YRECFM = 'US_PRES'
+  YDIR='XY'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PRUS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
+  YRECFM = 'VS_PRES'
+  YDIR='XY'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PRVS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
+  YRECFM = 'WS_PRES'
+  YDIR='XY'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PRWS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
+  YRECFM = 'THS_CLD'
+  YDIR='XY'
+  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PRTHS_CLD,IGRID,ILENCH,YCOMMENT,IRESP)
+  DO JRR = 1, SIZE(PRT,4)
+   IF (JRR == 1 ) THEN
+    YRECFM='RVS_CLD'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRRS_CLD(:,:,:,JRR) = Z3D(:,:,:)
+   END IF
+   IF (JRR == 2 ) THEN
+    YRECFM='RCS_CLD'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRRS_CLD(:,:,:,JRR) = Z3D(:,:,:)
+   END IF
+   IF (JRR == 3 ) THEN
+    YRECFM='RRS_CLD'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRRS_CLD(:,:,:,JRR) = Z3D(:,:,:)
+   END IF
+   IF (JRR == 4 ) THEN
+    YRECFM='RIS_CLD'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRRS_CLD(:,:,:,JRR) = Z3D(:,:,:)
+   END IF
+   IF (JRR == 5 ) THEN
+    YRECFM='RSS_CLD'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRRS_CLD(:,:,:,JRR) = Z3D(:,:,:)
+   END IF
+   IF (JRR == 6 ) THEN
+    YRECFM='RGS_CLD'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRRS_CLD(:,:,:,JRR) = Z3D(:,:,:)
+   END IF
+   IF (JRR == 7 ) THEN
+    YRECFM='RHS_CLD'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRRS_CLD(:,:,:,JRR) = Z3D(:,:,:)
+   END IF
+  END DO
+  DO JSV = NSV_C2R2BEG,NSV_C2R2END
+   IF (JSV == NSV_C2R2BEG ) THEN
+    YRECFM='RSVS_CLD1'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRSVS_CLD(:,:,:,JSV) = Z3D(:,:,:)
+   END IF
+   IF (JSV == NSV_C2R2BEG ) THEN
+    YRECFM='RSVS_CLD2'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
+         YCOMMENT,IRESP)
+    PRSVS_CLD(:,:,:,JSV) = Z3D(:,:,:)
+   END IF
+  END DO
+END IF
+!
+!*       2.1  Time t-dt:
+!
+IF (CPROGRAM=='MODEL' .AND. HUVW_ADV_SCHEME(1:3)=='CEN') THEN
+  IF (CCONF=='RESTA') THEN
+    YRECFM = 'UM'
+    YDIR='XY'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PUM,IGRID,ILENCH,YCOMMENT,IRESP)
+    !
+    YRECFM = 'VM'
+    YDIR='XY'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PVM,IGRID,ILENCH,YCOMMENT,IRESP)
+    !
+    YRECFM = 'WM'
+    YDIR='XY'
+    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PWM,IGRID,ILENCH,YCOMMENT,IRESP)
+  ELSE
+    PUM = PUT
+    PVM = PVT
+    PWM = PWT
+  END IF
+END IF
+!
+!*       2.2a  3D LS fields  
+!
+!
+CALL INI_LS(HINIFILE,HLUOUT,HGETRVT,GLSOURCE,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM)
+!
+!
+!*       2.2b  2D "surfacic" LB fields   
+!
+!
+CALL INI_LB(HINIFILE,HLUOUT,GLSOURCE,ISV,                             &   
+     KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
+     KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
+     KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
+     HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETRST,                &
+     HGETRGT,HGETRHT,HGETSVT,                                         &
+     PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
+     PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM             ) 
+!
+!
+!*       2.3  Some special variables:
 !
 YRECFM = 'DRYMASST'                  ! dry mass
 YDIR='--'
 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PDRYMASST,IGRID,ILENCH,YCOMMENT,IRESP)
 !
-SELECT CASE(HGETSRCM)                ! turbulent flux SRC at time t-dt 
-  CASE('READ')
-    YRECFM='SRCM'
-    YDIR='XY'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    IF( IRESP /= 0 ) THEN
-      YRECFM='SRC'
-      YDIR='XY'
-      CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-    END IF
-    PSRCM(:,:,:)=Z3D(:,:,:)
-  CASE('INIT')
-    PSRCM(:,:,:)=0.
-END SELECT
-!
-SELECT CASE(HGETSRCT)                ! turbulent flux SRC at time t 
+SELECT CASE(HGETSRCT)                ! turbulent flux SRC at time t
   CASE('READ')
     YRECFM='SRCT'
     YDIR='XY'
@@ -1204,7 +942,6 @@ SELECT CASE(HGETSRCT)                ! turbulent flux SRC at time t
     PSRCT(:,:,:)=Z3D(:,:,:)
   CASE('INIT')
     PSRCT(:,:,:)=0.
-    IF (YSTORAGE_TYPE=='TT')  PSRCT(:,:,:)=PSRCM(:,:,:)
 END SELECT
 !
 SELECT CASE(HGETSIGS)                ! subgrid condensation
@@ -1221,7 +958,6 @@ SELECT CASE(HGETPHC)             ! pH in cloud water
   CASE('READ')
     YRECFM='PHC'
     YDIR='XY'
-!    IF (SIZE(PCIT) /= 0 )   &
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PPHC,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
   CASE('INIT')
@@ -1232,7 +968,6 @@ SELECT CASE(HGETPHR)             ! pH in rainwater
   CASE('READ')
     YRECFM='PHR'
     YDIR='XY'
-!    IF (SIZE(PCIT) /= 0 )   &
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PPHR,IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
   CASE('INIT')
@@ -1294,7 +1029,7 @@ SELECT CASE(HGETTKET)
 END SELECT 
 !-------------------------------------------------------------------------------
 !
-!*       2.5   READ FORCING VARIABLES
+!*       2.4   READ FORCING VARIABLES
 !              ----------------------
 !
 !
@@ -1457,43 +1192,8 @@ ENDIF
 !
 !-------------------------------------------------------------------------------
 !
-!*       3.    TIME STEP CHANGE OR EXOTIC START CONFIGURATION
-!              ----------------------------------------------
-!
-IF ( (ABS(PTSTEP -PTSTEP_OLD) >1.E-16) .AND. (CCONF /= 'START') )  THEN
-  Z1 = PTSTEP / PTSTEP_OLD
-  Z2 = 1. - Z1
-!
-  PUM  (:,:,:)   = Z1 * PUM  (:,:,:)   + Z2 * PUT  (:,:,:) 
-  PVM  (:,:,:)   = Z1 * PVM  (:,:,:)   + Z2 * PVT  (:,:,:)
-  PWM  (:,:,:)   = Z1 * PWM  (:,:,:)   + Z2 * PWT  (:,:,:)
-  PTHM (:,:,:)   = Z1 * PTHM (:,:,:)   + Z2 * PTHT (:,:,:)
-  PTKEM(:,:,:)   = MAX(XTKEMIN,Z1 * PTKEM(:,:,:)   + Z2 * PTKET(:,:,:))
-  PRM  (:,:,:,:) = MAX(0.,Z1 * PRM  (:,:,:,:) + Z2 * PRT  (:,:,:,:))
-  PSVM (:,:,:,:) = MAX(0.,Z1 * PSVM (:,:,:,:) + Z2 * PSVT (:,:,:,:))
-  PPABSM(:,:,:)   = Z1 * PPABSM(:,:,:)   + Z2 * PPABST(:,:,:)
-!
-END IF
 !
-IF (YSTORAGE_TYPE=='MT' .AND. CCONF=='START' .AND. CPROGRAM=='MESONH') THEN
-  CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
-  WRITE(ILUOUT,FMT=*) '*******************************************************'
-  WRITE(ILUOUT,FMT=*) 'THE 2 INSTANTS M AND T ARE DIFFERENT IN FILE ',HINIFILE
-  WRITE(ILUOUT,FMT=*) 'BUT YOU WANT TO PERFORM A START THEREFORE ALL THE'
-  WRITE(ILUOUT,FMT=*) 'FIELDS OF INSTANT M ARE SET EQUAL TO THOSE OF INSTANT T'
-  WRITE(ILUOUT,FMT=*) '*******************************************************'
-  PUM(:,:,:)   =PUT(:,:,:)
-  PVM(:,:,:)   =PVT(:,:,:)
-  PWM(:,:,:)   =PWT(:,:,:)
-  PTHM(:,:,:)  =PTHT(:,:,:)
-  PPABSM(:,:,:)=PPABST(:,:,:)
-  PTKEM(:,:,:) =PTKET(:,:,:)
-  PRM(:,:,:,:) =PRT(:,:,:,:)
-  PSVM(:,:,:,:)=PSVT(:,:,:,:)
-ENDIF
-!-------------------------------------------------------------------------------
-!
-!*       4.    PRINT ON OUTPUT-LISTING
+!*       3.    PRINT ON OUTPUT-LISTING
 !              ----------------------
 !
 IF (NVERB >= 10 .AND. .NOT. L1D) THEN
@@ -1507,13 +1207,6 @@ IF (NVERB >= 10 .AND. .NOT. L1D) THEN
     WRITE(ILUOUT,FMT=*) PUT(1,1,JKLOOP),PUT(IIUP/2,IJUP/2,JKLOOP), &
     PUT(IIUP,KJU,JKLOOP),JKLOOP    
   END DO
-!
-  WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PUM values:'
-  WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
-  DO JKLOOP=1,KKU
-    WRITE(ILUOUT,FMT=*) PUM(1,1,JKLOOP),PUM(IIUP/2,IJUP/2,JKLOOP), &
-    PUM(IIUP,IJUP,JKLOOP),JKLOOP    
-  END DO
 !
   WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PVT values:'
   WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
@@ -1521,13 +1214,6 @@ IF (NVERB >= 10 .AND. .NOT. L1D) THEN
     WRITE(ILUOUT,FMT=*) PVT(1,1,JKLOOP),PVT(IIUP/2,IJUP/2,JKLOOP), &
     PVT(IIUP,IJUP,JKLOOP),JKLOOP    
   END DO
-!
-  WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PVM values:'
-  WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
-  DO JKLOOP=1,KKU
-    WRITE(ILUOUT,FMT=*) PVM(1,1,JKLOOP),PVM(IIUP/2,IJUP/2,JKLOOP), &
-    PVM(IIUP,IJUP,JKLOOP),JKLOOP    
-  END DO
 !
   WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PWT values:'
   WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
@@ -1535,13 +1221,6 @@ IF (NVERB >= 10 .AND. .NOT. L1D) THEN
     WRITE(ILUOUT,FMT=*) PWT(1,1,JKLOOP),PWT(IIUP/2,IJUP/2,JKLOOP), &
     PWT(IIUP,IJUP,JKLOOP),JKLOOP    
   END DO
-!
-  WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PWM values:'
-  WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
-  DO JKLOOP=1,KKU
-    WRITE(ILUOUT,FMT=*) PWM(1,1,JKLOOP),PWM(IIUP/2,IJUP/2,JKLOOP), &
-    PWM(IIUP,IJUP,JKLOOP),JKLOOP    
-  END DO
 !
   WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PTHT values:'
   WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
@@ -1550,32 +1229,18 @@ IF (NVERB >= 10 .AND. .NOT. L1D) THEN
     PTHT(IIUP,IJUP,JKLOOP),JKLOOP    
   END DO
 !
-  WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PTHM values:'
-  WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
-  DO JKLOOP=1,KKU
-    WRITE(ILUOUT,FMT=*) PTHM(1,1,JKLOOP),PTHM(IIUP/2,IJUP/2,JKLOOP), &
-    PTHM(IIUP,IJUP,JKLOOP),JKLOOP    
-  END DO
-!
-  IF(SIZE(PTKEM,1) /=0) THEN
+  IF(SIZE(PTKET,1) /=0) THEN
     WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PTKET values:'
     WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
     DO JKLOOP=1,KKU
       WRITE(ILUOUT,FMT=*) PTKET(1,1,JKLOOP),PTKET(IIUP/2,IJUP/2,JKLOOP), &
       PTKET(IIUP,IJUP,JKLOOP),JKLOOP    
     END DO
-!
-    WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PTKEM values:'
-    WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
-    DO JKLOOP=1,KKU
-      WRITE(ILUOUT,FMT=*) PTKEM(1,1,JKLOOP),PTKEM(IIUP/2,IJUP/2,JKLOOP), &
-      PTKEM(IIUP,IJUP,JKLOOP),JKLOOP    
-    END DO
   END IF
 !
-  IF (SIZE(PRM,4) /= 0) THEN
+  IF (SIZE(PRT,4) /= 0) THEN
     WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PRT values:'
-    DO JRR = 1, SIZE(PRM,4)
+    DO JRR = 1, SIZE(PRT,4)
       WRITE(ILUOUT,FMT=*) 'JRR = ',JRR
       WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
       DO JKLOOP=1,KKU
@@ -1584,20 +1249,11 @@ IF (NVERB >= 10 .AND. .NOT. L1D) THEN
       END DO
     END DO
 !
-    WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PRM values:'
-    DO JRR = 1, SIZE(PRM,4)
-      WRITE(ILUOUT,FMT=*) 'JRR = ',JRR
-      WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
-      DO JKLOOP=1,KKU
-        WRITE(ILUOUT,FMT=*) PRM(1,1,JKLOOP,JRR),PRM(IIUP/2,IJUP/2,JKLOOP,JRR), &
-        PRM(IIUP,IJUP,JKLOOP,JRR),JKLOOP    
-      END DO
-    END DO
   END IF   
 !
-  IF (SIZE(PSVM,4) /= 0) THEN
+  IF (SIZE(PSVT,4) /= 0) THEN
     WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PSVT values:'
-    DO JRR = 1, SIZE(PSVM,4)
+    DO JRR = 1, SIZE(PSVT,4)
       WRITE(ILUOUT,FMT=*) 'JRR = ',JRR
       WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
       DO JKLOOP=1,KKU
@@ -1606,18 +1262,9 @@ IF (NVERB >= 10 .AND. .NOT. L1D) THEN
       END DO
     END DO
 !
-   WRITE(ILUOUT,FMT=*) 'READ_FIELD: Some PSVM values:'
-    DO JRR = 1, SIZE(PSVM,4)
-      WRITE(ILUOUT,FMT=*) 'JRR = ',JRR
-      WRITE(ILUOUT,FMT=*) '(1,1,JK)   (IIU/2,IJU/2,JK)   (IIU,IJU,JK)    JK  '
-      DO JKLOOP=1,KKU
-        WRITE(ILUOUT,FMT=*) PSVM(1,1,JKLOOP,JRR),PSVM(IIUP/2,IJUP/2,JKLOOP,JRR), &
-        PSVM(IIUP,IJUP,JKLOOP,JRR),JKLOOP  
-      END DO
-    END DO
   END IF   
 END IF 
 !-------------------------------------------------------------------------------
-!      
+! 
 !
 END SUBROUTINE READ_FIELD
diff --git a/src/MNH/read_precip_field.f90 b/src/MNH/read_precip_field.f90
index 2b1b57a9f..29b3f206e 100644
--- a/src/MNH/read_precip_field.f90
+++ b/src/MNH/read_precip_field.f90
@@ -12,7 +12,8 @@
 !
 INTERFACE
 !
-      SUBROUTINE READ_PRECIP_FIELD(HINIFILE,HLUOUT,HGETRCT,HGETRRT,HGETRST,HGETRGT,HGETRHT, &
+      SUBROUTINE READ_PRECIP_FIELD(HINIFILE,HLUOUT,HPROGRAM,HCONF,                          &
+                              HGETRCT,HGETRRT,HGETRST,HGETRGT,HGETRHT,                      &
                               PINPRC,PACPRC,PINPRR,PINPRR3D,PEVAP3D,                        &
                               PACPRR,PINPRS,PACPRS,PINPRG,PACPRG,PINPRH,PACPRH )           
 !
@@ -22,6 +23,8 @@ INTERFACE
 CHARACTER (LEN=*),          INTENT(IN)  :: HINIFILE    ! name of the initial file
 CHARACTER (LEN=*),          INTENT(IN)  :: HLUOUT      ! name for output-listing
                                                        ! of nested models
+CHARACTER (LEN=*),          INTENT(IN)  :: HPROGRAM    ! 
+CHARACTER (LEN=*),          INTENT(IN)  :: HCONF       ! 
 !                    
 CHARACTER (LEN=*),          INTENT(IN)  :: HGETRCT, HGETRRT, HGETRST, HGETRGT, HGETRHT
                                                  ! Get indicator RCT,RRT,RST,RGT,RHT
@@ -46,7 +49,8 @@ END INTERFACE
 END MODULE MODI_READ_PRECIP_FIELD 
 !
 !     ################################################################################
-      SUBROUTINE READ_PRECIP_FIELD(HINIFILE,HLUOUT,HGETRCT,HGETRRT,HGETRST,HGETRGT,HGETRHT, &
+      SUBROUTINE READ_PRECIP_FIELD(HINIFILE,HLUOUT,HPROGRAM,HCONF,                          &
+                              HGETRCT,HGETRRT,HGETRST,HGETRGT,HGETRHT,                      &
                               PINPRC,PACPRC,PINPRR,PINPRR3D,PEVAP3D,                        &
                               PACPRR,PINPRS,PACPRS,PINPRG,PACPRG,PINPRH,PACPRH )           
 !     ################################################################################
@@ -85,6 +89,7 @@ END MODULE MODI_READ_PRECIP_FIELD
 !!      (J. Viviand)   04/02/97  convert precipitation rates in m/s
 !!      (V. Ducrocq)   14/08/98  // remove KIINF,KJINF,KISUP,KJSUP
 !!      (JP Pinty)     29/11/02  add C3R5, ICE2, ICE4
+!!      (C.Lac)        04/03/13  add YGETxxx for FIT scheme
 !!
 !-----------------------------------------------------------------------------
 !
@@ -103,6 +108,8 @@ CHARACTER (LEN=*),          INTENT(IN)  :: HLUOUT      ! name for output-listing
 !                    
 CHARACTER (LEN=*),          INTENT(IN)  :: HGETRCT,HGETRRT, HGETRST, HGETRGT, HGETRHT
                                                  ! Get indicator RRT,RST,RGT,RHT
+CHARACTER (LEN=*),          INTENT(IN)  :: HPROGRAM    ! 
+CHARACTER (LEN=*),          INTENT(IN)  :: HCONF       ! 
 !
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRC! Droplet instant precip
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PACPRC! Droplet accumulated precip
@@ -126,6 +133,7 @@ INTEGER             :: IGRID,ILENCH,IRESP         !   File
 CHARACTER (LEN=16)  :: YRECFM                     ! management
 CHARACTER (LEN=100) :: YCOMMENT                   ! variables   
 CHARACTER(LEN=2)    :: YDIR
+CHARACTER(LEN=4)    :: YGETRCT,YGETRRT,YGETRST,YGETRGT,YGETRHT                    
 INTEGER             :: ILUOUT                     ! Unit number for prints
 !
 !-------------------------------------------------------------------------------
@@ -137,13 +145,26 @@ CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 !
 YDIR='XY'
 !
+IF ((HPROGRAM == 'MESONH') .AND. (HCONF == 'START')) THEN
+  YGETRCT = 'INIT'
+  YGETRRT = 'INIT'
+  YGETRST = 'INIT'
+  YGETRGT = 'INIT'
+  YGETRHT = 'INIT'
+ELSE
+  YGETRCT = HGETRCT
+  YGETRRT = HGETRRT
+  YGETRST = HGETRST
+  YGETRGT = HGETRGT
+  YGETRHT = HGETRHT
+END IF
 !-------------------------------------------------------------------------------
 !
 !*       2..    READ PROGNOSTIC VARIABLES
 !              -------------------------
 !
 IF (SIZE(PINPRC) /= 0 ) THEN
-  SELECT CASE(HGETRCT)
+  SELECT CASE(YGETRCT)
   CASE ('READ')
     YRECFM = 'INPRC'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z2D,IGRID,ILENCH,YCOMMENT,IRESP)
@@ -158,7 +179,7 @@ IF (SIZE(PINPRC) /= 0 ) THEN
 END IF
 !
 IF (SIZE(PINPRR) /= 0 ) THEN
-  SELECT CASE(HGETRRT)
+  SELECT CASE(YGETRRT)
   CASE ('READ')
     YRECFM = 'INPRR'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z2D,IGRID,ILENCH,YCOMMENT,IRESP)
@@ -181,7 +202,7 @@ IF (SIZE(PINPRR) /= 0 ) THEN
 END IF
 !
 IF (SIZE(PINPRS) /= 0 ) THEN
-  SELECT CASE(HGETRST)
+  SELECT CASE(YGETRST)
   CASE ('READ')
     YRECFM = 'INPRS'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z2D,IGRID,ILENCH,YCOMMENT,IRESP)
@@ -196,7 +217,7 @@ IF (SIZE(PINPRS) /= 0 ) THEN
 END IF
 !
 IF (SIZE(PINPRG) /= 0 ) THEN
-  SELECT CASE(HGETRGT)
+  SELECT CASE(YGETRGT)
   CASE ('READ')
     YRECFM = 'INPRG'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z2D,IGRID,ILENCH,YCOMMENT,IRESP)
@@ -211,7 +232,7 @@ IF (SIZE(PINPRG) /= 0 ) THEN
 END IF
 !
 IF (SIZE(PINPRH) /= 0 ) THEN
-  SELECT CASE(HGETRHT)
+  SELECT CASE(YGETRHT)
   CASE ('READ')
     YRECFM = 'INPRH'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,Z2D,IGRID,ILENCH,YCOMMENT,IRESP)
diff --git a/src/MNH/relax2fw_ion.f90 b/src/MNH/relax2fw_ion.f90
index 792f20fc1..ab82f4937 100644
--- a/src/MNH/relax2fw_ion.f90
+++ b/src/MNH/relax2fw_ion.f90
@@ -90,6 +90,7 @@ END MODULE MODI_RELAX2FW_ION
 !!    MODIFICATIONS
 !!    -------------
 !!      C.Lac, 07/11 : Avoid the horizontal relaxation if not father model
+!!      C.Lac, 11/11 : Adaptation to FIT temporal scheme
 !!
 !!
 !-------------------------------------------------------------------------------
@@ -161,11 +162,7 @@ CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
 !
 !*       2.1    set the top-level damping coef. (upstream or leapfrog)
 !
-IF ((KTCOUNT.EQ.1) .AND. (CCONF.EQ.'START') ) THEN
   ZKV(:)  = PALK(:) / (1. - PTSTEP * PALK(:))
-ELSE
-  ZKV(:)  = PALK(:)
-ENDIF
 !
 !
 !*       2.2     applies the damping in the uppermost levels
@@ -188,11 +185,7 @@ ENDIF
 !
 IF (KMI == 1) THEN
 !
-IF( (KTCOUNT.EQ.1) .AND. (CCONF.EQ.'START') ) THEN
   ZKH(:,:) = PKWRELAX(:,:) / (1. - PTSTEP * PKWRELAX(:,:))
-ELSE
-  ZKH(:,:) = PKWRELAX(:,:)
-END IF
 !
 !
 !*       3.2    applies the damping near the lateral boundaries
@@ -204,7 +197,7 @@ DO JK = 1, IKU
     PRSVS(:,:,JK,NSV_ELECEND) = PRSVS(:,:,JK,NSV_ELECEND) - ZKH(:,:) *  &
        (PSVM(:,:,JK,NSV_ELECEND) - XCION_NEG_FW(:,:,JK)) * PRHODJ(:,:,JK)
   END WHERE
-ENDDO  
+ENDDO 
 !
 END IF 
 !
diff --git a/src/MNH/relaxation.f90 b/src/MNH/relaxation.f90
index c13d8668b..79846b80d 100644
--- a/src/MNH/relaxation.f90
+++ b/src/MNH/relaxation.f90
@@ -14,7 +14,7 @@ INTERFACE
                              OHORELAX_SVDST, OHORELAX_SVSLT, OHORELAX_SVPP,    &
                              OHORELAX_SVCS,                                    &
                              KTCOUNT,KRR,KSV,PTSTEP,PRHODJ,                    &
-                             PUM, PVM, PWM, PTHM, PRM, PSVM, PTKEM,            &
+                             PUT, PVT, PWT, PTHT, PRT, PSVT, PTKET,            &
                              PLSUM, PLSVM, PLSWM, PLSTHM,                      &
                              PLBXUM, PLBXVM, PLBXWM, PLBXTHM, PLBXRM, PLBXSVM, &
                              PLBXTKEM,                                         &
@@ -78,11 +78,11 @@ INTEGER,                  INTENT(IN)    :: KRR    ! Number of moist variables
 INTEGER,                  INTENT(IN)    :: KSV    ! Number of scalar variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! effective dry rho * Jacobian
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUM, PVM, PWM    ! Variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM             !    at
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRM              !   t-dt
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVM             !         
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKEM
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT    ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT             !  
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT              !   
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT             !         
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET
 !
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PLSUM, PLSVM     !   Large Scale
@@ -147,7 +147,7 @@ END MODULE MODI_RELAXATION
                              OHORELAX_SVDST, OHORELAX_SVSLT, OHORELAX_SVPP,    &
                              OHORELAX_SVCS,                                    &
                              KTCOUNT,KRR,KSV,PTSTEP,PRHODJ,                    &
-                             PUM, PVM, PWM, PTHM, PRM, PSVM, PTKEM,            &
+                             PUT, PVT, PWT, PTHT, PRT, PSVT, PTKET,            &
                              PLSUM, PLSVM, PLSWM, PLSTHM,                      &
                              PLBXUM, PLBXVM, PLBXWM, PLBXTHM, PLBXRM, PLBXSVM, &
                              PLBXTKEM,                                         &
@@ -237,6 +237,7 @@ END MODULE MODI_RELAXATION
 !!                 06/11/02 (V. Masson)  update the budget calls 
 !!                 05/2006               Remove EPS
 !!                 06/2011 (M.Chong)     Case of ELEC
+!!                 11/2011 (C.Lac)       Adaptation to FIT temporal scheme
 !!
 !-------------------------------------------------------------------------------
 !
@@ -312,11 +313,11 @@ INTEGER,                  INTENT(IN)    :: KRR    ! Number of moist variables
 INTEGER,                  INTENT(IN)    :: KSV    ! Number of scalar variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! effective dry rho * Jacobian
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUM, PVM, PWM    ! Variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM             !    at
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRM              !   t-dt
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVM             !         
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKEM
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT, PWT    ! Variables at t
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT             !  
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT              !  
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT             !         
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET
 !
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PLSUM, PLSVM     !   Large Scale
@@ -385,14 +386,14 @@ REAL, DIMENSION(SIZE(PALKBAS))          :: ZKVBAS  ! Function of the upper absor
                              ! layer damping coefficient for u,v,theta and qv
 REAL, DIMENSION(SIZE(PALKBAS))          :: ZKVWBAS !Idem but for w
 !
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)) :: ZKHU,ZKHV,ZKHW,       &
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZKHU,ZKHV,ZKHW,       &
                              ! Function of the lateral absorbing layer damping 
                              ! for u,v and mass points respectively
                                                      ZRHODJU,ZRHODJV,ZRHODJW, &
                              ! averages along x,y,z of the PRHODJ field
                                                      ZWORK
                              ! work array used to expand the LB fields
-LOGICAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)) :: GMASK3D_RELAX ! 3D
+LOGICAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: GMASK3D_RELAX ! 3D
                              ! mask for hor. relax.
 LOGICAL, DIMENSION(7) :: GHORELAXR ! local array of logical
 LOGICAL, DIMENSION(11) :: GHORELAXSV! local array of logical
@@ -402,7 +403,7 @@ LOGICAL, DIMENSION(11) :: GHORELAXSV! local array of logical
 !
 !*       1.     PRELIMINARIES
 !	        -------------
-IKU=SIZE(PUM,3)
+IKU=SIZE(PUT,3)
 IKE=IKU-JPVEXT
 CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
 CALL GET_GLOBALDIMS_ll(IIU_ll,IJU_ll)
@@ -441,29 +442,29 @@ IF(OVE_RELAX) THEN
 !
 !*       2.1     SET THE TOP-LEVEL DAMPING COEF. (UPSTREAM OR LEAPFROG)
 !
-  IF ((KTCOUNT.EQ.1) .AND. (CCONF.EQ.'START') ) THEN
+! IF (KTCOUNT.EQ.1) THEN
     ZKV(:)  = PALK(:) /(1. - PTSTEP * PALK(:))
     ZKVW(:) = PALKW(:)/(1. - PTSTEP * PALKW(:))
-  ELSE
-    ZKV(:)  = PALK(:)
-    ZKVW(:) = PALKW(:)
-  ENDIF
+! ELSE
+!   ZKV(:)  = PALK(:)
+!   ZKVW(:) = PALKW(:)
+! ENDIF
 !
 !
 !*       2.2     APPLIES THE DAMPING IN THE UPPERMOST LEVELS
 !
   DO JK = KALBOT, IKE+1
 !
-    PRUS(:,:,JK)  = PRUS(:,:,JK)  - ZKV(JK)  *(PUM(:,:,JK)  -PLSUM(:,:,JK)  )&
+    PRUS(:,:,JK)  = PRUS(:,:,JK)  - ZKV(JK)  *(PUT(:,:,JK)  -PLSUM(:,:,JK)  )&
                     * ZRHODJU(:,:,JK)
 !
-    PRVS(:,:,JK)  = PRVS(:,:,JK)  - ZKV(JK)  *(PVM(:,:,JK)  -PLSVM(:,:,JK)  )&
+    PRVS(:,:,JK)  = PRVS(:,:,JK)  - ZKV(JK)  *(PVT(:,:,JK)  -PLSVM(:,:,JK)  )&
                     * ZRHODJV(:,:,JK)
 !
-    PRWS(:,:,JK)  = PRWS(:,:,JK)  - ZKVW(JK) *(PWM(:,:,JK)  -PLSWM(:,:,JK)  )&
+    PRWS(:,:,JK)  = PRWS(:,:,JK)  - ZKVW(JK) *(PWT(:,:,JK)  -PLSWM(:,:,JK)  )&
                     * ZRHODJW(:,:,JK)
 !
-    PRTHS(:,:,JK) = PRTHS(:,:,JK) - ZKV(JK)  *(PTHM(:,:,JK) -PLSTHM(:,:,JK) )&
+    PRTHS(:,:,JK) = PRTHS(:,:,JK) - ZKV(JK)  *(PTHT(:,:,JK) -PLSTHM(:,:,JK) )&
                     * PRHODJ(:,:,JK)
 !
   END DO  
@@ -491,16 +492,16 @@ IF(OVE_RELAX_GRD) THEN
 !
   DO JK = 1,KALBAS
 !
-    PRUS(:,:,JK)  = PRUS(:,:,JK)  - ZKVBAS(JK)  *(PUM(:,:,JK)  -PLSUM(:,:,JK)  )&
+    PRUS(:,:,JK)  = PRUS(:,:,JK)  - ZKVBAS(JK)  *(PUT(:,:,JK)  -PLSUM(:,:,JK)  )&
                     * ZRHODJU(:,:,JK)
 !
-    PRVS(:,:,JK)  = PRVS(:,:,JK)  - ZKVBAS(JK)  *(PVM(:,:,JK)  -PLSVM(:,:,JK)  )&
+    PRVS(:,:,JK)  = PRVS(:,:,JK)  - ZKVBAS(JK)  *(PVT(:,:,JK)  -PLSVM(:,:,JK)  )&
                     * ZRHODJV(:,:,JK)
 !
-    PRWS(:,:,JK)  = PRWS(:,:,JK)  - ZKVWBAS(JK) *(PWM(:,:,JK)  -PLSWM(:,:,JK)  )&
+    PRWS(:,:,JK)  = PRWS(:,:,JK)  - ZKVWBAS(JK) *(PWT(:,:,JK)  -PLSWM(:,:,JK)  )&
                     * ZRHODJW(:,:,JK)
 !
-    PRTHS(:,:,JK) = PRTHS(:,:,JK) - ZKVBAS(JK)  *(PTHM(:,:,JK) -PLSTHM(:,:,JK) )&
+    PRTHS(:,:,JK) = PRTHS(:,:,JK) - ZKVBAS(JK)  *(PTHT(:,:,JK) -PLSTHM(:,:,JK) )&
                     * PRHODJ(:,:,JK)
 !
   END DO  
@@ -518,19 +519,19 @@ END IF
 !
 IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
                     .OR. OHORELAX_UVWTH  .OR. OHORELAX_TKE     ) THEN 
-  IF( (KTCOUNT.EQ.1) .AND. (CCONF.EQ.'START') ) THEN
+! IF (KTCOUNT.EQ.1)  THEN
     DO JK=1,IKU
       ZKHU(:,:,JK) = PKURELAX(:,:) /(1. - PTSTEP * PKURELAX(:,:))
       ZKHV(:,:,JK) = PKVRELAX(:,:) /(1. - PTSTEP * PKVRELAX(:,:)) 
       ZKHW(:,:,JK) = PKWRELAX(:,:) /(1. - PTSTEP * PKWRELAX(:,:))
     END DO
-  ELSE
-    DO JK=1,IKU
-      ZKHU(:,:,JK) = PKURELAX(:,:) 
-      ZKHV(:,:,JK) = PKVRELAX(:,:)
-      ZKHW(:,:,JK) = PKWRELAX(:,:)
-    END DO
-  END IF
+! ELSE
+!   DO JK=1,IKU
+!     ZKHU(:,:,JK) = PKURELAX(:,:) 
+!     ZKHV(:,:,JK) = PKVRELAX(:,:)
+!     ZKHW(:,:,JK) = PKWRELAX(:,:)
+!   END DO
+!  END IF
 ENDIF
 !
 !
@@ -574,7 +575,7 @@ IF ( OHORELAX_UVWTH ) THEN
   END IF
   !
   WHERE (GMASK3D_RELAX)
-    PRUS(:,:,:)  = PRUS(:,:,:) - ZKHU(:,:,:)*(PUM(:,:,:)-ZWORK(:,:,:)) &
+    PRUS(:,:,:)  = PRUS(:,:,:) - ZKHU(:,:,:)*(PUT(:,:,:)-ZWORK(:,:,:)) &
                        * ZRHODJU(:,:,:)
   END WHERE
 !
@@ -607,7 +608,7 @@ IF ( OHORELAX_UVWTH ) THEN
   ENDIF
   !
   WHERE (GMASK3D_RELAX)
-    PRVS(:,:,:)  = PRVS(:,:,:) - ZKHV(:,:,:)*(PVM(:,:,:)-ZWORK(:,:,:)) &
+    PRVS(:,:,:)  = PRVS(:,:,:) - ZKHV(:,:,:)*(PVT(:,:,:)-ZWORK(:,:,:)) &
                        * ZRHODJV(:,:,:)
   END WHERE
   !
@@ -615,7 +616,7 @@ IF ( OHORELAX_UVWTH ) THEN
   IF (SIZE(PLBYWM,2) > 0) CALL EXPAND_LBY (PLBYWM,ZWORK)
   !
   WHERE (GMASK3D_RELAX)
-    PRWS(:,:,:)  = PRWS(:,:,:) - ZKHW(:,:,:)*(PWM(:,:,:)-ZWORK(:,:,:)) &
+    PRWS(:,:,:)  = PRWS(:,:,:) - ZKHW(:,:,:)*(PWT(:,:,:)-ZWORK(:,:,:)) &
                        * ZRHODJW(:,:,:)
   END WHERE
   !
@@ -624,7 +625,7 @@ IF ( OHORELAX_UVWTH ) THEN
   IF (SIZE(PLBYTHM,2) > 0) CALL EXPAND_LBY (PLBYTHM,ZWORK)
   !
   WHERE (GMASK3D_RELAX)
-    PRTHS(:,:,:)  = PRTHS(:,:,:) - ZKHW(:,:,:)*(PTHM(:,:,:)-ZWORK(:,:,:)) &
+    PRTHS(:,:,:)  = PRTHS(:,:,:) - ZKHW(:,:,:)*(PTHT(:,:,:)-ZWORK(:,:,:)) &
                        * PRHODJ(:,:,:)
   END WHERE
 END IF
@@ -634,7 +635,7 @@ DO JRR = 1,KRR
     IF (SIZE(PLBXRM,1) > 0) CALL EXPAND_LBX (PLBXRM(:,:,:,JRR),ZWORK)
     IF (SIZE(PLBYRM,2) > 0) CALL EXPAND_LBY (PLBYRM(:,:,:,JRR),ZWORK)
     WHERE (GMASK3D_RELAX)
-      PRRS(:,:,:,JRR)  = PRRS(:,:,:,JRR) - ZKHW(:,:,:)*(PRM(:,:,:,JRR)-ZWORK(:,:,:)) &
+      PRRS(:,:,:,JRR)  = PRRS(:,:,:,JRR) - ZKHW(:,:,:)*(PRT(:,:,:,JRR)-ZWORK(:,:,:)) &
                          * PRHODJ(:,:,:)
     END WHERE
   END IF
@@ -644,7 +645,7 @@ IF ( OHORELAX_TKE ) THEN
   IF (SIZE(PLBXTKEM,1) > 0) CALL EXPAND_LBX (PLBXTKEM,ZWORK)
   IF (SIZE(PLBYTKEM,2) > 0) CALL EXPAND_LBY (PLBYTKEM,ZWORK)
   WHERE (GMASK3D_RELAX)
-    PRTKES(:,:,:)  = PRTKES(:,:,:) - ZKHW(:,:,:)*(PTKEM(:,:,:)-ZWORK(:,:,:)) &
+    PRTKES(:,:,:)  = PRTKES(:,:,:) - ZKHW(:,:,:)*(PTKET(:,:,:)-ZWORK(:,:,:)) &
                        * PRHODJ(:,:,:)
   END WHERE
 END IF  
@@ -655,7 +656,7 @@ DO JSV=1,KSV
       IF (SIZE(PLBXSVM,1) > 0) CALL EXPAND_LBX (PLBXSVM(:,:,:,JSV),ZWORK)
       IF (SIZE(PLBYSVM,2) > 0) CALL EXPAND_LBY (PLBYSVM(:,:,:,JSV),ZWORK)
       WHERE (GMASK3D_RELAX)
-        PRSVS(:,:,:,JSV)  = PRSVS(:,:,:,JSV) - ZKHW(:,:,:)*(PSVM(:,:,:,JSV)-ZWORK(:,:,:)) &
+        PRSVS(:,:,:,JSV)  = PRSVS(:,:,:,JSV) - ZKHW(:,:,:)*(PSVT(:,:,:,JSV)-ZWORK(:,:,:)) &
                          * PRHODJ(:,:,:)
       END WHERE
     END IF
diff --git a/src/MNH/reset_exseg.f90 b/src/MNH/reset_exseg.f90
index 0d0094fba..25e89fddc 100644
--- a/src/MNH/reset_exseg.f90
+++ b/src/MNH/reset_exseg.f90
@@ -85,7 +85,6 @@ CHARACTER (LEN=*),  INTENT(IN) :: HLUOUT ! Name for output listing
 CHARACTER (LEN=9) :: YNAM      ! name of the namelist file
 INTEGER :: IRESP,ILUNAM        ! return code of FMLOOK and logical unit number
 LOGICAL :: GFOUND              ! Return code when searching namelist
-CHARACTER(LEN=2)       :: YSTORAGE_TYPE
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
@@ -151,13 +150,8 @@ IF(NRAD_3D>=1) THEN
   END IF
 ENDIF
 !
-CALL FMREAD(CINIFILE,'STORAGE_TYPE',HLUOUT,'--',YSTORAGE_TYPE,IGRID,ILENCH,YCOMMENT,IRESP)
-IF (IRESP/=0) THEN
-  PRINT*,'RESET_EXSEG: STORAGE_TYPE forced to MT'
-  YSTORAGE_TYPE='MT'
-END IF
 
-IF(YSTORAGE_TYPE/='MT' .OR. NRAD_3D>=1) THEN
+IF ( NRAD_3D>=1 ) THEN
   CRAD='ECMW'
   CGETRAD='INIT'
 END IF
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index b5f274601..972fe6001 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -8,10 +8,10 @@ INTERFACE
                                   KRR, KSPLITR, KSPLITG, KMI, KTCOUNT,                 &
                                   HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM,       &
                                   OCLOSE_OUT, OSUBG_COND, OSIGMAS, HSUBG_AUCV,         &
-                                  PTSTEP_MET, PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,  &
-                                  PPABSM, PPABST, PTHM, PTHT, PRM, PRT, PSIGS,PSIGQSAT,&
-                                  PMFCONV,                                             &
-                                  PW_ACT, PTHS, PRS, PSVM, PSVT, PSVS, PSRCS, PCLDFR,  &
+                                  PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,              &
+                                  PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV,         &
+                                  PTHM, PRCM, PPABSM,                                  &
+                                  PW_ACT, PTHS, PRS, PSVT, PSVS, PSRCS, PCLDFR,        &
                                   PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
                                   ORAIN, OWARM, OHHONI,                                &
                                   PCF_MF,PRC_MF, PRI_MF,                               &
@@ -45,8 +45,6 @@ LOGICAL,                  INTENT(IN)   :: OSIGMAS  ! Switch for Sigma_s:
                                         ! or that from turbulence scheme
 CHARACTER(LEN=4),         INTENT(IN)   :: HSUBG_AUCV
                                         ! Kind of Subgrid autoconversion method
-REAL,                     INTENT(IN)   :: PTSTEP_MET   ! Effective Time step
-                                        ! for meteorological scalar variables
 REAL,                     INTENT(IN)   :: PTSTEP ! Time step :XTSTEP in namelist
 !
 !
@@ -56,21 +54,20 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODREF! Reference dry air density
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PEXNREF ! Reference Exner function
 !
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHT    ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)   :: PRM     ! Moist variables at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PRT     ! Moist variables at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PSIGS   ! Sigma_s at time t
 REAL,                     INTENT(IN)   :: PSIGQSAT! coeff applied to qsat variance contribution
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PMFCONV ! convective mass flux
+REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSM   ! Pressure time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRCM    ! Cloud water m.r. at time t-Dt
 !
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_ACT ! W for CCN activation
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS  ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS   ! Moist  variable sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVM  ! Scalar variable at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT  ! Scalar variable at time t
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS  ! Scalar variable sources
 !
@@ -124,10 +121,10 @@ END MODULE MODI_RESOLVED_CLOUD
                                   KRR, KSPLITR, KSPLITG, KMI, KTCOUNT,                 &
                                   HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM,       &
                                   OCLOSE_OUT, OSUBG_COND, OSIGMAS, HSUBG_AUCV,         &
-                                  PTSTEP_MET, PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,  &
-                                  PPABSM, PPABST, PTHM, PTHT, PRM, PRT, PSIGS,PSIGQSAT,&
-                                  PMFCONV,                                             &
-                                  PW_ACT, PTHS, PRS, PSVM, PSVT, PSVS, PSRCS, PCLDFR,  &
+                                  PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,              &
+                                  PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV,         &
+                                  PTHM, PRCM, PPABSM,                                  &
+                                  PW_ACT, PTHS, PRS, PSVT, PSVS, PSRCS, PCLDFR,        &
                                   PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
                                   ORAIN, OWARM, OHHONI,                                &
                                   PCF_MF,PRC_MF, PRI_MF,                               &
@@ -296,8 +293,6 @@ LOGICAL,                  INTENT(IN)   :: OSIGMAS  ! Switch for Sigma_s:
                                         ! or that from turbulence scheme
 CHARACTER(LEN=4),         INTENT(IN)   :: HSUBG_AUCV
                                         ! Kind of Subgrid autoconversion method
-REAL,                     INTENT(IN)   :: PTSTEP_MET   ! Effective Time step
-                                        ! for meteorological scalar variables
 REAL,                     INTENT(IN)   :: PTSTEP ! Time step :XTSTEP in namelist
 !
 !
@@ -307,21 +302,20 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODREF! Reference dry air density
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PEXNREF ! Reference Exner function
 !
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHT    ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)   :: PRM     ! Moist variables at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PRT     ! Moist variables at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PSIGS   ! Sigma_s at time t
 REAL,                     INTENT(IN)   :: PSIGQSAT! coeff applied to qsat variance contribution
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PMFCONV ! convective mass flux
+REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSM   ! Pressure time t-Dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRCM    ! Cloud water m.r. at time t-Dt
 !
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_ACT ! W for CCN activation
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS  ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS   ! Moist  variable sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVM  ! Scalar variable at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT  ! Scalar variable at time t
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS  ! Scalar variable sources
 !
@@ -396,7 +390,6 @@ REAL  :: ZRATIO                     ! ZMASSTOT / ZMASSCOR
 INTEGER                               :: ISVBEG ! first scalar index for microphysics
 INTEGER                               :: ISVEND ! last  scalar index for microphysics
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSVT   ! scalar variable for microphysics only
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSVM   ! scalar variable for microphysics only
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSVS   ! scalar tendency for microphysics only
 !
 !------------------------------------------------------------------------------
@@ -425,10 +418,8 @@ END IF
 !
 IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO') THEN
   ALLOCATE(ZSVT(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3),ISVEND - ISVBEG + 1))
-  ALLOCATE(ZSVM(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3),ISVEND - ISVBEG + 1))
   ALLOCATE(ZSVS(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3),ISVEND - ISVBEG + 1))
   ZSVT(:,:,:,:) = PSVT(:,:,:,ISVBEG:ISVEND)
-  ZSVM(:,:,:,:) = PSVM(:,:,:,ISVBEG:ISVEND)
   ZSVS(:,:,:,:) = PSVS(:,:,:,ISVBEG:ISVEND)
 END IF
 !
@@ -680,8 +671,8 @@ SELECT CASE ( HCLOUD )
 !               -------------------------------
 !
     CALL FAST_TERMS ( KRR, KMI, HFMFILE, HLUOUT, HRAD, HTURBDIM,               &
-                      HSCONV, HMF_CLOUD, OCLOSE_OUT, OSUBG_COND, PTSTEP_MET,   &
-                      PRHODJ, PPABSM, PSIGS, PPABST,                           &
+                      HSCONV, HMF_CLOUD, OCLOSE_OUT, OSUBG_COND, PTSTEP,       &
+                      PRHODJ, PSIGS, PPABST,                                   &
                       PCF_MF,PRC_MF,                                           &
                       PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),                    &
                       PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                    &
@@ -695,9 +686,8 @@ SELECT CASE ( HCLOUD )
 !
 !*       5.1    Compute the explicit microphysical sources
 !
-    CALL SLOW_TERMS ( KSPLITR, PTSTEP_MET, KMI, HSUBG_AUCV,                   &
+    CALL SLOW_TERMS ( KSPLITR, PTSTEP, KMI, HSUBG_AUCV,                       &
                       PZZ, PRHODJ, PRHODREF, PCLDFR,                          &
-                      PRM(:,:,:,3),                                           &
                       PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3), PPABST, &
                       PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),         &
                       PINPRR, PINPRR3D, PEVAP3D                         )
@@ -705,8 +695,8 @@ SELECT CASE ( HCLOUD )
 !*       5.2    Perform the saturation adjustment
 !
     CALL FAST_TERMS ( KRR, KMI, HFMFILE, HLUOUT, HRAD, HTURBDIM,               &
-                      HSCONV, HMF_CLOUD, OCLOSE_OUT, OSUBG_COND, PTSTEP_MET,   &
-                      PRHODJ, PPABSM, PSIGS, PPABST,                           &
+                      HSCONV, HMF_CLOUD, OCLOSE_OUT, OSUBG_COND, PTSTEP,       &
+                      PRHODJ, PSIGS, PPABST,                                   &
                       PCF_MF,PRC_MF,                                           &
                       PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),                    &
                       PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), PRRS=PRS(:,:,:,3), &
@@ -722,13 +712,12 @@ SELECT CASE ( HCLOUD )
 !*       7.1    Compute the explicit microphysical sources
 !
 !
-    CALL RAIN_C2R2 ( OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP_MET, PTSTEP, KMI,      &
+    CALL RAIN_C2R2 ( OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,                  &
                      HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, PRHODREF, PEXNREF, &
-                     PPABSM, PPABST, PTHM, PTHT,                                  &
-                     PRT(:,:,:,1), PRM(:,:,:,2), PRT(:,:,:,2),                    &
-                     PRT(:,:,:,3), PRM(:,:,:,3),                                  &
+                     PPABST, PTHT, PRT(:,:,:,1), PRT(:,:,:,2),  PRT(:,:,:,3),     &
+                     PTHM, PRCM, PPABSM,                                          &
                      PW_ACT, PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),      &
-                     ZSVT(:,:,:,1), ZSVT(:,:,:,2), ZSVM(:,:,:,3), ZSVT(:,:,:,3),  &
+                     ZSVT(:,:,:,1), ZSVT(:,:,:,2), ZSVT(:,:,:,3),                 &
                      ZSVS(:,:,:,1), ZSVS(:,:,:,2), ZSVS(:,:,:,3),                 &
                      PINPRC, PINPRR, PINPRR3D, PEVAP3D ,                          &
                      PSVT(:,:,:,:), PSOLORG, PMI, HACTCCN           )
@@ -738,7 +727,7 @@ SELECT CASE ( HCLOUD )
 !
    IF (LSUPSAT) THEN
     CALL KHKO_NOTADJUST (KRR, KTCOUNT,HFMFILE, HLUOUT, HRAD, OCLOSE_OUT,         &
-                         PTSTEP_MET, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ,      &
+                         PTSTEP, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ,          &
                          PTHT,PRT(:,:,:,1),PRT(:,:,:,2),PRT(:,:,:,3),            &
                          PTHS,PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3),            &
                          ZSVS(:,:,:,2),ZSVS(:,:,:,1),                            &
@@ -746,10 +735,9 @@ SELECT CASE ( HCLOUD )
 !
    ELSE
     CALL C2R2_ADJUST ( KRR,HFMFILE, HLUOUT, HRAD,                              &
-                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP_MET,           &
-                       PRHODJ, PPABSM, PSIGS, PPABST,                          &
-                       PTHS=PTHS, PRVS=PRS(:,:,:,1),                           &
-                       PRCS=PRS(:,:,:,2),                                      &
+                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,               &
+                       PRHODJ, PSIGS, PPABST,                                  &
+                       PTHS=PTHS, PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),        &
                        PCNUCS=ZSVS(:,:,:,1), PCCS=ZSVS(:,:,:,2),               &
                        PSRCS=PSRCS, PCLDFR=PCLDFR, PRRS=PRS(:,:,:,3)           )
 !
@@ -764,10 +752,11 @@ SELECT CASE ( HCLOUD )
 !*       8.1    Compute the explicit microphysical sources!
 !
 !
-    CALL RAIN_KHKO ( OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP_MET, PTSTEP, KMI, &
+    CALL RAIN_KHKO ( OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,             &
                      PZZ, PRHODJ, PRHODREF, PEXNREF,                         &
-                     PPABSM, PPABST, PTHM, PTHT,                             &
-                     PRT(:,:,:,1), PRM(:,:,:,2), PRT(:,:,:,2), PRT(:,:,:,3), &
+                     PPABST, PTHT,                                           &
+                     PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3),               &
+                     PTHM, PRCM, PPABSM,                                     &
                      PW_ACT, PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), &
                      ZSVT(:,:,:,1), ZSVT(:,:,:,2), ZSVT(:,:,:,3),            &
                      ZSVS(:,:,:,1), ZSVS(:,:,:,2), ZSVS(:,:,:,3),            &
@@ -778,16 +767,16 @@ SELECT CASE ( HCLOUD )
 !
    IF (LSUPSAT) THEN
     CALL KHKO_NOTADJUST (KRR, KTCOUNT,HFMFILE, HLUOUT, HRAD, OCLOSE_OUT,         &
-                         PTSTEP_MET, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ,      &
+                         PTSTEP, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ,          &
                          PTHT,PRT(:,:,:,1),PRT(:,:,:,2),PRT(:,:,:,3),            &
                          PTHS,PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3),            &
                          ZSVS(:,:,:,2),ZSVS(:,:,:,1),                            &
                          ZSVS(:,:,:,4), PCLDFR, PSRCS                            )
 !
    ELSE
-     CALL C2R2_ADJUST ( KRR, HFMFILE, HLUOUT, HRAD,                             &
-                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP_MET,           &
-                       PRHODJ, PPABSM, PSIGS, PPABST,                          &
+    CALL C2R2_ADJUST ( KRR, HFMFILE, HLUOUT, HRAD,                             &
+                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,               &
+                       PRHODJ, PSIGS, PPABST,                                  &
                        PTHS=PTHS, PRVS=PRS(:,:,:,1),                           &
                        PRCS=PRS(:,:,:,2),                                      &
                        PCNUCS=ZSVS(:,:,:,1), PCCS=ZSVS(:,:,:,2),               &
@@ -797,34 +786,33 @@ SELECT CASE ( HCLOUD )
 !
   CASE ('ICE3')
 !
-!*       10.     MIXED-PHASE MICROPHYSICAL SCHEME (WITH 3 ICE SPECIES)
+!*       9.     MIXED-PHASE MICROPHYSICAL SCHEME (WITH 3 ICE SPECIES)
 !               -----------------------------------------------------
 !
 !
-!*       10.1    Compute the explicit microphysical sources
+!*       9.1    Compute the explicit microphysical sources
+!
 !
-!   
     DO JK=IKB,IKE
       ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK)    
     ENDDO
-    CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1,                   &
-                    KSPLITR, PTSTEP_MET, KMI, KRR,                       &
-                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR, &
-                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRM(:,:,:,2),      &
-                    PRT(:,:,:,3), PRM(:,:,:,3),                          &
-                    PRT(:,:,:,4), PRT(:,:,:,5), PRM(:,:,:,5),            &
-                    PRT(:,:,:,6), PRM(:,:,:,6),                          &
+    CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1,            &
+                    KSPLITR, PTSTEP, KMI, KRR,                           &
+                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,&
+                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                    &
+                    PRT(:,:,:,3), PRT(:,:,:,4),                          &
+                    PRT(:,:,:,5), PRT(:,:,:,6),                          &
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),      &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),            &
                     PINPRC,PINPRR, PINPRR3D, PEVAP3D,                    &
                     PINPRS, PINPRG, PSIGS, PSEA,PTOWN)
 !
-!*       10.2    Perform the saturation adjustment over cloud ice and cloud water
+!*       9.2    Perform the saturation adjustment over cloud ice and cloud water
 !
     ZZZ = MZF(1,IKU,1, PZZ )
-    CALL ICE_ADJUST (1,IKU,1, KRR, KMI, HFMFILE, HLUOUT, HRAD, HTURBDIM,             &
-                    OSUBG_COND, OSIGMAS, PTSTEP_MET,PSIGQSAT,    &
-                    PRHODJ, PEXNREF, PPABSM, PSIGS, PMFCONV, PPABST, ZZZ,    &
+    CALL ICE_ADJUST (1,IKU,1, KRR, KMI, HFMFILE, HLUOUT, HRAD, HTURBDIM,     &
+                    OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,                    &
+                    PRHODJ, PEXNREF,  PSIGS, PMFCONV, PPABST, ZZZ,           &
                     PCF_MF,PRC_MF,PRI_MF,                                    &   
                     PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),                    &
                     PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                    &
@@ -846,26 +834,25 @@ SELECT CASE ( HCLOUD )
     DO JK=IKB,IKE
       ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK)    
     ENDDO
-    CALL RAIN_ICE ( OSEDIC, CSEDIM,HSUBG_AUCV, OWARM,1,IKU,1,                    &
-                    KSPLITR, PTSTEP_MET, KMI, KRR,                        &
-                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
-                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRM(:,:,:,2),       &
-                    PRT(:,:,:,3), PRM(:,:,:,3),                           &
-                    PRT(:,:,:,4), PRT(:,:,:,5), PRM(:,:,:,5),             &
-                    PRT(:,:,:,6), PRM(:,:,:,6),                           &
+    CALL RAIN_ICE ( OSEDIC, CSEDIM,HSUBG_AUCV, OWARM,1,IKU,1,             &
+                    KSPLITR, PTSTEP, KMI, KRR,                            &
+                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
+                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                     &
+                    PRT(:,:,:,3), PRT(:,:,:,4),                           &
+                    PRT(:,:,:,5), PRT(:,:,:,6),                           &
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
                     PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
-                    PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                   &
-                    PRT(:,:,:,7), PRM(:,:,:,7), PRS(:,:,:,7), PINPRH )
+                    PINPRS, PINPRG, PSIGS, PSEA, PTOWN,  &
+                    PRT(:,:,:,7), PRS(:,:,:,7), PINPRH )
 
 !
 !*       10.2   Perform the saturation adjustment over cloud ice and cloud water
 !
     ZZZ = MZF(1,IKU,1, PZZ )
     CALL ICE_ADJUST (1,IKU,1, KRR, KMI, HFMFILE, HLUOUT, HRAD, HTURBDIM,     &
-                    OSUBG_COND, OSIGMAS, PTSTEP_MET,PSIGQSAT,    &
-                    PRHODJ, PEXNREF, PPABSM, PSIGS, PMFCONV, PPABST, ZZZ,    &
+                    OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,                    &
+                    PRHODJ, PEXNREF, PSIGS, PMFCONV, PPABST, ZZZ,            &
                     PCF_MF,PRC_MF,PRI_MF,                                    &                     
                     PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),                    &
                     PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                    &
@@ -884,23 +871,24 @@ SELECT CASE ( HCLOUD )
 !
 !*       11.1   Compute the explicit microphysical sources
 !
-    CALL RAIN_C2R2 ( OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP_MET, PTSTEP, KMI,      &
+    CALL RAIN_C2R2 ( OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,                  &
                      HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, PRHODREF, PEXNREF, &
-                     PPABSM, PPABST, PTHM, PTHT,                                  &
-                     PRT(:,:,:,1), PRM(:,:,:,2), PRT(:,:,:,2),                    &
-                     PRT(:,:,:,3), PRM(:,:,:,3),                                  &
+                     PPABST, PTHT,                                                &
+                     PRT(:,:,:,1), PRT(:,:,:,2),                                  &
+                     PRT(:,:,:,3),                                                &
+                     PTHM, PRCM, PPABSM,                                          &
                      PW_ACT, PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),      &
-                     ZSVT(:,:,:,1), ZSVT(:,:,:,2), ZSVM(:,:,:,3), ZSVT(:,:,:,3),  &
+                     ZSVT(:,:,:,1), ZSVT(:,:,:,2), ZSVT(:,:,:,3),                 &
                      ZSVS(:,:,:,1), ZSVS(:,:,:,2), ZSVS(:,:,:,3),                 &
                      PINPRC, PINPRR, PINPRR3D, PEVAP3D,                           &
                      PSVT(:,:,:,:), PSOLORG, PMI, HACTCCN )
 !
-    CALL ICE_C1R3  ( OSEDI, OHHONI, KSPLITG, PTSTEP_MET, KMI,                    &
+    CALL ICE_C1R3  ( OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,                    &
                      PZZ, PRHODJ, PRHODREF, PEXNREF,                         &
-                            PPABST, PW_ACT, PTHT,                            &
+                     PPABST, PW_ACT, PTHT,                            &
                      PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3),               &
                      PRT(:,:,:,4), PRT(:,:,:,5), PRT(:,:,:,6),               &
-                             PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), &
+                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), &
                      PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),               &
                                     ZSVT(:,:,:,2), ZSVT(:,:,:,3),            &
                                     ZSVT(:,:,:,4),                           &
@@ -912,8 +900,8 @@ SELECT CASE ( HCLOUD )
 !*       11.2   Perform the saturation adjustment
 !
     CALL C3R5_ADJUST ( KRR, KMI, HFMFILE, HLUOUT, HRAD,               &
-                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP_MET,               &
-                       PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST,       &
+                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,               &
+                       PRHODREF, PRHODJ, PEXNREF, PSIGS, PPABST,       &
                        PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2), PRRT=PRT(:,:,:,3),&
                        PRIT=PRT(:,:,:,4), PRST=PRT(:,:,:,5), PRGT=PRT(:,:,:,6),&
                        PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), PRRS=PRS(:,:,:,3),&
@@ -945,7 +933,6 @@ IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO') THEN
     PSVT(:,:,:,JSV+ISVBEG-1) = ZSVT(:,:,:,JSV)
   ENDDO
   DEALLOCATE(ZSVS)
-  DEALLOCATE(ZSVM)
   DEALLOCATE(ZSVT)
 ENDIF
 !
diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90
index 4ad6703a7..0fa503f4f 100644
--- a/src/MNH/resolved_elecn.f90
+++ b/src/MNH/resolved_elecn.f90
@@ -3,18 +3,18 @@
 !     ###########################
 !
 INTERFACE
-      SUBROUTINE RESOLVED_ELEC_n (HCLOUD, HSCONV, HMF_CLOUD,                     &
-                                  KRR, KSPLITR, KMI, KTCOUNT, HUVW_ADV_SCHEME,   &
-                                  HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM, &
+      SUBROUTINE RESOLVED_ELEC_n (HCLOUD, HSCONV, HMF_CLOUD,                              &
+                                  KRR, KSPLITR, KMI, KTCOUNT,                             &
+                                  HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM,          &
                                   OCLOSE_OUT, OSUBG_COND, OSIGMAS,PSIGQSAT, HSUBG_AUCV,   &
-                                  PTSTEP_MET, PZZ, PRHODJ, PRHODREF, PEXNREF,    &
-                                  PPABSM, PPABST, PTHM, PTHT, PTHS, PWT,         & 
-                                  PRM, PRT, PRS, PSVM, PSVT, PSVS, PCIT,         & 
-                                  PSIGS, PSRCS, PCLDFR, PMFCONV, PCF_MF, PRC_MF, &
-                                  PRI_MF, OSEDIC, OWARM,                         &
-                                  PINPRC, PINPRR, PINPRR3D, PEVAP3D,             &
-                                  PINPRS, PINPRG, PINPRH,                        &
-                                  PSEA, PTOWN                                    )   
+                                  PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,                 &
+                                  PPABST, PTHT, PTHS, PWT,                                & 
+                                  PRT, PRS, PSVT, PSVS, PCIT,                             & 
+                                  PSIGS, PSRCS, PCLDFR, PMFCONV, PCF_MF, PRC_MF,          &
+                                  PRI_MF, OSEDIC, OWARM,                                  &
+                                  PINPRC, PINPRR, PINPRR3D, PEVAP3D,                      &
+                                  PINPRS, PINPRG, PINPRH,                                 &
+                                  PSEA, PTOWN                                             )   
 !
 CHARACTER(LEN=4),         INTENT(IN)   :: HCLOUD   ! kind of cloud
 CHARACTER(LEN=4),         INTENT(IN)   :: HSCONV   ! Shallow convection scheme
@@ -24,7 +24,6 @@ INTEGER,                  INTENT(IN)   :: KSPLITR  ! Number of small time step
                                        ! integrations for  rain sedimendation
 INTEGER,                  INTENT(IN)   :: KMI      ! Model index
 INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
-CHARACTER(LEN=6),         INTENT(IN)   :: HUVW_ADV_SCHEME
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
 CHARACTER(LEN=*),         INTENT(IN)   :: HFMFILE  ! Name of the output FM-file
 CHARACTER(LEN=*),         INTENT(IN)   :: HLUOUT   ! Output-listing name for
@@ -41,7 +40,7 @@ LOGICAL,                  INTENT(IN)   :: OSIGMAS  ! Switch for Sigma_s:
 REAL,                     INTENT(IN)   :: PSIGQSAT  ! coeff applied to qsat variance contribution
 CHARACTER(LEN=4),         INTENT(IN)   :: HSUBG_AUCV
                                         ! Kind of Subgrid autoconversion method
-REAL,                     INTENT(IN)   :: PTSTEP_MET ! Double Time step
+REAL,                     INTENT(IN)   :: PTSTEP ! Double Time step
                                                    ! (single if cold start)
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PZZ     ! Height (z)
@@ -49,18 +48,14 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODJ  !Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODREF! Reference dry air density
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PEXNREF ! Reference Exner function
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHT    ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)   :: PRM     ! Moist variables at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PRT     ! Moist variables at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PMFCONV ! convective mass flux
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS  ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS   ! Moist  variable sources
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVM  ! Scalar variable at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT  ! Scalar variable at time t
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS  ! Scalar variable sources
 !
@@ -98,20 +93,20 @@ END SUBROUTINE RESOLVED_ELEC_n
 END INTERFACE
 END MODULE MODI_RESOLVED_ELEC_n
 !
-!     ############################################################################
-      SUBROUTINE RESOLVED_ELEC_n (HCLOUD, HSCONV, HMF_CLOUD,                     &
-                                  KRR, KSPLITR, KMI, KTCOUNT, HUVW_ADV_SCHEME,   &
-                                  HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM, &
-                                  OCLOSE_OUT, OSUBG_COND, OSIGMAS,PSIGQSAT,  HSUBG_AUCV,   &
-                                  PTSTEP_MET, PZZ, PRHODJ, PRHODREF, PEXNREF,    &
-                                  PPABSM, PPABST, PTHM, PTHT, PTHS, PWT,         & 
-                                  PRM, PRT, PRS, PSVM, PSVT, PSVS, PCIT,         & 
-                                  PSIGS, PSRCS, PCLDFR, PMFCONV, PCF_MF, PRC_MF, &
-                                  PRI_MF, OSEDIC, OWARM,                         &
-                                  PINPRC, PINPRR, PINPRR3D, PEVAP3D,             &
-                                  PINPRS, PINPRG, PINPRH,                        &
-                                  PSEA, PTOWN                                    )
-!     ############################################################################
+!     #####################################################################################
+      SUBROUTINE RESOLVED_ELEC_n (HCLOUD, HSCONV, HMF_CLOUD,                              &
+                                  KRR, KSPLITR, KMI, KTCOUNT,                             &
+                                  HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM,          &
+                                  OCLOSE_OUT, OSUBG_COND, OSIGMAS,PSIGQSAT, HSUBG_AUCV,   &
+                                  PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,                 &
+                                  PPABST, PTHT, PTHS, PWT,                                & 
+                                  PRT, PRS, PSVT, PSVS, PCIT,                             & 
+                                  PSIGS, PSRCS, PCLDFR, PMFCONV, PCF_MF, PRC_MF,          &
+                                  PRI_MF, OSEDIC, OWARM,                                  &
+                                  PINPRC, PINPRR, PINPRR3D, PEVAP3D,                      &
+                                  PINPRS, PINPRG, PINPRH,                                 &
+                                  PSEA, PTOWN                                             )   
+!     #####################################################################################
 !
 !!    PURPOSE
 !!    -------
@@ -219,7 +214,6 @@ INTEGER,                  INTENT(IN)   :: KSPLITR  ! Number of small time step
                                        ! integrations for  ice  sedimendation
 INTEGER,                  INTENT(IN)   :: KMI      ! Model index
 INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
-CHARACTER(LEN=6),         INTENT(IN)   :: HUVW_ADV_SCHEME
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
 CHARACTER(LEN=*),         INTENT(IN)   :: HFMFILE  ! Name of the output FM-file
 CHARACTER(LEN=*),         INTENT(IN)   :: HLUOUT   ! Output-listing name for
@@ -236,7 +230,7 @@ LOGICAL,                  INTENT(IN)   :: OSIGMAS  ! Switch for Sigma_s:
 REAL,                     INTENT(IN)   :: PSIGQSAT  ! coeff applied to qsat variance contribution
 CHARACTER(LEN=4),         INTENT(IN)   :: HSUBG_AUCV
                                         ! Kind of Subgrid autoconversion method
-REAL,                     INTENT(IN)   :: PTSTEP_MET   ! Double Time step
+REAL,                     INTENT(IN)   :: PTSTEP   ! Double Time step
                                                    ! (single if cold start)
 !
 !
@@ -246,11 +240,8 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODREF! Reference dry air density
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PEXNREF ! Reference Exner function
 !
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSM  ! abs. pressure at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHT    ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)   :: PRM     ! Moist variables at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PRT     ! Moist variables at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PSIGS   ! Sigma_s at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PMFCONV ! convective mass flux
@@ -258,7 +249,6 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PMFCONV ! convective mass flux
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS  ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS   ! Moist  variable sources
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVM  ! Scalar variable at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT  ! Scalar variable at time t
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS  ! Scalar variable sources
 !
@@ -459,7 +449,7 @@ ZEXN(:,:,:) = (PPABST(:,:,:) / XP00)**(XRD / XCPD)
 ZT(:,:,:)   = PTHT(:,:,:) * ZEXN(:,:,:)
 ZLV(:,:,:)  = XLVTT + (XCPV - XCL) * (ZT(:,:,:) - XTT)
 ZLS(:,:,:)  = XLSTT + (XCPV - XCI) * (ZT(:,:,:) - XTT)
-ZCPH(:,:,:) = XCPD + XCPV * PTSTEP_MET * PRS(:,:,:,1)
+ZCPH(:,:,:) = XCPD + XCPV * PTSTEP * PRS(:,:,:,1)
 !
 !
 !------------------------------------------------------------------------------
@@ -644,7 +634,7 @@ CALL MYPROC_ELEC_ll (IPROC)
 !          of the positive and negative ions, respectively
 
 CALL ION_DRIFT(ZCPH, ZCOR, PSVT, PRHODREF, PRHODJ, HLBCX, HLBCY,            &
-               KTCOUNT, PTSTEP_MET, CDRIFT, HUVW_ADV_SCHEME )
+               KTCOUNT, PTSTEP, CDRIFT)
 
 PSVS(:,:,:,NSV_ELECBEG) = PSVS(:,:,:,NSV_ELECBEG) + ZCPH(:,:,:)/PRHODJ(:,:,:)
 PSVS(:,:,:,NSV_ELECEND) = PSVS(:,:,:,NSV_ELECEND) + ZCOR(:,:,:)/PRHODJ(:,:,:)
@@ -669,12 +659,10 @@ SELECT CASE (HCLOUD)
 !*              the explicit charging rates
 !
     CALL RAIN_ICE_ELEC (OSEDIC, HSUBG_AUCV, OWARM,                            &
-                        KSPLITR, PTSTEP_MET, KMI, KRR,                        &
+                        KSPLITR, PTSTEP, KMI, KRR,                            &
                         PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
-                        PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRM(:,:,:,2),       &
-                        PRT(:,:,:,3), PRM(:,:,:,3),                           &
-                        PRT(:,:,:,4), PRT(:,:,:,5), PRM(:,:,:,5),             &
-                        PRT(:,:,:,6), PRM(:,:,:,6),                           &
+                        PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3),       &
+                        PRT(:,:,:,4), PRT(:,:,:,5), PRT(:,:,:,6),             &
                         PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
                         PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
                         PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
@@ -695,8 +683,8 @@ SELECT CASE (HCLOUD)
     ZZZ = MZF(1,IKU,1, PZZ )
     CALL ICE_ADJUST_ELEC (KRR, KMI, HFMFILE, HLUOUT, HRAD, HTURBDIM,          &
                           HSCONV, HMF_CLOUD,                                  &
-                          OCLOSE_OUT, OSUBG_COND, OSIGMAS, PTSTEP_MET,PSIGQSAT,&
-                          PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, ZZZ,        &
+                          OCLOSE_OUT, OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,   &
+                          PRHODJ, PEXNREF, PSIGS, PPABST, ZZZ,                &
                           PMFCONV, PCF_MF, PRC_MF, PRI_MF,                    &
                           PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),               &
                           PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),               &
@@ -732,12 +720,10 @@ SELECT CASE (HCLOUD)
   CASE ('ICE4')
 !
     CALL RAIN_ICE_ELEC (OSEDIC, HSUBG_AUCV, OWARM,                            &
-                        KSPLITR, PTSTEP_MET, KMI, KRR,                        &
+                        KSPLITR, PTSTEP, KMI, KRR,                            &
                         PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
-                        PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRM(:,:,:,2),       &
-                        PRT(:,:,:,3), PRM(:,:,:,3),                           &
-                        PRT(:,:,:,4), PRT(:,:,:,5), PRM(:,:,:,5),             &
-                        PRT(:,:,:,6), PRM(:,:,:,6),                           &
+                        PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3),       &
+                        PRT(:,:,:,4), PRT(:,:,:,5), PRT(:,:,:,6),             &
                         PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
                         PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
                         PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
@@ -751,9 +737,8 @@ SELECT CASE (HCLOUD)
                         PSVS(:,:,:,NSV_ELECBEG+4), PSVS(:,:,:,NSV_ELECBEG+5), &
                         PSVS(:,:,:,NSV_ELECEND),          &
                         PSEA, PTOWN,                   &
-                        PRT(:,:,:,7), PRM(:,:,:,7), PRS(:,:,:,7), PINPRH,     &
-                        PSVT(:,:,:,NSV_ELECBEG+6), PSVM(:,:,:,NSV_ELECBEG+6), &
-                        PSVS(:,:,:,NSV_ELECBEG+6)                             )
+                        PRT(:,:,:,7), PRS(:,:,:,7), PINPRH,                   &
+                        PSVT(:,:,:,NSV_ELECBEG+6), PSVS(:,:,:,NSV_ELECBEG+6)  )
 ! Index NSV_ELECBEG: Positive ion , NSV_ELECEND: Negative ion
 !
 !
@@ -762,8 +747,8 @@ SELECT CASE (HCLOUD)
     ZZZ = MZF(1,IKU,1, PZZ )
     CALL ICE_ADJUST_ELEC (KRR, KMI, HFMFILE, HLUOUT, HRAD,                    &
                           HTURBDIM, HSCONV, HMF_CLOUD,                        &
-                          OCLOSE_OUT, OSUBG_COND, OSIGMAS, PTSTEP_MET,PSIGQSAT,&
-                          PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, ZZZ,        &
+                          OCLOSE_OUT,OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,    &
+                          PRHODJ, PEXNREF, PSIGS, PPABST, ZZZ,                &
                           PMFCONV, PCF_MF, PRC_MF, PRI_MF,                    & 
                           PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),               &
                           PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),               &
@@ -803,7 +788,7 @@ IF(KTCOUNT .EQ. 1 .AND. IPROC.EQ.0) PRINT *,'KSPLITR=', KSPLITR
 !
 PTHS(:,:,:) = PTHS(:,:,:) * PRHODJ(:,:,:)
 !
-DO JRR = 1, KRR
+DO JRR = 1,KRR
   PRS(:,:,:,JRR)  = PRS(:,:,:,JRR) * PRHODJ(:,:,:)
 END DO
 !
@@ -823,12 +808,12 @@ GATTACH(:,:,:) = .FALSE.
 GATTACH(IIB:IIE, IJB:IJE, IKB:IKE) = .TRUE.
 !
 IF (PRESENT(PSEA)) THEN
-   CALL ION_ATTACH_ELEC(KTCOUNT, KRR, PTSTEP_MET, PRHODREF,               &
+   CALL ION_ATTACH_ELEC(KTCOUNT, KRR, PTSTEP, PRHODREF,                   &
                         PRHODJ, PSVS(:,:,:,NSV_ELECBEG:NSV_ELECEND),      & 
                         PRS, PTHT, PCIT, PPABST, XEFIELDU,                &
                         XEFIELDV, XEFIELDW, GATTACH, PTOWN, PSEA          )
 ELSE
-   CALL ION_ATTACH_ELEC(KTCOUNT, KRR, PTSTEP_MET, PRHODREF,                   &
+   CALL ION_ATTACH_ELEC(KTCOUNT, KRR, PTSTEP, PRHODREF,                   &
                         PRHODJ, PSVS(:,:,:,NSV_ELECBEG:NSV_ELECEND),      &
                         PRS, PTHT, PCIT, PPABST, XEFIELDU,                &
                         XEFIELDV, XEFIELDW, GATTACH                       )
@@ -954,7 +939,7 @@ END IF
 IF ((.NOT. LOCG) .AND. LELEC_FIELD .AND.  MAX_ll(ABS(ZQTOT),IINFO_ll)>0.) THEN
   IF (PRESENT(PSEA)) THEN
     IF (LFLASH_GEOM) THEN
-      CALL FLASH_GEOM_ELEC_n (KTCOUNT, KRR, PTSTEP_MET, PRHODJ, PRHODREF, &
+      CALL FLASH_GEOM_ELEC_n (KTCOUNT, KRR, PTSTEP, PRHODJ, PRHODREF, &
                               PRT, PCIT,                                  &
                               PSVS(:,:,:,NSV_ELECBEG:NSV_ELECEND),        &
                               PRS, PTHT, PPABST,                          & 
@@ -966,7 +951,7 @@ IF ((.NOT. LOCG) .AND. LELEC_FIELD .AND.  MAX_ll(ABS(ZQTOT),IINFO_ll)>0.) THEN
     END IF 
   ELSE
     IF (LFLASH_GEOM) THEN
-      CALL FLASH_GEOM_ELEC_n (KTCOUNT, KRR, PTSTEP_MET, PRHODJ, PRHODREF, &
+      CALL FLASH_GEOM_ELEC_n (KTCOUNT, KRR, PTSTEP, PRHODJ, PRHODREF,     &
                               PRT, PCIT,                                  &
                               PSVS(:,:,:,NSV_ELECBEG:NSV_ELECEND),        &
                               PRS, PTHT, PPABST,                          & 
@@ -1000,9 +985,9 @@ END IF
 !               ---------------------------
 !
 IF (LSERIES_ELEC) THEN
-  CALL SERIES_CLOUD_ELEC (KTCOUNT, PTSTEP_MET,            &
+  CALL SERIES_CLOUD_ELEC (KTCOUNT, PTSTEP,                &
                           PZZ, PRHODJ, PRHODREF, PEXNREF, &
-                          PRM, PRT, PRS, PSVT,            &
+                          PRT, PRS, PSVT,                 &
                           PTHT, PWT, PPABST, PCIT, PINPRR  )
 END IF
 !
diff --git a/src/MNH/series_cloud_elec.f90 b/src/MNH/series_cloud_elec.f90
index 1b07a4bb8..a394ca1fb 100644
--- a/src/MNH/series_cloud_elec.f90
+++ b/src/MNH/series_cloud_elec.f90
@@ -5,7 +5,7 @@
 INTERFACE
   SUBROUTINE SERIES_CLOUD_ELEC (KTCOUNT, PTSTEP,                &
                                 PZZ, PRHODJ, PRHODREF, PEXNREF, &
-                                PRM, PRT, PRS, PSVT,            &
+                                PRT, PRS, PSVT,                 &
                                 PTHT, PWT, PPABST, PCIT, PINPRR )
 !
 !
@@ -18,7 +18,6 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function
 !
-REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM     ! Moist variables at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT     ! Moist variables at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRS     ! Moist  variable sources
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT    ! Scalar variable at time t
@@ -38,7 +37,7 @@ END MODULE MODI_SERIES_CLOUD_ELEC
 !      ###############################################################
        SUBROUTINE SERIES_CLOUD_ELEC (KTCOUNT, PTSTEP,                &
                                      PZZ, PRHODJ, PRHODREF, PEXNREF, &
-                                     PRM, PRT, PRS, PSVT,            &
+                                     PRT, PRS, PSVT,                 &
                                      PTHT, PWT, PPABST, PCIT, PINPRR )
 !      ###############################################################
 !
@@ -116,7 +115,6 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PCIT     ! Pristine ice number
                                                ! concentration at time t
 REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRR  ! Rain instant precip
 !
-REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM    ! Moist variables at time t-dt
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT    ! Moist variables at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRS    ! Moist  variable sources
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT   ! Scalar variable at time t
@@ -223,7 +221,7 @@ ZCLOUD(IIB:IIE,IJB:IJE,IKB:IKE) = PRT(IIB:IIE,IJB:IJE,IKB:IKE,2) + &
 !*       1.3     compute the terminal fall speed
 !
 ! the mean terminal fall speed is computed following:
-! V_mean = Int(v(D) m(D) n(D) dD) / Int(m(D) n(D) dD)
+! V_mean = Int(v(D) n(D) dD) / Int(n(D) dD)
 !
 ALLOCATE(ZLAMBDAS(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3)))
 ALLOCATE(ZLAMBDAG(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3)))
diff --git a/src/MNH/set_geosbal.f90 b/src/MNH/set_geosbal.f90
index 9070bcbac..4da388590 100644
--- a/src/MNH/set_geosbal.f90
+++ b/src/MNH/set_geosbal.f90
@@ -673,11 +673,11 @@ DO JI = 1,IIU
 !
       IF (ZZM(JI,JJ,JK) >= ZZHATM(IKU)) THEN     ! copy out when
         PTHV(JI,JJ,JK)  =  ZTHV3D (JI,JJ,IKU)    ! ZZM(IKU)= ZZHATM(IKU)
-        XRM(JI,JJ,JK,1) = PMRM(IKU)              ! (in case zs=0.)
+        XRT(JI,JJ,JK,1) = PMRM(IKU)              ! (in case zs=0.)
 !
       ELSEIF (ZZM(JI,JJ,JK) < ZZHATM(1)) THEN    ! copy out when  
         PTHV(JI,JJ,JK)  =  ZTHV3D (JI,JJ,1)      ! ZZM(1)< ZZHATM(1)  
-        XRM(JI,JJ,JK,1) = PMRM(1)                ! (in case zs=0.)
+        XRT(JI,JJ,JK,1) = PMRM(1)                ! (in case zs=0.)
 !
       ELSE                  ! search levels on the mass grid without orography
         DO JKS = 2,IKU      ! that surrounded JK
@@ -688,7 +688,7 @@ DO JI = 1,IIU
             ZDZ2SDH = 1. - ZDZ1SDH
             PTHV(JI,JJ,JK)  = (ZDZ1SDH * ZTHV3D(JI,JJ,JKS)   )       &
                             + (ZDZ2SDH * ZTHV3D(JI,JJ,JKS-1) )
-            XRM(JI,JJ,JK,1) = (ZDZ1SDH  * PMRM(JKS)         )        &
+            XRT(JI,JJ,JK,1) = (ZDZ1SDH  * PMRM(JKS)         )        &
                             + (ZDZ2SDH  * PMRM(JKS-1)       )
           END IF
         END DO
@@ -702,7 +702,7 @@ END DO
 !*       5.     DEDUCE THETA FROM THETAV AND MR ON MODEL GRID
 !               ---------------------------------------------
 !
-XTHM(:,:,:) = PTHV(:,:,:) * (1.+SUM(XRM(:,:,:,:),DIM=4)) /(1. + ZRVSRD *XRM(:,:,:,1))
+XTHT(:,:,:) = PTHV(:,:,:) * (1.+SUM(XRT(:,:,:,:),DIM=4)) /(1. + ZRVSRD *XRT(:,:,:,1))
 !
 !
 !-------------------------------------------------------------------------------
@@ -725,14 +725,14 @@ DO JI = 2,IIU
 !
       IF (ZZUM(JI,JJ,JK) >= XZHAT(IKU)) THEN     ! extrapolation
         ZDZ1SDH = (ZZUM(JI,JJ,JK)-XZHAT(IKU))/ (XZHAT(IKU)-XZHAT(IKU-1))
-        XUM(JI,JJ,JK) =  0.5*( PU3D(JI,JJ,IKU) + PU3D(JI-1,JJ,IKU) )  &
+        XUT(JI,JJ,JK) =  0.5*( PU3D(JI,JJ,IKU) + PU3D(JI-1,JJ,IKU) )  &
                          * (1.+ ZDZ1SDH)                              &
                         -0.5*(PU3D(JI,JJ,IKU-1)+ PU3D(JI-1,JJ,IKU-1)) &
                          * ZDZ1SDH
 !
       ELSE IF (ZZUM(JI,JJ,JK) < XZHAT(1)) THEN     ! extrapolation
         ZDZ1SDH = (ZZUM(JI,JJ,JK)-XZHAT(1))/ (XZHAT(2)-XZHAT(1))
-        XUM(JI,JJ,JK) = 0.5*( PU3D(JI,JJ,1) + PU3D(JI-1,JJ,1) )  &
+        XUT(JI,JJ,JK) = 0.5*( PU3D(JI,JJ,1) + PU3D(JI-1,JJ,1) )  &
                          * (1.- ZDZ1SDH)                         &
                         +0.5*(PU3D(JI,JJ,2)+ PU3D(JI-1,JJ,2) )   &
                          * ZDZ1SDH
@@ -744,7 +744,7 @@ DO JI = 2,IIU
                           ! orography
             ZDZ1SDH = (ZZUM(JI,JJ,JK)-XZHAT(JKS-1))/ (XZHAT(JKS)-XZHAT(JKS-1))
             ZDZ2SDH = 1. - ZDZ1SDH
-            XUM(JI,JJ,JK) = ZDZ1SDH *.5 *( PU3D(JI,JJ,JKS)  + PU3D(JI-1,JJ,JKS)) &
+            XUT(JI,JJ,JK) = ZDZ1SDH *.5 *( PU3D(JI,JJ,JKS)  + PU3D(JI-1,JJ,JKS)) &
                            +ZDZ2SDH *.5 *( PU3D(JI,JJ,JKS-1)+ PU3D(JI-1,JJ,JKS-1))
           END IF
         END DO
@@ -753,7 +753,7 @@ DO JI = 2,IIU
   END DO
 END DO
 !
-XUM(1,:,:)=-999.
+XUT(1,:,:)=-999.
 !
 !
 !*       6.2 V interpolation
@@ -765,14 +765,14 @@ DO JI = 1,IIU
 !
       IF (ZZVM(JI,JJ,JK) >= XZHAT(IKU)) THEN     ! extrapolation
         ZDZ1SDH = (ZZVM(JI,JJ,JK)-XZHAT(IKU))/ (XZHAT(IKU)-XZHAT(IKU-1))
-        XVM(JI,JJ,JK) =   0.5*( PV3D(JI,JJ,IKU) + PV3D(JI,JJ-1,IKU) )  &
+        XVT(JI,JJ,JK) =   0.5*( PV3D(JI,JJ,IKU) + PV3D(JI,JJ-1,IKU) )  &
                          * (1.+ ZDZ1SDH)                               &
                         -0.5*(PV3D(JI,JJ,IKU-1)+ PV3D(JI,JJ-1,IKU-1))  &
                          * ZDZ1SDH
 !
       ELSE IF (ZZVM(JI,JJ,JK) < XZHAT(1)) THEN     ! extrapolation
         ZDZ1SDH = (ZZVM(JI,JJ,JK)-XZHAT(1))/ (XZHAT(2)-XZHAT(1))
-        XVM(JI,JJ,JK) =  0.5*( PV3D(JI,JJ,1) + PV3D(JI,JJ-1,1) )  &
+        XVT(JI,JJ,JK) =  0.5*( PV3D(JI,JJ,1) + PV3D(JI,JJ-1,1) )  &
                          * (1.- ZDZ1SDH)                         &
                         +0.5*(PV3D(JI,JJ,2)+ PV3D(JI,JJ-1,2) )   &
                          * ZDZ1SDH
@@ -784,7 +784,7 @@ DO JI = 1,IIU
                           ! orography
             ZDZ1SDH = (ZZVM(JI,JJ,JK)-XZHAT(JKS-1))/ (XZHAT(JKS)-XZHAT(JKS-1))
             ZDZ2SDH = 1. - ZDZ1SDH
-            XVM(JI,JJ,JK) = ZDZ1SDH *.5 *( PV3D(JI,JJ,JKS)  + PV3D(JI,JJ-1,JKS)) &
+            XVT(JI,JJ,JK) = ZDZ1SDH *.5 *( PV3D(JI,JJ,JKS)  + PV3D(JI,JJ-1,JKS)) &
                            +ZDZ2SDH *.5 *( PV3D(JI,JJ,JKS-1)+ PV3D(JI,JJ-1,JKS-1))
           END IF
         END DO
@@ -794,11 +794,11 @@ DO JI = 1,IIU
   END DO
 END DO
 !
-XVM(:,1,:)=-999.
+XVT(:,1,:)=-999.
 !
 !*       6.3 W initialization
 !
-XWM(:,:,:)=0.
+XWT(:,:,:)=0.
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/set_grid.f90 b/src/MNH/set_grid.f90
index 87757f8c6..f3056410a 100644
--- a/src/MNH/set_grid.f90
+++ b/src/MNH/set_grid.f90
@@ -353,7 +353,7 @@ CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,IMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
   YRECFM='STORAGE_TYPE'
   YDIR='--'
   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,CSTORAGE_TYPE,IGRID,ILENCH,YCOMMENT,IRESP)
-  IF (IRESP /= 0) CSTORAGE_TYPE='MT'
+  IF (IRESP /= 0) CSTORAGE_TYPE='TT'
   !
 IF (KMI == 1) THEN
   YRECFM='LON0'     ! this parameter is also useful in the cartesian to
@@ -391,7 +391,7 @@ IF (.NOT.LCARTESIAN) THEN
     YDIR='--'
     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,PLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
   !
-  ELSE                      
+  ELSE                     
     CALL FMREAD(HINIFILE,'LONOR',HLUOUT,'--',PLONORI,IGRID,ILENCH,YCOMMENT,IRESP)
     CALL FMREAD(HINIFILE,'LATOR',HLUOUT,'--',PLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
     ALLOCATE(ZXHAT_ll(KIMAX_ll+ 2 * JPHEXT),ZYHAT_ll(KJMAX_ll+2 * JPHEXT))
diff --git a/src/MNH/set_mask.f90 b/src/MNH/set_mask.f90
index 59249a0b4..ccb835942 100644
--- a/src/MNH/set_mask.f90
+++ b/src/MNH/set_mask.f90
@@ -90,11 +90,11 @@ LBU_MASK(:,:,:)=.FALSE.
 ! Change the following lines to set the criterion for each of the NBUMASK masks
 ! 
 ! 1st mask on vertical velocity at level k=10
-LBU_MASK(IIB:IIE,IJB:IJE,1)=FIELD_MODEL(NBUMOD)%XWM(IIB:IIE,IJB:IJE,10)>0.
+LBU_MASK(IIB:IIE,IJB:IJE,1)=FIELD_MODEL(NBUMOD)%XWT(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)%XRM(IIB:IIE,IJB:IJE,2,3)>1.E-8
+  LBU_MASK(IIB:IIE,IJB:IJE,2)=FIELD_MODEL(NBUMOD)%XRT(IIB:IIE,IJB:IJE,2,3)>1.E-8
 !
 !==============================================================================
 !
diff --git a/src/MNH/set_mass.f90 b/src/MNH/set_mass.f90
index b0a978ea6..471007536 100644
--- a/src/MNH/set_mass.f90
+++ b/src/MNH/set_mass.f90
@@ -399,30 +399,24 @@ ELSE
 ! 
 ! Interpolation of theta and r
 !
-  ALLOCATE(XTHM(IIU,IJU,IKU))
-  ALLOCATE(XRM(IIU,IJU,IKU,NRR))
  IF (SIZE(ZTHV3D_MX,3) > 3) THEN
   CALL VER_INT_THERMO(OSHIFT,ZTHV3D_MX,ZMR3D_MX,PZS_MX,PZS_MX,PZMASS_MX,&
                       PZFLUX_MX,ZPMHP_MX,ZEXNTOP2D, &
-                      ZTHV3D,XRM,ZPMHP,ZDIAG)
+                      ZTHV3D,XRT,ZPMHP,ZDIAG)
  ELSE
    ZTHV3D = ZTHV3D_MX
-   XRM    = ZMR3D_MX
+   XRT    = ZMR3D_MX
    ZDIAG  = 0.
  END IF
-  XTHM(:,:,:)=ZTHV3D(:,:,:)*(1.+WATER_SUM(XRM(:,:,:,:)))/(1.+XRV/XRD*XRM(:,:,:,1))
+  XTHT(:,:,:)=ZTHV3D(:,:,:)*(1.+WATER_SUM(XRT(:,:,:,:)))/(1.+XRV/XRD*XRT(:,:,:,1))
   ZTHV3D(:,:,1)=ZTHV3D(:,:,2)
-  XTHM(:,:,1)=XTHM(:,:,2)
-  XRM(:,:,1,:)=XRM(:,:,2,:)
-
- CALL MPPDB_CHECK3D(ZTHV3D,"SET_MASS:ZTHV3D:",PRECISION)
- CALL MPPDB_CHECK3D(XRM(:,:,:,1),"SET_MASS:XRM:",PRECISION)
- CALL MPPDB_CHECK3D(XTHM,"SET_MASS::XTHM",PRECISION)
+  XTHT(:,:,1)=XTHT(:,:,2)
+  XRT(:,:,1,:)=XRT(:,:,2,:)
 
 !
   IF (NRR>=3) THEN
-    WHERE  (XRM(:,:,:,3)<1.E-20)
-      XRM(:,:,:,3)=0.
+    WHERE  (XRT(:,:,:,3)<1.E-20)
+      XRT(:,:,:,3)=0.
     END WHERE
   END IF
 !
@@ -434,12 +428,12 @@ ELSE
   ZRHODJU(:,:,:)=MXM(ZRHODUA(:,:,:)*PJ(:,:,:))
   ZRHODJV(:,:,:)=MYM(ZRHODVA(:,:,:)*PJ(:,:,:))
   CALL COMPUTE_EXNER_FROM_TOP(ZTHV3D,XZZ,ZEXNTOP2D,ZHEXNFLUX,ZHEXNMASS)
-  XPABSM(:,:,:)=ZPMHP(:,:,:) + XP00*ZHEXNMASS(:,:,:) ** (XCPD/XRD)
-  ZRHOD(:,:,:)=XPABSM(:,:,:)/(XPABSM(:,:,:)/XP00)**(XRD/XCPD) &
-            /(XRD*XTHM(:,:,:)*(1.+XRV/XRD*XRM(:,:,:,1)))
-  XUM(:,:,:)=ZRHODJU(:,:,:)/MXM(ZRHOD(:,:,:)*PJ(:,:,:))
-  XVM(:,:,:)=ZRHODJV(:,:,:)/MYM(ZRHOD(:,:,:)*PJ(:,:,:))
-  XWM(:,:,:)=0
+  XPABST(:,:,:)=ZPMHP(:,:,:) + XP00*ZHEXNMASS(:,:,:) ** (XCPD/XRD)
+  ZRHOD(:,:,:)=XPABST(:,:,:)/(XPABST(:,:,:)/XP00)**(XRD/XCPD) &
+            /(XRD*XTHT(:,:,:)*(1.+XRV/XRD*XRT(:,:,:,1)))
+  XUT(:,:,:)=ZRHODJU(:,:,:)/MXM(ZRHOD(:,:,:)*PJ(:,:,:))
+  XVT(:,:,:)=ZRHODJV(:,:,:)/MYM(ZRHOD(:,:,:)*PJ(:,:,:))
+  XWT(:,:,:)=0
 ENDIF
 
 !
@@ -450,7 +444,7 @@ ENDIF
 IF (.NOT. OBOUSS) THEN
   DEALLOCATE(XTHVREFZ)
   DEALLOCATE(XRHODREFZ)
-  CALL SET_REFZ(ZTHV3D,XRM(:,:,:,1))
+  CALL SET_REFZ(ZTHV3D,XRT(:,:,:,1))
 ELSE 
   IF (OPROFILE_IN_PROC) THEN
     XTHVREFZ(:) = ZTHV3D(KILOC-IXOR_ll+1,KJLOC-IYOR_ll+1,2)
@@ -470,7 +464,7 @@ ELSE
 
   ZEXNTOP2D=ZHEXNFLUX(:,:,IKE+1)
   CALL COMPUTE_EXNER_FROM_TOP(ZTHVREF3D,XZZ,ZEXNTOP2D,ZHEXNFLUX,ZHEXNMASS)
-  XPABSM(:,:,:)=ZPMHP(:,:,:) + XP00*ZHEXNMASS(:,:,:) ** (XCPD/XRD)   
+  XPABST(:,:,:)=ZPMHP(:,:,:) + XP00*ZHEXNMASS(:,:,:) ** (XCPD/XRD)   
 ENDIF
 !---------------------------------------------------------------------------------
 END SUBROUTINE SET_MASS     
diff --git a/src/MNH/set_perturb.f90 b/src/MNH/set_perturb.f90
index 1e32483ef..b14103558 100644
--- a/src/MNH/set_perturb.f90
+++ b/src/MNH/set_perturb.f90
@@ -177,6 +177,7 @@ REAL             :: XRADX=  10000. ! X-Radius of the perturbation
 REAL             :: XRADY=  10000. ! Y-Radius of the perturbation
 REAL             :: XRADZ=   2200. ! Z-Radius of the perturbation
 !
+REAL             :: ZOMEGA
 INTEGER, PARAMETER                 :: i_seed_param = 26032012
 INTEGER, DIMENSION(:), ALLOCATABLE :: i_seed
 INTEGER                            :: ni_seed
@@ -269,33 +270,33 @@ SELECT CASE(CPERT_KIND)
 !
 ! save the actual relative humidity
 !
-        ZT(:,:,:) =XTHM(:,:,:)*(XPABSM(:,:,:)/XP00) **(XRD/XCPD)
-        ZHU(:,:,:)  = (XRM(:,:,:,1)*XPABSM(:,:,:)) / (((XMV/XMD)+XRM(:,:,:,1))* &
+        ZT(:,:,:) =XTHT(:,:,:)*(XPABST(:,:,:)/XP00) **(XRD/XCPD)
+        ZHU(:,:,:)  = (XRT(:,:,:,1)*XPABST(:,:,:)) / (((XMV/XMD)+XRT(:,:,:,1))* &
                         EXP( XALPW - XBETAW/ZT(:,:,:) - XGAMW*ALOG(ZT(:,:,:)) ))
 !
 ! set the perturbation for Theta
 !
-        XTHM(:,:,:) = XTHM(:,:,:) + XAMPLITH * COS (XPI*0.5*ZDIST(:,:,:)) **2
+        XTHT(:,:,:) = XTHT(:,:,:) + XAMPLITH * COS (XPI*0.5*ZDIST(:,:,:)) **2
 !
 ! compute the new vapor pressure (stored in ZHU!)
 !
-        ZT(:,:,:) =XTHM(:,:,:)*(XPABSM(:,:,:)/XP00) **(XRD/XCPD)
+        ZT(:,:,:) =XTHT(:,:,:)*(XPABST(:,:,:)/XP00) **(XRD/XCPD)
         ZHU(:,:,:) = ZHU(:,:,:)*                                             &
                      EXP( XALPW - XBETAW/ZT(:,:,:) - XGAMW*ALOG(ZT(:,:,:)) )
 !
 ! set the perturbation for r_v such that the relative humidity is conserved
 !
-        XRM(:,:,:,1) = (XMV/XMD) * ZHU(:,:,:) / ( XPABSM(:,:,:) - ZHU(:,:,:) )
+        XRT(:,:,:,1) = (XMV/XMD) * ZHU(:,:,:) / ( XPABST(:,:,:) - ZHU(:,:,:) )
       END WHERE
       CALL MPPDB_CHECK3D(ZT,"SET_PERTURB::ZT",PRECISION)
       CALL MPPDB_CHECK3D(ZHU,"SET_PERTURB::ZHU",PRECISION)
    ELSE
       WHERE ( ZDIST(:,:,:) <= 1.) 
-        XTHM(:,:,:)  = XTHM(:,:,:)  + XAMPLITH * COS (XPI*0.5*ZDIST(:,:,:)) **2
-        XRM(:,:,:,1) = XRM(:,:,:,1) + XAMPLIRV * COS (XPI*0.5*ZDIST(:,:,:)) **2 
+        XTHT(:,:,:)  = XTHT(:,:,:)  + XAMPLITH * COS (XPI*0.5*ZDIST(:,:,:)) **2
+        XRT(:,:,:,1) = XRT(:,:,:,1) + XAMPLIRV * COS (XPI*0.5*ZDIST(:,:,:)) **2 
       END WHERE
     END IF
-    CALL MPPDB_CHECK3D(XRM(:,:,:,1),"SET_PERTURB::XRM",PRECISION)
+    CALL MPPDB_CHECK3D(XRT(:,:,:,1),"SET_PERTURB::XRT",PRECISION)
     CALL MPPDB_CHECK3D(XTHM,"SET_PERTURB::XTHM",PRECISION)
 !
 !-------------------------------------------------------------------------------
@@ -346,18 +347,18 @@ SELECT CASE(CPERT_KIND)
     DEALLOCATE(ZPU_ll,ZPV_ll)
     DO JI = 1,IIU
       DO JJ = 1,IJU
-        XUM(JI,JJ,:) = XUM(JI,JJ,:) + ZPU(JI,JJ)
+        XUT(JI,JJ,:) = XUT(JI,JJ,:) + ZPU(JI,JJ)
       END DO
     END DO
     DO JJ = 1,IJU
       DO JI = 1,IIU
-        XVM(JI,JJ,:) = XVM(JI,JJ,:) + ZPV(JI,JJ)
+        XVT(JI,JJ,:) = XVT(JI,JJ,:) + ZPV(JI,JJ)
       END DO
     END DO
     DEALLOCATE(ZPU,ZPV)
 !
 !
-  CASE('WH','WW')  !    white noise is computed on global domain 
+  CASE('WH','WW')  !    white noise is computed on global domain
                    ! J.Escobar optim => need only identical random on all domain 
 !
  DO JK = IKB, NKWH
@@ -428,27 +429,27 @@ SELECT CASE(CPERT_KIND)
     CALL MPPDB_CHECK2D(ZWHITE,"SET_PERTURB::ZWHITE",PRECISION)
 
     IF (CPERT_KIND=='WH') THEN ! white noise on theta
-      XTHM(:,:,JK) = XTHM(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
-      CALL MPPDB_CHECK2D(XTHM(:,:,JK),"SET_PERTURB::XTHM",PRECISION)      
+      XTHT(:,:,JK) = XTHT(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
+      CALL MPPDB_CHECK2D(XTHT(:,:,JK),"SET_PERTURB::XTHT",PRECISION)      
     ELSE  ! white noise on wind
-      XWM(:,:,JK) = XWM(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
-      XUM(:,:,JK) = XUM(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
-      XVM(:,:,JK) = XVM(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
+      XWT(:,:,JK) = XWT(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
+      XUT(:,:,JK) = XUT(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
+      XVT(:,:,JK) = XVT(:,:,JK) +  XAMPLIWH * ZWHITE(:,:)
     ENDIF
     DEALLOCATE(ZWHITE)
 !
  END DO
 
- CALL GET_HALO(XTHM)
- CALL GET_HALO(XUM)
- CALL GET_HALO(XVM)
- CALL GET_HALO(XWM)
+ CALL GET_HALO(XTHT)
+ CALL GET_HALO(XUT)
+ CALL GET_HALO(XVT)
+ CALL GET_HALO(XWT)
 
- CALL MPPDB_CHECK3D(XTHM,"SET_PERTURB::XTHM",PRECISION)
- CALL MPPDB_CHECK3D(XUM,"SET_PERTURB::XUM",PRECISION)
- CALL MPPDB_CHECK3D(XVM,"SET_PERTURB::XVM",PRECISION)
- CALL MPPDB_CHECK3D(XWM,"SET_PERTURB::XWM",PRECISION)
- CALL MPPDB_CHECK3D(XRM(:,:,:,1),"SET_PERTURB::XRM",PRECISION)
+ CALL MPPDB_CHECK3D(XTHT,"SET_PERTURB::XTHT",PRECISION)
+ CALL MPPDB_CHECK3D(XUT,"SET_PERTURB::XUT",PRECISION)
+ CALL MPPDB_CHECK3D(XVT,"SET_PERTURB::XVT",PRECISION)
+ CALL MPPDB_CHECK3D(XWT,"SET_PERTURB::XWT",PRECISION)
+ CALL MPPDB_CHECK3D(XRT(:,:,:,1),"SET_PERTURB::XRT",PRECISION)
 
 !-------------------------------------------------------------------------------
 !
@@ -458,41 +459,53 @@ SELECT CASE(CPERT_KIND)
 !
   IF (CPERT_KIND=='WH') THEN ! white noise on theta
     IF (LWEST_ll() .AND. CLBCX(1)/='CYCL')  &
-     XTHM(IIB-1,:,IKB) = 2. * XTHM(IIB,:,IKB) - XTHM(IIB+1,:,IKB)
+     XTHT(IIB-1,:,IKB) = 2. * XTHT(IIB,:,IKB) - XTHT(IIB+1,:,IKB)
     IF (LEAST_ll() .AND. CLBCX(1)/='CYCL')   &
-     XTHM(IIE+1,:,IKB) = 2. * XTHM(IIE,:,IKB) - XTHM(IIE-1,:,IKB)
+     XTHT(IIE+1,:,IKB) = 2. * XTHT(IIE,:,IKB) - XTHT(IIE-1,:,IKB)
     IF (LSOUTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XTHM(:,IJB-1,IKB) = 2. * XTHM(:,IJB,IKB) - XTHM(:,IJB+1,IKB)
+     XTHT(:,IJB-1,IKB) = 2. * XTHT(:,IJB,IKB) - XTHT(:,IJB+1,IKB)
     IF (LNORTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XTHM(:,IJE+1,IKB) = 2. * XTHM(:,IJE,IKB) - XTHM(:,IJE-1,IKB)
+     XTHT(:,IJE+1,IKB) = 2. * XTHT(:,IJE,IKB) - XTHT(:,IJE-1,IKB)
   ELSE ! white noise on wind
     IF (LWEST_ll() .AND. CLBCX(1)/='CYCL')  &
-     XWM(IIB-1,:,IKB) = 2. * XWM(IIB,:,IKB) - XWM(IIB+1,:,IKB)
+     XWT(IIB-1,:,IKB) = 2. * XWT(IIB,:,IKB) - XWT(IIB+1,:,IKB)
     IF (LEAST_ll() .AND. CLBCX(1)/='CYCL')   &
-     XWM(IIE+1,:,IKB) = 2. * XWM(IIE,:,IKB) - XWM(IIE-1,:,IKB)    
+     XWT(IIE+1,:,IKB) = 2. * XWT(IIE,:,IKB) - XWT(IIE-1,:,IKB)    
     IF (LSOUTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XWM(:,IJB-1,IKB) = 2. * XWM(:,IJB,IKB) - XWM(:,IJB+1,IKB)
+     XWT(:,IJB-1,IKB) = 2. * XWT(:,IJB,IKB) - XWT(:,IJB+1,IKB)
     IF (LNORTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XWM(:,IJE+1,IKB) = 2. * XWM(:,IJE,IKB) - XWM(:,IJE-1,IKB)
+     XWT(:,IJE+1,IKB) = 2. * XWT(:,IJE,IKB) - XWT(:,IJE-1,IKB)
 !     
     IF (LWEST_ll() .AND. CLBCX(1)/='CYCL')  &
-     XUM(IIB-1,:,IKB) = 2. * XUM(IIB,:,IKB) - XUM(IIB+1,:,IKB)
+     XUT(IIB-1,:,IKB) = 2. * XUT(IIB,:,IKB) - XUT(IIB+1,:,IKB)
     IF (LEAST_ll() .AND. CLBCX(1)/='CYCL')   &
-     XUM(IIE+1,:,IKB) = 2. * XUM(IIE,:,IKB) - XUM(IIE-1,:,IKB)
+     XUT(IIE+1,:,IKB) = 2. * XUT(IIE,:,IKB) - XUT(IIE-1,:,IKB)
     IF (LSOUTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XUM(:,IJB-1,IKB) = 2. * XUM(:,IJB,IKB) - XUM(:,IJB+1,IKB)
+     XUT(:,IJB-1,IKB) = 2. * XUT(:,IJB,IKB) - XUT(:,IJB+1,IKB)
     IF (LNORTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XUM(:,IJE+1,IKB) = 2. * XUM(:,IJE,IKB) - XUM(:,IJE-1,IKB)
+     XUT(:,IJE+1,IKB) = 2. * XUT(:,IJE,IKB) - XUT(:,IJE-1,IKB)
 !
     IF (LWEST_ll() .AND. CLBCX(1)/='CYCL')  &
-     XVM(IIB-1,:,IKB) = 2. * XVM(IIB,:,IKB) - XVM(IIB+1,:,IKB)
+     XVT(IIB-1,:,IKB) = 2. * XVT(IIB,:,IKB) - XVT(IIB+1,:,IKB)
     IF (LEAST_ll() .AND. CLBCX(1)/='CYCL')   &
-     XVM(IIE+1,:,IKB) = 2. * XVM(IIE,:,IKB) - XVM(IIE-1,:,IKB)
+     XVT(IIE+1,:,IKB) = 2. * XVT(IIE,:,IKB) - XVT(IIE-1,:,IKB)
     IF (LSOUTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XVM(:,IJB-1,IKB) = 2. * XVM(:,IJB,IKB) - XVM(:,IJB+1,IKB)
+     XVT(:,IJB-1,IKB) = 2. * XVT(:,IJB,IKB) - XVT(:,IJB+1,IKB)
     IF (LNORTH_ll() .AND. CLBCY(1)/='CYCL') &
-     XVM(:,IJE+1,IKB) = 2. * XVM(:,IJE,IKB) - XVM(:,IJE-1,IKB)
+     XVT(:,IJE+1,IKB) = 2. * XVT(:,IJE,IKB) - XVT(:,IJE-1,IKB)
   ENDIF
+!
+!
+  CASE('SH')  !    Shock (Burger's Equation)
+!
+    ZOMEGA = 2.0*XPI/FLOAT(IIE-IIB)
+    DO JI = IIB, IIE
+      XUT(JI,:,:) = XUT(JI,:,:) + XAMPLIUV*SIN( ZOMEGA*FLOAT(JI-IIB) )
+    END DO
+    XVT(:,:,:) = 0.0
+    XWT(:,:,:) = 0.0
+!
+!
 END SELECT
 !
 DEALLOCATE(ZXHAT_ll,ZYHAT_ll)
@@ -500,4 +513,3 @@ DEALLOCATE(ZXHAT_ll,ZYHAT_ll)
 !-------------------------------------------------------------------------------
 !
 END SUBROUTINE SET_PERTURB 
-
diff --git a/src/MNH/shallow_mf.f90 b/src/MNH/shallow_mf.f90
index e538bd06a..5d876ea2a 100644
--- a/src/MNH/shallow_mf.f90
+++ b/src/MNH/shallow_mf.f90
@@ -7,7 +7,7 @@ INTERFACE
       SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
-                PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,              &
+                PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXNM,                                        &
@@ -44,8 +44,6 @@ INTEGER,                INTENT(IN)   :: KSV_LGBEG ! first index of lag. tracer
 INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -77,7 +75,7 @@ REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZUMF
 REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZVMF
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PTHL_UP   ! Thl updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRT_UP    ! Rt  updraft characteristics
-REAL, DIMENSION(:,:), INTENT(OUT) ::  PRV_UP    ! Vapor updraft characteristics
+REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRV_UP    ! Vapor updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PU_UP     ! U wind updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PV_UP     ! V wind updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRC_UP    ! cloud content updraft characteristics
@@ -100,7 +98,7 @@ END MODULE MODI_SHALLOW_MF
       SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
-                PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,              &
+                PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXNM,                                        &
@@ -188,8 +186,6 @@ INTEGER,                INTENT(IN)   :: KSV_LGBEG ! first index of lag. tracer
 INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -221,7 +217,7 @@ REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZUMF
 REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZVMF
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PTHL_UP   ! Thl updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRT_UP    ! Rt  updraft characteristics
-REAL, DIMENSION(:,:), INTENT(OUT) ::  PRV_UP    ! Vapor updraft characteristics
+REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRV_UP    ! Vapor updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PU_UP     ! U wind updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PV_UP     ! V wind updraft characteristics
 REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRC_UP    ! cloud content updraft characteristics
@@ -339,7 +335,7 @@ CALL COMPUTE_MF_CLOUD(KKA,IKB,IKE,KKU,KKL,KRR,KRRL,KRRI,&
 ZEMF_O_RHODREF=PEMF/PRHODREF
 CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV,                         &
              ONOMIXLG,KSV_LGBEG,KSV_LGEND,                            &
-             PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,                 &
+             PIMPL_MF, PTSTEP,                                        &
              PDZZ,                                                    &
              PRHODJ,                                                  &
              ZTHLM,ZTHVM,ZRTM,PUM,PVM,PSVM,                           &
diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90
index cccacdca3..666b03087 100644
--- a/src/MNH/shallow_mf_pack.f90
+++ b/src/MNH/shallow_mf_pack.f90
@@ -7,7 +7,7 @@ INTERFACE
       SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI,                       &
                 HMF_UPDRAFT, HMF_CLOUD, OMIXUV,                       &
                 OCLOSE_OUT,OMF_FLX,HFMFILE,HLUOUT,PTIME_LES,          &
-                PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,              &
+                PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXN,                                         &
@@ -40,8 +40,6 @@ CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
 REAL*8,DIMENSION(2),                  INTENT(OUT)  :: PTIME_LES     ! time spent in LES computations
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -76,7 +74,7 @@ END MODULE MODI_SHALLOW_MF_PACK
       SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI,                       &
                 HMF_UPDRAFT, HMF_CLOUD, OMIXUV,                       &
                 OCLOSE_OUT,OMF_FLX,HFMFILE,HLUOUT,PTIME_LES,          &
-                PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,              &
+                PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXN,                                         &
@@ -155,8 +153,6 @@ CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
 REAL*8,DIMENSION(2),                   INTENT(OUT)  :: PTIME_LES     ! time spent in LES computations
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
-REAL,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
 
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -303,7 +299,7 @@ ZSFRV(:)=RESHAPE(PSFRV(:,:),(/ IIU*IJU /) )
 CALL SHALLOW_MF(1,IKU,1,KRR,KRRL,KRRI,                              &
                 HMF_UPDRAFT, HMF_CLOUD, 'T', OMIXUV,                  &
                 LNOMIXLG,NSV_LGBEG,NSV_LGEND,                         &
-                PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,              &
+                PIMPL_MF, PTSTEP,                                     &
                 ZDZZ, ZZZ,                                            &
                 ZRHODJ,ZRHODREF,                                      &
                 ZPABSM, ZEXN,                                         &
diff --git a/src/MNH/slow_terms.f90 b/src/MNH/slow_terms.f90
index 2b441059b..a91c24a30 100644
--- a/src/MNH/slow_terms.f90
+++ b/src/MNH/slow_terms.f90
@@ -10,7 +10,6 @@
 INTERFACE
       SUBROUTINE SLOW_TERMS ( KSPLITR, PTSTEP, KMI, HSUBG_AUCV,            &
                               PZZ, PRHODJ, PRHODREF, PCLDFR,               &
-                              PRRM,                                        &
                               PTHT, PRVT, PRCT, PRRT, PPABST,              &
                               PTHS, PRVS, PRCS, PRRS, PINPRR,              &
                               PINPRR3D, PEVAP3D                            )
@@ -29,7 +28,6 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),     INTENT(IN)  :: PCLDFR  ! Cloud fraction
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
@@ -55,7 +53,6 @@ END MODULE MODI_SLOW_TERMS
 !OPTION! -Ni
       SUBROUTINE SLOW_TERMS ( KSPLITR, PTSTEP, KMI, HSUBG_AUCV,            &
                               PZZ, PRHODJ, PRHODREF, PCLDFR,               &
-                              PRRM,                                        &
                               PTHT, PRVT, PRCT, PRRT, PPABST,              &
                               PTHS, PRVS, PRCS, PRRS, PINPRR,              &
                               PINPRR3D, PEVAP3D                            )
@@ -184,7 +181,6 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
 REAL, DIMENSION(:,:,:),     INTENT(IN)  :: PCLDFR  ! Cloud fraction
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRM    ! Rain water m.r. at t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t 
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index b70978bfc..921652fe8 100644
--- a/src/MNH/spawn_field2.f90
+++ b/src/MNH/spawn_field2.f90
@@ -5,9 +5,8 @@ MODULE MODI_SPAWN_FIELD2
 INTERFACE
 !
       SUBROUTINE SPAWN_FIELD2(KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,HTURB,   &
-               PUM,PVM,PWM,PTHVM,PRM,PHUM,PTKEM,PSVM,                          &
                PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT,PATC,                     &
-               PSRCM,PSRCT,PSIGS,                                              &
+               PSRCT,PSIGS,                                                    &
                PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                &
                PDTHFRC,PDRVFRC,PTHREL,PRVREL,                                  &
                PVU_FLUX_M,PVTH_FLUX_M,PWTH_FLUX_M,                             &
@@ -21,17 +20,12 @@ INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction Resolution ratio
 INTEGER,   INTENT(IN)  :: KDYRATIO   ! between model 2 and model 1
 CHARACTER (LEN=4), INTENT(IN) :: HTURB !  Kind of turbulence parameterization
 !
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PUM,PVM,PWM        !  model 2
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTKEM              ! variables
-REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRM,PSVM           !   at t-dt
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTHVM,PHUM         !
-!
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PUT,PVT,PWT        !  model 2
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTKET              ! variables
 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT,PATC      !   at t
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTHVT,PHUT         !
 !
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PSRCM,PSRCT,PSIGS  ! secondary
+REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PSRCT,PSIGS  ! secondary
                                                             ! prognostic variables
            ! Larger Scale fields for relaxation and diffusion
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSUM, PLSVM, PLSWM 
@@ -55,9 +49,8 @@ END INTERFACE
 END MODULE MODI_SPAWN_FIELD2
 !     ######spl
       SUBROUTINE SPAWN_FIELD2(KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,HTURB,   &
-               PUM,PVM,PWM,PTHVM,PRM,PHUM,PTKEM,PSVM,                          &
                PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT,PATC,                     &
-               PSRCM,PSRCT,PSIGS,                                              &
+               PSRCT,PSIGS,                                                    &
                PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                &
                PDTHFRC,PDRVFRC,PTHREL,PRVREL,                                  &
                PVU_FLUX_M,PVTH_FLUX_M,PWTH_FLUX_M,                             &
@@ -140,8 +133,6 @@ END MODULE MODI_SPAWN_FIELD2
 !!      Modification 01/02/01 (D.Gazen)  add module MODD_NSV for NSV variable
 !!      Modification 07/07/05 (D.Barbary) spawn with 2 input files (father+son1)
 !!      Modification 05/06                Remove EPS, Clark and Farley
-!!      Modification 06/12  (M.Tomasini)  Interpolation of turbulent fluxes (EDDY_FLUX)
-!!                                        for 2D west african monsoon
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -197,21 +188,16 @@ INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction Resolution ratio
 INTEGER,   INTENT(IN)  :: KDYRATIO   ! between model 2 and model 1
 CHARACTER (LEN=4), INTENT(IN) :: HTURB !  Kind of turbulence parameterization
 !
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PUM,PVM,PWM        !  model 2
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTKEM              ! variables
-REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRM,PSVM           !   at t-dt
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTHVM,PHUM         !
-!
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PUT,PVT,PWT        !  model 2
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTKET              ! variables
 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT,PATC      !   at t
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTHVT,PHUT         !
 !
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PSRCM,PSRCT,PSIGS  ! secondary
+REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PSRCT,PSIGS  ! secondary
                                                             ! prognostic variables
            ! Larger Scale fields for relaxation and diffusion
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSUM, PLSVM, PLSWM 
-REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSTHM,  PLSRVM    
+REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSTHM,  PLSRVM 
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PDTHFRC,PDRVFRC
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PTHREL,PRVREL
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PVU_FLUX_M,PVTH_FLUX_M,PWTH_FLUX_M
@@ -231,20 +217,16 @@ 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)) :: ZHUM ! relative humidity
-                                                             ! (model 1)
 REAL, DIMENSION(SIZE(FIELD_MODEL(1)%XRT,1),SIZE(FIELD_MODEL(1)%XRT,2),SIZE(FIELD_MODEL(1)%XRT,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)) :: ZTHVM! virtual pot. T
-                                                                ! (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
                                                                 ! (model 1)
 INTEGER  :: IMI
 ! Arrays for reading fields of input SON 1 file
 REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZWORK3D
-REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZTHM1,ZTHT1,ZTHVM1,ZTHVT1
-REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZPABSM1,ZPABST1,ZHUM1,ZHUT1
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRM1,ZRT1
+REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZTHT1,ZTHVT1
+REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZPABST1,ZHUT1
+REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRT1
 LOGICAL :: GUSERV
 !
 INTEGER             :: IGRID,ILENCH   !   File
@@ -266,24 +248,18 @@ CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
 !
 !*       1.1   Secondary variables
 !
-CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,FIELD_MODEL(1)%XRM,FIELD_MODEL(1)%XTHM,FIELD_MODEL(1)%XPABSM,ZTHVM,ZHUM)
 CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,FIELD_MODEL(1)%XRT,FIELD_MODEL(1)%XTHT,FIELD_MODEL(1)%XPABST,ZTHVT,ZHUT)
 !
 !*       1.2   Working arrays for reading in SON input file
 !
 IF (PRESENT(HSONFILE)) THEN
-  ALLOCATE(ZWORK3D(KIUSON,KJUSON,SIZE(PUM,3)))
-  ALLOCATE(ZPABSM1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
-  ALLOCATE(ZPABST1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
-  ALLOCATE(ZTHM1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
-  ALLOCATE(ZTHT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
-  ALLOCATE(ZTHVM1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
-  ALLOCATE(ZTHVT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
+  ALLOCATE(ZWORK3D(KIUSON,KJUSON,SIZE(PUT,3)))
+  ALLOCATE(ZPABST1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUT,3)))
+  ALLOCATE(ZTHT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUT,3)))
+  ALLOCATE(ZTHVT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUT,3)))
   IF (CONF_MODEL(1)%NRR /= 0) THEN
-    ALLOCATE(ZHUM1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
-    ALLOCATE(ZHUT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUM,3)))
-    ALLOCATE(ZRM1(KIE1-KIB1+1,KJE1-KJB1+1, SIZE(PUM,3),SIZE(PRM,4)))
-    ALLOCATE(ZRT1(KIE1-KIB1+1,KJE1-KJB1+1, SIZE(PUM,3),SIZE(PRM,4)))
+    ALLOCATE(ZHUT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUT,3)))
+    ALLOCATE(ZRT1(KIE1-KIB1+1,KJE1-KJB1+1, SIZE(PUT,3),SIZE(PRT,4)))
   END IF
 END IF
 ! 
@@ -298,11 +274,6 @@ IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN
 !*       2.1   special case of spawning - no change of resolution :
 !
 !*       2.1.1  variables which always exist
-!
-  PUM  (:,:,:)   =  FIELD_MODEL(1)%XUM  (KXOR:KXEND,KYOR:KYEND,:)
-  PVM  (:,:,:)   =  FIELD_MODEL(1)%XVM  (KXOR:KXEND,KYOR:KYEND,:)
-  PWM  (:,:,:)   =  FIELD_MODEL(1)%XWM  (KXOR:KXEND,KYOR:KYEND,:)
-  PTHVM(:,:,:)   =  ZTHVM(KXOR:KXEND,KYOR:KYEND,:)
 !
   PUT  (:,:,:)   =  FIELD_MODEL(1)%XUT  (KXOR:KXEND,KYOR:KYEND,:)
   PVT  (:,:,:)   =  FIELD_MODEL(1)%XVT  (KXOR:KXEND,KYOR:KYEND,:)
@@ -319,31 +290,26 @@ IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN
 !*       2.1.2  TKE variable
 !
   IF (HTURB /= 'NONE') THEN
-    PTKEM(:,:,:)   =  FIELD_MODEL(1)%XTKEM(KXOR:KXEND,KYOR:KYEND,:)
     PTKET(:,:,:)   =  FIELD_MODEL(1)%XTKET(KXOR:KXEND,KYOR:KYEND,:)
   ENDIF
 !
 !*       2.1.3  moist variables
 !
   IF (CONF_MODEL(1)%NRR /= 0) THEN
-    PRM  (:,:,:,:) =  FIELD_MODEL(1)%XRM  (KXOR:KXEND,KYOR:KYEND,:,:)
     PRT  (:,:,:,:) =  FIELD_MODEL(1)%XRT  (KXOR:KXEND,KYOR:KYEND,:,:)
     PLSRVM(:,:,:)  =  FIELD_MODEL(1)%XRT  (KXOR:KXEND,KYOR:KYEND,:,1)
-    PHUM (:,:,:)   =  ZHUM (KXOR:KXEND,KYOR:KYEND,:)
     PHUT (:,:,:)   =  ZHUT (KXOR:KXEND,KYOR:KYEND,:)
   ENDIF
 !
 !*       2.1.4  scalar variables
 !
   IF (NSV /= 0) THEN
-    PSVM (:,:,:,:) =  FIELD_MODEL(1)%XSVM (KXOR:KXEND,KYOR:KYEND,:,:)
     PSVT (:,:,:,:) =  FIELD_MODEL(1)%XSVT (KXOR:KXEND,KYOR:KYEND,:,:)
   ENDIF
 !
 !*       2.1.5  secondary prognostic variables
 !
   IF (CONF_MODEL(1)%NRR > 1) THEN
-    PSRCM (:,:,:) =  FIELD_MODEL(1)%XSRCM (KXOR:KXEND,KYOR:KYEND,:)
     PSRCT (:,:,:) =  FIELD_MODEL(1)%XSRCT (KXOR:KXEND,KYOR:KYEND,:)
     PSIGS(:,:,:) =  FIELD_MODEL(1)%XSIGS(KXOR:KXEND,KYOR:KYEND,:)
   ENDIF
@@ -389,12 +355,8 @@ ELSE
 !*       2.2  general case - change of resolution :
 !             -----------------------------------
 !
-!                        Interpolation of the U variable at t-dt and t
+!                        Interpolation of the U variable at t
 !
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,2,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XUM,PUM)
     CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                    XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,2,       &
@@ -404,12 +366,8 @@ ELSE
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,2,       &
                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,LSFIELD_MODEL(1)%XLSUM,PLSUM)
 !
-!                        Interpolation of the V variable at t-dt and t
+!                        Interpolation of the V variable at t
 !
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,3,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XVM,PVM)
     CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                    XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,3,       &
@@ -419,49 +377,22 @@ ELSE
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,3,       &
                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,LSFIELD_MODEL(1)%XLSVM,PLSVM)
 !
-!                        Interpolation of variables at t-dt
+!                        Interpolation of variables at t
 !
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,4,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XWM,PWM)
     CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                    XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,4,       &
                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,LSFIELD_MODEL(1)%XLSWM,PLSWM)
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,ZTHVM,PTHVM)
     CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                    XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,LSFIELD_MODEL(1)%XLSTHM,PLSTHM)
-    IF (HTURB /= 'NONE')                                            &
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XTKEM,PTKEM)
-    IF (CONF_MODEL(1)%NRR>=1)                                                     &
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XRM,PRM)
     IF (CONF_MODEL(1)%NRR>=1)                                                     &
     CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                    XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,LSFIELD_MODEL(1)%XLSRVM,PLSRVM)
     IF (CONF_MODEL(1)%NRR>=1)                                                     &
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,ZHUM,PHUM)
-    IF (NSV>=1)                                                     &
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XSVM,PSVM)
 !
 !                        Interpolation of variables at t
 !
@@ -496,11 +427,6 @@ ELSE
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XSVT,PSVT)
     IF (CONF_MODEL(1)%NRR>1 .AND. HTURB /='NONE')                                &
-    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
-                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
-                   KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
-                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,FIELD_MODEL(1)%XSRCM,PSRCM)
-    IF (CONF_MODEL(1)%NRR>1 .AND. HTURB /='NONE')                                &
     CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
                    XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
                    KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,1,       &
@@ -561,9 +487,6 @@ ELSE
 END IF
 !
 IF (CONF_MODEL(1)%NRR>=3) THEN
-  WHERE  (PRM(:,:,:,3)<1.E-20)
-    PRM(:,:,:,3)=0.
-  END WHERE
   WHERE  (PRT(:,:,:,3)<1.E-20)
     PRT(:,:,:,3)=0.
   END WHERE
@@ -578,21 +501,12 @@ IF (PRESENT(HSONFILE)) THEN
   !
   !variables which always exist
   !
-  YRECFM='UM'             ! U wind component at time t-dt
-  CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-  PUM(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   YRECFM='UT'             ! U wind component at time t
   CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   PUT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
-  YRECFM='VM'             ! V wind component at time t-dt
-  CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-  PVM(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   YRECFM='VT'             ! V wind component at time t
   CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   PVT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
-  YRECFM='WM'             ! W wind component at time t-dt
-  CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-  PWM(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   YRECFM='WT'             ! W wind component at time t
   CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   PWT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
@@ -602,63 +516,42 @@ IF (PRESENT(HSONFILE)) THEN
   IRR=1
   IF (IRR<=CONF_MODEL(1)%NRR) THEN
     GUSERV=.TRUE.
-    YRECFM='RVM'             ! Vapor at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) ZRM1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='RVT'             ! Vapor at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) ZRT1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     IF(IRESP==0) IRR=IRR+1
   END IF
   IF (IRR<=CONF_MODEL(1)%NRR) THEN
-    YRECFM='RCM'             ! Cloud at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) ZRM1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='RCT'             ! Cloud at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) ZRT1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     IF(IRESP==0) IRR=IRR+1
   END IF
   IF (IRR<=CONF_MODEL(1)%NRR) THEN
-    YRECFM='RRM'             ! Rain at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) ZRM1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='RRT'             ! Rain at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) ZRT1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     IF(IRESP==0) IRR=IRR+1
   END IF
   IF (IRR<=CONF_MODEL(1)%NRR) THEN
-    YRECFM='RIM'             ! Ice at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) ZRM1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='RIT'             ! Ice at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) ZRT1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     IF(IRESP==0) IRR=IRR+1
   END IF
   IF (IRR<=CONF_MODEL(1)%NRR) THEN
-    YRECFM='RSM'             ! Snow at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) ZRM1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='RST'             ! Snow at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) ZRT1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     IF(IRESP==0) IRR=IRR+1
   END IF
   IF (IRR<=CONF_MODEL(1)%NRR) THEN
-    YRECFM='RGM'             ! Graupel at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) ZRM1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='RGT'             ! Graupel at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) ZRT1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     IF(IRESP==0) IRR=IRR+1
   END IF
   IF (IRR<=CONF_MODEL(1)%NRR) THEN
-    YRECFM='RHM'             ! Hail at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) ZRM1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='RHT'             ! Hail at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) ZRT1(:,:,:,IRR)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
@@ -668,37 +561,24 @@ IF (PRESENT(HSONFILE)) THEN
   WRITE(ILUOUT,FMT=*) 'SPAWN_FIELD2: spawing with a SON input file'
   WRITE(ILUOUT,FMT=*) '    ',CONF_MODEL(1)%NRR,' moist variables in model1 and model2, ',    &
                              IRR,' moist variables in input SON'
-  YRECFM='THM'               ! Theta at time t-dt
-  CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-  ZTHM1(:,:,:)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   YRECFM='THT'               ! Theta at time t
   CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   ZTHT1(:,:,:)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
-  YRECFM='PABSM'             ! Pressure at time t-dt
-  CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-  ZPABSM1(:,:,:)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   YRECFM='PABST'             ! Pressure at time t
   CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   ZPABST1(:,:,:)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   !
-  CALL COMPUTE_THV_HU(GUSERV,ZRM1,ZTHM1,ZPABSM1,ZTHVM1,ZHUM1)
   CALL COMPUTE_THV_HU(GUSERV,ZRT1,ZTHT1,ZPABST1,ZTHVT1,ZHUT1)
   !
-  PTHVM(KIB2:KIE2,KJB2:KJE2,:) = ZTHVM1(:,:,:)  
   PTHVT(KIB2:KIE2,KJB2:KJE2,:) = ZTHVT1(:,:,:)
   IF (CONF_MODEL(1)%NRR /= 0) THEN
-    PHUM(KIB2:KIE2,KJB2:KJE2,:) = ZHUM1(:,:,:)  
     PHUT(KIB2:KIE2,KJB2:KJE2,:) = ZHUT1(:,:,:)  
-    PRM(KIB2:KIE2,KJB2:KJE2,:,:) = ZRM1(:,:,:,:) 
     PRT(KIB2:KIE2,KJB2:KJE2,:,:) = ZRT1(:,:,:,:)  
   END IF
   !
   ! TKE variables
   !
   IF (HTURB/='NONE') THEN
-    YRECFM='TKEM'             ! Turbulence Kinetic Energy at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF(IRESP==0) PTKEM(KIB2:KIE2,KJB2:KJE2,:)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='TKET'             ! Turbulence Kinetic Energy at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF(IRESP==0) PTKET(KIB2:KIE2,KJB2:KJE2,:)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
@@ -708,110 +588,66 @@ IF (PRESENT(HSONFILE)) THEN
   !
   IF (NSV /= 0) THEN
     DO JSV = 1, NSV_USER      ! Users Scalar Variables
-      WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_C2R2BEG,NSV_C2R2END  ! C2R2 Scalar Variables
-      YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_ELECBEG,NSV_ELECEND  ! ELEC Scalar Variables
-      YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_CHEMBEG,NSV_CHEMEND ! Chemical Scalar Variables
-      YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_CHICBEG,NSV_CHICEND ! Ice phase chemical Scalar Variables
-      YRECFM=TRIM(CICNAMES(JSV-NSV_CHICBEG+1))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(CICNAMES(JSV-NSV_CHICBEG+1))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_AERBEG,NSV_AEREND ! Orilam Scalar Variables
-      YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_DSTBEG,NSV_DSTEND ! Dust Scalar Variables
-      YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_SLTBEG,NSV_SLTEND ! Sea Salt Scalar Variables
-      YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_LGBEG,NSV_LGEND     ! LG Scalar Variables
-      YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'M'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T'
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_PPBEG,NSV_PPEND     ! Passive scalar variables
-      WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
       IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     END DO
     DO JSV = NSV_CSBEG,NSV_CSEND     ! Passive scalar variables
-      WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF(IRESP==0) PSVM(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
       WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
       CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
@@ -827,15 +663,6 @@ IF (PRESENT(HSONFILE)) THEN
   ! Secondary pronostic variables
   !
   IF (HTURB /= 'NONE' .AND. IRR>1) THEN
-    YRECFM='SRCM'                  ! turbulent flux SRC at time t-dt
-    CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF( IRESP /= 0 ) THEN
-      YRECFM='SRC'
-      CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,          &
-                  YCOMMENT,IRESP)
-    END IF
-    IF(IRESP == 0) PSRCM(KIB2:KIE2,KJB2:KJE2,:) =                    &
-                                        ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
     YRECFM='SRCT'                  ! turbulent flux SRC at time t
     CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
     IF( IRESP /= 0 ) THEN
@@ -851,23 +678,13 @@ IF (PRESENT(HSONFILE)) THEN
     IF(IRESP == 0) PSIGS(KIB2:KIE2,KJB2:KJE2,:) =                    &
                                         ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   END IF
-  
-  IF (LUV_FLX .OR. LTH_FLX) THEN      ! MT adding for ADVFRC
-     WRITE(ILUOUT,FMT=*) '****************************** WARNING ****************************'
-     WRITE(ILUOUT,FMT=*) 'SPAWN_FIELD2: spawning with a SON input file not forseen for EDDY_FLUX'
-     WRITE(ILUOUT,FMT=*) '              Do like the lecture in read_field.f90 if necessary'
-     WRITE(ILUOUT,FMT=*) '****************************** WARNING ****************************'
-  ENDIF
-
 END IF
 !
 !*       2.2.4  secondary prognostic variables correction
 !
-IF (CONF_MODEL(1)%NRR > 1 .AND. HTURB /= 'NONE')  PSRCM(:,:,:) = MIN( 1.0, MAX( 0.0, PSRCM(:,:,:)) )
 IF (CONF_MODEL(1)%NRR > 1 .AND. HTURB /= 'NONE')  PSRCT(:,:,:) = MIN( 1.0, MAX( 0.0, PSRCT(:,:,:)) )
 !
 IF ( CONF_MODEL(1)%NRR == 0 ) THEN
-  PHUM (:,:,:)= 0.
   PHUT (:,:,:)= 0.
 END IF
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index b7fb31a26..21c3c59d0 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -310,11 +310,8 @@ INTEGER             :: JRR            ! loop index for moist variables
 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZZS_LS ! large scale interpolated zs
 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZZSMT_LS ! large scale interpolated smooth zs
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZZZ_LS ! large scale interpolated z
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTHVM  ! virtual potential temperature
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTHVT  ! virtual potential temperature
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZHUM   ! relative humidity
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZHUT   ! relative humidity
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSUMRM ! sum of water ratios
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSUMRT ! sum of water ratios
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZRHOD  ! dry density
 !
@@ -560,12 +557,6 @@ CDCONV   = 'NONE'                 ! deep convection will have to be restarted
 CSCONV   = 'NONE'                 ! shallow convection will have to be restarted
 !
 !
-IF ( CSTORAGE_TYPE == 'MT' ) THEN
-  CCONF = 'RESTA'
-ELSE
-  CCONF = 'START'
-END IF
-!
 !*       3.5   model 2 configuration in MODD_NESTING to be written
 !*                on the FM-file to allow nesting or coupling 
 !
@@ -627,34 +618,23 @@ ALLOCATE(ZJ(IIU,IJU,IKU))
 !
 !*       4.2   Prognostic (and diagnostic) variables (module MODD_FIELD2) :
 !
-ALLOCATE(XUM(IIU,IJU,IKU))
 ALLOCATE(XUT(IIU,IJU,IKU))
-ALLOCATE(XVM(IIU,IJU,IKU))
 ALLOCATE(XVT(IIU,IJU,IKU))
-ALLOCATE(XWM(IIU,IJU,IKU))
 ALLOCATE(XWT(IIU,IJU,IKU))
-ALLOCATE(XTHM(IIU,IJU,IKU))
 ALLOCATE(XTHT(IIU,IJU,IKU))
 IF (CTURB/='NONE') THEN
-  ALLOCATE(XTKEM(IIU,IJU,IKU))
   ALLOCATE(XTKET(IIU,IJU,IKU))
 ELSE
-  ALLOCATE(XTKEM(0,0,0))
   ALLOCATE(XTKET(0,0,0))
 END IF
-ALLOCATE(XPABSM(IIU,IJU,IKU))
 ALLOCATE(XPABST(IIU,IJU,IKU))
-ALLOCATE(XRM(IIU,IJU,IKU,NRR))
 ALLOCATE(XRT(IIU,IJU,IKU,NRR))
-ALLOCATE(XSVM(IIU,IJU,IKU,NSV))
 ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
 !
 IF (CTURB /= 'NONE' .AND. NRR>1) THEN
-  ALLOCATE(XSRCM(IIU,IJU,IKU))
   ALLOCATE(XSRCT(IIU,IJU,IKU))
   ALLOCATE(XSIGS(IIU,IJU,IKU))
 ELSE
-  ALLOCATE(XSRCM(0,0,0))
   ALLOCATE(XSRCT(0,0,0))
   ALLOCATE(XSIGS(0,0,0))
 END IF
@@ -970,24 +950,20 @@ ZTIME1 = ZTIME2
 !
 !* horizontal interpolation
 !
-ALLOCATE(ZTHVM(IIU,IJU,IKU))
 ALLOCATE(ZTHVT(IIU,IJU,IKU))
-ALLOCATE(ZHUM(IIU,IJU,IKU))
 ALLOCATE(ZHUT(IIU,IJU,IKU))
 !
 IF (GNOSON) THEN
   CALL SPAWN_FIELD2 (NXOR,NYOR,NXEND,NYEND,NDXRATIO,NDYRATIO,CTURB,            &
-                 XUM,XVM,XWM,ZTHVM,XRM,ZHUM,XTKEM,XSVM,                        &
                  XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,XATC,                   &
-                 XSRCM,XSRCT,XSIGS,                                            &
+                 XSRCT,XSIGS,                                                  &
                  XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
                  XDTHFRC,XDRVFRC,XTHREL,XRVREL,                                &
                  XVU_FLUX_M,XVTH_FLUX_M,XWTH_FLUX_M            )
 ELSE
   CALL SPAWN_FIELD2 (NXOR,NYOR,NXEND,NYEND,NDXRATIO,NDYRATIO,CTURB,            &
-                 XUM,XVM,XWM,ZTHVM,XRM,ZHUM,XTKEM,XSVM,                        &
                  XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,XATC,                   &
-                 XSRCM,XSRCT,XSIGS,                                            &
+                 XSRCT,XSIGS,                                                  &
                  XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
                  XDTHFRC,XDRVFRC,XTHREL,XRVREL,                                &                 
                  XVU_FLUX_M, XVTH_FLUX_M,XWTH_FLUX_M,                          &
@@ -998,11 +974,7 @@ END IF
 !
 !* correction of positivity
 !
-IF (SIZE(XRM,1)>0)         XRM      = MAX(0.,XRM)
-IF (SIZE(ZHUM,1)>0)        ZHUM     = MIN(MAX(ZHUM,0.),100.)
-IF (SIZE(XTKEM,1)>0)       XTKEM    = MAX(XTKEMIN,XTKEM)
 IF (SIZE(XLSRVM,1)>0)      XLSRVM   = MAX(0.,XLSRVM)
-!
 IF (SIZE(XRT,1)>0)         XRT      = MAX(0.,XRT)
 IF (SIZE(ZHUT,1)>0)        ZHUT     = MIN(MAX(ZHUT,0.),100.)
 IF (SIZE(XTKET,1)>0)       XTKET    = MAX(XTKEMIN,XTKET)
@@ -1016,11 +988,10 @@ ZTIME1  = ZTIME2
 !* vertical interpolation
 !
 IF (ANY(XZS(:,:)>0.) .AND. (NDXRATIO/=1 .OR. NDYRATIO/=1) )  THEN
-  CALL VER_INTERP_FIELD (CTURB,NRR,NSV,ZZZ_LS,XZZ,                               &
-                  XUM,XVM,XWM,ZTHVM,XRM,ZHUM,XTKEM,XSVM,                          &
-                  XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,                          &
-                  XSRCM,XSRCT,XSIGS,                                              &
-                  XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM                                 )
+  CALL VER_INTERP_FIELD (CTURB,NRR,NSV,ZZZ_LS,XZZ,                             &
+               XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,                          &
+               XSRCT,XSIGS,                                                    &
+               XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM                                 )
 ENDIF
 !
 CALL SECOND_MNH(ZTIME2)
@@ -1032,13 +1003,10 @@ ZVER = ZTIME2 - ZTIME1
 ZTIME1 = ZTIME2
 !
 CALL SPAWN_PRESSURE2(NXOR,NYOR,NXEND,NYEND,NDXRATIO,NDYRATIO,   &
-                     ZZZ_LS,XZZ,ZTHVM,ZTHVT,                    &
-                     XPABSM,XPABST                              )
+                     ZZZ_LS,XZZ,ZTHVT,XPABST                    )
 !
 IF (.NOT.GNOSON) THEN
   ALLOCATE(ZWORK3D(IIUSON,IJUSON,IKU))
-  CALL FMREAD(HSONFILE,'PABSM',CLUOUT,'XY',ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
-  XPABSM(IIB2:IIE2,IJB2:IJE2,:) = ZWORK3D(IIB1:IIE1,IJB1:IJE1,:)
   CALL FMREAD(HSONFILE,'PABST',CLUOUT,'XY',ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   XPABST(IIB2:IIE2,IJB2:IJE2,:) = ZWORK3D(IIB1:IIE1,IJB1:IJE1,:)
   DEALLOCATE(ZWORK3D)
@@ -1046,15 +1014,15 @@ END IF
 !
 IF (NVERB>=2) THEN
   IK4000 = COUNT(XZHAT(:)<4000.)
-  IIJ = MAXLOC(        SUM(ZHUM(IIB:IIE,IJB:IJE,JPVEXT+1:IK4000),3),                  &
-                MASK=COUNT(ZHUM(IIB:IIE,IJB:IJE,JPVEXT+1:IKE)                         &
-                           >=MAXVAL(ZHUM(IIB:IIE,IJB:IJE,JPVEXT+1:IKE))-0.01,DIM=3 )  &
+  IIJ = MAXLOC(        SUM(ZHUT(IIB:IIE,IJB:IJE,JPVEXT+1:IK4000),3),                  &
+                MASK=COUNT(ZHUT(IIB:IIE,IJB:IJE,JPVEXT+1:IKE)                         &
+                           >=MAXVAL(ZHUT(IIB:IIE,IJB:IJE,JPVEXT+1:IKE))-0.01,DIM=3 )  &
                       >=1                                                   )           &
         + JPHEXT
   WRITE(ILUOUT,*) ' '
   WRITE(ILUOUT,*) 'humidity     (I=',IIJ(1),';J=',IIJ(2),')'
   DO JK=IKB,IKE
-    WRITE(ILUOUT,'(F6.2,2H %)') ZHUM(IIJ(1),IIJ(2),JK)
+    WRITE(ILUOUT,'(F6.2,2H %)') ZHUT(IIJ(1),IIJ(2),JK)
   END DO
 END IF
 !*       5.8    Retrieve model thermodynamical variables :
@@ -1062,31 +1030,20 @@ END IF
 ALLOCATE(ZSUMRT(IIU,IJU,IKU))
 ZSUMRT(:,:,:) = 0.
 IF (NRR==0) THEN
-  XTHM(:,:,:) = ZTHVM(:,:,:)
   XTHT(:,:,:) = ZTHVT(:,:,:)
 ELSE
   IF (NDXRATIO/=1 .OR. NDYRATIO/=1) THEN
-    XRM(:,:,:,1) = SM_PMR_HU(CLUOUT,XPABSM(:,:,:),                          &
-                             ZTHVM(:,:,:)*(XPABSM(:,:,:)/XP00)**(XRD/XCPD), &
-                             ZHUM(:,:,:),XRM(:,:,:,:),KITERMAX=100          )
     XRT(:,:,:,1) = SM_PMR_HU(CLUOUT,XPABST(:,:,:),                          &
                              ZTHVT(:,:,:)*(XPABST(:,:,:)/XP00)**(XRD/XCPD), &
                              ZHUT(:,:,:),XRT(:,:,:,:),KITERMAX=100          )
   END IF
   !
-  ALLOCATE(ZSUMRM(IIU,IJU,IKU))
-  ZSUMRM(:,:,:) = 0.
   DO JRR=1,NRR
-    ZSUMRM(:,:,:) = ZSUMRM(:,:,:) + XRM(:,:,:,JRR)
     ZSUMRT(:,:,:) = ZSUMRT(:,:,:) + XRT(:,:,:,JRR)
   END DO
-  XTHM(:,:,:) = ZTHVM(:,:,:)/(1.+XRV/XRD*XRM(:,:,:,1))*(1.+ZSUMRM(:,:,:))
   XTHT(:,:,:) = ZTHVT(:,:,:)/(1.+XRV/XRD*XRT(:,:,:,1))*(1.+ZSUMRT(:,:,:))
-  DEALLOCATE (ZSUMRM)
 END IF
 !
-DEALLOCATE (ZTHVM)
-DEALLOCATE (ZHUM)
 DEALLOCATE (ZHUT)
 !
 CALL SECOND_MNH(ZTIME2)
@@ -1099,52 +1056,52 @@ ZPRESSURE2=ZTIME2-ZTIME1
 !
 !
 !
-XLBXUM(1:NRIMX+1,:,:)         = XUM(IIB:IIB+NRIMX,:,:)
-XLBXUM(NRIMX+2:2*NRIMX+2,:,:) = XUM(IIE+1-NRIMX:IIE+1,:,:)
+XLBXUM(1:NRIMX+1,:,:)         = XUT(IIB:IIB+NRIMX,:,:)
+XLBXUM(NRIMX+2:2*NRIMX+2,:,:) = XUT(IIE+1-NRIMX:IIE+1,:,:)
 IF( .NOT. L2D ) THEN
-  XLBYUM(:,1:NRIMY+1,:)         = XUM(:,IJB-1:IJB-1+NRIMY,:)
-  XLBYUM(:,NRIMY+2:2*NRIMY+2,:) = XUM(:,IJE+1-NRIMY:IJE+1,:)
+  XLBYUM(:,1:NRIMY+1,:)         = XUT(:,IJB-1:IJB-1+NRIMY,:)
+  XLBYUM(:,NRIMY+2:2*NRIMY+2,:) = XUT(:,IJE+1-NRIMY:IJE+1,:)
 END IF
 !
 !*       5.9.2  V variable
 !
 !
-XLBXVM(1:NRIMX+1,:,:)         = XVM(IIB-1:IIB-1+NRIMX,:,:)
-XLBXVM(NRIMX+2:2*NRIMX+2,:,:) = XVM(IIE+1-NRIMX:IIE+1,:,:)
+XLBXVM(1:NRIMX+1,:,:)         = XVT(IIB-1:IIB-1+NRIMX,:,:)
+XLBXVM(NRIMX+2:2*NRIMX+2,:,:) = XVT(IIE+1-NRIMX:IIE+1,:,:)
 IF( .NOT. L2D ) THEN
-  XLBYVM(:,1:NRIMY+1,:)         = XVM(:,IJB:IJB+NRIMY,:)
-  XLBYVM(:,NRIMY+2:2*NRIMY+2,:) = XVM(:,IJE+1-NRIMY:IJE+1,:)
+  XLBYVM(:,1:NRIMY+1,:)         = XVT(:,IJB:IJB+NRIMY,:)
+  XLBYVM(:,NRIMY+2:2*NRIMY+2,:) = XVT(:,IJE+1-NRIMY:IJE+1,:)
 END IF
 !
 !*       5.9.3  W variable
 !
 !
-XLBXWM(1:NRIMX+1,:,:)         = XWM(IIB-1:IIB-1+NRIMX,:,:)
-XLBXWM(NRIMX+2:2*NRIMX+2,:,:) = XWM(IIE+1-NRIMX:IIE+1,:,:)
+XLBXWM(1:NRIMX+1,:,:)         = XWT(IIB-1:IIB-1+NRIMX,:,:)
+XLBXWM(NRIMX+2:2*NRIMX+2,:,:) = XWT(IIE+1-NRIMX:IIE+1,:,:)
 IF( .NOT. L2D ) THEN
-  XLBYWM(:,1:NRIMY+1,:)         = XWM(:,IJB-1:IJB-1+NRIMY,:)
-  XLBYWM(:,NRIMY+2:2*NRIMY+2,:) = XWM(:,IJE+1-NRIMY:IJE+1,:)
+  XLBYWM(:,1:NRIMY+1,:)         = XWT(:,IJB-1:IJB-1+NRIMY,:)
+  XLBYWM(:,NRIMY+2:2*NRIMY+2,:) = XWT(:,IJE+1-NRIMY:IJE+1,:)
 END IF
 !
 !*       5.9.4  TH variable
 !
 !
-XLBXTHM(1:NRIMX+1,:,:)         = XTHM(IIB-1:IIB-1+NRIMX,:,:)
-XLBXTHM(NRIMX+2:2*NRIMX+2,:,:) = XTHM(IIE+1-NRIMX:IIE+1,:,:)
+XLBXTHM(1:NRIMX+1,:,:)         = XTHT(IIB-1:IIB-1+NRIMX,:,:)
+XLBXTHM(NRIMX+2:2*NRIMX+2,:,:) = XTHT(IIE+1-NRIMX:IIE+1,:,:)
 IF( .NOT. L2D ) THEN
-  XLBYTHM(:,1:NRIMY+1,:)         = XTHM(:,IJB-1:IJB-1+NRIMY,:)
-  XLBYTHM(:,NRIMY+2:2*NRIMY+2,:) = XTHM(:,IJE+1-NRIMY:IJE+1,:)
+  XLBYTHM(:,1:NRIMY+1,:)         = XTHT(:,IJB-1:IJB-1+NRIMY,:)
+  XLBYTHM(:,NRIMY+2:2*NRIMY+2,:) = XTHT(:,IJE+1-NRIMY:IJE+1,:)
 END IF
 !
 !*       5.9.5  TKE variable
 !
 !
 IF (HTURB /= 'NONE') THEN
-  XLBXTKEM(1:NRIMX+1,:,:)         = XTKEM(IIB-1:IIB-1+NRIMX,:,:)
-  XLBXTKEM(NRIMX+2:2*NRIMX+2,:,:) = XTKEM(IIE+1-NRIMX:IIE+1,:,:)
+  XLBXTKEM(1:NRIMX+1,:,:)         = XTKET(IIB-1:IIB-1+NRIMX,:,:)
+  XLBXTKEM(NRIMX+2:2*NRIMX+2,:,:) = XTKET(IIE+1-NRIMX:IIE+1,:,:)
   IF( .NOT. L2D ) THEN
-    XLBYTKEM(:,1:NRIMY+1,:)         = XTKEM(:,IJB-1:IJB-1+NRIMY,:)
-    XLBYTKEM(:,NRIMY+2:2*NRIMY+2,:) = XTKEM(:,IJE+1-NRIMY:IJE+1,:)
+    XLBYTKEM(:,1:NRIMY+1,:)         = XTKET(:,IJB-1:IJB-1+NRIMY,:)
+    XLBYTKEM(:,NRIMY+2:2*NRIMY+2,:) = XTKET(:,IJE+1-NRIMY:IJE+1,:)
   END IF
 ENDIF
 ! 
@@ -1153,11 +1110,11 @@ ENDIF
 !
 IF (NRR >= 1) THEN
   DO JRR =1,NRR  
-    XLBXRM(1:NRIMX+1,:,:,JRR)         = XRM(IIB-1:IIB-1+NRIMX,:,:,JRR)
-    XLBXRM(NRIMX+2:2*NRIMX+2,:,:,JRR) = XRM(IIE+1-NRIMX:IIE+1,:,:,JRR)
+    XLBXRM(1:NRIMX+1,:,:,JRR)         = XRT(IIB-1:IIB-1+NRIMX,:,:,JRR)
+    XLBXRM(NRIMX+2:2*NRIMX+2,:,:,JRR) = XRT(IIE+1-NRIMX:IIE+1,:,:,JRR)
     IF( .NOT. L2D ) THEN
-      XLBYRM(:,1:NRIMY+1,:,JRR)         = XRM(:,IJB-1:IJB-1+NRIMY,:,JRR)
-      XLBYRM(:,NRIMY+2:2*NRIMY+2,:,JRR) = XRM(:,IJE+1-NRIMY:IJE+1,:,JRR)
+      XLBYRM(:,1:NRIMY+1,:,JRR)         = XRT(:,IJB-1:IJB-1+NRIMY,:,JRR)
+      XLBYRM(:,NRIMY+2:2*NRIMY+2,:,JRR) = XRT(:,IJE+1-NRIMY:IJE+1,:,JRR)
     END IF
   END DO
 END IF
@@ -1166,11 +1123,11 @@ END IF
 !
 IF (NSV /= 0) THEN
   DO JSV = 1, NSV
-    XLBXSVM(1:NRIMX+1,:,:,JSV)         = XSVM(IIB-1:IIB-1+NRIMX,:,:,JSV)
-    XLBXSVM(NRIMX+2:2*NRIMX+2,:,:,JSV) = XSVM(IIE+1-NRIMX:IIE+1,:,:,JSV)
+    XLBXSVM(1:NRIMX+1,:,:,JSV)         = XSVT(IIB-1:IIB-1+NRIMX,:,:,JSV)
+    XLBXSVM(NRIMX+2:2*NRIMX+2,:,:,JSV) = XSVT(IIE+1-NRIMX:IIE+1,:,:,JSV)
     IF( .NOT. L2D ) THEN
-      XLBYSVM(:,1:NRIMY+1,:,JSV)         = XSVM(:,IJB-1:IJB-1+NRIMY,:,JSV)
-      XLBYSVM(:,NRIMY+2:2*NRIMY+2,:,JSV) = XSVM(:,IJE+1-NRIMY:IJE+1,:,JSV)
+      XLBYSVM(:,1:NRIMY+1,:,JSV)         = XSVT(:,IJB-1:IJB-1+NRIMY,:,JSV)
+      XLBYSVM(:,NRIMY+2:2*NRIMY+2,:,JSV) = XSVT(:,IJE+1-NRIMY:IJE+1,:,JSV)
     END IF
   END DO
 ENDIF
@@ -1224,8 +1181,7 @@ ZMISC = ZMISC + ZTIME2 - ZTIME1
 CALL SECOND_MNH(ZTIME1)
 !
 IF (.NOT. L1D) THEN
-  CALL ANEL_BALANCE_n('M')                        ! for wind field at t-dt
-  CALL ANEL_BALANCE_n('T')                        ! for wind field at t
+  CALL ANEL_BALANCE_n
   CALL BOUNDARIES (                                                 &
             0.,CLBCX,CLBCY,NRR,NSV,1,                               &
             XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
@@ -1233,8 +1189,7 @@ IF (.NOT. L1D) THEN
             XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
             XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
             XRHODJ,                                                 &
-            XUM, XVM, XWM, XTHM, XTKEM, XRM, XSVM,XSRCM,            &
-            XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT                   )
+            XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 END IF
 !
 CALL SECOND_MNH(ZTIME2)
diff --git a/src/MNH/spawn_pressure2.f90 b/src/MNH/spawn_pressure2.f90
index 48bc661aa..48e8a2e62 100644
--- a/src/MNH/spawn_pressure2.f90
+++ b/src/MNH/spawn_pressure2.f90
@@ -11,8 +11,7 @@ MODULE MODI_SPAWN_PRESSURE2
 INTERFACE
 !
       SUBROUTINE SPAWN_PRESSURE2(KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,   &
-                                PZZ_LS,PZZ,PTHVM,PTHVT,                     &
-                                PPABSM,PPABST                               )
+                                PZZ_LS,PZZ,PTHVT, PPABST                    )
 !
 INTEGER,   INTENT(IN)  :: KXOR,KXEND !  horizontal position (i,j) of the ORigin and END
 INTEGER,   INTENT(IN)  :: KYOR,KYEND ! of the model 2 domain, relative to model 1
@@ -21,12 +20,8 @@ INTEGER,   INTENT(IN)  :: KDYRATIO   ! between model 2 and model 1
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PZZ_LS     ! purely interpolated alt.
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PZZ        ! model 2 altitudes
 !                                                  !   model 2
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTHVM      ! virt. pot. temp. at t-dt
-!
-!                                                  !   model 2
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTHVT      ! virt. pot. temp. at t
 !
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PPABSM    ! model 2 pressure a t-dt
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PPABST    ! model 2 pressure a t
 !
 END SUBROUTINE SPAWN_PRESSURE2
@@ -37,8 +32,7 @@ END MODULE MODI_SPAWN_PRESSURE2
 !
 !     #######################################################################
       SUBROUTINE SPAWN_PRESSURE2(KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,   &
-                                PZZ_LS,PZZ,PTHVM,PTHVT,                     &
-                                PPABSM,PPABST                               )
+                                PZZ_LS,PZZ,PTHVT, PPABST                    )
 !     #######################################################################
 !
 !!****  *SPAWN_PRESSURE2 * - subroutine generating the model 2 pressure
@@ -145,12 +139,8 @@ INTEGER,   INTENT(IN)  :: KDYRATIO   ! between model 2 and model 1
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PZZ_LS     ! purely interpolated alt.
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PZZ        ! model 2 altitudes
 !                                                  !   model 2
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTHVM      ! virt. pot. temp. at t-dt
-!
-!                                                  !   model 2
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTHVT      ! virt. pot. temp. at t
 !
-REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PPABSM    ! model 2 pressure a t-dt
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PPABST    ! model 2 pressure a t
 !
 !*       0.2    Declarations of local variables
@@ -192,8 +182,8 @@ INTEGER  :: IMI
 IMI = GET_CURRENT_MODEL_INDEX()
 CALL GOTO_MODEL(2)
 !
-IIU = SIZE(PTHVM,1)
-IJU = SIZE(PTHVM,2)
+IIU = SIZE(PTHVT,1)
+IJU = SIZE(PTHVT,2)
 IIU1= SIZE(FIELD_MODEL(1)%XTHT,1)
 IJU1= SIZE(FIELD_MODEL(1)%XTHT,2)
 IKU=SIZE(PZZ,3)
@@ -207,7 +197,6 @@ IKE=IKU-JPVEXT
 !
 IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN
 !
-  PPABSM  (:,:,:)   =  FIELD_MODEL(1)%XPABSM  (KXOR:KXEND,KYOR:KYEND,:)
   PPABST  (:,:,:)   =  FIELD_MODEL(1)%XPABST  (KXOR:KXEND,KYOR:KYEND,:)
 !
   CALL GOTO_MODEL(IMI) 
@@ -220,42 +209,24 @@ END IF
 !*       2.    GENERAL CASE: CHANGE OF RESOLUTION
 !              ----------------------------------
 !
-DO JINSTANT=1,2
-!
 !*       2.1      Model 1 Pi and thetav
 !                 ---------------------
 !
   ALLOCATE(ZEXN1(IIU1,IJU1,IKU))
   ALLOCATE(ZTHV1(IIU1,IJU1,IKU))
-  IF (JINSTANT==1) THEN
-    ALLOCATE(ZSUMR(IIU1,IJU1,IKU))
-    ZSUMR(:,:,:) = 0.
-    DO JRR=1,CONF_MODEL(1)%NRR
-      ZSUMR(:,:,:) = ZSUMR(:,:,:) + FIELD_MODEL(1)%XRM(:,:,:,JRR)
-    END DO
-    !
-    ZEXN1(:,:,:)=(FIELD_MODEL(1)%XPABSM(:,:,:)/XP00)**(XRD/XCPD)
-    IF (CONF_MODEL(1)%LUSERV) THEN
-      ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHM(:,:,:)*(1.+XRV/XRD*FIELD_MODEL(1)%XRM(:,:,:,1))/(1.+ZSUMR)
-    ELSE
-      ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHM(:,:,:)
-    END IF
-    DEALLOCATE(ZSUMR)
-  ELSE IF (JINSTANT==2) THEN
-    ALLOCATE(ZSUMR(IIU1,IJU1,IKU))
-    ZSUMR(:,:,:) = 0.
-    DO JRR=1,CONF_MODEL(1)%NRR
-      ZSUMR(:,:,:) = ZSUMR(:,:,:) + FIELD_MODEL(1)%XRT(:,:,:,JRR)
-    END DO
+  ALLOCATE(ZSUMR(IIU1,IJU1,IKU))
+  ZSUMR(:,:,:) = 0.
+  DO JRR=1,CONF_MODEL(1)%NRR
+    ZSUMR(:,:,:) = ZSUMR(:,:,:) + FIELD_MODEL(1)%XRT(:,:,:,JRR)
+  END DO
     !
-    ZEXN1(:,:,:)=(FIELD_MODEL(1)%XPABST(:,:,:)/XP00)**(XRD/XCPD)
-    IF (CONF_MODEL(1)%LUSERV) THEN
-      ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHT(:,:,:)*(1.+XRV/XRD*FIELD_MODEL(1)%XRT(:,:,:,1))/(1.+ZSUMR)
-    ELSE
-      ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHT(:,:,:)
-    END IF
-    DEALLOCATE(ZSUMR)
+  ZEXN1(:,:,:)=(FIELD_MODEL(1)%XPABST(:,:,:)/XP00)**(XRD/XCPD)
+  IF (CONF_MODEL(1)%LUSERV) THEN
+    ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHT(:,:,:)*(1.+XRV/XRD*FIELD_MODEL(1)%XRT(:,:,:,1))/(1.+ZSUMR)
+  ELSE
+    ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHT(:,:,:)
   END IF
+  DEALLOCATE(ZSUMR)
 !
 !*       2.2      Model 1 top Exner function (guess)
 !                 --------------------------
@@ -330,11 +301,7 @@ DO JINSTANT=1,2
 !                 --------------
 !
   ALLOCATE(ZTHV2(IIU,IJU,IKU))
-  IF (JINSTANT==1) THEN
-    ZTHV2(:,:,:)=PTHVM(:,:,:)
-  ELSE IF (JINSTANT==2) THEN
-    ZTHV2(:,:,:)=PTHVT(:,:,:)
-  END IF
+  ZTHV2(:,:,:)=PTHVT(:,:,:)
 !
 !*       2.7      Model 2 hydrostatic pressure
 !                 ----------------------------
@@ -350,16 +317,11 @@ DO JINSTANT=1,2
 !*       2.8      Model 2 pressure
 !                 ----------------
 !
-  IF (JINSTANT==1) THEN
-    PPABSM(:,:,:)=XP00*(ZEXNMHEXN2(:,:,:)+ZHYDEXN2(:,:,:))**(XCPD/XRD)
-  ELSE IF (JINSTANT==2) THEN
-    PPABST(:,:,:)=XP00*(ZEXNMHEXN2(:,:,:)+ZHYDEXN2(:,:,:))**(XCPD/XRD)
-  END IF
+  PPABST(:,:,:)=XP00*(ZEXNMHEXN2(:,:,:)+ZHYDEXN2(:,:,:))**(XCPD/XRD)
 !
   DEALLOCATE(ZEXNMHEXN2)
   DEALLOCATE(ZHYDEXN2)
 !
-END DO
 !-------------------------------------------------------------------------------
 !
 CALL GOTO_MODEL(IMI)
diff --git a/src/MNH/spawn_surf2_rain.f90 b/src/MNH/spawn_surf2_rain.f90
index e01534f17..23254eb5d 100644
--- a/src/MNH/spawn_surf2_rain.f90
+++ b/src/MNH/spawn_surf2_rain.f90
@@ -109,8 +109,9 @@ END MODULE MODI_SPAWN_SURF2_RAIN
 USE MODD_LBC_n,   ONLY : LBC_MODEL
 USE MODD_PRECIP_n,ONLY : PRECIP_MODEL
 USE MODD_BIKHARDT_n
-USE MODD_LUNIT_n, ONLY:CLUOUT
+USE MODD_LUNIT_n, ONLY : CLUOUT
 USE MODD_FIELD_n, ONLY : XTHT
+USE MODD_CONF,    ONLY : CCONF,CPROGRAM
 !
 USE MODI_BIKHARDT         ! Interface modules
 !
@@ -361,9 +362,10 @@ IF (PRESENT(HSONFILE)) THEN
     ALLOCATE(ZACPRH1(0,0))
     YGETRHT='SKIP'
   END IF
-  CALL READ_PRECIP_FIELD(HSONFILE,CLUOUT,YGETRCT,YGETRRT,YGETRST,YGETRGT,YGETRHT, &
+  CALL READ_PRECIP_FIELD(HSONFILE,CLUOUT,CPROGRAM,CCONF,                          &
+                         YGETRCT,YGETRRT,YGETRST,YGETRGT,YGETRHT,                 &
                          ZINPRC1,ZACPRC1,ZINPRR1,ZINPRR3D1,ZEVAP3D1,              &
-                         ZACPRR1,ZINPRS1,ZACPRS1,         &
+                         ZACPRR1,ZINPRS1,ZACPRS1,                                 &
                          ZINPRG1,ZACPRG1,ZINPRH1,ZACPRH1                          )
   IF (SIZE(PRECIP_MODEL(1)%XINPRC) /= 0 ) THEN
     PINPRC(KIB2:KIE2,KJB2:KJE2) = ZINPRC1(KIB1:KIE1,KJB1:KJE1)
diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90
index e20b1b71d..5e8e1b470 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -114,7 +114,6 @@ USE MODI_VERSION
 USE MODI_INIT_MNH
 USE MODI_DEALLOC_SURFEX
 !
-!
 IMPLICIT NONE
 !
 !*       0.3    Local variables
@@ -178,7 +177,7 @@ IF (GFOUND) READ(UNIT=ILUSPA,NML=NAM_SPAWN_SURF)
 CALL UPDATE_MODD_FROM_NMLVAR
 CALL POSNAM(ILUSPA,'NAM_BLANK',GFOUND)
 IF (GFOUND) READ(UNIT=ILUSPA,NML=NAM_BLANK)
-!!$CALL CLOSE_ll(YEXSPA)
+!!CALL CLOSE_ll(YEXSPA)
 !
 !-------------------------------------------------------------------------------
 !
@@ -192,8 +191,7 @@ CALL BOUNDARIES                                                     &
             XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,   &
             XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS,   &
             XRHODJ,                                                 &
-            XUM, XVM, XWM, XTHM, XTKEM, XRM, XSVM,XSRCM,            &
-            XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT                   )
+            XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/thlrt_from_thrvrcri.f90 b/src/MNH/thlrt_from_thrvrcri.f90
new file mode 100644
index 000000000..fe0b35b7c
--- /dev/null
+++ b/src/MNH/thlrt_from_thrvrcri.f90
@@ -0,0 +1,107 @@
+!    ######################################
+     MODULE MODI_THLRT_FROM_THRVRCRI
+!    ######################################
+!
+INTERFACE
+      
+!     #################################################################
+      SUBROUTINE THLRT_FROM_THRVRCRI( KRR,                             &
+                                       PTH, PR, PLVOCPEXN,PLSOCPEXN,   &
+                                       PTHL, PRT                       )
+!     #################################################################
+
+!*               1.1  Declaration of Arguments
+!
+
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   :: PTH      ! theta
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PR       ! water species
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLVOCPEXN,PLSOCPEXN     ! L/(cp*Pi)
+
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PTHL, PRT
+!
+END SUBROUTINE THLRT_FROM_THRVRCRI
+
+END INTERFACE
+!
+END MODULE MODI_THLRT_FROM_THRVRCRI
+
+                                       
+!     #################################################################
+      SUBROUTINE THLRT_FROM_THRVRCRI( KRR,                             &
+                                       PTH, PR, PLVOCPEXN,PLSOCPEXN,   &
+                                       PTHL, PRT                       )
+!     #################################################################
+!
+!!
+!!****  *THLRT_FROM_THRVRCRI* - 
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!    
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!     
+!!     V. Masson     *CNRM*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!     Original   06/2011
+!!
+!! --------------------------------------------------------------------------
+!       
+!*      0. DECLARATIONS
+!          ------------
+!
+IMPLICIT NONE
+!
+!
+!*      0.1  declarations of arguments
+!
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   :: PTH      ! theta
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PR       ! water species
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLVOCPEXN,PLSOCPEXN     ! L/(cp*Pi)
+
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PTHL, PRT
+!
+!-------------------------------------------------------------------------------
+!
+!
+IF ( KRR == 0 ) THEN
+  PTHL(:,:,:) = PTH(:,:,:)
+  PRT (:,:,:) = 0.
+ELSE IF (KRR==1) THEN
+  PTHL(:,:,:) = PTH(:,:,:)
+  PRT (:,:,:) = PR (:,:,:,1)
+ELSE IF ( KRR>= 4 ) THEN
+    ! Rnp at t
+    PRT(:,:,:)  = PR(:,:,:,1)  + PR(:,:,:,2)  + PR(:,:,:,4)
+    ! Theta_l at t
+    PTHL(:,:,:)  = PTH(:,:,:)  - PLVOCPEXN(:,:,:) * PR(:,:,:,2) &
+                               - PLSOCPEXN(:,:,:) * PR(:,:,:,4)
+ELSE IF ( KRR>= 2 ) THEN
+    ! Rnp at t
+    PRT(:,:,:)  = PR(:,:,:,1)  + PR(:,:,:,2)
+    ! Theta_l at t
+    PTHL(:,:,:)  = PTH(:,:,:)  - PLVOCPEXN(:,:,:) * PR(:,:,:,2)
+END IF
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE THLRT_FROM_THRVRCRI
diff --git a/src/MNH/thrvrcri_from_thlrtrcri.f90 b/src/MNH/thrvrcri_from_thlrtrcri.f90
new file mode 100644
index 000000000..ce08f33ff
--- /dev/null
+++ b/src/MNH/thrvrcri_from_thlrtrcri.f90
@@ -0,0 +1,108 @@
+!    ######################################
+     MODULE MODI_THRVRCRI_FROM_THLRTRCRI
+!    ######################################
+!
+INTERFACE
+      
+!     #################################################################
+      SUBROUTINE THRVRCRI_FROM_THLRTRCRI( KRR,                         &
+                                       PTHL, PR, PLVOCPEXN,PLSOCPEXN,  &
+                                       PTH, PRV                        )
+!     #################################################################
+
+!*               1.1  Declaration of Arguments
+!
+
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   :: PTHL     ! theta
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PR       ! water species
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLVOCPEXN,PLSOCPEXN     ! L/(cp*Pi)
+
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PTH, PRV
+!
+END SUBROUTINE THRVRCRI_FROM_THLRTRCRI
+
+END INTERFACE
+!
+END MODULE MODI_THRVRCRI_FROM_THLRTRCRI
+
+                                       
+!     #################################################################
+      SUBROUTINE THRVRCRI_FROM_THLRTRCRI( KRR,                             &
+                                       PTHL, PR, PLVOCPEXN,PLSOCPEXN,  &
+                                       PTH, PRV                        )
+!     #################################################################
+!
+!!
+!!****  *THRVRCRI_FROM_THLRTRCRI* - 
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!**  METHOD
+!!    ------
+!!    
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!     
+!!     V. Masson     *CNRM*
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!     Original   06/2011
+!!
+!! --------------------------------------------------------------------------
+!       
+!*      0. DECLARATIONS
+!          ------------
+!
+IMPLICIT NONE
+!
+!
+!*      0.1  declarations of arguments
+!
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   :: PTHL     ! theta
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PR       ! water species
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLVOCPEXN,PLSOCPEXN     ! L/(cp*Pi)
+
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PTH, PRV
+!
+!-------------------------------------------------------------------------------
+!
+!
+IF ( KRR == 0 ) THEN
+  PTH(:,:,:) = PTHL(:,:,:)
+  PRV(:,:,:) = 0.
+ELSE IF (KRR==1) THEN
+  PTH(:,:,:) = PTHL(:,:,:)
+  PRV(:,:,:) = PR  (:,:,:,1)
+ELSE IF (KRR>=4) THEN
+    ! Rnp at t
+    PRV(:,:,:)  = PR(:,:,:,1)  - PR(:,:,:,2)  - PR(:,:,:,4)
+    ! Theta_l at t
+    PTH(:,:,:)  = PTHL(:,:,:)  + PLVOCPEXN(:,:,:) * PR(:,:,:,2) &
+                               + PLSOCPEXN(:,:,:) * PR(:,:,:,4)
+ELSE IF (KRR>=2) THEN
+    ! Rnp at t
+    PRV(:,:,:)  = PR(:,:,:,1)  - PR(:,:,:,2)
+    ! Theta_l at t
+    PTH(:,:,:)  = PTHL(:,:,:)  + PLVOCPEXN(:,:,:) * PR(:,:,:,2)
+END IF
+! 
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE THRVRCRI_FROM_THLRTRCRI
diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90
index 9fe4fef03..4ca17dfc6 100644
--- a/src/MNH/tke_eps_sources.f90
+++ b/src/MNH/tke_eps_sources.f90
@@ -10,15 +10,15 @@
 INTERFACE
 !
       SUBROUTINE TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKEM,PLM,PLEPS,PDP,PTRH,  &
-                      PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,             &
-                      PTSTEP,PIMPL,PEXPL,                              &
-                      HTURBLEN,HTURBDIM,                               &
-                      HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,            &
-                      PTP,PRTKES,PRTHLS,PCOEF_DISS                     )
-!
-INTEGER,                 INTENT(IN)   :: KKA      !near ground array index  
-INTEGER,                 INTENT(IN)   :: KKU      !uppest atmosphere array index
-INTEGER,                 INTENT(IN)   :: KKL      !vert. levels type 1=MNH -1=ARO
+                      PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,                  &
+                      PTSTEP,PIMPL,PEXPL,                                   &
+                      HTURBLEN,HTURBDIM,                                    &
+                      HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,                 &
+                      PTP,PRTKES,PRTKESM, PRTHLS,PCOEF_DISS                 )
+!
+INTEGER,                 INTENT(IN)   ::  KKA          !near ground array index  
+INTEGER,                 INTENT(IN)   ::  KKU          !uppest atmosphere array index
+INTEGER,                 INTENT(IN)   ::  KKL          !vert. levels type 1=MNH -1=ARO
 INTEGER,                 INTENT(IN)   ::  KMI          ! model index number  
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PTKEM        ! TKE at t-deltat
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PLM          ! mixing length         
@@ -27,8 +27,7 @@ REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PRHODJ       ! density * grid volume
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
                                                        ! metric coefficients
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PZZ          ! physical height w-pt
-REAL,                    INTENT(IN)   ::  PTSTEP       ! Double Time step ( *.5 for
-                                                       ! the first time step ) 
+REAL,                    INTENT(IN)   ::  PTSTEP       ! Time step 
 REAL,                    INTENT(IN)   ::  PEXPL, PIMPL ! Coef. temporal. disc.
 CHARACTER*4,             INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
                                                        ! turbulence scheme
@@ -45,6 +44,7 @@ REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PDP, PTRH          ! Dyn. prod. of TKE
 REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PTP          ! Ther. prod. of TKE
 REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTKES       ! RHOD * Jacobian *
                                                        ! TKE at t+deltat
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PRTKESM      ! Advection source 
 REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTHLS       ! Source of Theta_l
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PCOEF_DISS   ! 1/(Cph*Exner)
 !
@@ -62,7 +62,7 @@ END MODULE MODI_TKE_EPS_SOURCES
                       PTSTEP,PIMPL,PEXPL,                              &
                       HTURBLEN,HTURBDIM,                               &
                       HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,            &
-                      PTP,PRTKES,PRTHLS,PCOEF_DISS                     )
+                      PTP,PRTKES,PRTKESM, PRTHLS,PCOEF_DISS            )
 !     ##################################################################
 !
 !
@@ -116,7 +116,7 @@ END MODULE MODI_TKE_EPS_SOURCES
 !!
 !!      Module MODD_PARAMETERS: 
 !!
-!!           JPVEXT_TURB
+!!           JPVEXT
 !!      Module MODD_BUDGET:
 !!         NBUMOD       : model in which budget is calculated
 !!         CBUTYPE      : type of desired budget
@@ -210,8 +210,7 @@ REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PRHODJ       ! density * grid volume
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
                                                        ! metric coefficients
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PZZ          ! physical height w-pt
-REAL,                    INTENT(IN)   ::  PTSTEP       ! Double Time step ( *.5 for
-                                                       ! the first time step ) 
+REAL,                    INTENT(IN)   ::  PTSTEP       ! Time step 
 REAL,                    INTENT(IN)   ::  PEXPL, PIMPL ! Coef. temporal. disc.
 CHARACTER*4,             INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
                                                        ! turbulence scheme
@@ -230,6 +229,7 @@ REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTKES       ! RHOD * Jacobian *
                                                        ! TKE at t+deltat
 REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTHLS       ! Source of Theta_l
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PCOEF_DISS   ! 1/(Cph*Exner)
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PRTKESM      ! Advection source 
 !
 !
 !
@@ -308,7 +308,8 @@ PDP(:,:,IKB) = PDP(:,:,IKB) * (1. + PDZZ(:,:,IKB+KKL)/PDZZ(:,:,IKB))
 ! Compute the source terms for TKE: ( ADVECtion + NUMerical DIFFusion + ..)
 ! + (Dynamical Production) + (Thermal Production) - (dissipation) 
 ZFLX(:,:,:) = XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:)
-ZSOURCE(:,:,:) = PRTKES(:,:,:) / PRHODJ(:,:,:) - PTKEM(:,:,:) / PTSTEP &
+ZSOURCE(:,:,:) = PRTKES(:,:,:) / PRHODJ(:,:,:)  +  PRTKESM(:,:,:) / PRHODJ(:,:,:) &
+   - PTKEM(:,:,:) / PTSTEP &
    + PDP(:,:,:) + PTP(:,:,:) + ZTR(:,:,:) - PEXPL * ZFLX(:,:,:) * PTKEM(:,:,:)
 !
 !*       2.2  implicit vertical TKE transport
@@ -337,10 +338,11 @@ ENDIF
 !
 ! TKE must be greater than its minimum value
 !
-GTKENEG =  ZRES <= XTKEMIN 
-WHERE ( GTKENEG ) 
-  ZRES = XTKEMIN
-END WHERE
+! CL : Now done at the end of the time step in ADVECTION_METSV
+!GTKENEG =  ZRES <= XTKEMIN 
+!WHERE ( GTKENEG ) 
+!  ZRES = XTKEMIN
+!END WHERE
 !
 IF ( LLES_CALL .OR.                         &
      (OTURB_DIAG .AND. OCLOSE_OUT)  ) THEN
@@ -389,8 +391,8 @@ CALL BUDGET (PRTKES(:,:,:),5,'DISS_BU_RTKE')
 END IF 
 !
 !*       2.5  computes the final RTKE and stores the whole turbulent transport
-!
-PRTKES(:,:,:) = ZRES(:,:,:) * PRHODJ(:,:,:) / PTSTEP
+!              with the removal of the advection part 
+PRTKES(:,:,:) = ZRES(:,:,:) * PRHODJ(:,:,:) / PTSTEP -  PRTKESM(:,:,:)
 !
 ! stores the whole turbulent transport
 !
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index cdf4bdcf9..b3e8b737a 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -7,17 +7,16 @@ INTERFACE
       SUBROUTINE TURB(KKA, KKU, KKL, KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,   &
                 KSPLIT,KMODEL_CL, &
                 OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
-                HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HINST_SFU,PIMPL,   &
-                PTSTEP_UVW, PTSTEP_MET,PTSTEP_SV,                     &
-                HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,          &
+                HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,PIMPL,             &
+                PTSTEP,HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,   &
                 PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE,    &
                 PRHODJ,PTHVREF,PRHODREF,                              &
                 PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
-                PPABSM,PUM,PVM,PWM,PTKEM,PSVM,PSRCM,                  &
+                PPABST,PUT,PVT,PWT,PTKET,PSVT,PSRCT,                  &
                 PBL_DEPTH, PSBL_DEPTH,                                &
-                PUT,PVT,PWT,PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,    &
-                PTHLM,PRM,                                            &
-                PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,PSIGS,        &
+                PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,                &
+                PTHLT,PRT,                                            &
+                PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,PRTKEMS,PSIGS,&
                 PFLXZTHVMF,PWTH,PWRC,PWSV                             )
 
 !
@@ -45,12 +44,9 @@ CHARACTER*4           , INTENT(IN)      ::  HTURBDIM  ! dimensionality of the
 CHARACTER*4           , INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
 CHARACTER*4           , INTENT(IN)   ::  HTOM         ! kind of Third Order Moment
 CHARACTER*4           , INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing length
-CHARACTER*1           , INTENT(IN)   ::  HINST_SFU    ! temporal location of the
                                                       ! surface friction flux
 REAL,                   INTENT(IN)   ::  PIMPL        ! degree of implicitness
-REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
-REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
-REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
 CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
                                                       ! FM-file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
@@ -80,16 +76,15 @@ REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PSFSV
 ! normal surface fluxes of Scalar var. 
 !
 !    prognostic variables at t- deltat
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUM,PVM,PWM ! wind components
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKEM       ! TKE
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM        ! passive scal. var.
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCM       ! Second-order flux
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABST      ! Pressure at time t
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUT,PVT,PWT ! wind components
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKET       ! TKE
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVT        ! passive scal. var.
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCT       ! Second-order flux
                       ! s'rc'/2Sigma_s2 at time t-1 multiplied by Lambda_3
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PBL_DEPTH  ! BL depth for TOMS
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01
 !
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PUT,PVT,PWT ! Wind  at t
 !
 !    variables for cloud mixing length
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PCEI ! Cloud Entrainment instability
@@ -99,15 +94,16 @@ REAL, INTENT(IN)      ::  PCEI_MIN ! minimum threshold for the instability index
 REAL, INTENT(IN)      ::  PCEI_MAX ! maximum threshold for the instability index CEI
 REAL, INTENT(IN)      ::  PCOEF_AMPL_SAT ! saturation of the amplification coefficient
 !   thermodynamical variables which are transformed in conservative var.
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLM       ! conservative pot. temp.
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRM         ! water var.  where 
-                             ! PRM(:,:,:,1) is the conservative mixing ratio        
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLT       ! conservative pot. temp.
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRT         ! water var.  where 
+                             ! PRT(:,:,:,1) is the conservative mixing ratio        
 !
 ! sources of momentum, conservative potential temperature, Turb. Kin. Energy, 
 ! TKE dissipation
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS,PRVS,PRWS,PRTHLS,PRTKES
 ! Source terms for all water kinds, PRRS(:,:,:,1) is used for the conservative
 ! mixing ratio
+REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRTKEMS
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS 
 ! Source terms for all passive scalar variables
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS
@@ -133,17 +129,16 @@ END MODULE MODI_TURB
 !     #################################################################
       SUBROUTINE TURB(KKA,KKU,KKL,KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,KSPLIT,KMODEL_CL, &
                 OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
-                HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HINST_SFU,PIMPL,   &
-                PTSTEP_UVW, PTSTEP_MET,PTSTEP_SV,                     &
-                HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,          &
+                HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,PIMPL,             &
+                PTSTEP,HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,   &
                 PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE,    &
                 PRHODJ,PTHVREF,PRHODREF,                              &
                 PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
-                PPABSM,PUM,PVM,PWM,PTKEM,PSVM,PSRCM,                  &
+                PPABST,PUT,PVT,PWT,PTKET,PSVT,PSRCT,                  &
                 PBL_DEPTH,PSBL_DEPTH,                                 &
-                PUT,PVT,PWT,PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,    &
-                PTHLM,PRM,                                            &
-                PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,PSIGS,        &
+                PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,                &
+                PTHLT,PRT,                                            &
+                PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,PRTKEMS,PSIGS,&
                 PFLXZTHVMF,PWTH,PWRC,PWSV                             )
 !     #################################################################
 !
@@ -228,7 +223,7 @@ END MODULE MODI_TURB
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
 !!
-!!       MODD_PARAMETERS : JPVEXT_TURB  number of marginal vertical points
+!!       MODD_PARAMETERS : JPVEXT  number of marginal vertical points
 !!
 !!       MODD_CONF      : CCONF model configuration (start/restart)
 !!                        L1D   switch for 1D model version
@@ -400,12 +395,8 @@ CHARACTER*4           , INTENT(IN)      ::  HTURBDIM  ! dimensionality of the
 CHARACTER*4           , INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
 CHARACTER*4           , INTENT(IN)   ::  HTOM         ! kind of Third Order Moment
 CHARACTER*4           , INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing length
-CHARACTER*1           , INTENT(IN)   ::  HINST_SFU    ! temporal location of the
-                                                      ! surface friction flux
 REAL,                   INTENT(IN)   ::  PIMPL        ! degree of implicitness
-REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
-REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
-REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
 CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
                                                       ! FM-file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
@@ -435,16 +426,15 @@ REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PSFSV
 ! normal surface fluxes of Scalar var. 
 !
 !    prognostic variables at t- deltat
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUM,PVM,PWM ! wind components
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKEM       ! TKE
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM        ! passive scal. var.
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCM       ! Second-order flux
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABST      ! Pressure at time t
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUT,PVT,PWT ! wind components
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKET       ! TKE
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVT        ! passive scal. var.
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCT       ! Second-order flux
                       ! s'rc'/2Sigma_s2 at time t-1 multiplied by Lambda_3
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PBL_DEPTH  ! BL height for TOMS
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01
 !
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PUT,PVT,PWT ! Wind  at t
 !    variables for cloud mixing length
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PCEI ! Cloud Entrainment instability
                                                  ! index to emphasize localy 
@@ -454,15 +444,16 @@ REAL, INTENT(IN)      ::  PCEI_MAX ! maximum threshold for the instability index
 REAL, INTENT(IN)      ::  PCOEF_AMPL_SAT ! saturation of the amplification coefficient
 !
 !   thermodynamical variables which are transformed in conservative var.
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLM       ! conservative pot. temp.
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRM         ! water var.  where 
-                             ! PRM(:,:,:,1) is the conservative mixing ratio        
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLT       ! conservative pot. temp.
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRT         ! water var.  where 
+                             ! PRT(:,:,:,1) is the conservative mixing ratio        
 !
 ! sources of momentum, conservative potential temperature, Turb. Kin. Energy, 
 ! TKE dissipation
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS,PRVS,PRWS,PRTHLS,PRTKES
 ! Source terms for all water kinds, PRRS(:,:,:,1) is used for the conservative
 ! mixing ratio
+REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRTKEMS
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS 
 ! Source terms for all passive scalar variables
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS
@@ -481,8 +472,6 @@ REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: PWSV       ! scalar flux
 !
 !       0.2  declaration of local variables
 !
-!JUAN BUG PGI
-!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ::     &
 REAL, ALLOCATABLE, DIMENSION(:,:,:) ::&
           ZCP,                        &  ! Cp at t-1
           ZEXN,                       &  ! EXN at t-1
@@ -497,11 +486,8 @@ REAL, ALLOCATABLE, DIMENSION(:,:,:) ::&
           ZMWTH,ZMWR,ZMTH2,ZMR2,ZMTHR,&  ! 3rd order moments
           ZFWTH,ZFWR,ZFTH2,ZFR2,ZFTHR,&  ! opposite of verticale derivate of 3rd order moments
           ZTHLM                          ! initial potential temp.
-!!$REAL, DIMENSION(SIZE(PRM,1),SIZE(PRM,2),SIZE(PRM,3),SIZE(PRM,4)) ::     &
 REAL, ALLOCATABLE, DIMENSION(:,:,:,:) ::     &
           ZRM                            ! initial mixing ratio 
-
-!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) ::  ZTAU11M,ZTAU12M,  &
 REAL, ALLOCATABLE, DIMENSION(:,:) ::  ZTAU11M,ZTAU12M,  &
                                                  ZTAU22M,ZTAU33M,  &
             ! tangential surface fluxes in the axes following the orography
@@ -543,45 +529,45 @@ REAL :: ZTIME1, ZTIME2
 !
 !------------------------------------------------------------------------------------------
 ALLOCATE (                                                        &
-          ZCP(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),         &  
-          ZEXN(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),        &  
-          ZT(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),          &  
-          ZLOCPEXNM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),   & 
-          ZLM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),         & 
-          ZLEPS(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),       &  
-          ZDP(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),         &
-          ZTP(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),         &
-          ZTRH(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),        &  
-          ZATHETA(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),     &
-          ZAMOIST(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),     & 
-          ZCOEF_DISS(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),  &  
-          ZFRAC_ICE(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),   &  
-          ZMWTH(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),       &
-          ZMWR(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),        &
-          ZMTH2(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),       &
-          ZMR2(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),        &
-          ZMTHR(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),       &  
-          ZFWTH(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),       &
-          ZFWR(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),        &
-          ZFTH2(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),       &
-          ZFR2(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),        &
-          ZFTHR(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),       &  
-          ZTHLM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))        )                        
+          ZCP(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),         &  
+          ZEXN(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),        &  
+          ZT(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),          &  
+          ZLOCPEXNM(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),   & 
+          ZLM(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),         & 
+          ZLEPS(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),       &  
+          ZDP(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),         &
+          ZTP(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),         &
+          ZTRH(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),        &  
+          ZATHETA(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),     &
+          ZAMOIST(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),     & 
+          ZCOEF_DISS(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),  &  
+          ZFRAC_ICE(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),   &  
+          ZMWTH(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),       &
+          ZMWR(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),        &
+          ZMTH2(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),       &
+          ZMR2(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),        &
+          ZMTHR(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),       &  
+          ZFWTH(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),       &
+          ZFWR(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),        &
+          ZFTH2(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),       &
+          ZFR2(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),        &
+          ZFTHR(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)),       &  
+          ZTHLM(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3))        )                        
 
-ALLOCATE ( ZRM(SIZE(PRM,1),SIZE(PRM,2),SIZE(PRM,3),SIZE(PRM,4))   )
+ALLOCATE ( ZRM(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),SIZE(PRT,4))   )
 
 ALLOCATE ( &
-           ZTAU11M(SIZE(PTHLM,1),SIZE(PTHLM,2)),  &
-           ZTAU12M(SIZE(PTHLM,1),SIZE(PTHLM,2)),  &
-           ZTAU22M(SIZE(PTHLM,1),SIZE(PTHLM,2)),  &
-           ZTAU33M(SIZE(PTHLM,1),SIZE(PTHLM,2)),  &
-           ZUSLOPE(SIZE(PTHLM,1),SIZE(PTHLM,2)),  &
-           ZVSLOPE(SIZE(PTHLM,1),SIZE(PTHLM,2)),  &
-           ZCDUEFF(SIZE(PTHLM,1),SIZE(PTHLM,2)),  &
-           ZUSTAR(SIZE(PTHLM,1),SIZE(PTHLM,2)),   &
-           ZLMO(SIZE(PTHLM,1),SIZE(PTHLM,2)),     &
-           ZRVM(SIZE(PTHLM,1),SIZE(PTHLM,2)),     &
-           ZSFRV(SIZE(PTHLM,1),SIZE(PTHLM,2))     )
+           ZTAU11M(SIZE(PTHLT,1),SIZE(PTHLT,2)),  &
+           ZTAU12M(SIZE(PTHLT,1),SIZE(PTHLT,2)),  &
+           ZTAU22M(SIZE(PTHLT,1),SIZE(PTHLT,2)),  &
+           ZTAU33M(SIZE(PTHLT,1),SIZE(PTHLT,2)),  &
+           ZUSLOPE(SIZE(PTHLT,1),SIZE(PTHLT,2)),  &
+           ZVSLOPE(SIZE(PTHLT,1),SIZE(PTHLT,2)),  &
+           ZCDUEFF(SIZE(PTHLT,1),SIZE(PTHLT,2)),  &
+           ZUSTAR(SIZE(PTHLT,1),SIZE(PTHLT,2)),   &
+           ZLMO(SIZE(PTHLT,1),SIZE(PTHLT,2)),     &
+           ZRVM(SIZE(PTHLT,1),SIZE(PTHLT,2)),     &
+           ZSFRV(SIZE(PTHLT,1),SIZE(PTHLT,2))     )
 
 !------------------------------------------------------------------------------------------
 !
@@ -591,7 +577,7 @@ ALLOCATE ( &
 !*      1.1 Set the internal domains, ZEXPL 
 !
 !
-IKT=SIZE(PTHLM,3)          
+IKT=SIZE(PTHLT,3)          
 IKTB=1+JPVEXT_TURB              
 IKTE=IKT-JPVEXT_TURB
 IKB=KKA+JPVEXT_TURB*KKL
@@ -601,8 +587,8 @@ ZEXPL = 1.- PIMPL
 ZRVORD= XRV / XRD
 !
 !
-ZTHLM(:,:,:) = PTHLM(:,:,:)
-ZRM(:,:,:,:) = PRM(:,:,:,:)
+ZTHLM(:,:,:) = PTHLT(:,:,:)
+ZRM(:,:,:,:) = PRT(:,:,:,:)
 !
 !
 !
@@ -615,18 +601,18 @@ ZRM(:,:,:,:) = PRM(:,:,:,:)
 !
 ZCP=XCPD
 !
-IF (KRR > 0) ZCP(:,:,:) = ZCP(:,:,:) + XCPV * PRM(:,:,:,1)
+IF (KRR > 0) ZCP(:,:,:) = ZCP(:,:,:) + XCPV * PRT(:,:,:,1)
 DO JRR = 2,1+KRRL                          ! loop on the liquid components  
-  ZCP(:,:,:)  = ZCP(:,:,:) + XCL * PRM(:,:,:,JRR)
+  ZCP(:,:,:)  = ZCP(:,:,:) + XCL * PRT(:,:,:,JRR)
 END DO
 !
 DO JRR = 2+KRRL,1+KRRL+KRRI                ! loop on the solid components   
-  ZCP(:,:,:)  = ZCP(:,:,:)  + XCI * PRM(:,:,:,JRR)
+  ZCP(:,:,:)  = ZCP(:,:,:)  + XCI * PRT(:,:,:,JRR)
 END DO
 !
 !*      2.2 Exner function at t
 !
-ZEXN(:,:,:) = (PPABSM(:,:,:)/XP00) ** (XRD/XCPD)
+ZEXN(:,:,:) = (PPABST(:,:,:)/XP00) ** (XRD/XCPD)
 !
 !*      2.3 dissipative heating coeff a t
 !
@@ -641,23 +627,23 @@ IF (KRRL >=1) THEN
 !
 !*      2.4 Temperature at t
 !
-  ZT(:,:,:) =  PTHLM(:,:,:) * ZEXN(:,:,:)
+  ZT(:,:,:) =  PTHLT(:,:,:) * ZEXN(:,:,:)
 !
 !*       2.5 Lv/Cph/Exn
 !
   IF ( KRRI >= 1 ) THEN 
-    ALLOCATE(ZLVOCPEXNM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
-    ALLOCATE(ZLSOCPEXNM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
-    ALLOCATE(ZAMOIST_ICE(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
-    ALLOCATE(ZATHETA_ICE(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
+    ALLOCATE(ZLVOCPEXNM(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
+    ALLOCATE(ZLSOCPEXNM(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
+    ALLOCATE(ZAMOIST_ICE(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
+    ALLOCATE(ZATHETA_ICE(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
 !
     CALL COMPUTE_FUNCTION_THERMO(XALPW,XBETAW,XGAMW,XLVTT,XCL,ZT,ZEXN,ZCP, &
                                  ZLVOCPEXNM,ZAMOIST,ZATHETA)
     CALL COMPUTE_FUNCTION_THERMO(XALPI,XBETAI,XGAMI,XLSTT,XCI,ZT,ZEXN,ZCP, &
                                  ZLSOCPEXNM,ZAMOIST_ICE,ZATHETA_ICE)
 !
-    WHERE(PRM(:,:,:,2)+PRM(:,:,:,4)>0.0)
-      ZFRAC_ICE(:,:,:) = PRM(:,:,:,4) / ( PRM(:,:,:,2)+PRM(:,:,:,4) )
+    WHERE(PRT(:,:,:,2)+PRT(:,:,:,4)>0.0)
+      ZFRAC_ICE(:,:,:) = PRT(:,:,:,4) / ( PRT(:,:,:,2)+PRT(:,:,:,4) )
     END WHERE
 !
     ZLOCPEXNM(:,:,:) = (1.0-ZFRAC_ICE(:,:,:))*ZLVOCPEXNM(:,:,:) &
@@ -697,20 +683,20 @@ END IF              ! loop end on KRRL >= 1
 !
 IF ( KRRL >= 1 ) THEN
   IF ( KRRI >= 1 ) THEN 
-    ! Rnp at t-1
-    PRM(:,:,:,1)  = PRM(:,:,:,1)  + PRM(:,:,:,2)  + PRM(:,:,:,4)
+    ! Rnp at t
+    PRT(:,:,:,1)  = PRT(:,:,:,1)  + PRT(:,:,:,2)  + PRT(:,:,:,4)
     PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) + PRRS(:,:,:,4)
-    ! Theta_l at t-1
-    PTHLM(:,:,:)  = PTHLM(:,:,:)  - ZLVOCPEXNM(:,:,:) * PRM(:,:,:,2) &
-                                  - ZLSOCPEXNM(:,:,:) * PRM(:,:,:,4)
+    ! Theta_l at t
+    PTHLT(:,:,:)  = PTHLT(:,:,:)  - ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) &
+                                  - ZLSOCPEXNM(:,:,:) * PRT(:,:,:,4)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLVOCPEXNM(:,:,:) * PRRS(:,:,:,2) &
                                   - ZLSOCPEXNM(:,:,:) * PRRS(:,:,:,4)
   ELSE
-    ! Rnp at t-1
-    PRM(:,:,:,1)  = PRM(:,:,:,1)  + PRM(:,:,:,2) 
+    ! Rnp at t
+    PRT(:,:,:,1)  = PRT(:,:,:,1)  + PRT(:,:,:,2) 
     PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-    ! Theta_l at t-1
-    PTHLM(:,:,:)  = PTHLM(:,:,:)  - ZLOCPEXNM(:,:,:) * PRM(:,:,:,2)
+    ! Theta_l at t
+    PTHLT(:,:,:)  = PTHLT(:,:,:)  - ZLOCPEXNM(:,:,:) * PRT(:,:,:,2)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLOCPEXNM(:,:,:) * PRRS(:,:,:,2)
   END IF
 END IF
@@ -727,7 +713,7 @@ SELECT CASE (HTURBLEN)
 !           ------------------
 
   CASE ('BL89')
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKEM,ZLM)
+    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZLM)
 !
 !*      3.2 Delta mixing length
 !           -------------------
@@ -805,19 +791,18 @@ END IF
 !
 !*      4.1 rotate the wind at time t
 !
-IF ( HINST_SFU == 'T' ) THEN
 !
 !
   IF (CPROGRAM=='AROME ') THEN
-    ZUSLOPE=PUM(:,:,KKA)
-    ZVSLOPE=PVM(:,:,KKA)
+    ZUSLOPE=PUT(:,:,KKA)
+    ZVSLOPE=PVT(:,:,KKA)
   ELSE
     CALL ROTATE_WIND(PUT,PVT,PWT,                       &
                      PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
                      PCOSSLOPE,PSINSLOPE,               &
                      PDXX,PDYY,PDZZ,                    &
                      ZUSLOPE,ZVSLOPE                    )
-
+!
     CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
   END IF
 !
@@ -828,28 +813,10 @@ IF ( HINST_SFU == 'T' ) THEN
                         (XMNH_TINY + ZUSLOPE(:,:)**2 + ZVSLOPE(:,:)**2 )   &
                       )
 !
-!*      4.3 rotate the wind at time t-delta t
+!*      4.3 rotate the wind at time t
 !
   IF (CPROGRAM/='AROME ') THEN
-    CALL ROTATE_WIND(PUM,PVM,PWM,                       &
-                     PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
-                     PCOSSLOPE,PSINSLOPE,               &
-                     PDXX,PDYY,PDZZ,                    &
-                     ZUSLOPE,ZVSLOPE                    )
-!
-    CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
-  END IF
-!
-ELSE
-!
-!*      4.4 rotate the wind at time t-delta t
-!
-  IF (CPROGRAM=='AROME ') THEN
-    ZUSLOPE=PUM(:,:,KKA)
-    ZVSLOPE=PVM(:,:,KKA)
-  ELSE
-!
-    CALL ROTATE_WIND(PUM,PVM,PWM,                       &
+    CALL ROTATE_WIND(PUT,PVT,PWT,                       &
                      PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
                      PCOSSLOPE,PSINSLOPE,               &
                      PDXX,PDYY,PDZZ,                    &
@@ -858,19 +825,13 @@ ELSE
     CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
   END IF
 !
-!*      4.5 compute the proportionality coefficient between wind and stress
-!
-  ZCDUEFF(:,:) =-SQRT ( (PSFU(:,:)**2 + PSFV(:,:)**2) /               &
-                        (XMNH_TINY + ZUSLOPE(:,:)**2 + ZVSLOPE(:,:)**2 )   &
-                      )
-END IF
 !
 !*       4.6 compute the surface tangential fluxes
 !
 ZTAU11M(:,:) =2./3.*(  (1.+ (PZZ (:,:,IKB+KKL)-PZZ (:,:,IKB))  &
                            /(PDZZ(:,:,IKB+KKL)+PDZZ(:,:,IKB))  &
-                       )   *PTKEM(:,:,IKB)                   &
-                     -0.5  *PTKEM(:,:,IKB+KKL)                 &
+                       )   *PTKET(:,:,IKB)                   &
+                     -0.5  *PTKET(:,:,IKB+KKL)                 &
                     )
 ZTAU12M(:,:) =0.0
 ZTAU22M(:,:) =ZTAU11M(:,:)
@@ -913,16 +874,15 @@ ZFTHR(:,:,:IKTB) = 0.
 CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI,               &
           OCLOSE_OUT,OTURB_FLX,                          &
           HTURBDIM,HTOM,PIMPL,ZEXPL,                     &
-          PTSTEP_UVW, PTSTEP_MET, PTSTEP_SV,             &
-          HFMFILE,HLUOUT,                                &
+          PTSTEP,HFMFILE,HLUOUT,                         &
           PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,        &
           PCOSSLOPE,PSINSLOPE,                           &
           PRHODJ,PTHVREF,                                &
           PSFTH,PSFRV,PSFSV,PSFTH,PSFRV,PSFSV,           &
           ZCDUEFF,ZTAU11M,ZTAU12M,ZTAU33M,               &
-          PUM,PVM,PWM,ZUSLOPE,ZVSLOPE,PTHLM,PRM,PSVM,    &
-          PTKEM,ZLM,ZLEPS,                               &
-          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCM,ZFRAC_ICE,     &
+          PUT,PVT,PWT,ZUSLOPE,ZVSLOPE,PTHLT,PRT,PSVT,    &
+          PTKET,ZLM,ZLEPS,                               &
+          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCT,ZFRAC_ICE,     &
           ZFWTH,ZFWR,ZFTH2,ZFR2,ZFTHR,PBL_DEPTH,         &
           PSBL_DEPTH,ZLMO,                               &
           PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,              &
@@ -960,9 +920,8 @@ IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'VTURB_BU_RRI')
 !
 !
 IF (HTURBDIM=='3DIM') THEN
-  CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP_UVW,      &
-          PTSTEP_MET, PTSTEP_SV, HLBCX,HLBCY,                  &
-          OCLOSE_OUT,OTURB_FLX,OSUBG_COND,                     &
+    CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,        &
+          HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND,         &
           HFMFILE,HLUOUT,                                      &
           PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                        &
           PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                       &
@@ -970,9 +929,9 @@ IF (HTURBDIM=='3DIM') THEN
           PRHODJ,PTHVREF,                                      &
           PSFTH,PSFRV,PSFSV,                                   &
           ZCDUEFF,ZTAU11M,ZTAU12M,ZTAU22M,ZTAU33M,             &
-          PUM,PVM,PWM,ZUSLOPE,ZVSLOPE,PTHLM,PRM,PSVM,          &
-          PTKEM,ZLM,ZLEPS,                                     &
-          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCM,ZFRAC_ICE,           &
+          PUT,PVT,PWT,ZUSLOPE,ZVSLOPE,PTHLT,PRT,PSVT,          &
+          PTKET,ZLM,ZLEPS,                                     &
+          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCT,ZFRAC_ICE,           &
           ZDP,ZTP,PSIGS,                                       &
           ZTRH,                                                &
           PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS                     )
@@ -984,7 +943,8 @@ IF (LBUDGET_V) CALL BUDGET (PRVS,2,'HTURB_BU_RV')
 IF (LBUDGET_W) CALL BUDGET (PRWS,3,'HTURB_BU_RW')
 IF (LBUDGET_TH)  THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'HTURB_BU_RTH')
+    CALL BUDGET (PRTHLS+ZLVOCPEXNM*PRRS(:,:,:,2)+ZLSOCPEXNM*PRRS(:,:,:,4) &
+                                                  ,4,'HTURB_BU_RTH')
   ELSE IF ( KRRL >= 1 ) THEN
     CALL BUDGET (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'HTURB_BU_RTH')
   ELSE
@@ -1020,17 +980,18 @@ IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'HTURB_BU_RRI')
 
 !  6.2 TKE evolution equation
 
-CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKEM,ZLM,ZLEPS,ZDP,ZTRH,       &
+CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,ZLM,ZLEPS,ZDP,ZTRH,       &
                      PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,            &
-                     PTSTEP_MET,PIMPL,ZEXPL,                         &
+                     PTSTEP,PIMPL,ZEXPL,                             &
                      HTURBLEN,HTURBDIM,                              &
                      HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,           &
-                     ZTP,PRTKES,PRTHLS,ZCOEF_DISS                    )
+                     ZTP,PRTKES,PRTKEMS,PRTHLS,ZCOEF_DISS            )
 IF (LBUDGET_TH)  THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'DISSH_BU_RTH')
+    CALL BUDGET (PRTHLS+ZLVOCPEXNM*PRRS(:,:,:,2)+ZLSOCPEXNM*PRRS(:,:,:,4) &
+                                                ,4,'DISSH_BU_RTH')
   ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'DISSH_BU_RTH')
+    CALL BUDGET (PRTHLS+ZLOCPEXNM* PRRS(:,:,:,2),4,'DISSH_BU_RTH')
   ELSE
     CALL BUDGET (PRTHLS,4,'DISSH_BU_RTH')
   END IF
@@ -1060,7 +1021,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
     YCOMMENT='X_Y_Z_THLM (KELVIN)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTHLM,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTHLT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the conservative mixing ratio
 !
@@ -1068,7 +1029,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
     YCOMMENT='X_Y_Z_RNPM (KG/KG)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRM(:,:,:,1),IGRID,ILENCH,       &
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRT(:,:,:,1),IGRID,ILENCH,       &
                                                                YCOMMENT,IRESP)
    END IF
 END IF
@@ -1080,19 +1041,19 @@ END IF
 !
 IF ( KRRL >= 1 ) THEN
   IF ( KRRI >= 1 ) THEN
-    PRM(:,:,:,1)  = PRM(:,:,:,1)  - PRM(:,:,:,2)  - PRM(:,:,:,4)
+    PRT(:,:,:,1)  = PRT(:,:,:,1)  - PRT(:,:,:,2)  - PRT(:,:,:,4)
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2) - PRRS(:,:,:,4)
-    PTHLM(:,:,:)  = PTHLM(:,:,:)  + ZLVOCPEXNM(:,:,:) * PRM(:,:,:,2) &
-                                  + ZLSOCPEXNM(:,:,:) * PRM(:,:,:,4)
+    PTHLT(:,:,:)  = PTHLT(:,:,:)  + ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) &
+                                  + ZLSOCPEXNM(:,:,:) * PRT(:,:,:,4)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) + ZLVOCPEXNM(:,:,:) * PRRS(:,:,:,2) &
                                   + ZLSOCPEXNM(:,:,:) * PRRS(:,:,:,4)
 !
     DEALLOCATE(ZLVOCPEXNM)
     DEALLOCATE(ZLSOCPEXNM)
   ELSE
-    PRM(:,:,:,1)  = PRM(:,:,:,1)  - PRM(:,:,:,2) 
+    PRT(:,:,:,1)  = PRT(:,:,:,1)  - PRT(:,:,:,2) 
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2)
-    PTHLM(:,:,:)  = PTHLM(:,:,:)  + ZLOCPEXNM(:,:,:) * PRM(:,:,:,2)
+    PTHLT(:,:,:)  = PTHLT(:,:,:)  + ZLOCPEXNM(:,:,:) * PRT(:,:,:,2)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) + ZLOCPEXNM(:,:,:) * PRRS(:,:,:,2)
   END IF
 END IF
@@ -1131,17 +1092,17 @@ IF (LLES_CALL) THEN
 !          ------------------------------------------------
 !
   IF (HTURBDIM=="1DIM") THEN
-    CALL LES_MEAN_SUBGRID(2./3.*PTKEM,X_LES_SUBGRID_U2)
-    CALL LES_MEAN_SUBGRID(2./3.*PTKEM,X_LES_SUBGRID_V2)
-    CALL LES_MEAN_SUBGRID(2./3.*PTKEM,X_LES_SUBGRID_W2)
-    CALL LES_MEAN_SUBGRID(2./3.*PTKEM*MZF(KKA,KKU,KKL,&
-               & GZ_M_W(KKA,KKU,KKL,PTHLM,PDZZ)),X_LES_RES_ddz_Thl_SBG_W2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKET,X_LES_SUBGRID_U2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKET,X_LES_SUBGRID_V2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKET,X_LES_SUBGRID_W2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(KKA,KKU,KKL,&
+               & GZ_M_W(KKA,KKU,KKL,PTHLT,PDZZ)),X_LES_RES_ddz_Thl_SBG_W2)
     IF (KRR>=1) &
-    CALL LES_MEAN_SUBGRID(2./3.*PTKEM*MZF(KKA,KKU,KKL,&
-               & GZ_M_W(KKA,KKU,KKL,PRM(:,:,:,1),PDZZ)),X_LES_RES_ddz_Rt_SBG_W2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(KKA,KKU,KKL,&
+               & GZ_M_W(KKA,KKU,KKL,PRT(:,:,:,1),PDZZ)),X_LES_RES_ddz_Rt_SBG_W2)
     DO JSV=1,NSV
-      CALL LES_MEAN_SUBGRID(2./3.*PTKEM*MZF(KKA,KKU,KKL,&
- & GZ_M_W(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDZZ)),X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV))
+      CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(KKA,KKU,KKL,&
+ & GZ_M_W(KKA,KKU,KKL,PSVT(:,:,:,JSV),PDZZ)),X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV))
     END DO
   END IF
 
@@ -1294,7 +1255,7 @@ REAL, DIMENSION(SIZE(PEXN,1),SIZE(PEXN,2),SIZE(PEXN,3)) :: ZDRVSATDT
 !
 !*      1.3 saturation  mixing ratio at t
 !
-  ZRVSAT(:,:,:) =  ZRVSAT(:,:,:) * ZEPS / ( PPABSM(:,:,:) - ZRVSAT(:,:,:) )
+  ZRVSAT(:,:,:) =  ZRVSAT(:,:,:) * ZEPS / ( PPABST(:,:,:) - ZRVSAT(:,:,:) )
 !
 !*      1.4 compute the saturation mixing ratio derivative (rvs')
 !
@@ -1308,7 +1269,7 @@ REAL, DIMENSION(SIZE(PEXN,1),SIZE(PEXN,2),SIZE(PEXN,3)) :: ZDRVSATDT
 !*      1.6 compute Atheta
 !
   PATHETA(:,:,:)= PAMOIST(:,:,:) * PEXN(:,:,:) *                             &
-        ( ( ZRVSAT(:,:,:) - PRM(:,:,:,1) ) * PLOCPEXN(:,:,:) /               &
+        ( ( ZRVSAT(:,:,:) - PRT(:,:,:,1) ) * PLOCPEXN(:,:,:) /               &
           ( 1. + ZDRVSATDT(:,:,:) * PLOCPEXN(:,:,:) )        *               &
           (                                                                  &
            ZRVSAT(:,:,:) * (1. + ZRVSAT(:,:,:)/ZEPS)                         &
@@ -1374,8 +1335,8 @@ END IF
 IF (.NOT. ORMC01) THEN
   ZALPHA=0.5**(-1.5)
   !
-  DO JJ=1,SIZE(PUM,2)
-    DO JI=1,SIZE(PUM,1)
+  DO JJ=1,SIZE(PUT,2)
+    DO JI=1,SIZE(PUT,1)
       DO JK=IKTB,IKTE
         ZD=ZALPHA*(0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+KKL))&
         -PZZ(JI,JJ,IKB)) *PDIRCOSZW(JI,JJ)
@@ -1425,7 +1386,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLM
 REAL                :: ZD           ! distance to the surface
 REAL, DIMENSION(:,:), ALLOCATABLE  ::   ZWORK2D
 !
-REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ::     &
+REAL, DIMENSION(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)) ::     &
             ZDTHLDZ,ZDRTDZ,     &!dtheta_l/dz, drt_dz used for computing the stablity
 !                                ! criterion 
             ZETHETA,ZEMOIST             !coef ETHETA and EMOIST
@@ -1448,18 +1409,18 @@ IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
 END IF
 !   compute a mixing length limited by the stability
 !
-ALLOCATE(ZWORK2D(SIZE(PUM,1),SIZE(PUM,2)))
+ALLOCATE(ZWORK2D(SIZE(PUT,1),SIZE(PUT,2)))
 !
-ZETHETA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,ZLOCPEXNM,ZATHETA,PSRCM)
-ZEMOIST(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,ZLOCPEXNM,ZAMOIST,PSRCM)
+ZETHETA(:,:,:) = ETHETA(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZATHETA,PSRCT)
+ZEMOIST(:,:,:) = EMOIST(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZAMOIST,PSRCT)
 !
 DO JK = IKTB+1,IKTE-1
-      ZDTHLDZ(:,:,JK)= 0.5*((PTHLM(:,:,JK+KKL)-PTHLM(:,:,JK))/PDZZ(:,:,JK+KKL)+      &
-                         (PTHLM(:,:,JK)-PTHLM(:,:,JK-KKL))/PDZZ(:,:,JK))
+      ZDTHLDZ(:,:,JK)= 0.5*((PTHLT(:,:,JK+KKL)-PTHLT(:,:,JK))/PDZZ(:,:,JK+KKL)+      &
+                         (PTHLT(:,:,JK)-PTHLT(:,:,JK-KKL))/PDZZ(:,:,JK))
 ! For dry simulations
 IF (KRR>0) THEN    
-        ZDRTDZ(:,:,JK)= 0.5*((PRM(:,:,JK+KKL,1)-PRM(:,:,JK,1))/PDZZ(:,:,JK+KKL)+      &
-                         (PRM(:,:,JK,1)-PRM(:,:,JK-KKL,1))/PDZZ(:,:,JK))
+        ZDRTDZ(:,:,JK)= 0.5*((PRT(:,:,JK+KKL,1)-PRT(:,:,JK,1))/PDZZ(:,:,JK+KKL)+      &
+                         (PRT(:,:,JK,1)-PRT(:,:,JK-KKL,1))/PDZZ(:,:,JK))
 ELSE
        ZDRTDZ(:,:,JK)=0
 ENDIF
@@ -1468,14 +1429,14 @@ ENDIF
   !
   WHERE(ZWORK2D(:,:)>0.)
     PLM(:,:,JK)=MAX(XMNH_EPSILON,MIN(PLM(:,:,JK),                &
-                    0.76* SQRT(PTKEM(:,:,JK)/ZWORK2D(:,:))))
+                    0.76* SQRT(PTKET(:,:,JK)/ZWORK2D(:,:))))
   END WHERE
 END DO
 !  special case near the surface 
-ZDTHLDZ(:,:,IKB)=(PTHLM(:,:,IKB+KKL)-PTHLM(:,:,IKB))/PDZZ(:,:,IKB+KKL)
+ZDTHLDZ(:,:,IKB)=(PTHLT(:,:,IKB+KKL)-PTHLT(:,:,IKB))/PDZZ(:,:,IKB+KKL)
 ! For dry simulations
 IF (KRR>0) THEN
-  ZDRTDZ(:,:,IKB)=(PRM(:,:,IKB+KKL,1)-PRM(:,:,IKB,1))/PDZZ(:,:,IKB+KKL)
+  ZDRTDZ(:,:,IKB)=(PRT(:,:,IKB+KKL,1)-PRT(:,:,IKB,1))/PDZZ(:,:,IKB+KKL)
 ELSE
   ZDRTDZ(:,:,IKB)=0
 ENDIF
@@ -1484,7 +1445,7 @@ ZWORK2D(:,:)=XG/PTHVREF(:,:,IKB)*                                           &
             (ZETHETA(:,:,IKB)*ZDTHLDZ(:,:,IKB)+ZEMOIST(:,:,IKB)*ZDRTDZ(:,:,IKB))
 WHERE(ZWORK2D(:,:)>0.)
   PLM(:,:,IKB)=MAX(XMNH_EPSILON,MIN( PLM(:,:,IKB),                 &
-                   0.76* SQRT(PTKEM(:,:,IKB)/ZWORK2D(:,:))))
+                    0.76* SQRT(PTKET(:,:,IKB)/ZWORK2D(:,:))))
 END WHERE
 !
 DEALLOCATE(ZWORK2D)
@@ -1494,8 +1455,8 @@ DEALLOCATE(ZWORK2D)
 IF (.NOT. ORMC01) THEN
   ZALPHA=0.5**(-1.5)
   !
-  DO JJ=1,SIZE(PUM,2)
-    DO JI=1,SIZE(PUM,1)
+  DO JJ=1,SIZE(PUT,2)
+    DO JI=1,SIZE(PUT,1)
       DO JK=IKTB,IKTE
         ZD=ZALPHA*(0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+KKL))-PZZ(JI,JJ,IKB)) &
           *PDIRCOSZW(JI,JJ)
@@ -1569,10 +1530,10 @@ IMPLICIT NONE
 REAL :: ZPENTE            ! Slope of the amplification straight line
 REAL :: ZCOEF_AMPL_CEI_NUL! Ordonnate at the origin of the
                           ! amplification straight line
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)) :: ZCOEF_AMPL
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZCOEF_AMPL
                           ! Amplification coefficient of the mixing length
                           ! when the instability criterium is verified 
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)) :: ZLM_CLOUD
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZLM_CLOUD
                           ! Turbulent mixing length in the clouds
 !
 !-------------------------------------------------------------------------------
@@ -1611,7 +1572,7 @@ ELSE
 !*         3.1 BL89 mixing length
 !           ------------------
   CASE ('BL89')
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKEM,ZLM_CLOUD)
+    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZLM_CLOUD)
 !
 !*         3.2 Delta mixing length
 !           -------------------
diff --git a/src/MNH/turb_hor_splt.f90 b/src/MNH/turb_hor_splt.f90
index bc2a12391..437f15cf6 100644
--- a/src/MNH/turb_hor_splt.f90
+++ b/src/MNH/turb_hor_splt.f90
@@ -10,9 +10,8 @@
 !
 INTERFACE  
 !
-      SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP_UVW,  &
-                      PTSTEP_MET, PTSTEP_SV,HLBCX,HLBCY,             &
-                      OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
+      SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,      &
+                      HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND,   &
                       HFMFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
@@ -32,9 +31,7 @@ INTEGER,                INTENT(IN)   :: KSPLIT        ! number of time splitting
 INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
 INTEGER,                INTENT(IN)   :: KRRL          ! number of liquid water var.
 INTEGER,                INTENT(IN)   :: KRRI          ! number of ice water var.
-REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
-REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
-REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
 CHARACTER (LEN=*), DIMENSION(:), INTENT(IN)       ::  HLBCX,HLBCY
 LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
                                                          ! file opening       
@@ -110,9 +107,8 @@ END INTERFACE
 !
 END MODULE MODI_TURB_HOR_SPLT
 !     ################################################################
-      SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP_UVW,  &
-                      PTSTEP_MET, PTSTEP_SV,HLBCX,HLBCY,             &
-                      OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
+      SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,      &
+                      HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND,   &
                       HFMFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
@@ -253,7 +249,6 @@ END MODULE MODI_TURB_HOR_SPLT
 !!                     Feb  20, 2003 (JP Pinty)  Add PFRAC_ICE
 !!                     Oct.2009  (C.Lac) Introduction of different PTSTEP according to the
 !!                              advection schemes
-!!                     06/2011 (J.escobar ) Bypass Bug with ifort11/12 on  HLBCX,HLBC
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -281,9 +276,7 @@ INTEGER,                INTENT(IN)   :: KSPLIT        ! number of time splitting
 INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
 INTEGER,                INTENT(IN)   :: KRRL          ! number of liquid water var.
 INTEGER,                INTENT(IN)   :: KRRI          ! number of ice water var.
-REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
-REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
-REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
 CHARACTER (LEN=*), DIMENSION(:), INTENT(IN)       ::  HLBCX,HLBCY
 LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
                                                          ! file opening       
@@ -363,7 +356,7 @@ REAL,ALLOCATABLE,DIMENSION(:,:,:) :: ZMZM_PRHODJ  ! MZM(PRHODJ)
 !
 INTEGER :: JSPLT ! current split
 !
-INTEGER :: IKB, IKE, IIB, IIE, IJB, IJE,IKU
+INTEGER :: IKB, IKE, IIB, IIE, IJB, IJE, IKU
 INTEGER :: JRR, JSV
 !
 INTEGER :: ISV
@@ -477,7 +470,7 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN
   DO JSPLT=1,KSPLIT
 !
 ! compute the turbulent tendencies for the small time step
-    CALL TURB_HOR(JSPLT, KRR, KRRL, KRRI, PTSTEP_UVW,             &
+    CALL TURB_HOR(JSPLT, KRR, KRRL, KRRI, PTSTEP,                 &
                    OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
                    HFMFILE,HLUOUT,                                &
                    PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
@@ -505,18 +498,18 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN
 !
 ! split temporal advance
 
-    ZUM=PUM+(ZRUS/KSPLIT-PRUS)/MXM(PRHODJ)*PTSTEP_UVW
-    ZVM=PVM+(ZRVS/KSPLIT-PRVS)/MYM(PRHODJ)*PTSTEP_UVW
-    ZWM=PWM+(ZRWS/KSPLIT-PRWS)/ZMZM_PRHODJ*PTSTEP_UVW
+    ZUM=PUM+(ZRUS/KSPLIT-PRUS)/MXM(PRHODJ)*PTSTEP
+    ZVM=PVM+(ZRVS/KSPLIT-PRVS)/MYM(PRHODJ)*PTSTEP
+    ZWM=PWM+(ZRWS/KSPLIT-PRWS)/ZMZM_PRHODJ*PTSTEP
     DO JSV=1,ISV
       ZSVM(:,:,:,JSV)=PSVM(:,:,:,JSV)+   &
-        (ZRSVS(:,:,:,JSV)/KSPLIT-PRSVS(:,:,:,JSV))/PRHODJ*PTSTEP_SV
+        (ZRSVS(:,:,:,JSV)/KSPLIT-PRSVS(:,:,:,JSV))/PRHODJ*PTSTEP
     END DO
-    ZTHLM=PTHLM+(ZRTHLS/KSPLIT-PRTHLS)/PRHODJ*PTSTEP_MET
-    ZTKEM=ZTKEM+PTRH*PTSTEP_MET/KSPLIT
+    ZTHLM=PTHLM+(ZRTHLS/KSPLIT-PRTHLS)/PRHODJ*PTSTEP
+    ZTKEM=ZTKEM+PTRH*PTSTEP/KSPLIT
     DO JRR=1,KRR
       ZRM(:,:,:,JRR)=PRM(:,:,:,JRR)+   &
-       (ZRRS(:,:,:,JRR)/KSPLIT-PRRS(:,:,:,JRR))/PRHODJ*PTSTEP_MET
+       (ZRRS(:,:,:,JRR)/KSPLIT-PRRS(:,:,:,JRR))/PRHODJ*PTSTEP
     END DO
 !
 ! reinforce boundary conditions
@@ -590,7 +583,7 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN
   IF (ISV>0) PRSVS=ZRSVS/KSPLIT
   PRTHLS=ZRTHLS/KSPLIT
   IF (KRR>0) PRRS=ZRRS/KSPLIT
-  PTRH=(ZTKEM-PTKEM)/PTSTEP_MET
+  PTRH=(ZTKEM-PTKEM)/PTSTEP
 !
 !*       2.6  deallocations
 !             -------------
@@ -618,7 +611,7 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN
 !
 ELSE
 !
-  CALL TURB_HOR(1, KRR, KRRL, KRRI, PTSTEP_UVW,                &
+  CALL TURB_HOR(1, KRR, KRRL, KRRI,  PTSTEP,                   &
                 OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
                 HFMFILE,HLUOUT,                                &
                 PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90
index 2cf598d01..3c0144806 100644
--- a/src/MNH/turb_ver.f90
+++ b/src/MNH/turb_ver.f90
@@ -13,8 +13,7 @@ INTERFACE
       SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                       OCLOSE_OUT,OTURB_FLX,                         &
                       HTURBDIM,HTOM,PIMPL,PEXPL,                    & 
-                      PTSTEP_UVW,PTSTEP_MET, PTSTEP_SV,             &
-                      HFMFILE,HLUOUT,                               &
+                      PTSTEP, HFMFILE,HLUOUT,                       &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,PTHVREF,                               &
@@ -29,9 +28,6 @@ INTERFACE
                       PDP,PTP,PSIGS,PWTH,PWRC,PWSV                  )
 
 !
-INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
-INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
 INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
 INTEGER,                INTENT(IN)   :: KRRL          ! number of liquid water var.
 INTEGER,                INTENT(IN)   :: KRRI          ! number of ice water var.
@@ -43,9 +39,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
-REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
-REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
-REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
 CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
                                                       ! FM-file 
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
@@ -127,11 +121,10 @@ END MODULE MODI_TURB_VER
 !
 !
 !     ###############################################################
-      SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI,                          &
+      SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI,              &
                       OCLOSE_OUT,OTURB_FLX,                         &
                       HTURBDIM,HTOM,PIMPL,PEXPL,                    & 
-                      PTSTEP_UVW,PTSTEP_MET, PTSTEP_SV,             &
-                      HFMFILE,HLUOUT,                               &
+                      PTSTEP, HFMFILE,HLUOUT,                       &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,PTHVREF,                               &
@@ -272,7 +265,7 @@ END MODULE MODI_TURB_VER
 !!           XCTV,XCHV   : cts for the T and moisture variances
 !!
 !!      Module MODD_PARAMETERS
-!!
+!!  
 !!           JPVEXT_TURB     : number of vertical external points
 !!           JPHEXT     : number of horizontal external points
 !!
@@ -377,9 +370,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
-REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
-REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
-REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
 CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
                                                       ! FM-file 
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
@@ -554,6 +545,7 @@ CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_FLX,        &
              ZREDS1,ZRED2THS, ZRED2RS,             &
              ZBLL_O_E,                             &
              ZETHETA, ZEMOIST                      )
+!
 ! Buoyancy coefficient
 !
 ZBETA = XG/PTHVREF
@@ -613,8 +605,7 @@ END IF
 !
   CALL  TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,               &
                         OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
-                        PIMPL,PEXPL,                                  &
-                        PTSTEP_MET,                                   &
+                        PIMPL,PEXPL,PTSTEP,                           &
                         HFMFILE,HLUOUT,                               &
                         PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                         PRHODJ,PTHVREF,                               &
@@ -659,8 +650,7 @@ END IF
 !
 CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
                       OCLOSE_OUT,OTURB_FLX,KRR,                     &
-                      HTURBDIM,PIMPL,PEXPL,                         &
-                      PTSTEP_UVW,                                   &
+                      HTURBDIM,PIMPL,PEXPL,PTSTEP,                  &
                       HFMFILE,HLUOUT,                               &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
@@ -680,8 +670,7 @@ CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
 IF (SIZE(PSVM,4)>0)                                                 &
 CALL  TURB_VER_SV_FLUX(KKA,KKU,KKL,                                 &
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,                &
-                      PIMPL,PEXPL,                                  &
-                      PTSTEP_SV,                                    &
+                      PIMPL,PEXPL,PTSTEP,                           &
                       HFMFILE,HLUOUT,                               &
                       PDZZ,PDIRCOSZW,                               &
                       PRHODJ,PWM,                                   &
diff --git a/src/MNH/two_wayn.f90 b/src/MNH/two_wayn.f90
index 9b48a6507..89bb1818f 100644
--- a/src/MNH/two_wayn.f90
+++ b/src/MNH/two_wayn.f90
@@ -217,10 +217,8 @@ CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
 CALL GO_TOMODEL_ll(KMI, IINFO_ll)
 CALL GET_CHILD_DIM_ll(IMI, IDIMX, IDIMY, IINFO_ll)
 !
-!JUAN
 !  here we need to go back to SON domain for boundaries test
 CALL GO_TOMODEL_ll(IMI, IINFO_ll)
-!JUAN
 !
 IKU = SIZE(PTHM,3)
 IKB = JPVEXT+1
@@ -328,7 +326,7 @@ DO JX=1,IDXRATIO
     IJ2 = IJE+JY-IDYRATIO
     ZTTHM(3:IDIMX-2,3:IDIMY-2,:) = ZTTHM(3:IDIMX-2,3:IDIMY-2,:) &
                            +XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:) &
-                             *XTHM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)
+                             *XTHT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)
 !
   END DO
 END DO
@@ -346,7 +344,7 @@ DO JVAR=1,IRR
       IJ2 = IJE+JY-IDYRATIO
       ZTRM(3:IDIMX-2,3:IDIMY-2,:,JVAR) =  ZTRM(3:IDIMX-2,3:IDIMY-2,:,JVAR)  &
                              +XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)    &
-                                *XRM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR)
+                                *XRT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR)
     END DO
   END DO 
 END DO
@@ -365,7 +363,7 @@ IF (KSV /= 0) THEN
       IJ2 = IJE+JY-IDYRATIO
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR) = ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR)  &
                              +XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)    &
-                               *XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR)
+                               *XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR)
     END DO
    END DO
  END DO
@@ -383,7 +381,7 @@ IF (NSV_C2R2_A(IMI) > 0) THEN
         ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_C2R2BEG_A(KMI)) = &
              &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_C2R2BEG_A(KMI))+&
              &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-             &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_C2R2BEG_A(IMI))
+             &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_C2R2BEG_A(IMI))
       END DO
     END DO
   END DO
@@ -402,7 +400,7 @@ IF (NSV_C1R3_A(IMI) > 0) THEN
         ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_C1R3BEG_A(KMI)) = &
              &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_C1R3BEG_A(KMI))+&
              &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-             &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_C1R3BEG_A(IMI))
+             &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_C1R3BEG_A(IMI))
       END DO
     END DO
   END DO
@@ -421,7 +419,7 @@ IF (NSV_ELEC_A(IMI) > 0) THEN
         ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_ELECBEG_A(KMI)) = &
              &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_ELECBEG_A(KMI))+&
              &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-             &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_ELECBEG_A(IMI))
+             &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_ELECBEG_A(IMI))
       END DO
     END DO
   END DO
@@ -438,7 +436,7 @@ DO JVAR=1,NSV_CHEM_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_CHEMBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_CHEMBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_CHEMBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_CHEMBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -456,7 +454,7 @@ IF (NSV_CHIC_A(IMI) > 0) THEN
         ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_CHICBEG_A(KMI)) = &
              &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_CHICBEG_A(KMI))+&
              &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-             &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_CHICBEG_A(IMI))
+             &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_CHICBEG_A(IMI))
       END DO
     END DO
   END DO
@@ -473,7 +471,7 @@ DO JVAR=1,NSV_LNOX_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_LNOXBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_LNOXBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_LNOXBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_LNOXBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -489,7 +487,7 @@ DO JVAR=1,NSV_AER_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_AERBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_AERBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_AERBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_AERBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -504,7 +502,7 @@ DO JVAR=1,NSV_AERDEP_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_AERDEPBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_AERDEPBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_AERDEPBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_AERDEPBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -520,7 +518,7 @@ DO JVAR=1,NSV_DST_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_DSTBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_DSTBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_DSTBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_DSTBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -535,7 +533,7 @@ DO JVAR=1,NSV_DSTDEP_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_DSTDEPBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_DSTDEPBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_DSTDEPBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_DSTDEPBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -551,7 +549,7 @@ DO JVAR=1,NSV_SLT_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_SLTBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_SLTBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_SLTBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_SLTBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -566,7 +564,7 @@ DO JVAR=1,NSV_SLTDEP_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_SLTDEPBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_SLTDEPBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_SLTDEPBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_SLTDEPBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -582,7 +580,7 @@ DO JVAR=1,NSV_LG_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_LGBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_LGBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_LGBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_LGBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -600,7 +598,7 @@ DO JVAR=1,NSV_PP_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_PPBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_PPBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_PPBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_PPBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -618,7 +616,7 @@ DO JVAR=1,NSV_CS_A(KMI)
       ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_CSBEG_A(KMI)) = &
            &ZTSVM(3:IDIMX-2,3:IDIMY-2,:,JVAR-1+NSV_CSBEG_A(KMI))+&
            &XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:)*&
-           &XSVM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_CSBEG_A(IMI))
+           &XSVT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,:,JVAR-1+NSV_CSBEG_A(IMI))
     END DO
   END DO
 END DO
@@ -758,12 +756,12 @@ DO JX=1,IDXRATIO
     IJ2 = IJE+JY-IDYRATIO
     ZTWM(3:IDIMX-2,3:IDIMY-2,IKB) = ZTWM(3:IDIMX-2,3:IDIMY-2,IKB)           &
                           +2.*XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,IKB) &
-                                *XWM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,IKB)
+                                *XWT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,IKB)
 !
     ZTWM(3:IDIMX-2,3:IDIMY-2,IKB+1:IKU) = ZTWM(3:IDIMX-2,3:IDIMY-2,IKB+1:IKU)    &
                             +(XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,IKB+1:IKU  ) &
                             + XRHODJ(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,IKB  :IKU-1))&
-                                *XWM(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,IKB+1:IKU)
+                                *XWT(II1:II2:IDXRATIO,IJ1:IJ2:IDYRATIO,IKB+1:IKU)
   END DO
 END DO
 !
@@ -797,7 +795,7 @@ DO JY=1,IDYRATIO
   ZTUM(IWEST:IDIMX-2,3:IDIMY-2,:) = ZTUM(IWEST:IDIMX-2,3:IDIMY-2,:) &
                               +(XRHODJ(II1U  :II2  :IDXRATIO,IJ1:IJ2:IDYRATIO,:) &
                               +XRHODJ(II1U-1:II2-1:IDXRATIO,IJ1:IJ2:IDYRATIO,:)) &
-                                 *XUM(II1U  :II2  :IDXRATIO,IJ1:IJ2:IDYRATIO,:)
+                                 *XUT(II1U  :II2  :IDXRATIO,IJ1:IJ2:IDYRATIO,:)
 END DO
 !
 !
@@ -831,7 +829,7 @@ DO JX=1,IDXRATIO
   ZTVM(3:IDIMX-2,ISOUTH:IDIMY-2,:) = ZTVM(3:IDIMX-2,ISOUTH:IDIMY-2,:) &
                               +(XRHODJ(II1:II2:IDXRATIO,IJ1V  :IJ2  :IDYRATIO,:) &
                              + XRHODJ(II1:II2:IDXRATIO,IJ1V-1:IJ2-1:IDYRATIO,:)) &
-                                 *XVM(II1:II2:IDXRATIO,IJ1V  :IJ2  :IDYRATIO,:)
+                                 *XVT(II1:II2:IDXRATIO,IJ1V  :IJ2  :IDYRATIO,:)
 END DO
 !
 !
diff --git a/src/MNH/ver_dyn.f90 b/src/MNH/ver_dyn.f90
index a341f6344..3566b1c7a 100644
--- a/src/MNH/ver_dyn.f90
+++ b/src/MNH/ver_dyn.f90
@@ -2,6 +2,7 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
+! MASDEV4_7 prep_real 2006/07/07 12:19:27
 !-----------------------------------------------------------------
 !     ######spl
       MODULE MODI_VER_DYN
@@ -139,13 +140,12 @@ USE MODI_VER_INTERP_LIN
 USE MODI_WGUESS
 USE MODI_VER_SHIFT
 USE MODI_VER_INT_DYN
-USE MODI_ANEL_BALANCE_n
 USE MODI_SHUMAN
 !
 USE MODD_CONF           ! declaration modules
 USE MODD_CST
 USE MODD_LUNIT
-USE MODD_FIELD_n, ONLY: XUM,XVM,XWM,XPABSM,XTHM,XRM
+USE MODD_FIELD_n, ONLY: XUT,XVT,XWT,XPABST,XTHT,XRT
 USE MODD_LSFIELD_n
 USE MODD_LBC_n
 USE MODD_REF_n
@@ -153,12 +153,10 @@ USE MODD_DYN_n
 USE MODD_GRID_n
 USE MODD_PARAMETERS
 USE MODD_VER_INTERP_LIN
-!JUAN REALZ
 USE MODD_DIM_n
 USE MODE_MPPDB
 USE MODE_ll
 USE MODE_EXTRAPOL
-!JUAN REALZ
 !
 IMPLICIT NONE
 !
@@ -213,7 +211,6 @@ INTEGER :: IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU     ! dimensions of the
 INTEGER :: IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2       ! West-east LB arrays
 INTEGER :: IISIZEYF,IJSIZEYF,IISIZEYFV,IJSIZEYFV     ! dimensions of the
 INTEGER :: IISIZEY4,IJSIZEY4,IISIZEY2,IJSIZEY2       ! North-south LB arrays
-
 !-------------------------------------------------------------------------------
 !
 IIB=JPHEXT+1
@@ -267,18 +264,18 @@ CALL MPPDB_CHECK3D(ZRHODJV,"VERDYN::ZRHODJV",PRECISION)
 !*       4.    STORAGE IN MODD_FIELD1
 !              ----------------------
 !
-ALLOCATE(XUM(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
-ALLOCATE(XVM(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
-ALLOCATE(XWM(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
+ALLOCATE(XUT(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
+ALLOCATE(XVT(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
+ALLOCATE(XWT(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
 !
-ZRHOD(:,:,:)=XPABSM(:,:,:)/(XPABSM(:,:,:)/XP00)**(XRD/XCPD) &
-            /(XRD*XTHM(:,:,:)*(1.+XRV/XRD*XRM(:,:,:,1)))
+ZRHOD(:,:,:)=XPABST(:,:,:)/(XPABST(:,:,:)/XP00)**(XRD/XCPD) &
+            /(XRD*XTHT(:,:,:)*(1.+XRV/XRD*XRT(:,:,:,1)))
 !
-XUM(:,:,:)=ZRHODJU(:,:,:)/MXM(ZRHOD(:,:,:)*PJ(:,:,:))
-XVM(:,:,:)=ZRHODJV(:,:,:)/MYM(ZRHOD(:,:,:)*PJ(:,:,:))
+XUT(:,:,:)=ZRHODJU(:,:,:)/MXM(ZRHOD(:,:,:)*PJ(:,:,:))
+XVT(:,:,:)=ZRHODJV(:,:,:)/MYM(ZRHOD(:,:,:)*PJ(:,:,:))
 
-CALL EXTRAPOL('W',XUM)
-CALL EXTRAPOL('S',XVM)
+CALL EXTRAPOL('W',XUT)
+CALL EXTRAPOL('S',XVT)
 
 !
 !
@@ -311,7 +308,7 @@ END IF
 !
 ZZFLUX_SH(:,:,:)=VER_SHIFT(PZFLUX_MX,PZS_LS,XZS)
 CALL COEF_VER_INTERP_LIN(ZZFLUX_SH(:,:,:),XZZ(:,:,:))
-XWM(:,:,:)=VER_INTERP_LIN(PW_MX(:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
+XWT(:,:,:)=VER_INTERP_LIN(PW_MX(:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 !
 IF ( HATMFILETYPE == 'MESONH' ) THEN
   ALLOCATE(XLSWM(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
@@ -325,19 +322,19 @@ DEALLOCATE(XCOEFLIN)
 !
 ZCOEF(:,:,:)=(       XZZ(:,:,:)           -SPREAD(XZZ(:,:,IKB),3,IKU)) &
             /(SPREAD(XZZ(:,:,IKE+1),3,IKU)-SPREAD(XZZ(:,:,IKB),3,IKU))
-XWM(:,:,:)=XWM(:,:,:)*MAX(MIN( (4.-4.*ZCOEF(:,:,:)) ,1.),0.)
+XWT(:,:,:)=XWT(:,:,:)*MAX(MIN( (4.-4.*ZCOEF(:,:,:)) ,1.),0.)
 !-------------------------------------------------------------------------------
 !
 !*       6.    STORAGE OF LARGE SCALE FIELDS
 !              ------------------------------
 !
 IF ( HATMFILETYPE == 'GRIBEX' ) THEN
-  ALLOCATE(XLSUM(SIZE(XUM,1),SIZE(XUM,2),SIZE(XUM,3)))
-  ALLOCATE(XLSVM(SIZE(XVM,1),SIZE(XVM,2),SIZE(XVM,3)))
-  ALLOCATE(XLSWM(SIZE(XWM,1),SIZE(XWM,2),SIZE(XWM,3)))
-  XLSUM(:,:,:)=XUM(:,:,:)
-  XLSVM(:,:,:)=XVM(:,:,:)
-  XLSWM(:,:,:)=XWM(:,:,:)
+  ALLOCATE(XLSUM(SIZE(XUT,1),SIZE(XUT,2),SIZE(XUT,3)))
+  ALLOCATE(XLSVM(SIZE(XVT,1),SIZE(XVT,2),SIZE(XVT,3)))
+  ALLOCATE(XLSWM(SIZE(XWT,1),SIZE(XWT,2),SIZE(XWT,3)))
+  XLSUM(:,:,:)=XUT(:,:,:)
+  XLSVM(:,:,:)=XVT(:,:,:)
+  XLSWM(:,:,:)=XWT(:,:,:)
 END IF
 ! enforce zero gradient along the vertical under and above the vertical
 ! boundaries
@@ -353,8 +350,6 @@ CALL EXTRAPOL('E',XLSUM)
 CALL EXTRAPOL('S',XLSVM)
 CALL EXTRAPOL('E',XLSVM)
 
-
-
 ! FROM PREP_IDEAL_CASE
 !
 ! 3D case
@@ -397,98 +392,31 @@ CALL EXTRAPOL('E',XLSVM)
 ILBX=SIZE(XLBXUM,1)
 ILBY=SIZE(XLBYUM,2)
 IF(LWEST_ll() .AND. .NOT. L1D) THEN
-  XLBXUM(1:NRIMX+1,        :,:)     = XUM(2:NRIMX+2,        :,:)
-  XLBXVM(1:NRIMX+1,        :,:)     = XVM(1:NRIMX+1,        :,:)
-  XLBXWM(1:NRIMX+1,        :,:)     = XWM(1:NRIMX+1,        :,:)
+  XLBXUM(1:NRIMX+1,        :,:)     = XUT(2:NRIMX+2,        :,:)
+  XLBXVM(1:NRIMX+1,        :,:)     = XVT(1:NRIMX+1,        :,:)
+  XLBXWM(1:NRIMX+1,        :,:)     = XWT(1:NRIMX+1,        :,:)
 
 ENDIF
 IF(LEAST_ll() .AND. .NOT. L1D) THEN
-  XLBXUM(ILBX-NRIMX:ILBX,:,:)     = XUM(IIU-NRIMX:IIU,    :,:)
-  XLBXVM(ILBX-NRIMX:ILBX,:,:)     = XVM(IIU-NRIMX:IIU,    :,:)
-  XLBXWM(ILBX-NRIMX:ILBX,:,:)     = XWM(IIU-NRIMX:IIU,    :,:)
+  XLBXUM(ILBX-NRIMX:ILBX,:,:)     = XUT(IIU-NRIMX:IIU,    :,:)
+  XLBXVM(ILBX-NRIMX:ILBX,:,:)     = XVT(IIU-NRIMX:IIU,    :,:)
+  XLBXWM(ILBX-NRIMX:ILBX,:,:)     = XWT(IIU-NRIMX:IIU,    :,:)
 
 ENDIF
 IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYUM(:,1:NRIMY+1,        :)     = XUM(:,1:NRIMY+1,      :)
-  XLBYVM(:,1:NRIMY+1,        :)     = XVM(:,2:NRIMY+2,      :)
-  XLBYWM(:,1:NRIMY+1,        :)     = XWM(:,1:NRIMY+1,  :)
+  XLBYUM(:,1:NRIMY+1,        :)     = XUT(:,1:NRIMY+1,      :)
+  XLBYVM(:,1:NRIMY+1,        :)     = XVT(:,2:NRIMY+2,      :)
+  XLBYWM(:,1:NRIMY+1,        :)     = XWT(:,1:NRIMY+1,  :)
 
 ENDIF
 IF(LNORTH_ll().AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYUM(:,ILBY-NRIMY:ILBY,:)     = XUM(:,IJU-NRIMY:IJU,  :)
-  XLBYVM(:,ILBY-NRIMY:ILBY,:)     = XVM(:,IJU-NRIMY:IJU,  :)
-  XLBYWM(:,ILBY-NRIMY:ILBY,:)     = XWM(:,IJU-NRIMY:IJU,  :)
+  XLBYUM(:,ILBY-NRIMY:ILBY,:)     = XUT(:,IJU-NRIMY:IJU,  :)
+  XLBYVM(:,ILBY-NRIMY:ILBY,:)     = XVT(:,IJU-NRIMY:IJU,  :)
+  XLBYWM(:,ILBY-NRIMY:ILBY,:)     = XWT(:,IJU-NRIMY:IJU,  :)
 
 ENDIF
 
-!!$IF ( LHORELAX_UVWTH ) THEN
-!!$  ALLOCATE(XLBXUM(2*NRIMX+2,IJU,IKU))
-!!$  ALLOCATE(XLBYUM(IIU,2*NRIMY+2,IKU))
-!!$  ALLOCATE(XLBXVM(2*NRIMX+2,IJU,IKU))
-!!$  ALLOCATE(XLBYVM(IIU,2*NRIMY+2,IKU))
-!!$  ALLOCATE(XLBXWM(2*NRIMX+2,IJU,IKU))
-!!$  ALLOCATE(XLBYWM(IIU,2*NRIMY+2,IKU))
-!!$ELSE
-!!$  ALLOCATE(XLBXUM(4,IJU,IKU))
-!!$  ALLOCATE(XLBYUM(IIU,2,IKU))
-!!$  ALLOCATE(XLBXVM(2,IJU,IKU))
-!!$  ALLOCATE(XLBYVM(IIU,4,IKU))
-!!$  ALLOCATE(XLBXWM(2,IJU,IKU))
-!!$  ALLOCATE(XLBYWM(IIU,2,IKU))
-!!$END IF
-
-
 !
-!!$NSIZELBX_ll=SIZE(XLBXWM,1)
-!!$NSIZELBXU_ll=SIZE(XLBXUM,1)
-!!$NSIZELBY_ll=SIZE(XLBYWM,2)
-!!$NSIZELBYV_ll=SIZE(XLBYVM,2)
-!!$!
-!!$!
-!!$ILBX=SIZE(XLBXUM,1)/2-1
-!!$ILBY=SIZE(XLBYUM,2)/2-1
-!!$!
-!!$IF(LWEST_ll() .AND. .NOT. L1D) THEN
-!!$   XLBXUM(1:ILBX+1,:,:)        = XUM(  IIB:IIB+ILBX  ,:,:)
-!!$   XLBXVM(1:ILBX+1,:,:)        = XVM(IIB-1:IIB-1+ILBX,:,:)
-!!$   XLBXWM(1:ILBX+1,:,:)        = XWM(IIB-1:IIB-1+ILBX,:,:)
-!!$ENDIF
-!!$!
-!!$!
-!!$!
-!!$ILBX=SIZE(XLBXVM,1)/2-1
-!!$ILBY=SIZE(XLBYVM,2)/2-1
-!!$!
-!!$IF(LEAST_ll() .AND. .NOT. L1D) THEN
-!!$   XLBXUM(ILBX+2:2*ILBX+2,:,:) = XUM(IIE+1-ILBX:IIE+1,:,:)
-!!$   XLBXVM(ILBX+2:2*ILBX+2,:,:) = XVM(IIE+1-ILBX:IIE+1,:,:)
-!!$   XLBXWM(ILBX+2:2*ILBX+2,:,:) = XWM(IIE+1-ILBX:IIE+1,:,:)
-!!$END IF
-!!$!
-!!$!
-!!$ILBX=SIZE(XLBXWM,1)/2-1
-!!$ILBY=SIZE(XLBYWM,2)/2-1
-!!$!
-!!$IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) THEN
-!!$   XLBYUM(:,1:ILBY+1,:)        = XUM(:,IJB-1:IJB-1+ILBY,:)
-!!$   XLBYVM(:,1:ILBY+1,:)        = XVM(:,IJB  :IJB+ILBY  ,:)
-!!$   XLBYWM(:,1:ILBY+1,:)        = XWM(:,IJB-1:IJB-1+ILBY,:)
-!!$ENDIF
-!!$
-!!$IF(LNORTH_ll().AND. .NOT. L1D .AND. .NOT. L2D) THEN
-!!$   XLBYUM(:,ILBY+2:2*ILBY+2,:) = XUM(:,IJE+1-ILBY:IJE+1,:)
-!!$   XLBYVM(:,ILBY+2:2*ILBY+2,:) = XVM(:,IJE+1-ILBY:IJE+1,:)
-!!$   XLBYWM(:,ILBY+2:2*ILBY+2,:) = XWM(:,IJE+1-ILBY:IJE+1,:)
-!!$END IF
-
-CALL  MPPDB_CHECKLB(XLBXUM,"ver_dyn::XLBXUM::",PRECISION,'LBXU',NRIMX)
-CALL  MPPDB_CHECKLB(XLBXVM,"ver_dyn::XLBXVM::",PRECISION,'LBXU',NRIMX)
-CALL  MPPDB_CHECKLB(XLBXWM,"ver_dyn::XLBXWM::",PRECISION,'LBXU',NRIMX)
-
-
-CALL  MPPDB_CHECKLB(XLBYUM,"ver_dyn::XLBYUM::",PRECISION,'LBYV',NRIMY)
-CALL  MPPDB_CHECKLB(XLBYVM,"ver_dyn::XLBYVM::",PRECISION,'LBYV',NRIMY)
-CALL  MPPDB_CHECKLB(XLBYWM,"ver_dyn::XLBYWM::",PRECISION,'LBYV',NRIMY)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ver_interp_field.f90 b/src/MNH/ver_interp_field.f90
index 37b0b3bd2..61a6e6ee0 100644
--- a/src/MNH/ver_interp_field.f90
+++ b/src/MNH/ver_interp_field.f90
@@ -11,9 +11,8 @@ MODULE MODI_VER_INTERP_FIELD
 INTERFACE
 !
       SUBROUTINE VER_INTERP_FIELD(HTURB,KRR,KSV,PZZ_LS,PZZ,                    &
-                              PUM,PVM,PWM,PTHVM,PRM,PHUM,PTKEM,PSVM,           &
                               PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT,           &
-                              PSRCM,PSRCT,PSIGS,                               &
+                              PSRCT,PSIGS,                                     &
                               PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM                  )
 !
 CHARACTER (LEN=4), INTENT(IN) :: HTURB !  Kind of turbulence parameterization
@@ -22,17 +21,12 @@ INTEGER,           INTENT(IN) :: KSV   ! number of scalar variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ_LS ! initial 3D grid
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ    ! new     3D grid
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUM,PVM,PWM        !  model 2
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTKEM              ! variables
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRM,PSVM           !   at t-dt
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHVM,PHUM         !
-!
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT        !  model 2
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTKET              ! variables
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRT,PSVT           !   at t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHVT,PHUT         !
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSRCM,PSRCT,PSIGS  ! secondary
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSRCT,PSIGS  ! secondary
                                                             ! prognostic variables
            ! Larger Scale fields
 REAL, DIMENSION(:,:,:),          INTENT(INOUT) :: PLSUM, PLSVM, PLSWM  ! Wind
@@ -45,9 +39,8 @@ END MODULE MODI_VER_INTERP_FIELD
 !
 !     ##########################################################################
       SUBROUTINE VER_INTERP_FIELD(HTURB,KRR,KSV,PZZ_LS,PZZ,                    &
-                              PUM,PVM,PWM,PTHVM,PRM,PHUM,PTKEM,PSVM,           &
                               PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT,           &
-                              PSRCM,PSRCT,PSIGS,                               &
+                              PSRCT,PSIGS,                                     &
                               PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM                  )
 !     ##########################################################################
 !
@@ -113,17 +106,12 @@ INTEGER,           INTENT(IN) :: KSV   ! number of scalar variables
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ_LS ! initial 3D grid
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ    ! new     3D grid
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUM,PVM,PWM        !  model 2
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTKEM              ! variables
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRM,PSVM           !   at t-dt
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHVM,PHUM         !
-!
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT        !  model 2
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTKET              ! variables
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRT,PSVT           !   at t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHVT,PHUT         !
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSRCM,PSRCT,PSIGS  ! secondary
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSRCT,PSIGS  ! secondary
                                                        ! prognostic variables
            ! Larger Scale fields
 REAL, DIMENSION(:,:,:),          INTENT(INOUT) :: PLSUM, PLSVM, PLSWM  ! Wind
@@ -166,7 +154,6 @@ ZGRID2(1,:,:)=2.*ZGRID2(2,:,:)-ZGRID2(3,:,:)
 !
 CALL COEF_VER_INTERP_LIN(ZGRID1(:,:,:),ZGRID2(:,:,:))
 !
-PUM  (:,:,:)   =  VER_INTERP_LIN(PUM   (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PUT  (:,:,:)   =  VER_INTERP_LIN(PUT   (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PLSUM (:,:,:)  =  VER_INTERP_LIN(PLSUM (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 !
@@ -188,7 +175,6 @@ ZGRID2(:,1,:)=2.*ZGRID2(:,2,:)-ZGRID2(:,3,:)
 !
 CALL COEF_VER_INTERP_LIN(ZGRID1(:,:,:),ZGRID2(:,:,:))
 !
-PVM  (:,:,:)   =  VER_INTERP_LIN(PVM   (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PVT  (:,:,:)   =  VER_INTERP_LIN(PVT   (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PLSVM (:,:,:)  =  VER_INTERP_LIN(PLSVM (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 !
@@ -202,7 +188,6 @@ ZGRID1(:,:,1:IKB)=MIN(ZGRID1(:,:,1:IKB),ZGRID2(:,:,1:IKB))
 !
 CALL COEF_VER_INTERP_LIN(ZGRID1(:,:,:),ZGRID2(:,:,:))
 !
-PWM  (:,:,:)   =  VER_INTERP_LIN(PWM   (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PWT  (:,:,:)   =  VER_INTERP_LIN(PWT   (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PLSWM (:,:,:)  =  VER_INTERP_LIN(PLSWM (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 !
@@ -217,7 +202,6 @@ ZGRID2(:,:,IKU)=2.*ZGRID2(:,:,IKU-1)-ZGRID2(:,:,IKU-2)
 !
 CALL COEF_VER_INTERP_LIN(ZGRID1(:,:,:),ZGRID2(:,:,:))
 !
-PTHVM (:,:,:)   =  VER_INTERP_LIN(PTHVM  (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PTHVT (:,:,:)   =  VER_INTERP_LIN(PTHVT  (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 PLSTHM(:,:,:)  =  VER_INTERP_LIN(PLSTHM(:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 !
@@ -232,16 +216,12 @@ END IF
 !               ---------------
 !
 DO JRR=1,KRR
-  PRM  (:,:,:,JRR) =  VER_INTERP_LIN(PRM (:,:,:,JRR),NKLIN(:,:,:),XCOEFLIN(:,:,:))
   PRT  (:,:,:,JRR) =  VER_INTERP_LIN(PRT (:,:,:,JRR),NKLIN(:,:,:),XCOEFLIN(:,:,:))
-  PRM (:,:,:,JRR) = MAX(PRM(:,:,:,JRR),0.)
   PRT (:,:,:,JRR) = MAX(PRT(:,:,:,JRR),0.)
 END DO
 !
 IF (CONF_MODEL(1)%NRR>=1) THEN
-  PHUM(:,:,:)   =  VER_INTERP_LIN(PHUM  (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
   PHUT(:,:,:)   =  VER_INTERP_LIN(PHUT  (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
-  PHUM(:,:,:)   = MIN(MAX(PHUM(:,:,:),0.),100.)
   PHUT(:,:,:)   = MIN(MAX(PHUT(:,:,:),0.),100.)
 END IF
 !
@@ -251,9 +231,7 @@ END IF
 !               ----------------
 !
 DO JSV=1,KSV
-  PSVM (:,:,:,JSV) =  VER_INTERP_LIN(PSVM (:,:,:,JSV),NKLIN(:,:,:),XCOEFLIN(:,:,:))
   PSVT (:,:,:,JSV) =  VER_INTERP_LIN(PSVT (:,:,:,JSV),NKLIN(:,:,:),XCOEFLIN(:,:,:))
-  PSVM (:,:,:,JSV) = MAX(PSVM(:,:,:,JSV),0.)
   PSVT (:,:,:,JSV) = MAX(PSVT(:,:,:,JSV),0.)
 END DO
 !
@@ -273,9 +251,7 @@ ZGRID1(:,:,1:IKB)=MIN(ZGRID1(:,:,1:IKB),ZGRID2(:,:,1:IKB))
 CALL COEF_VER_INTERP_LIN(ZGRID1(:,:,:),ZGRID2(:,:,:))
 !
 IF (HTURB /= 'NONE') THEN
-  PTKEM(:,:,:)   =  VER_INTERP_LIN(PTKEM (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
   PTKET(:,:,:)   =  VER_INTERP_LIN(PTKET (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
-  PTKEM=MAX(PTKEM,XTKEMIN)
   PTKET=MAX(PTKET,XTKEMIN)
 ENDIF
 !
@@ -286,7 +262,6 @@ ENDIF
 !               ------------------------------
 !
 IF (KRR > 1 .AND. HTURB /= 'NONE') THEN
-  PSRCM (:,:,:) =  VER_INTERP_LIN(PSRCM (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
   PSRCT (:,:,:) =  VER_INTERP_LIN(PSRCT (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
   PSIGS (:,:,:) =  VER_INTERP_LIN(PSIGS (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 ENDIF
diff --git a/src/MNH/ver_thermo.f90 b/src/MNH/ver_thermo.f90
index 96cf37ae1..6dd494a03 100644
--- a/src/MNH/ver_thermo.f90
+++ b/src/MNH/ver_thermo.f90
@@ -2,6 +2,7 @@
 !--------------- special set of characters for RCS information
 !-----------------------------------------------------------------
 ! $Source$ $Revision$
+! MASDEV4_7 prep_real 2006/07/07 12:04:57
 !-----------------------------------------------------------------
 !     ######spl
       MODULE MODI_VER_THERMO
@@ -157,7 +158,7 @@ USE MODD_CONF           ! declaration modules
 USE MODD_CONF_n
 USE MODD_LUNIT
 USE MODD_CST
-USE MODD_FIELD_n, ONLY: XTHM,XRM,XPABSM,XDRYMASST
+USE MODD_FIELD_n, ONLY: XTHT,XRT,XPABST,XDRYMASST
 USE MODD_LSFIELD_n
 USE MODD_DYN_n
 USE MODD_REF_n
@@ -169,12 +170,10 @@ USE MODD_PARAMETERS
 !
 USE MODE_FMWRIT
 USE MODE_FM
-!JUAN REALZ
 USE MODD_DIM_n
 USE MODE_MPPDB
 USE MODE_ll
 USE MODE_EXTRAPOL
-!JUAN REALZ
 !
 !
 IMPLICIT NONE
@@ -218,7 +217,6 @@ REAL,DIMENSION(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3))   :: ZRHOD,ZSUMRT
 CHARACTER(LEN=100) :: YCOMMENT
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 CHARACTER(LEN=16)  :: YRECFM
-!JUAN REALZ
 INTEGER      :: IINFO_ll
 TYPE(LIST_ll), POINTER :: TZFIELDS_ll => NULL()  ! list of fields to exchange
 !
@@ -227,7 +225,6 @@ INTEGER :: IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2       ! West-east LB arrays
 INTEGER :: IISIZEYF,IJSIZEYF,IISIZEYFV,IJSIZEYFV     ! dimensions of the
 INTEGER :: IISIZEY4,IJSIZEY4,IISIZEY2,IJSIZEY2       ! North-south LB arrays
 
-!JUAN REALZ
 !-------------------------------------------------------------------------------
 !
 IIB=JPHEXT+1
@@ -245,8 +242,8 @@ IKU=SIZE(PJ,3)
 !*       1.    SHIFT AND INTERPOLATION TO MESONH GRID
 !              --------------------------------------
 !
-ALLOCATE(XTHM(IIU,IJU,IKU))
-ALLOCATE(XRM(IIU,IJU,IKU,NRR))
+ALLOCATE(XTHT(IIU,IJU,IKU))
+ALLOCATE(XRT(IIU,IJU,IKU,NRR))
 
 CALL MPPDB_CHECK3D(PTHV_MX,"ver_thermo:PTHV_MX",PRECISION)
 CALL MPPDB_CHECK3D(PR_MX(:,:,:,1),"ver_thermo:PR_MX",PRECISION)
@@ -265,32 +262,29 @@ IF ( PRESENT(PLSTH_MX)) THEN
   CALL MPPDB_CHECK3D(PLSRV_MX,"PLSRV_MX",PRECISION)
   !
   CALL VER_INT_THERMO(OSHIFT,PTHV_MX,PR_MX,PZS_LS,PZSMT_LS,PZMASS_MX,PZFLUX_MX,PPMHP_MX,PEXNTOP2D, &
-                      ZTHV,XRM,ZPMHP,PDIAG,PLSTH_MX,PLSRV_MX,XLSTHM,XLSRVM)
+                      ZTHV,XRT,ZPMHP,PDIAG,PLSTH_MX,PLSRV_MX,XLSTHM,XLSRVM)
 ELSE
   CALL VER_INT_THERMO(OSHIFT,PTHV_MX,PR_MX,PZS_LS,PZSMT_LS,PZMASS_MX,PZFLUX_MX,PPMHP_MX,PEXNTOP2D, &
-                      ZTHV,XRM,ZPMHP,PDIAG)
+                      ZTHV,XRT,ZPMHP,PDIAG)
 END IF
 !
-XTHM(:,:,:)=ZTHV(:,:,:)*(1.+WATER_SUM(XRM(:,:,:,:)))/(1.+XRV/XRD*XRM(:,:,:,1))
+XTHT(:,:,:)=ZTHV(:,:,:)*(1.+WATER_SUM(XRT(:,:,:,:)))/(1.+XRV/XRD*XRT(:,:,:,1))
 !
 ZTHV(:,:,1)=ZTHV(:,:,2)
-XTHM(:,:,1)=XTHM(:,:,2)
-XRM(:,:,1,:)=XRM(:,:,2,:)
+XTHT(:,:,1)=XTHT(:,:,2)
+XRT(:,:,1,:)=XRT(:,:,2,:)
 !
 IF (NRR>=3) THEN
-  WHERE  (XRM(:,:,:,3)<1.E-20)
-    XRM(:,:,:,3)=0.
+  WHERE  (XRT(:,:,:,3)<1.E-20)
+    XRT(:,:,:,3)=0.
   END WHERE
 END IF
+CALL EXTRAPOL('E',XTHT)
 
-!CALL EXTRAPOL('W',XTHM)
-!CALL EXTRAPOL('S',XTHM) 
-CALL EXTRAPOL('E',XTHM)
+CALL MPPDB_CHECK3D(XTHT,"VERTHERMO::XTHT",PRECISION)
 
-CALL MPPDB_CHECK3D(XTHM,"VERTHERMO::XTHM",PRECISION)
-
-DO JRR=1,SIZE(XRM,4)
-  CALL EXTRAPOL('E',XRM(:,:,:,JRR))
+DO JRR=1,SIZE(XRT,4)
+  CALL EXTRAPOL('E',XRT(:,:,:,JRR))
 END DO
 !
 IF (NVERB>=10) THEN
@@ -304,10 +298,10 @@ END IF
 !*       2.    COMPUTATION OF 1D REFERENCE STATE VARIABLES
 !              -------------------------------------------
 !
-CALL SET_REFZ(ZTHV,XRM(:,:,:,1))
+CALL SET_REFZ(ZTHV,XRT(:,:,:,1))
 
 CALL MPPDB_CHECK3D(ZTHV,"VERTHERMO::ZTHV",PRECISION)
-CALL MPPDB_CHECK3D(XRM(:,:,:,1),"VERTHERMO::XRM",PRECISION)
+CALL MPPDB_CHECK3D(XRT(:,:,:,1),"VERTHERMO::XRT",PRECISION)
 !
 !-------------------------------------------------------------------------------
 !
@@ -337,7 +331,6 @@ CALL MPPDB_CHECK3D(XRVREF,"VERTHERMO::XRVREF",PRECISION)
 CALL MPPDB_CHECK3D(XEXNREF,"VERTHERMO::XEXNREF",PRECISION)
 CALL MPPDB_CHECK3D(XRHODJ,"VERTHERMO::XRHODJ",PRECISION)
 
-
 !
 !-------------------------------------------------------------------------------
 !
@@ -349,10 +342,10 @@ CALL COMPUTE_EXNER_FROM_TOP(ZTHV,XZZ,PEXNTOP2D,ZHEXNFLUX,ZHEXNMASS)
 PPSURF(:,:) = 1.5*ZPMHP(:,:,JPVEXT+1) - 0.5*ZPMHP(:,:,JPVEXT+2) &
              + XP00*ZHEXNFLUX(:,:,JPVEXT+1) ** (XCPD/XRD)
 !
-ALLOCATE(XPABSM(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
-XPABSM(:,:,:)=ZPMHP(:,:,:) + XP00*ZHEXNMASS(:,:,:) ** (XCPD/XRD)
+ALLOCATE(XPABST(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3)))
+XPABST(:,:,:)=ZPMHP(:,:,:) + XP00*ZHEXNMASS(:,:,:) ** (XCPD/XRD)
 
-CALL EXTRAPOL('E',XPABSM)
+CALL EXTRAPOL('E',XPABST)
 !
 !-------------------------------------------------------------------------------
 !
@@ -360,11 +353,11 @@ CALL EXTRAPOL('E',XPABSM)
 !              -----------------------------
 !
 ZSUMRT(:,:,:) = 0.
-DO JRR=1,SIZE(XRM,4)
-  ZSUMRT(:,:,:) = ZSUMRT(:,:,:) + XRM(:,:,:,JRR)
+DO JRR=1,SIZE(XRT,4)
+  ZSUMRT(:,:,:) = ZSUMRT(:,:,:) + XRT(:,:,:,JRR)
 END DO
 !
-ZRHOD(:,:,:)=XPABSM(:,:,:)/(XPABSM(:,:,:)/XP00)**(XRD/XCPD) &
+ZRHOD(:,:,:)=XPABST(:,:,:)/(XPABST(:,:,:)/XP00)**(XRD/XCPD) &
             /(XRD*ZTHV(:,:,:)*(1.+ZSUMRT(:,:,:)))
 !
 CALL TOTAL_DMASS(CLUOUT0,PJ,ZRHOD,XDRYMASST)
@@ -386,8 +379,8 @@ CALL TOTAL_DMASS(CLUOUT0,PJ,ZRHOD,XDRYMASST)
 IF ( .NOT. PRESENT(PLSTH_MX) ) THEN
   ALLOCATE(XLSTHM(IIU,IJU,IKU))
   ALLOCATE(XLSRVM(IIU,IJU,IKU))
-  XLSTHM=XTHM
-  XLSRVM=XRM(:,:,:,1)
+  XLSTHM=XTHT
+  XLSRVM=XRT(:,:,:,1)
 END IF
 ! copy at the external levels
 XLSTHM(:,:,IKB-1)=XLSTHM(:,:,IKB)
@@ -404,8 +397,6 @@ IF ( LHORELAX_UVWTH ) THEN
     NSIZELBYV_ll=2*NRIMY+2
    ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
    ALLOCATE(XLBYTHM(IISIZEYF,IJSIZEYF,IKU))
-!!$  ALLOCATE(XLBXTHM(2*NRIMX+2,IJU,IKU))
-!!$  ALLOCATE(XLBYTHM(IIU,2*NRIMY+2,IKU))
 ELSE
     NSIZELBX_ll=2
     NSIZELBXU_ll=4
@@ -413,26 +404,24 @@ ELSE
     NSIZELBYV_ll=4
    ALLOCATE(XLBXTHM(IISIZEX2,IJSIZEX2,IKU))
    ALLOCATE(XLBYTHM(IISIZEY2,IJSIZEY2,IKU))
-!!$  ALLOCATE(XLBXTHM(2,IJU,IKU))
-!!$  ALLOCATE(XLBYTHM(IIU,2,IKU))
 END IF
 !
-!!$ILBX=SIZE(XLBXTHM,1)/2-1
-!!$XLBXTHM(1:ILBX+1,:,:)         = XTHM(IIB-1:IIB-1+ILBX,:,:)
-!!$XLBXTHM(ILBX+2:2*ILBX+2,:,:)  = XTHM(IIE+1-ILBX:IIE+1,:,:)
-!!$ILBY=SIZE(XLBYTHM,2)/2-1
-!!$XLBYTHM(:,1:ILBY+1,:)        = XTHM(:,IJB-1:IJB-1+ILBY,:)
-!!$XLBYTHM(:,ILBY+2:2*ILBY+2,:) = XTHM(:,IJE+1-ILBY:IJE+1,:)
+!ILBX=SIZE(XLBXTHM,1)/2-1
+!XLBXTHM(1:ILBX+1,:,:)         = XTHT(IIB-1:IIB-1+ILBX,:,:)
+!XLBXTHM(ILBX+2:2*ILBX+2,:,:)  = XTHT(IIE+1-ILBX:IIE+1,:,:)
+!ILBY=SIZE(XLBYTHM,2)/2-1
+!XLBYTHM(:,1:ILBY+1,:)        = XTHT(:,IJB-1:IJB-1+ILBY,:)
+!XLBYTHM(:,ILBY+2:2*ILBY+2,:) = XTHT(:,IJE+1-ILBY:IJE+1,:)
 !
 IF ( NRR > 0 ) THEN
   IF (       LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI    &
         .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. LHORELAX_RH                     &
      ) THEN
-!!$    ALLOCATE(XLBXRM(2*NRIMX+2,IJU,IKU,NRR))
-!!$    ALLOCATE(XLBYRM(IIU,2*NRIMY+2,IKU,NRR))
-!!$  ELSE
-!!$    ALLOCATE(XLBXRM(2,IJU,IKU,NRR))
-!!$    ALLOCATE(XLBYRM(IIU,2,IKU,NRR))
+!   ALLOCATE(XLBXRM(2*NRIMX+2,IJU,IKU,NRR))
+!   ALLOCATE(XLBYRM(IIU,2*NRIMY+2,IKU,NRR))
+! ELSE
+!   ALLOCATE(XLBXRM(2,IJU,IKU,NRR))
+!   ALLOCATE(XLBYRM(IIU,2,IKU,NRR))
       NSIZELBXR_ll=2*NRIMX+2
       NSIZELBYR_ll=2*NRIMY+2
       ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
@@ -446,13 +435,13 @@ IF ( NRR > 0 ) THEN
   !
   IF (SIZE(XLBXRM) .NE. 0 ) THEN
      ILBX=SIZE(XLBXRM,1)/2-1
-     XLBXRM(1:ILBX+1,:,:,:)         = XRM(IIB-1:IIB-1+ILBX,:,:,:)
-     XLBXRM(ILBX+2:2*ILBX+2,:,:,:)  = XRM(IIE+1-ILBX:IIE+1,:,:,:)
+     XLBXRM(1:ILBX+1,:,:,:)         = XRT(IIB-1:IIB-1+ILBX,:,:,:)
+     XLBXRM(ILBX+2:2*ILBX+2,:,:,:)  = XRT(IIE+1-ILBX:IIE+1,:,:,:)
   ENDIF
   IF (SIZE(XLBYRM) .NE. 0 ) THEN
      ILBY=SIZE(XLBYRM,2)/2-1
-     XLBYRM(:,1:ILBY+1,:,:)        = XRM(:,IJB-1:IJB-1+ILBY,:,:)
-     XLBYRM(:,ILBY+2:2*ILBY+2,:,:) = XRM(:,IJE+1-ILBY:IJE+1,:,:)
+     XLBYRM(:,1:ILBY+1,:,:)        = XRT(:,IJB-1:IJB-1+ILBY,:,:)
+     XLBYRM(:,ILBY+2:2*ILBY+2,:,:) = XRT(:,IJE+1-ILBY:IJE+1,:,:)
   ENDIF
 ELSE
    NSIZELBXR_ll=0
@@ -461,26 +450,26 @@ ELSE
    ALLOCATE(XLBYRM(0,0,0,0))
 END IF
 !
-!!$NSIZELBXR_ll=SIZE(XLBXRM,1)
-!!$NSIZELBYR_ll=SIZE(XLBYRM,2)   !! coding for one processor
+!NSIZELBXR_ll=SIZE(XLBXRM,1)
+!NSIZELBYR_ll=SIZE(XLBYRM,2)   !! coding for one processor
 
 ILBX=SIZE(XLBXTHM,1)
 ILBY=SIZE(XLBYTHM,2)
 IF(LWEST_ll() .AND. .NOT. L1D) THEN
-  XLBXTHM(1:NRIMX+1,        :,:)   = XTHM(1:NRIMX+1,        :,:)
-  XLBXRM(1:NRIMX+1,        :,:,:)   = XRM(1:NRIMX+1,        :,:,:)
+  XLBXTHM(1:NRIMX+1,        :,:)   = XTHT(1:NRIMX+1,        :,:)
+  XLBXRM(1:NRIMX+1,        :,:,:)   = XRT(1:NRIMX+1,        :,:,:)
 ENDIF
 IF(LEAST_ll() .AND. .NOT. L1D) THEN
-  XLBXTHM(ILBX-NRIMX:ILBX,:,:)   = XTHM(IIU-NRIMX:IIU,    :,:)
-  XLBXRM(ILBX-NRIMX:ILBX,:,:,:)   = XRM(IIU-NRIMX:IIU,    :,:,:)
+  XLBXTHM(ILBX-NRIMX:ILBX,:,:)   = XTHT(IIU-NRIMX:IIU,    :,:)
+  XLBXRM(ILBX-NRIMX:ILBX,:,:,:)   = XRT(IIU-NRIMX:IIU,    :,:,:)
 ENDIF
 IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYTHM(:,1:NRIMY+1,        :)    = XTHM(:,1:NRIMY+1,      :)
-  XLBYRM(:,1:NRIMY+1,        :,:)   = XRM(:,1:NRIMY+1,      :,:)
+  XLBYTHM(:,1:NRIMY+1,        :)    = XTHT(:,1:NRIMY+1,      :)
+  XLBYRM(:,1:NRIMY+1,        :,:)   = XRT(:,1:NRIMY+1,      :,:)
 ENDIF
 IF(LNORTH_ll().AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYTHM(:,ILBY-NRIMY:ILBY,:)    = XTHM(:,IJU-NRIMY:IJU,  :)
-  XLBYRM(:,ILBY-NRIMY:ILBY,:,:)   = XRM(:,IJU-NRIMY:IJU,  :,:)
+  XLBYTHM(:,ILBY-NRIMY:ILBY,:)    = XTHT(:,IJU-NRIMY:IJU,  :)
+  XLBYRM(:,ILBY-NRIMY:ILBY,:,:)   = XRT(:,IJU-NRIMY:IJU,  :,:)
 ENDIF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/version.f90 b/src/MNH/version.f90
index cdf620bd8..6ddac0f74 100644
--- a/src/MNH/version.f90
+++ b/src/MNH/version.f90
@@ -38,8 +38,8 @@ USE MODD_CONF, ONLY : NMASDEV,NBUGFIX,CBIBUSER
 !
 IMPLICIT NONE
 !
-NMASDEV=410
-NBUGFIX=1
+NMASDEV=50 
+NBUGFIX=0
 CBIBUSER=''
 !
 END SUBROUTINE VERSION
-- 
GitLab