Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90	(revision 3524)
@@ -13,21 +13,22 @@
    !!   'key_lim2' :                                  LIM 2.0 sea-ice model
    !!----------------------------------------------------------------------
-   !!   ice_init_2       : sea-ice model initialization
-   !!   ice_run_2        : Definition some run parameter for ice model
+   !!   ice_init_2    : sea-ice model initialization
+   !!   ice_run_2     : Definition some run parameter for ice model
    !!----------------------------------------------------------------------
-   USE phycst           ! physical constants
-   USE dom_oce          ! ocean domain
-   USE sbc_oce          ! surface boundary condition: ocean
-   USE sbc_ice          ! LIM2 surface boundary condition
-   USE dom_ice_2        ! LIM2 ice domain
-   USE par_ice_2        ! LIM2 parameters
-   USE thd_ice_2        ! LIM2 thermodynamical variables
-   USE ice_2            ! LIM2 ice variable
-   USE limmsh_2         ! LIM2 mesh
-   USE limistate_2      ! LIM2 initial state
-   USE limrst_2         ! LIM2 restart
-   USE limsbc_2         ! LIM2 surface boundary condition
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
+   USE phycst         ! physical constants
+   USE dom_oce        ! ocean domain
+   USE sbc_oce        ! surface boundary condition: ocean
+   USE sbc_ice        ! LIM2 surface boundary condition
+   USE dom_ice_2      ! LIM2 ice domain
+   USE par_ice_2      ! LIM2 parameters
+   USE thd_ice_2      ! LIM2 thermodynamical variables
+   USE ice_2          ! LIM2 ice variable
+   USE limmsh_2       ! LIM2 mesh
+   USE limistate_2    ! LIM2 initial state
+   USE limrst_2       ! LIM2 restart
+   USE limsbc_2       ! LIM2 surface boundary condition
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90	(revision 3524)
@@ -14,6 +14,6 @@
    !!   'key_lim2'                                    LIM 2.0 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_adv_x_2  : advection of sea ice on x axis
-   !!   lim_adv_y_2  : advection of sea ice on y axis
+   !!   lim_adv_x_2   : advection of sea ice on x axis
+   !!   lim_adv_y_2   : advection of sea ice on y axis
    !!----------------------------------------------------------------------
    USE dom_oce
@@ -21,8 +21,9 @@
    USE ice_2
    USE lbclnk
-   USE in_out_manager     ! I/O manager
-   USE lib_mpp            ! MPP library
-   USE wrk_nemo           ! work arrays
-   USE prtctl             ! Print control
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE prtctl         ! Print control
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdia_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdia_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdia_2.F90	(revision 3524)
@@ -24,4 +24,5 @@
    USE in_out_manager  ! I/O manager
    USE lib_mpp         ! MPP library
+   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdmp_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdmp_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdmp_2.F90	(revision 3524)
@@ -19,4 +19,5 @@
    USE in_out_manager  ! I/O manager
    USE lib_mpp         ! MPP library
+   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90	(revision 3524)
@@ -31,4 +31,5 @@
    USE in_out_manager   ! I/O manager
    USE prtctl           ! Print control
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90	(revision 3524)
@@ -21,4 +21,5 @@
    USE prtctl           ! Print control
    USE in_out_manager   ! I/O manager
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90	(revision 3524)
@@ -27,4 +27,5 @@
    USE iom
    USE in_out_manager
+   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90	(revision 3524)
@@ -23,4 +23,5 @@
    USE wrk_nemo         ! work arrays
 #endif
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90	(revision 3524)
@@ -30,5 +30,6 @@
    USE in_out_manager ! I/O manager
    USE prtctl         ! Print control
-   USE oce, ONLY : snwice_mass, snwice_mass_b
+   USE oce     , ONLY : snwice_mass, snwice_mass_b
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90	(revision 3524)
@@ -29,5 +29,6 @@
    USE sbc_oce          ! surface boundary condition: ocean
    USE sbccpl
-
+   USE cpl_oasis3, ONLY : lk_cpl
+   USE oce       , ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass 
    USE albedo           ! albedo parameters
    USE lbclnk           ! ocean lateral boundary condition - MPP exchanges
@@ -38,6 +39,5 @@
    USE iom              ! I/O library
    USE prtctl           ! Print control
-   USE cpl_oasis3, ONLY : lk_cpl
-   USE oce, ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass 
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90	(revision 3524)
@@ -13,27 +13,28 @@
    !!   'key_lim2' :                                  LIM 2.0 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_thd_2      : thermodynamic of sea ice
-   !!   lim_thd_init_2 : initialisation of sea-ice thermodynamic
+   !!   lim_thd_2       : thermodynamic of sea ice
+   !!   lim_thd_init_2  : initialisation of sea-ice thermodynamic
    !!----------------------------------------------------------------------
-   USE phycst          ! physical constants
-   USE dom_oce         ! ocean space and time domain variables
+   USE phycst           ! physical constants
+   USE dom_oce          ! ocean space and time domain variables
    USE domvvl
    USE lbclnk
-   USE in_out_manager  ! I/O manager
+   USE in_out_manager   ! I/O manager
    USE lib_mpp
-   USE wrk_nemo        ! work arrays
-   USE iom             ! IOM library
-   USE ice_2           ! LIM sea-ice variables
-   USE sbc_oce         ! 
-   USE sbc_ice         ! 
-   USE thd_ice_2       ! LIM thermodynamic sea-ice variables
-   USE dom_ice_2       ! LIM sea-ice domain
+   USE wrk_nemo         ! work arrays
+   USE iom              ! IOM library
+   USE ice_2            ! LIM sea-ice variables
+   USE sbc_oce          ! 
+   USE sbc_ice          ! 
+   USE thd_ice_2        ! LIM thermodynamic sea-ice variables
+   USE dom_ice_2        ! LIM sea-ice domain
    USE limthd_zdf_2
    USE limthd_lac_2
    USE limtab_2
-   USE prtctl          ! Print control
-   USE cpl_oasis3, ONLY : lk_cpl
-   USE diaar5, ONLY :   lk_diaar5
-      
+   USE prtctl           ! Print control
+   USE cpl_oasis3, ONLY :   lk_cpl
+   USE diaar5    , ONLY :   lk_diaar5
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
+   
    IMPLICIT NONE
    PRIVATE
@@ -55,5 +56,4 @@
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
-
 CONTAINS
 
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90	(revision 3524)
@@ -7,13 +7,14 @@
 
    !!----------------------------------------------------------------------
-   !!   lim_lat_acr_2   : lateral accretion of ice
-   !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
+   !!   lim_lat_acr_2 : lateral accretion of ice
+   !!----------------------------------------------------------------------
+   USE par_oce        ! ocean parameters
    USE phycst
    USE thd_ice_2
    USE ice_2
    USE limistate_2 
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90	(revision 3524)
@@ -18,9 +18,10 @@
    USE ice_2
    USE limistate_2
+   USE cpl_oasis3, ONLY : lk_cpl
    USE in_out_manager
    USE lib_mpp          ! MPP library
    USE wrk_nemo         ! work arrays
-   USE cpl_oasis3, ONLY : lk_cpl
-      
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
+    
    IMPLICIT NONE
    PRIVATE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90	(revision 3524)
@@ -13,6 +13,6 @@
    !!----------------------------------------------------------------------
    !!----------------------------------------------------------------------
-   !!   lim_wri_2      : write of the diagnostics variables in ouput file 
-   !!   lim_wri_init_2 : initialization and namelist read
+   !!   lim_wri_2       : write of the diagnostics variables in ouput file 
+   !!   lim_wri_init_2  : initialization and namelist read
    !!   lim_wri_state_2 : write for initial state or/and abandon:
    !!                     > output.init.nc (if ninist = 1 in namelist)
@@ -26,11 +26,12 @@
    USE ice_2
 
-   USE dianam          ! build name of file (routine)
+   USE dianam           ! build name of file (routine)
    USE lbclnk
    USE in_out_manager
-   USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
+   USE lib_mpp          ! MPP library
+   USE wrk_nemo         ! work arrays
    USE iom
    USE ioipsl
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/dom_ice.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/dom_ice.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/dom_ice.F90	(revision 3524)
@@ -9,5 +9,6 @@
    USE par_ice        ! LIM-3 parameter
    USE in_out_manager ! I/O manager
-   USE lib_mpp         ! MPP library
+   USE lib_mpp        ! MPP library
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -30,5 +31,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/ice.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/ice.F90	(revision 3524)
@@ -9,9 +9,9 @@
 #if defined key_lim3
    !!----------------------------------------------------------------------
-   !!   'key_lim3' :                                   LIM3 sea-ice model
-   !!----------------------------------------------------------------------
-   USE par_ice          ! LIM sea-ice parameters
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp         ! MPP library
+   !!   'key_lim3'                                      LIM-3 sea-ice model
+   !!----------------------------------------------------------------------
+   USE par_ice        ! LIM sea-ice parameters
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
 
    IMPLICIT NONE
@@ -278,13 +278,13 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qfvbq       !: store energy in case of total lateral ablation (?)
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   dmgwi       !: Variation of the mass of snow ice
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fsalt_res   !: Residual salt flux due to correction of ice thickness [???]
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fsbri       !: Salt flux due to brine rejection                      [???]
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fsalt_rpo   !: Salt flux associated with porous ridged ice formation [???]
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_rpo   !: Heat flux associated with porous ridged ice formation [???]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_thd     !: salt flux due to ice growth/melt                      [PSU/m2/s]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_bri     !: salt flux due to brine rejection                      [PSU/m2/s]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_mec     !: salt flux due to porous ridged ice formation          [PSU/m2/s]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_res     !: residual salt flux due to correction of ice thickness [PSU/m2/s]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhbri       !: heat flux due to brine rejection
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fmmec       !: Mass flux due to snow loss during compression
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fseqv       !: salt flux due to ice growth/melt   [units ???]
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhmec       !: Heat flux due to snow loss during compression
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_res   !: Residual heat flux due to correction of ice thickness
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_mec   !: heat flux associated with porous ridged ice formation [???]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_res   !: residual heat flux due to correction of ice thickness
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fmmec       !: mass flux due to snow loss during compression         [Kg/m2/s]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhmec       !: heat flux due to snow loss during compression
 
    ! temporary arrays for dummy version of the code
@@ -417,5 +417,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -446,15 +446,15 @@
 
       ii = ii + 1
-      ALLOCATE( firic    (jpi,jpj) , fcsic  (jpi,jpj) , fleic    (jpi,jpj) , qlatic   (jpi,jpj) ,     &
-         &      rdvosif  (jpi,jpj) , rdvobif(jpi,jpj) , fdvolif  (jpi,jpj) , rdvonif  (jpi,jpj) ,     &
-         &      sist     (jpi,jpj) , icethi (jpi,jpj) , t_bo     (jpi,jpj) , hicifp   (jpi,jpj) ,     &
-         &      frld     (jpi,jpj) , pfrld  (jpi,jpj) , phicif   (jpi,jpj) , fbif     (jpi,jpj) ,     &
-         &      rdm_snw  (jpi,jpj) , rdq_snw(jpi,jpj) , rdm_ice  (jpi,jpj) , rdq_ice  (jpi,jpj) ,     &
-         &                                              qldif    (jpi,jpj) , qcmif    (jpi,jpj) ,     &
-         &      fdtcn    (jpi,jpj) , qdtcn  (jpi,jpj) , fstric   (jpi,jpj) , fscmbq   (jpi,jpj) ,     &
-         &      ffltbif  (jpi,jpj) , fsbbq  (jpi,jpj) , qfvbq    (jpi,jpj) , dmgwi    (jpi,jpj) ,     &
-         &      fsalt_res(jpi,jpj) , fsbri  (jpi,jpj) , fsalt_rpo(jpi,jpj) , fheat_rpo(jpi,jpj) ,     &
-         &      fhbri    (jpi,jpj) , fmmec  (jpi,jpj) , fseqv    (jpi,jpj) , fhmec    (jpi,jpj) ,     &
-         &      fheat_res(jpi,jpj)                                                              , STAT=ierr(ii) )
+      ALLOCATE( firic    (jpi,jpj) , fcsic  (jpi,jpj) , fleic  (jpi,jpj) , qlatic   (jpi,jpj) ,     &
+         &      rdvosif  (jpi,jpj) , rdvobif(jpi,jpj) , fdvolif(jpi,jpj) , rdvonif  (jpi,jpj) ,     &
+         &      sist     (jpi,jpj) , icethi (jpi,jpj) , t_bo   (jpi,jpj) , hicifp   (jpi,jpj) ,     &
+         &      frld     (jpi,jpj) , pfrld  (jpi,jpj) , phicif (jpi,jpj) , fbif     (jpi,jpj) ,     &
+         &      rdm_snw  (jpi,jpj) , rdq_snw(jpi,jpj) , rdm_ice(jpi,jpj) , rdq_ice  (jpi,jpj) ,     &
+         &                                              qldif  (jpi,jpj) , qcmif    (jpi,jpj) ,     &
+         &      fdtcn    (jpi,jpj) , qdtcn  (jpi,jpj) , fstric (jpi,jpj) , fscmbq   (jpi,jpj) ,     &
+         &      ffltbif  (jpi,jpj) , fsbbq  (jpi,jpj) , qfvbq  (jpi,jpj) , dmgwi    (jpi,jpj) ,     &
+         &      sfx_res  (jpi,jpj) , sfx_bri(jpi,jpj) , sfx_mec(jpi,jpj) , fheat_mec(jpi,jpj) ,     &
+         &      fhbri    (jpi,jpj) , fmmec  (jpi,jpj) , sfx_thd(jpi,jpj) , fhmec    (jpi,jpj) ,     &
+         &      fheat_res(jpi,jpj)                                                            , STAT=ierr(ii) )
 
       ii = ii + 1
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90	(revision 3524)
@@ -10,26 +10,27 @@
 #if defined key_lim3
    !!----------------------------------------------------------------------
-   !!   'key_lim3' :                                   LIM sea-ice model
-   !!----------------------------------------------------------------------
-   !!   ice_init       : sea-ice model initialization
-   !!----------------------------------------------------------------------
-   USE phycst           ! physical constants
-   USE dom_oce          ! ocean domain
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE sbc_ice          ! Surface boundary condition: ice   fields
-   USE ice              ! LIM variables
-   USE par_ice          ! LIM parameters
-   USE dom_ice          ! LIM domain
-   USE thd_ice          ! LIM thermodynamical variables
-   USE limitd_me        ! LIM ice thickness distribution
-   USE limmsh           ! LIM mesh
-   USE limistate        ! LIM initial state
-   USE limrst           ! LIM restart
-   USE limthd           ! LIM ice thermodynamics
-   USE limthd_sal       ! LIM ice thermodynamics: salinity
-   USE limvar           ! LIM variables
-   USE limsbc           ! LIM surface boundary condition
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
+   !!   'key_lim3'                                     LIM sea-ice model
+   !!----------------------------------------------------------------------
+   !!   ice_init      : sea-ice model initialization
+   !!----------------------------------------------------------------------
+   USE phycst         ! physical constants
+   USE dom_oce        ! ocean domain
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE sbc_ice        ! Surface boundary condition: ice   fields
+   USE ice            ! LIM variables
+   USE par_ice        ! LIM parameters
+   USE dom_ice        ! LIM domain
+   USE thd_ice        ! LIM thermodynamical variables
+   USE limitd_me      ! LIM ice thickness distribution
+   USE limmsh         ! LIM mesh
+   USE limistate      ! LIM initial state
+   USE limrst         ! LIM restart
+   USE limthd         ! LIM ice thermodynamics
+   USE limthd_sal     ! LIM ice thermodynamics: salinity
+   USE limvar         ! LIM variables
+   USE limsbc         ! LIM surface boundary condition
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -39,5 +40,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90	(revision 3524)
@@ -15,12 +15,13 @@
    !!   lim_adv_y  : advection of sea ice on y axis
    !!----------------------------------------------------------------------
-   USE dom_oce          ! ocean domain
-   USE dom_ice          ! LIM-3 domain
-   USE ice              ! LIM-3 variables
-   USE lbclnk           ! lateral boundary condition - MPP exchanges
-   USE in_out_manager   ! I/O manager
-   USE prtctl           ! Print control
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   USE dom_oce        ! ocean domain
+   USE ice            ! LIM-3 variables
+   USE dom_ice        ! LIM-3 domain
+   USE lbclnk         ! lateral boundary condition - MPP exchanges
+   USE in_out_manager ! I/O manager
+   USE prtctl         ! Print control
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -37,5 +38,5 @@
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limcons.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limcons.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limcons.F90	(revision 3524)
@@ -10,14 +10,15 @@
 #if defined key_lim3
    !!----------------------------------------------------------------------
-   !!   'key_lim3' :                                   LIM3 sea-ice model
+   !!   'key_lim3'                                      LIM-3 sea-ice model
    !!----------------------------------------------------------------------
-   !!    lim_cons   :   checks whether energy, mass and salt are conserved 
+   !!    lim_cons     :   checks whether energy, mass and salt are conserved 
    !!----------------------------------------------------------------------
-   USE par_ice          ! LIM-3 parameter
-   USE ice              ! LIM-3 variables
-   USE dom_ice          ! LIM-3 domain
-   USE dom_oce          ! ocean domain
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
+   USE par_ice        ! LIM-3 parameter
+   USE ice            ! LIM-3 variables
+   USE dom_ice        ! LIM-3 domain
+   USE dom_oce        ! ocean domain
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -29,5 +30,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdia.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdia.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdia.F90	(revision 3524)
@@ -11,17 +11,18 @@
    !!   'key_lim3'                                       LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_dia        : computation and output of the time evolution of keys variables
-   !!   lim_dia_init   : initialization and namelist read
-   !!----------------------------------------------------------------------
-   USE ice             ! LIM-3: sea-ice variable
-   USE par_ice         ! LIM-3: ice parameters
-   USE dom_ice         ! LIM-3: sea-ice domain
-   USE dom_oce         ! ocean domain
-   USE sbc_oce         ! surface boundary condition: ocean fields
-   USE daymod          ! model calendar
-   USE phycst          ! physical constant
-   USE in_out_manager  ! I/O manager
-   USE lib_mpp         ! MPP library
-   
+   !!   lim_dia       : computation and output of the time evolution of keys variables
+   !!   lim_dia_init  : initialization and namelist read
+   !!----------------------------------------------------------------------
+   USE ice            ! LIM-3: sea-ice variable
+   USE par_ice        ! LIM-3: ice parameters
+   USE dom_ice        ! LIM-3: sea-ice domain
+   USE dom_oce        ! ocean domain
+   USE sbc_oce        ! surface boundary condition: ocean fields
+   USE daymod         ! model calendar
+   USE phycst         ! physical constant
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
+
    IMPLICIT NONE
    PRIVATE
@@ -105,5 +106,5 @@
             IF( tms(ji,jj) == 1 ) THEN
                vinfor(3)  = vinfor(3)  + at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp !ice area
-               IF (at_i(ji,jj).GT.0.15) vinfor(5) = vinfor(5) + aire(ji,jj) * 1.e-12_wp !ice extent
+               IF ( at_i(ji,jj) > 0.15 )   vinfor(5) = vinfor(5) + aire(ji,jj) * 1.e-12_wp !ice extent
                vinfor(7)  = vinfor(7)  + vt_i(ji,jj)*aire(ji,jj) * 1.e-12_wp !ice volume
                vinfor(9)  = vinfor(9)  + vt_s(ji,jj)*aire(ji,jj) * 1.e-12_wp !snow volume
@@ -111,9 +112,9 @@
                vinfor(29) = vinfor(29) + smt_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) * 1.e-12_wp !mean salinity
                ! the computation of this diagnostic is not reliable
-               vinfor(31) = vinfor(31) + vt_i(ji,jj)*( u_ice(ji,jj)*u_ice(ji,jj) + & 
-                  v_ice(ji,jj)*v_ice(ji,jj) )*aire(ji,jj)/1.0e12 
+               vinfor(31) = vinfor(31) + vt_i(ji,jj) * (  u_ice(ji,jj)*u_ice(ji,jj)   & 
+                  &                                     + v_ice(ji,jj)*v_ice(ji,jj) ) * aire(ji,jj) * 1.e-12 
                vinfor(53) = vinfor(53) + sfx (ji,jj)*aire(ji,jj) * 1.e-12_wp !salt flux
-               vinfor(55) = vinfor(55) + fsbri(ji,jj)*aire(ji,jj) * 1.e-12_wp !brine drainage flux
-               vinfor(57) = vinfor(57) + fseqv(ji,jj)*aire(ji,jj) * 1.e-12_wp !equivalent salt flux
+               vinfor(55) = vinfor(55) + sfx_bri(ji,jj)*aire(ji,jj) * 1.e-12_wp !brine drainage flux
+               vinfor(57) = vinfor(57) + sfx_thd(ji,jj)*aire(ji,jj) * 1.e-12_wp !equivalent salt flux
                vinfor(59) = vinfor(59) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SST
                vinfor(61) = vinfor(61) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SSS
@@ -232,4 +233,8 @@
 
       !! Fram Strait Export
+!!gm BUG : hard coded ORCA2 case !!!   ===>>>> to be removed !!!!
+!!gm       moreover, this is NOT the correct way of evaluating a ice transport !
+!!gm                 mass of snow + ice is missing and a j, j+1 is also missing
+!!gm BUG in MPP case ! 
       !! 83 = area export
       !! 84 = volume export
@@ -243,4 +248,5 @@
          vinfor(84) = vinfor(84) - v_ice(ji,jj) * e1t(ji,jj)*vt_i(ji,jj)*rdt_ice * 1.e-12_wp
       END DO
+!!gm en BUG
 
       !!-------------------------------------------------------------------
@@ -262,7 +268,7 @@
                vinfor(32) = vinfor(32) + vt_i(ji,jj)*( u_ice(ji,jj)*u_ice(ji,jj) + & 
                   v_ice(ji,jj)*v_ice(ji,jj) )*aire(ji,jj)/1.0e12 !ice vel
-               vinfor(54) = vinfor(54) + at_i(ji,jj)*sfx (ji,jj)*aire(ji,jj) * 1.e-12_wp ! Total salt flux
-               vinfor(56) = vinfor(56) + at_i(ji,jj)*fsbri(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Brine drainage salt flux
-               vinfor(58) = vinfor(58) + at_i(ji,jj)*fseqv(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Equivalent salt flux
+               vinfor(54) = vinfor(54) + sfx (ji,jj)*aire(ji,jj) * 1.e-12_wp ! Total salt flux
+               vinfor(56) = vinfor(56) + sfx_bri(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Brine drainage salt flux
+               vinfor(58) = vinfor(58) + sfx_thd(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Equivalent salt flux
                vinfor(60) = vinfor(60) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SST
                vinfor(62) = vinfor(62) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SSS
@@ -343,6 +349,6 @@
          END DO
       END DO
-      zindb      = 1.0 - MAX(0.0,SIGN(1.0,-vinfor(4))) !
-      vinfor(64) = zindb * vinfor(64) / MAX(vinfor(4),epsi06) ! divide by ice extt
+      zindb      = 1._wp - MAX(  0._wp , SIGN( 1._wp , -vinfor(4) )  )   !
+      vinfor(64) = zindb * vinfor(64) / MAX( vinfor(4) , epsi06 )   ! divide by ice extt
       !! 2.2) Diagnostics dependent on age
       !!------------------------------------
@@ -366,8 +372,8 @@
                   ENDIF
                END DO ! jl
-               IF ((at_i(ji,jj).GT.0.15).AND.(zafy.GT.zamy)) THEN
+               IF ( at_i(ji,jj)  >  0.15  .AND. zafy  >  zamy ) THEN
                   vinfor(22) = vinfor(22) + aire(ji,jj) * 1.e-12_wp ! Seasonal ice extent
                ENDIF
-               IF ((at_i(ji,jj).GT.0.15).AND.(zafy.LE.zamy)) THEN
+               IF ( at_i(ji,jj)  >  0.15  .AND. zafy <= zamy ) THEN
                   vinfor(24) = vinfor(24) + aire(ji,jj) * 1.e-12_wp ! Perennial ice extent
                ENDIF
@@ -375,8 +381,8 @@
          END DO ! jj
       END DO ! ji
-      zindb      = 1.0 - MAX(0.0,SIGN(1.0,-vinfor(26))) !=0 if no multiyear ice 1 if yes
-      vinfor(50) = zindb*vinfor(50) / MAX(vinfor(26),epsi06)
-      zindb      = 1.0 - MAX(0.0,SIGN(1.0,-vinfor(28))) !=0 if no multiyear ice 1 if yes
-      vinfor(52) = zindb*vinfor(52) / MAX(vinfor(28),epsi06)
+      zindb      = 1.0 - MAX(  0.0,SIGN( 1._wp , -vinfor(26) )  )     !=0 if no multiyear ice 1 if yes
+      vinfor(50) = zindb * vinfor(50) / MAX( vinfor(26) , epsi06 )
+      zindb      = 1.0 - MAX(  0._wp , SIGN( 1._wp , -vinfor(28) )  ) !=0 if no multiyear ice 1 if yes
+      vinfor(52) = zindb * vinfor(52) / MAX( vinfor(28) , epsi06 )
 
       !  Accumulation before averaging 
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90	(revision 3524)
@@ -15,17 +15,18 @@
    !!    lim_dyn_init : initialization and namelist read
    !!----------------------------------------------------------------------
-   USE phycst           ! physical constants
-   USE dom_oce          ! ocean space and time domain
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE sbc_ice          ! Surface boundary condition: ice   fields
-   USE ice              ! LIM-3 variables
-   USE par_ice          ! LIM-3 parameters
-   USE dom_ice          ! LIM-3 domain
-   USE limrhg           ! LIM-3 rheology
-   USE lbclnk           ! lateral boundary conditions - MPP exchanges
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
-   USE in_out_manager   ! I/O manager
-   USE prtctl           ! Print control
+   USE phycst         ! physical constants
+   USE dom_oce        ! ocean space and time domain
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE sbc_ice        ! Surface boundary condition: ice   fields
+   USE ice            ! LIM-3 variables
+   USE par_ice        ! LIM-3 parameters
+   USE dom_ice        ! LIM-3 domain
+   USE limrhg         ! LIM-3 rheology
+   USE lbclnk         ! lateral boundary conditions - MPP exchanges
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE in_out_manager ! I/O manager
+   USE prtctl         ! Print control
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -37,5 +38,5 @@
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90	(revision 3524)
@@ -12,13 +12,14 @@
    !!   'key_lim3'                                      LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_hdf  : diffusion trend on sea-ice variable
+   !!   lim_hdf       : diffusion trend on sea-ice variable
    !!----------------------------------------------------------------------
-   USE dom_oce          ! ocean domain
-   USE ice              ! LIM-3: ice variables
-   USE lbclnk           ! lateral boundary condition - MPP exchanges
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
-   USE prtctl           ! Print control
-   USE in_out_manager   ! I/O manager
+   USE dom_oce        ! ocean domain
+   USE ice            ! LIM-3: ice variables
+   USE lbclnk         ! lateral boundary condition - MPP exchanges
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE prtctl         ! Print control
+   USE in_out_manager ! I/O manager
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -34,5 +35,5 @@
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90	(revision 3524)
@@ -26,4 +26,5 @@
    USE lib_mpp          ! MPP library
    USE wrk_nemo         ! work arrays
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -48,5 +49,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 3524)
@@ -10,22 +10,23 @@
 #if defined key_lim3
    !!----------------------------------------------------------------------
-   !!   'key_lim3' :                                    LIM3 sea-ice model
+   !!   'key_lim3'                                      LIM-3 sea-ice model
    !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
-   USE dom_oce          ! ocean domain
-   USE phycst           ! physical constants (ocean directory) 
-   USE sbc_oce          ! surface boundary condition: ocean fields
-   USE thd_ice          ! LIM thermodynamics
-   USE ice              ! LIM variables
-   USE par_ice          ! LIM parameters
-   USE dom_ice          ! LIM domain
-   USE limthd_lac       ! LIM
-   USE limvar           ! LIM
-   USE limcons          ! LIM
-   USE in_out_manager   ! I/O manager
-   USE lbclnk           ! lateral boundary condition - MPP exchanges
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
-   USE prtctl           ! Print control
+   USE par_oce        ! ocean parameters
+   USE dom_oce        ! ocean domain
+   USE phycst         ! physical constants (ocean directory) 
+   USE sbc_oce        ! surface boundary condition: ocean fields
+   USE thd_ice        ! LIM thermodynamics
+   USE ice            ! LIM variables
+   USE par_ice        ! LIM parameters
+   USE dom_ice        ! LIM domain
+   USE limthd_lac     ! LIM
+   USE limvar         ! LIM
+   USE limcons        ! LIM
+   USE in_out_manager ! I/O manager
+   USE lbclnk         ! lateral boundary condition - MPP exchanges
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE prtctl         ! Print control
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -1135,5 +1136,5 @@
             
             !                                                             ! excess of salt is flushed into the ocean
-            fsalt_rpo(ji,jj) = fsalt_rpo(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic * r1_rdtice
+            sfx_mec(ji,jj) = sfx_mec(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic * r1_rdtice
 
             rdm_ice(ji,jj) = rdm_ice(ji,jj) + vsw(ji,jj) * rhoic / rau0   ! increase in ice volume du to seawater frozen in voids
@@ -1209,5 +1210,5 @@
 
                ! heat flux
-               fheat_rpo(ji,jj) = fheat_rpo(ji,jj) + ( ersw(ji,jj,jk) - zdummy0 ) * r1_rdtice
+               fheat_mec(ji,jj) = fheat_mec(ji,jj) + ( ersw(ji,jj,jk) - zdummy0 ) * r1_rdtice
 
                ! Correct dimensions to avoid big values
@@ -1534,15 +1535,9 @@
 
                !           xtmp = (rhoi*vicen(i,j,n) + rhos*vsnon(i,j,n)) / dt
-               !           fresh(i,j)      = fresh(i,j)      + xtmp
-               !           fresh_hist(i,j) = fresh_hist(i,j) + xtmp
-
-               !           fsalt_res(ji,jj)  = fsalt_res(ji,jj) + ( sss_m(ji,jj)                  ) * & 
-               !                               rhosn * v_s(ji,jj,jl) * r1_rdtice
-
-               !           fsalt_res(ji,jj)  = fsalt_res(ji,jj) + ( sss_m(ji,jj) - sm_i(ji,jj,jl) ) * & 
-               !                               rhoic * v_i(ji,jj,jl) * r1_rdtice
-
+               !           sfx_res(ji,jj)  = sfx_res(ji,jj) + ( sss_m(ji,jj)                  )   &
+               !                                            * rhosn * v_s(ji,jj,jl) * r1_rdtice
+               !           sfx_res(ji,jj)  = sfx_res(ji,jj) + ( sss_m(ji,jj) - sm_i(ji,jj,jl) )   & 
+               !                                            * rhoic * v_i(ji,jj,jl) * r1_rdtice
                !           sfx (i,j)      = sfx (i,j)      + xtmp
-               !           fsalt_hist(i,j) = fsalt_hist(i,j) + xtmp
 
                ato_i(ji,jj)    = a_i  (ji,jj,jl) *       zmask(ji,jj)   + ato_i(ji,jj)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90	(revision 3524)
@@ -2,6 +2,5 @@
    !!======================================================================
    !!                       ***  MODULE limitd_th ***
-   !!              Thermodynamics of ice thickness distribution
-   !!                   computation of changes in g(h)      
+   !!   LIM3 ice model : ice thickness distribution: Thermodynamics
    !!======================================================================
    !! History :   -   !          (W. H. Lipscomb and E.C. Hunke) CICE (c) original code
@@ -20,18 +19,19 @@
    !!   lim_itd_shiftice :
    !!----------------------------------------------------------------------
-   USE dom_ice          ! LIM-3 domain
-   USE par_oce          ! ocean parameters
-   USE dom_oce          ! ocean domain
-   USE phycst           ! physical constants (ocean directory) 
-   USE thd_ice          ! LIM-3 thermodynamic variables
-   USE ice              ! LIM-3 variables
-   USE par_ice          ! LIM-3 parameters
-   USE limthd_lac       ! LIM-3 lateral accretion
-   USE limvar           ! LIM-3 variables
-   USE limcons          ! LIM-3 conservation
-   USE prtctl           ! Print control
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   USE par_oce        ! ocean parameters
+   USE dom_oce        ! ocean domain
+   USE phycst         ! physical constants (ocean directory) 
+   USE ice            ! LIM-3 variables
+   USE par_ice        ! LIM-3 parameters
+   USE dom_ice        ! LIM-3 domain
+   USE thd_ice        ! LIM-3 thermodynamic variables
+   USE limthd_lac     ! LIM-3 lateral accretion
+   USE limvar         ! LIM-3 variables
+   USE limcons        ! LIM-3 conservation
+   USE prtctl         ! Print control
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -49,5 +49,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limmsh.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limmsh.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limmsh.F90	(revision 3524)
@@ -10,5 +10,5 @@
    !!   'key_lim3'                                      LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_msh   : definition of the ice mesh
+   !!   lim_msh       : definition of the ice mesh
    !!----------------------------------------------------------------------
    USE phycst         ! physical constants
@@ -18,4 +18,5 @@
    USE lbclnk         ! lateral boundary condition - MPP exchanges
    USE lib_mpp        ! MPP library
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -25,5 +26,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90	(revision 3524)
@@ -15,25 +15,26 @@
    !!   'key_lim2' AND NOT 'key_lim2_vp'            EVP LIM-2 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_rhg   : computes ice velocities
+   !!   lim_rhg       : computes ice velocities
    !!----------------------------------------------------------------------
-   USE phycst           ! Physical constant
-   USE par_oce          ! Ocean parameters
-   USE dom_oce          ! Ocean domain
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE sbc_ice          ! Surface boundary condition: ice fields
-   USE lbclnk           ! Lateral Boundary Condition / MPP link
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
-   USE in_out_manager   ! I/O manager
-   USE prtctl           ! Print control
+   USE phycst         ! Physical constant
+   USE oce     , ONLY :  snwice_mass, snwice_mass_b
+   USE par_oce        ! Ocean parameters
+   USE dom_oce        ! Ocean domain
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE sbc_ice        ! Surface boundary condition: ice fields
 #if defined key_lim3
-   USE ice              ! LIM-3: ice variables
-   USE dom_ice          ! LIM-3: ice domain
-   USE limitd_me        ! LIM-3: 
+   USE ice            ! LIM-3: ice variables
+   USE dom_ice        ! LIM-3: ice domain
+   USE limitd_me      ! LIM-3: 
 #else
-   USE ice_2            ! LIM2: ice variables
-   USE dom_ice_2        ! LIM2: ice domain
+   USE ice_2          ! LIM-2: ice variables
+   USE dom_ice_2      ! LIM-2: ice domain
 #endif
-   USE oce, ONLY :  snwice_mass, snwice_mass_b
+   USE lbclnk         ! Lateral Boundary Condition / MPP link
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE in_out_manager ! I/O manager
+   USE prtctl         ! Print control
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -48,5 +49,5 @@
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90	(revision 3524)
@@ -12,17 +12,18 @@
    !!   'key_lim3' :                                   LIM sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_rst_opn     : open ice restart file
-   !!   lim_rst_write   : write of the restart file 
-   !!   lim_rst_read    : read  the restart file 
-   !!----------------------------------------------------------------------
-   USE ice              ! sea-ice variables
-   USE par_ice          ! sea-ice parameters
-   USE dom_oce          ! ocean domain
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE sbc_ice          ! Surface boundary condition: ice fields
-   USE in_out_manager   ! I/O manager
-   USE iom              ! I/O library
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   !!   lim_rst_opn   : open ice restart file
+   !!   lim_rst_write : write of the restart file 
+   !!   lim_rst_read  : read  the restart file 
+   !!----------------------------------------------------------------------
+   USE ice            ! sea-ice variables
+   USE par_ice        ! sea-ice parameters
+   USE dom_oce        ! ocean domain
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE sbc_ice        ! Surface boundary condition: ice fields
+   USE in_out_manager ! I/O manager
+   USE iom            ! I/O library
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -37,5 +38,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90	(revision 3524)
@@ -37,4 +37,5 @@
    USE oce,        ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass, sshu_b, sshv_b, sshu_n, sshv_n, sshf_n
    USE dom_ice,    ONLY : tms
+   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -56,5 +57,5 @@
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -99,13 +100,11 @@
       !
       INTEGER  ::   ji, jj           ! dummy loop indices
-      INTEGER  ::   ierr             ! local integer
-      INTEGER  ::   ifvt, i1mfr, idfr               ! some switches
-      INTEGER  ::   iflt, ial, iadv, ifral, ifrdv
-      REAL(wp) ::   zinda, zemp, zemp_snow, zfmm    ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zfcm1 , zfcm2   ! solar/non solar heat fluxes
+      INTEGER  ::   ierr, ifvt, i1mfr, idfr           ! local integer
+      INTEGER  ::   iflt, ial , iadv , ifral, ifrdv   !   -      -
+      REAL(wp) ::   zinda, zemp, zemp_snow, zfmm      ! local scalars
+      REAL(wp) ::   zfcm1 , zfcm2                     !   -      -
       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalbp     ! 2D/3D workspace
       !!---------------------------------------------------------------------
       
-      CALL wrk_alloc( jpi, jpj, zfcm1 , zfcm2 )
       IF( lk_cpl )   CALL wrk_alloc( jpi, jpj, jpl, zalb, zalbp )
 
@@ -141,5 +140,5 @@
 
             !   computation the solar flux at ocean surface
-            zfcm1(ji,jj)   = pfrld(ji,jj) * qsr(ji,jj)  + ( 1. - pfrld(ji,jj) ) * fstric(ji,jj)
+            zfcm1   = pfrld(ji,jj) * qsr(ji,jj)  + ( 1._wp - pfrld(ji,jj) ) * fstric(ji,jj)
             ! fstric     Solar flux transmitted trough the ice
             ! qsr        Net short wave heat flux on free ocean
@@ -148,30 +147,24 @@
 
             !  computation the non solar heat flux at ocean surface
-            zfcm2(ji,jj) = - zfcm1(ji,jj)                  &
-               &           + iflt    * ( fscmbq(ji,jj) )   & ! total abl -> fscmbq is given to the ocean
-               ! fscmbq and ffltbif are obsolete
-               !              &           + iflt * ffltbif(ji,jj) !!! only if one category is used
-               &           + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdtice   &
-               &           + ifrdv   * (       qfvbq(ji,jj) +             qdtcn(ji,jj) ) * r1_rdtice   &
-               &           + fhmec(ji,jj)     & ! new contribution due to snow melt when ridging!!
-               &           + fheat_rpo(ji,jj) & ! contribution from ridge formation
-               &           + fheat_res(ji,jj)
-            ! fscmbq  Part of the solar radiation transmitted through the ice and going to the ocean computed in limthd_zdf.F90
-            ! ffltbif Total heat content of the ice (brine pockets+ice) / delta_t
+            zfcm2 = - zfcm1                                                                     & ! ???
+               &    + iflt    * fscmbq(ji,jj)                                                   & ! total ablation: heat given to the ocean
+               &    + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdtice   &
+               &    + ifrdv   * (       qfvbq(ji,jj) +             qdtcn(ji,jj) ) * r1_rdtice   &
+               &    + fhmec(ji,jj)                                                              & ! snow melt when ridging
+               &    + fheat_mec(ji,jj)                                                          & ! ridge formation
+               &    + fheat_res(ji,jj)                                                            ! residual heat flux
             ! qcmif   Energy needed to bring the ocean surface layer until its freezing (ok)
             ! qldif   heat balance of the lead (or of the open ocean)
-            ! qfvbq   i think this is wrong!
-            ! ---> Array used to store energy in case of total lateral ablation
-            ! qfvbq latent heat uptake/release after accretion/ablation
-            ! qdtcn Energy from the turbulent oceanic heat flux heat flux coming in the lead
-
-            IF( num_sal == 2 )   zfcm2(ji,jj) = zfcm2(ji,jj) + fhbri(ji,jj)    ! add contribution due to brine drainage 
+            ! qfvbq   latent heat uptake/release after accretion/ablation
+            ! qdtcn   Energy from the turbulent oceanic heat flux heat flux coming in the lead
+
+            IF( num_sal == 2 )   zfcm2 = zfcm2 + fhbri(ji,jj)    ! add contribution due to brine drainage 
 
             ! bottom radiative component is sent to the computation of the oceanic heat flux
-            fsbbq(ji,jj) = ( 1.0 - ( ifvt + iflt ) ) * fscmbq(ji,jj)     
+            fsbbq(ji,jj) = ( 1._wp - ( ifvt + iflt ) ) * fscmbq(ji,jj)     
 
             ! used to compute the oceanic heat flux at the next time step
-            qsr(ji,jj) = zfcm1(ji,jj)                                       ! solar heat flux 
-            qns(ji,jj) = zfcm2(ji,jj) - fdtcn(ji,jj)                        ! non solar heat flux
+            qsr(ji,jj) = zfcm1                                       ! solar heat flux 
+            qns(ji,jj) = zfcm2 - fdtcn(ji,jj)                        ! non solar heat flux
             !                           ! fdtcn : turbulent oceanic heat flux
 
@@ -180,11 +173,9 @@
                WRITE(numout,*) ' lim_sbc : heat fluxes '
                WRITE(numout,*) ' qsr       : ', qsr(jiindx,jjindx)
-               WRITE(numout,*) ' zfcm1     : ', zfcm1(jiindx,jjindx)
                WRITE(numout,*) ' pfrld     : ', pfrld(jiindx,jjindx)
                WRITE(numout,*) ' fstric    : ', fstric (jiindx,jjindx)
                WRITE(numout,*)
                WRITE(numout,*) ' qns       : ', qns(jiindx,jjindx)
-               WRITE(numout,*) ' zfcm2     : ', zfcm2(jiindx,jjindx)
-               WRITE(numout,*) ' zfcm1     : ', zfcm1(jiindx,jjindx)
+               WRITE(numout,*) ' fdtcn     : ', fdtcn(jiindx,jjindx)
                WRITE(numout,*) ' ifral     : ', ifral
                WRITE(numout,*) ' ial       : ', ial  
@@ -201,5 +192,5 @@
                WRITE(numout,*) ' fdtcn     : ', fdtcn(jiindx,jjindx)
                WRITE(numout,*) ' fhmec     : ', fhmec(jiindx,jjindx)
-               WRITE(numout,*) ' fheat_rpo : ', fheat_rpo(jiindx,jjindx)
+               WRITE(numout,*) ' fheat_mec : ', fheat_mec(jiindx,jjindx)
                WRITE(numout,*) ' fhbri     : ', fhbri(jiindx,jjindx)
                WRITE(numout,*) ' fheat_res : ', fheat_res(jiindx,jjindx)
@@ -239,5 +230,5 @@
             !  correcting brine salt fluxes   (zinda = 1  if pfrld=1 , =0 otherwise)
             zinda        = 1.0 - MAX( rzero , SIGN( rone , - ( 1.0 - pfrld(ji,jj) ) ) )
-            fsbri(ji,jj) = zinda * fsbri(ji,jj)
+            sfx_bri(ji,jj) = zinda * sfx_bri(ji,jj)
          END DO
       END DO
@@ -248,7 +239,7 @@
 
       IF( num_sal == 2 ) THEN      ! variable ice salinity: brine drainage included in the salt flux
-         sfx (:,:) = fseqv(:,:) + fsalt_res(:,:) + fsalt_rpo(:,:) + fsbri(:,:)
+         sfx(:,:) = sfx_thd(:,:) + sfx_res(:,:) + sfx_mec(:,:) + sfx_bri(:,:)
       ELSE                         ! constant ice salinity:
-         sfx (:,:) = fseqv(:,:) + fsalt_res(:,:) + fsalt_rpo(:,:)
+         sfx(:,:) = sfx_thd(:,:) + sfx_res(:,:) + sfx_mec(:,:)
       ENDIF
       !-----------------------------------------------!
@@ -285,5 +276,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zfcm1 , zfcm2 )
       IF( lk_cpl )   CALL wrk_dealloc( jpi, jpj, jpl, zalb, zalbp )
       ! 
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90	(revision 3524)
@@ -2,5 +2,5 @@
    !!======================================================================
    !!                       ***  MODULE limtab   ***
-   !!   LIM : transform 1D (2D) array to a 2D (1D) table
+   !!   LIM ice model : transform 1D (2D) array to a 2D (1D) table
    !!======================================================================
 #if defined key_lim3
@@ -20,5 +20,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90	(revision 3524)
@@ -16,27 +16,28 @@
    !!   'key_lim3'                                      LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_thd        : thermodynamic of sea ice
-   !!   lim_thd_init   : initialisation of sea-ice thermodynamic
+   !!   lim_thd       : thermodynamic of sea ice
+   !!   lim_thd_init  : initialisation of sea-ice thermodynamic
    !!----------------------------------------------------------------------
-   USE phycst          ! physical constants
-   USE dom_oce         ! ocean space and time domain variables
-   USE ice             ! LIM: sea-ice variables
-   USE par_ice         ! LIM: sea-ice parameters
-   USE sbc_oce         ! Surface boundary condition: ocean fields
-   USE sbc_ice         ! Surface boundary condition: ice fields
-   USE thd_ice         ! LIM thermodynamic sea-ice variables
-   USE dom_ice         ! LIM sea-ice domain
-   USE domvvl          ! domain: variable volume level
-   USE limthd_dif      ! LIM: thermodynamics, vertical diffusion
-   USE limthd_dh       ! LIM: thermodynamics, ice and snow thickness variation
-   USE limthd_sal      ! LIM: thermodynamics, ice salinity
-   USE limthd_ent      ! LIM: thermodynamics, ice enthalpy redistribution
-   USE limtab          ! LIM: 1D <==> 2D transformation
-   USE limvar          ! LIM: sea-ice variables
-   USE lbclnk          ! lateral boundary condition - MPP links
-   USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
-   USE in_out_manager  ! I/O manager
-   USE prtctl          ! Print control
+   USE phycst         ! physical constants
+   USE dom_oce        ! ocean space and time domain variables
+   USE ice            ! LIM: sea-ice variables
+   USE par_ice        ! LIM: sea-ice parameters
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE sbc_ice        ! Surface boundary condition: ice fields
+   USE thd_ice        ! LIM thermodynamic sea-ice variables
+   USE dom_ice        ! LIM sea-ice domain
+   USE domvvl         ! domain: variable volume level
+   USE limthd_dif     ! LIM: thermodynamics, vertical diffusion
+   USE limthd_dh      ! LIM: thermodynamics, ice and snow thickness variation
+   USE limthd_sal     ! LIM: thermodynamics, ice salinity
+   USE limthd_ent     ! LIM: thermodynamics, ice enthalpy redistribution
+   USE limtab         ! LIM: 1D <==> 2D transformation
+   USE limvar         ! LIM: sea-ice variables
+   USE lbclnk         ! lateral boundary condition - MPP links
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE in_out_manager ! I/O manager
+   USE prtctl         ! Print control
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -143,7 +144,7 @@
       rdm_ice(:,:) = 0.e0   ! variation of ice mass per unit area
       hicifp (:,:) = 0.e0   ! daily thermodynamic ice production. 
-      fsbri  (:,:) = 0.e0   ! brine flux contribution to salt flux to the ocean
+      sfx_bri(:,:) = 0.e0   ! brine flux contribution to salt flux to the ocean
       fhbri  (:,:) = 0.e0   ! brine flux contribution to heat flux to the ocean
-      fseqv  (:,:) = 0.e0   ! equivalent salt flux to the ocean due to ice/growth decay
+      sfx_thd(:,:) = 0.e0   ! equivalent salt flux to the ocean due to ice/growth decay
 
       !-----------------------------------
@@ -273,25 +274,23 @@
             CALL tab_2d_1d( nbpb, fr2_i0_1d  (1:nbpb), fr2_i0          , jpi, jpj, npb(1:nbpb) )
             CALL tab_2d_1d( nbpb, qnsr_ice_1d(1:nbpb), qns_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) )
-
 #if ! defined key_coupled
-            CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb), qla_ice(:,:,jl)    , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, dqla_ice_1d(1:nbpb), dqla_ice(:,:,jl)   , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb), qla_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, dqla_ice_1d(1:nbpb), dqla_ice(:,:,jl), jpi, jpj, npb(1:nbpb) )
 #endif
-
-            CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl)   , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, t_bo_b     (1:nbpb), t_bo       , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, sprecip_1d (1:nbpb), sprecip    , jpi, jpj, npb(1:nbpb) ) 
-            CALL tab_2d_1d( nbpb, fbif_1d    (1:nbpb), fbif       , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, qldif_1d   (1:nbpb), qldif      , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, rdm_ice_1d (1:nbpb), rdm_ice    , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, rdm_snw_1d (1:nbpb), rdm_snw    , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, dmgwi_1d   (1:nbpb), dmgwi      , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, qlbbq_1d   (1:nbpb), zqlbsbq    , jpi, jpj, npb(1:nbpb) )
-
-            CALL tab_2d_1d( nbpb, fseqv_1d   (1:nbpb), fseqv      , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, fsbri_1d   (1:nbpb), fsbri      , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, fhbri_1d   (1:nbpb), fhbri      , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, fstbif_1d  (1:nbpb), fstric     , jpi, jpj, npb(1:nbpb) )
-            CALL tab_2d_1d( nbpb, qfvbq_1d   (1:nbpb), qfvbq      , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl), jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, t_bo_b     (1:nbpb), t_bo            , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, sprecip_1d (1:nbpb), sprecip         , jpi, jpj, npb(1:nbpb) ) 
+            CALL tab_2d_1d( nbpb, fbif_1d    (1:nbpb), fbif            , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, qldif_1d   (1:nbpb), qldif           , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, rdm_ice_1d (1:nbpb), rdm_ice         , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, rdm_snw_1d (1:nbpb), rdm_snw         , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, dmgwi_1d   (1:nbpb), dmgwi           , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, qlbbq_1d   (1:nbpb), zqlbsbq         , jpi, jpj, npb(1:nbpb) )
+
+            CALL tab_2d_1d( nbpb, sfx_thd_1d (1:nbpb), sfx_thd         , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, sfx_bri_1d (1:nbpb), sfx_bri         , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, fhbri_1d   (1:nbpb), fhbri           , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, fstbif_1d  (1:nbpb), fstric          , jpi, jpj, npb(1:nbpb) )
+            CALL tab_2d_1d( nbpb, qfvbq_1d   (1:nbpb), qfvbq           , jpi, jpj, npb(1:nbpb) )
 
             !--------------------------------
@@ -331,41 +330,37 @@
             !--------------------------------
 
-            CALL tab_1d_2d( nbpb, at_i        , npb, at_i_b(1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, ht_i(:,:,jl), npb, ht_i_b(1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, ht_s(:,:,jl), npb, ht_s_b(1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, a_i (:,:,jl), npb, a_i_b(1:nbpb) , jpi, jpj )
-            CALL tab_1d_2d( nbpb, t_su(:,:,jl), npb, t_su_b(1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, sm_i(:,:,jl), npb, sm_i_b(1:nbpb), jpi, jpj )
-
+               CALL tab_1d_2d( nbpb, at_i          , npb, at_i_b    (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, ht_i(:,:,jl)  , npb, ht_i_b    (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, ht_s(:,:,jl)  , npb, ht_s_b    (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, a_i (:,:,jl)  , npb, a_i_b     (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, t_su(:,:,jl)  , npb, t_su_b    (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, sm_i(:,:,jl)  , npb, sm_i_b    (1:nbpb)   , jpi, jpj )
             DO jk = 1, nlay_s
-               CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_b(1:nbpb,jk), jpi, jpj)
-               CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_b(1:nbpb,jk), jpi, jpj)
+               CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_b     (1:nbpb,jk), jpi, jpj)
+               CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_b     (1:nbpb,jk), jpi, jpj)
             END DO
-
             DO jk = 1, nlay_i
-               CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_b(1:nbpb,jk), jpi, jpj)
-               CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_b(1:nbpb,jk), jpi, jpj)
-               CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_b(1:nbpb,jk), jpi, jpj)
+               CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_b     (1:nbpb,jk), jpi, jpj)
+               CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_b     (1:nbpb,jk), jpi, jpj)
+               CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_b     (1:nbpb,jk), jpi, jpj)
             END DO
-
-            CALL tab_1d_2d( nbpb, fstric , npb, fstbif_1d (1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, qldif  , npb, qldif_1d  (1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, qfvbq  , npb, qfvbq_1d  (1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, rdm_ice, npb, rdm_ice_1d(1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, rdm_snw, npb, rdm_snw_1d(1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, dmgwi  , npb, dmgwi_1d  (1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, rdvosif, npb, dvsbq_1d  (1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, rdvobif, npb, dvbbq_1d  (1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, fdvolif, npb, dvlbq_1d  (1:nbpb), jpi, jpj )
-            CALL tab_1d_2d( nbpb, rdvonif, npb, dvnbq_1d  (1:nbpb), jpi, jpj ) 
-            CALL tab_1d_2d( nbpb, fseqv  , npb, fseqv_1d  (1:nbpb), jpi, jpj )
+               CALL tab_1d_2d( nbpb, fstric        , npb, fstbif_1d (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, qldif         , npb, qldif_1d  (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, qfvbq         , npb, qfvbq_1d  (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, rdm_ice       , npb, rdm_ice_1d(1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, rdm_snw       , npb, rdm_snw_1d(1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, dmgwi         , npb, dmgwi_1d  (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, rdvosif       , npb, dvsbq_1d  (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, rdvobif       , npb, dvbbq_1d  (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, fdvolif       , npb, dvlbq_1d  (1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, rdvonif       , npb, dvnbq_1d  (1:nbpb)   , jpi, jpj ) 
+               CALL tab_1d_2d( nbpb, sfx_thd       , npb, sfx_thd_1d(1:nbpb)   , jpi, jpj )
             !
             IF( num_sal == 2 ) THEN
-               CALL tab_1d_2d( nbpb, fsbri, npb, fsbri_1d(1:nbpb), jpi, jpj )
-               CALL tab_1d_2d( nbpb, fhbri, npb, fhbri_1d(1:nbpb), jpi, jpj )
+               CALL tab_1d_2d( nbpb, sfx_bri       , npb, sfx_bri_1d(1:nbpb)   , jpi, jpj )
+               CALL tab_1d_2d( nbpb, fhbri         , npb, fhbri_1d  (1:nbpb)   , jpi, jpj )
             ENDIF
             !
-            !+++++
-            !temporary stuff for a dummy version
+            !+++++       temporary stuff for a dummy version
             CALL tab_1d_2d( nbpb, dh_i_surf2D, npb, dh_i_surf(1:nbpb)      , jpi, jpj )
             CALL tab_1d_2d( nbpb, dh_i_bott2D, npb, dh_i_bott(1:nbpb)      , jpi, jpj )
@@ -389,9 +384,8 @@
       ! 5.1) Ice heat content              
       !------------------------
-      ! Enthalpies are global variables we have to readjust the units
+      ! Enthalpies are global variables we have to readjust the units (heat content in 10^9 Joules)
       zcoef = 1._wp / ( unit_fac * REAL( nlay_i ) )
       DO jl = 1, jpl
          DO jk = 1, nlay_i
-            ! Multiply by volume, divide by nlayers so that heat content in 10^9 Joules
             e_i(:,:,jk,jl) = e_i(:,:,jk,jl) * area(:,:) * a_i(:,:,jl) * ht_i(:,:,jl) * zcoef
          END DO
@@ -401,9 +395,8 @@
       ! 5.2) Snow heat content              
       !------------------------
-      ! Enthalpies are global variables we have to readjust the units
+      ! Enthalpies are global variables we have to readjust the units (heat content in 10^9 Joules)
       zcoef = 1._wp / ( unit_fac * REAL( nlay_s ) )
       DO jl = 1, jpl
          DO jk = 1, nlay_s
-            ! Multiply by volume, so that heat content in 10^9 Joules
             e_s(:,:,jk,jl) = e_s(:,:,jk,jl) * area(:,:) * a_i(:,:,jl) * ht_s(:,:,jl) * zcoef
          END DO
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90	(revision 3524)
@@ -14,15 +14,16 @@
    !!   'key_lim3'                                      LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_thd_dh  : vertical accr./abl. and lateral ablation of sea ice
-   !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
-   USE phycst           ! physical constants (OCE directory) 
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE ice              ! LIM variables
-   USE par_ice          ! LIM parameters
-   USE thd_ice          ! LIM thermodynamics
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   !!   lim_thd_dh    : vertical accr./abl. and lateral ablation of sea ice
+   !!----------------------------------------------------------------------
+   USE par_oce        ! ocean parameters
+   USE phycst         ! physical constants (OCE directory) 
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE ice            ! LIM variables
+   USE par_ice        ! LIM parameters
+   USE thd_ice        ! LIM thermodynamics
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -38,5 +39,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -103,8 +104,8 @@
       REAL(wp), POINTER, DIMENSION(:) ::   zfmass_i    ! 
 
-      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_mel     ! snow melt 
-      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_pre     ! snow precipitation 
-      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_sub     ! snow sublimation
-      REAL(wp), POINTER, DIMENSION(:) ::   zfsalt_melt   ! salt flux due to ice melt
+      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_mel   ! snow melt 
+      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_pre   ! snow precipitation 
+      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_sub   ! snow sublimation
+      REAL(wp), POINTER, DIMENSION(:) ::   zsfx_melt   ! salt flux due to ice melt
 
       REAL(wp), POINTER, DIMENSION(:,:) ::   zdeltah
@@ -127,12 +128,12 @@
 
       CALL wrk_alloc( jpij, zh_i, zh_s, ztfs, zhsold, zqprec, zqfont_su, zqfont_bo, z_f_surf, zhgnew, zfmass_i )
-      CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zfsalt_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy )
+      CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zsfx_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy )
       CALL wrk_alloc( jpij, zinnermelt, zfbase, zdq_i )
       CALL wrk_alloc( jpij, jkmax, zdeltah, zqt_i_lay )
 
-      zfsalt_melt(:)  = 0._wp
-      ftotal_fin(:)   = 0._wp
-      zfdt_init(:)    = 0._wp
-      zfdt_final(:)   = 0._wp
+      zsfx_melt (:) = 0._wp
+      ftotal_fin(:) = 0._wp
+      zfdt_init (:) = 0._wp
+      zfdt_final(:) = 0._wp
 
       DO ji = kideb, kiut
@@ -272,5 +273,5 @@
             !
             !                                                    ! contribution to ice-ocean salt flux 
-            zfsalt_melt(ji)  = zfsalt_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice 
+            zsfx_melt(ji)  = zsfx_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice 
          END DO
       END DO
@@ -472,5 +473,5 @@
                ENDIF
                ! contribution to salt flux
-               zfsalt_melt(ji) = zfsalt_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice 
+               zsfx_melt(ji) = zsfx_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice 
             ENDIF
          END DO ! ji
@@ -592,6 +593,6 @@
          !
          ! Salt flux
-         fseqv_1d(ji) = fseqv_1d(ji) +        zihgnew  * zfsalt_melt(ji)                                &
-            &                        - (1.0 - zihgnew) * zfmass_i   (ji) * sm_i_b(ji) ) * r1_rdtice
+         sfx_thd_1d(ji) = sfx_thd_1d(ji) +        zihgnew  * zsfx_melt(ji)                &
+            &                            - (1.0 - zihgnew) * zfmass_i (ji) * sm_i_b(ji) ) * r1_rdtice
          !
          ! Heat flux
@@ -653,5 +654,5 @@
          ELSE                      ;   zsm_snowice = sm_i_b(ji)   
          ENDIF
-         fseqv_1d(ji) = fseqv_1d(ji) - zsm_snowice  * a_i_b(ji) * dh_snowice(ji) * rhoic * r1_rdtice
+         sfx_thd_1d(ji) = sfx_thd_1d(ji) - zsm_snowice * a_i_b(ji) * dh_snowice(ji) * rhoic * r1_rdtice
          !
          ! entrapment during snow ice formation
@@ -678,5 +679,5 @@
       !
       CALL wrk_dealloc( jpij, zh_i, zh_s, ztfs, zhsold, zqprec, zqfont_su, zqfont_bo, z_f_surf, zhgnew, zfmass_i )
-      CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zfsalt_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy )
+      CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zsfx_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy )
       CALL wrk_dealloc( jpij, zinnermelt, zfbase, zdq_i )
       CALL wrk_dealloc( jpij, jkmax, zdeltah, zqt_i_lay )
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90	(revision 3524)
@@ -15,12 +15,13 @@
    !!   'key_lim3'                                      LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
-   USE phycst           ! physical constants (ocean directory) 
-   USE ice              ! LIM-3 variables
-   USE par_ice          ! LIM-3 parameters
-   USE thd_ice          ! LIM-3: thermodynamics
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   USE par_oce        ! ocean parameters
+   USE phycst         ! physical constants (ocean directory) 
+   USE ice            ! LIM-3 variables
+   USE par_ice        ! LIM-3 parameters
+   USE thd_ice        ! LIM-3: thermodynamics
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -33,5 +34,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90	(revision 3524)
@@ -16,17 +16,18 @@
    !!   'key_lim3'                                      LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_thd_ent : ice redistribution of enthalpy
+   !!   lim_thd_ent   : ice redistribution of enthalpy
    !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
-   USE dom_oce          ! domain variables
-   USE domain           !
-   USE phycst           ! physical constants
-   USE ice              ! LIM variables
-   USE par_ice          ! LIM parameters
-   USE thd_ice          ! LIM thermodynamics
-   USE limvar           ! LIM variables
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   USE par_oce        ! ocean parameters
+   USE dom_oce        ! domain variables
+   USE domain         !
+   USE phycst         ! physical constants
+   USE ice            ! LIM variables
+   USE par_ice        ! LIM parameters
+   USE thd_ice        ! LIM thermodynamics
+   USE limvar         ! LIM variables
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -43,5 +44,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90	(revision 3524)
@@ -13,20 +13,21 @@
    !!   'key_lim3'                                      LIM3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_lat_acr    : lateral accretion of ice
-   !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
-   USE dom_oce          ! domain variables
-   USE phycst           ! physical constants
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE sbc_ice          ! Surface boundary condition: ice fields
-   USE thd_ice          ! LIM thermodynamics
-   USE dom_ice          ! LIM domain
-   USE par_ice          ! LIM parameters
-   USE ice              ! LIM variables
-   USE limtab           ! LIM 2D <==> 1D
-   USE limcons          ! LIM conservation
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   !!   lim_lat_acr   : lateral accretion of ice
+   !!----------------------------------------------------------------------
+   USE par_oce        ! ocean parameters
+   USE dom_oce        ! domain variables
+   USE phycst         ! physical constants
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE sbc_ice        ! Surface boundary condition: ice fields
+   USE thd_ice        ! LIM thermodynamics
+   USE dom_ice        ! LIM domain
+   USE par_ice        ! LIM parameters
+   USE ice            ! LIM variables
+   USE limtab         ! LIM 2D <==> 1D
+   USE limcons        ! LIM conservation
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -45,5 +46,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -77,10 +78,11 @@
       !!               update ht_s_b, ht_i_b and tbif_1d(:,:)      
       !!------------------------------------------------------------------------
-      INTEGER ::   ji,jj,jk,jl,jm   ! dummy loop indices
-      INTEGER ::   layer, nbpac     ! local integers 
-      INTEGER ::   zji, zjj, iter   !   -       -
-      REAL(wp)  ::   ztmelts, zdv, zqold, zfrazb, zweight, zalphai, zindb, zde  ! local scalars
+      INTEGER  ::   ji,jj,jk,jl,jm   ! dummy loop indices
+      INTEGER  ::   layer, nbpac     ! local integers 
+      INTEGER  ::   zji, zjj, iter   !   -       -
+      REAL(wp) ::   ztmelts, zdv, zqold, zfrazb, zweight, zalphai, zindb, zde   ! local scalars
       REAL(wp) ::   zgamafr, zvfrx, zvgx, ztaux, ztwogp, zf , zhicol_new        !   -      -
       REAL(wp) ::   ztenagm, zvfry, zvgy, ztauy, zvrel2, zfp, zsqcd , zhicrit   !   -      -
+      REAL(wp) ::   zcoef                                                       !   -      -
       LOGICAL  ::   iterate_frazil   ! iterate frazil ice collection thickness
       CHARACTER (len = 15) :: fieldid
@@ -205,8 +207,8 @@
                   !-------------
                   ! C-grid wind stress components
-                  ztaux         = ( utau_ice(ji-1,jj  ) * tmu(ji-1,jj  ) &
-                     &          +   utau_ice(ji  ,jj  ) * tmu(ji  ,jj  ) ) / 2.0
-                  ztauy         = ( vtau_ice(ji  ,jj-1) * tmv(ji  ,jj-1) &
-                     &          +   vtau_ice(ji  ,jj  ) * tmv(ji  ,jj  ) ) / 2.0
+                  ztaux         = ( utau_ice(ji-1,jj  ) * tmu(ji-1,jj  )   &
+                     &          +   utau_ice(ji  ,jj  ) * tmu(ji  ,jj  ) ) * 0.5_wp
+                  ztauy         = ( vtau_ice(ji  ,jj-1) * tmv(ji  ,jj-1)   &
+                     &          +   vtau_ice(ji  ,jj  ) * tmv(ji  ,jj  ) ) * 0.5_wp
                   ! Square root of wind stress
                   ztenagm       =  SQRT( SQRT( ztaux * ztaux + ztauy * ztauy ) )
@@ -222,9 +224,9 @@
                   !-------------------
                   ! C-grid ice velocity
-                  zindb = MAX(0.0, SIGN(1.0, at_i(ji,jj) ))
-                  zvgx  = zindb * ( u_ice(ji-1,jj  ) * tmu(ji-1,jj  ) &
-                     + u_ice(ji,jj    ) * tmu(ji  ,jj  ) ) / 2.0
-                  zvgy  = zindb * ( v_ice(ji  ,jj-1) * tmv(ji  ,jj-1) &
-                     + v_ice(ji,jj    ) * tmv(ji  ,jj  ) ) / 2.0
+                  zindb = MAX(  0._wp, SIGN( 1._wp , at_i(ji,jj) )  )
+                  zvgx  = zindb * (  u_ice(ji-1,jj  ) * tmu(ji-1,jj  )    &
+                     &             + u_ice(ji,jj    ) * tmu(ji  ,jj  )  ) * 0.5_wp
+                  zvgy  = zindb * (  v_ice(ji  ,jj-1) * tmv(ji  ,jj-1)    &
+                     &             + v_ice(ji,jj    ) * tmv(ji  ,jj  )  ) * 0.5_wp
 
                   !-----------------------------------
@@ -232,8 +234,7 @@
                   !-----------------------------------
                   ! absolute relative velocity
-                  zvrel2        = MAX( ( zvfrx - zvgx ) * ( zvfrx - zvgx ) + &
-                     ( zvfry - zvgy ) * ( zvfry - zvgy )   &
-                     , 0.15 * 0.15 )
-                  zvrel(ji,jj)  = SQRT(zvrel2)
+                  zvrel2 = MAX(  ( zvfrx - zvgx ) * ( zvfrx - zvgx )   &
+                     &         + ( zvfry - zvgy ) * ( zvfry - zvgy ) , 0.15 * 0.15 )
+                  zvrel(ji,jj)  = SQRT( zvrel2 )
 
                   !---------------------
@@ -241,7 +242,12 @@
                   !---------------------
                   hicol(ji,jj) = zhicrit + 0.1 
-                  hicol(ji,jj) = zhicrit + hicol(ji,jj) /      & 
-                     ( hicol(ji,jj) * hicol(ji,jj) - &
-                     zhicrit * zhicrit ) * ztwogp * zvrel2
+                  hicol(ji,jj) = zhicrit +   hicol(ji,jj)    &
+                     &                   / ( hicol(ji,jj) * hicol(ji,jj) -  zhicrit * zhicrit ) * ztwogp * zvrel2
+
+!!gm better coding: above: hicol(ji,jj) * hicol(ji,jj) = (zhicrit + 0.1)*(zhicrit + 0.1)
+!!gm                                                   = zhicrit**2 + 0.2*zhicrit +0.01
+!!gm                therefore the 2 lines with hicol can be replaced by 1 line:
+!!gm              hicol(ji,jj) = zhicrit + (zhicrit + 0.1) / ( 0.2 * zhicrit + 0.01 ) * ztwogp * zvrel2
+!!gm further more (zhicrit + 0.1)/(0.2 * zhicrit + 0.01 )*ztwogp can be computed one for all outside the DO loop
 
                   iter = 1
@@ -278,17 +284,13 @@
       DO jj = 1, jpj
          DO ji = 1, jpi
-            IF ( tms(ji,jj) * ( qcmif(ji,jj) - qldif(ji,jj) ) > 0.e0 ) THEN
+            IF ( tms(ji,jj) * ( qcmif(ji,jj) - qldif(ji,jj) )  >  0._wp ) THEN
                nbpac = nbpac + 1
                npac( nbpac ) = (jj - 1) * jpi + ji
-               IF ( (ji.eq.jiindx).AND.(jj.eq.jjindx) ) THEN
-                  jiindex_1d = nbpac
-               ENDIF
+               IF( ji == jiindx .AND. jj == jjindx )   jiindex_1d = nbpac
             ENDIF
          END DO
       END DO
 
-      IF( ln_nicep ) THEN
-         WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac
-      ENDIF
+      IF( ln_nicep )   WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac
 
       !------------------------------
@@ -302,7 +304,7 @@
          CALL tab_2d_1d( nbpac, zat_i_ac  (1:nbpac)     , at_i         , jpi, jpj, npac(1:nbpac) )
          DO jl = 1, jpl
-            CALL tab_2d_1d( nbpac, za_i_ac(1:nbpac,jl)  , a_i(:,:,jl)  , jpi, jpj, npac(1:nbpac) )
-            CALL tab_2d_1d( nbpac, zv_i_ac(1:nbpac,jl)  , v_i(:,:,jl)  , jpi, jpj, npac(1:nbpac) )
-            CALL tab_2d_1d( nbpac, zoa_i_ac(1:nbpac,jl) , oa_i(:,:,jl) , jpi, jpj, npac(1:nbpac) )
+            CALL tab_2d_1d( nbpac, za_i_ac  (1:nbpac,jl), a_i  (:,:,jl), jpi, jpj, npac(1:nbpac) )
+            CALL tab_2d_1d( nbpac, zv_i_ac  (1:nbpac,jl), v_i  (:,:,jl), jpi, jpj, npac(1:nbpac) )
+            CALL tab_2d_1d( nbpac, zoa_i_ac (1:nbpac,jl), oa_i (:,:,jl), jpi, jpj, npac(1:nbpac) )
             CALL tab_2d_1d( nbpac, zsmv_i_ac(1:nbpac,jl), smv_i(:,:,jl), jpi, jpj, npac(1:nbpac) )
             DO jk = 1, nlay_i
@@ -311,11 +313,11 @@
          END DO ! jl
 
-         CALL tab_2d_1d( nbpac, qldif_1d  (1:nbpac)     , qldif , jpi, jpj, npac(1:nbpac) )
-         CALL tab_2d_1d( nbpac, qcmif_1d  (1:nbpac)     , qcmif , jpi, jpj, npac(1:nbpac) )
-         CALL tab_2d_1d( nbpac, t_bo_b    (1:nbpac)     , t_bo  , jpi, jpj, npac(1:nbpac) )
-         CALL tab_2d_1d( nbpac, fseqv_1d  (1:nbpac)     , fseqv , jpi, jpj, npac(1:nbpac) )
+         CALL tab_2d_1d( nbpac, qldif_1d  (1:nbpac)     , qldif  , jpi, jpj, npac(1:nbpac) )
+         CALL tab_2d_1d( nbpac, qcmif_1d  (1:nbpac)     , qcmif  , jpi, jpj, npac(1:nbpac) )
+         CALL tab_2d_1d( nbpac, t_bo_b    (1:nbpac)     , t_bo   , jpi, jpj, npac(1:nbpac) )
+         CALL tab_2d_1d( nbpac, sfx_thd_1d(1:nbpac)     , sfx_thd, jpi, jpj, npac(1:nbpac) )
          CALL tab_2d_1d( nbpac, rdm_ice_1d(1:nbpac)     , rdm_ice, jpi, jpj, npac(1:nbpac) )
-         CALL tab_2d_1d( nbpac, hicol_b   (1:nbpac)     , hicol , jpi, jpj, npac(1:nbpac) )
-         CALL tab_2d_1d( nbpac, zvrel_ac  (1:nbpac)     , zvrel , jpi, jpj, npac(1:nbpac) )
+         CALL tab_2d_1d( nbpac, hicol_b   (1:nbpac)     , hicol  , jpi, jpj, npac(1:nbpac) )
+         CALL tab_2d_1d( nbpac, zvrel_ac  (1:nbpac)     , zvrel  , jpi, jpj, npac(1:nbpac) )
 
          !------------------------------------------------------------------------------!
@@ -392,5 +394,5 @@
          ! note that for constant salinity zs_newice() = bulk_sal (see top of the subroutine)
          DO ji = 1, nbpac
-            fseqv_1d  (ji) = fseqv_1d  (ji) - zs_newice(ji) * rhoic * zv_newice(ji) * r1_rdtice
+            sfx_thd_1d(ji) = sfx_thd_1d(ji) - zs_newice(ji) * rhoic * zv_newice(ji) * r1_rdtice
             rdm_ice_1d(ji) = rdm_ice_1d(ji) +                 rhoic * zv_newice(ji)
          END DO ! ji
@@ -400,12 +402,12 @@
          !------------------------------------
          DO ji = 1, nbpac
-            ! Volume
-            zji                  = MOD( npac(ji) - 1, jpi ) + 1
-            zjj                  = ( npac(ji) - 1 ) / jpi + 1
-            vt_i_init(zji,zjj)   = vt_i_init(zji,zjj) + zv_newice(ji)
-            ! Energy
-            zde                  = ze_newice(ji) / unit_fac
-            zde                  = zde * area(zji,zjj) * zv_newice(ji)
-            et_i_init(zji,zjj)   = et_i_init(zji,zjj) + zde
+            zji = MOD( npac(ji) - 1 , jpi ) + 1
+            zjj =    ( npac(ji) - 1 ) / jpi + 1
+            !
+            zde = ze_newice(ji) / unit_fac * area(zji,zjj) * zv_newice(ji)
+            !
+            vt_i_init(zji,zjj) = vt_i_init(zji,zjj) + zv_newice(ji)             ! volume
+            et_i_init(zji,zjj) = et_i_init(zji,zjj) + zde                       ! Energy
+
          END DO
 
@@ -417,8 +419,7 @@
          !-----------------
          DO ji = 1, nbpac
-            za_newice(ji)     = zv_newice(ji) / zh_newice(ji)
-            ! diagnostic
-            zji                  = MOD( npac(ji) - 1, jpi ) + 1
-            zjj                  = ( npac(ji) - 1 ) / jpi + 1
+            zji = MOD( npac(ji) - 1 , jpi ) + 1
+            zjj =    ( npac(ji) - 1 ) / jpi + 1
+            za_newice(ji) = zv_newice(ji) / zh_newice(ji)
             diag_lat_gr(zji,zjj) = zv_newice(ji) * r1_rdtice
          END DO !ji
@@ -438,16 +439,14 @@
          !-------------------------------------------
          ! If lateral ice growth gives an ice concentration gt 1, then
-         ! we keep the excessive volume in memory and attribute it later
-         ! to bottom accretion
-         DO ji = 1, nbpac
-            ! vectorize
-            IF ( za_newice(ji) .GT. ( 1.0 - zat_i_ac(ji) ) ) THEN
-               zda_res(ji)    = za_newice(ji) - (1.0 - zat_i_ac(ji) )
-               zdv_res(ji)    = zda_res(ji) * zh_newice(ji) 
-               za_newice(ji)  = za_newice(ji) - zda_res(ji)
-               zv_newice(ji)  = zv_newice(ji) - zdv_res(ji)
+         ! we keep the excessive volume in memory and attribute it later to bottom accretion
+         DO ji = 1, nbpac
+            IF ( za_newice(ji)  >  ( 1._wp - zat_i_ac(ji) ) ) THEN
+               zda_res(ji)   = za_newice(ji) - (1.0 - zat_i_ac(ji) )
+               zdv_res(ji)   = zda_res  (ji) * zh_newice(ji) 
+               za_newice(ji) = za_newice(ji) - zda_res  (ji)
+               zv_newice(ji) = zv_newice(ji) - zdv_res  (ji)
             ELSE
-               zda_res(ji) = 0.0
-               zdv_res(ji) = 0.0
+               zda_res(ji) = 0._wp
+               zdv_res(ji) = 0._wp
             ENDIF
          END DO ! ji
@@ -459,6 +458,6 @@
          DO jl = 1, jpl
             DO ji = 1, nbpac
-               IF(  hi_max   (jl-1)  <  zh_newice(ji)   .AND.   &
-                  & zh_newice(ji)    <= hi_max   (jl)         ) THEN
+               IF(  hi_max   (jl-1)  <   zh_newice(ji)   .AND.   &
+                  & zh_newice(ji)    <=  hi_max   (jl)         ) THEN
                   za_i_ac (ji,jl) = za_i_ac (ji,jl) + za_newice(ji)
                   zv_i_ac (ji,jl) = zv_i_ac (ji,jl) + zv_newice(ji)
@@ -466,6 +465,6 @@
                   zcatac  (ji)    = jl
                ENDIF
-            END DO ! ji
-         END DO ! jl
+            END DO
+         END DO
 
          !----------------------------------
@@ -483,5 +482,5 @@
             DO ji = 1, nbpac
                jl = zcatac(ji)
-               zqold   = ze_i_ac(ji,jk,jl) ! [ J.m-3 ]
+               zqold   = ze_i_ac(ji,jk,jl)      ! [ J.m-3 ]
                zalphai = MIN( zhice_old(ji,jl) *   jk       / nlay_i , zh_newice(ji) )   &
                   &    - MIN( zhice_old(ji,jl) * ( jk - 1 ) / nlay_i , zh_newice(ji) )
@@ -489,5 +488,5 @@
                   + ( 1.0 - zswinew(ji) ) * ( za_old(ji,jl)  * zqold * zhice_old(ji,jl) / nlay_i   &
                   + za_newice(ji)  * ze_newice(ji) * zalphai                                       &
-                  + za_newice(ji)  * ze_newice(ji) * zdhex(ji) / nlay_i ) / ( ( zv_i_ac(ji,jl) ) / nlay_i )
+                  + za_newice(ji)  * ze_newice(ji) * zdhex(ji) / nlay_i ) / ( zv_i_ac(ji,jl) / nlay_i )
             END DO
          END DO
@@ -529,5 +528,5 @@
                zdhicbot (ji,jl) = zdv_res(ji)    / MAX( za_i_ac(ji,jl) , epsi10 ) * zindb    &
                   &             +  zindb * zdh_frazb(ji)                               ! frazil ice may coalesce
-               zdummy(ji,jl)    = zv_i_ac(ji,jl)/MAX(za_i_ac(ji,jl),epsi10)*zindb      ! thickness of residual ice
+               zdummy(ji,jl)    = zv_i_ac(ji,jl) / MAX( za_i_ac(ji,jl) , epsi10 ) * zindb      ! thickness of residual ice
             END DO
          END DO
@@ -613,5 +612,5 @@
             END DO
          END DO
-         CALL tab_1d_2d( nbpac, fseqv  , npac(1:nbpac), fseqv_1d  (1:nbpac), jpi, jpj )
+         CALL tab_1d_2d( nbpac, sfx_thd, npac(1:nbpac), sfx_thd_1d(1:nbpac), jpi, jpj )
          CALL tab_1d_2d( nbpac, rdm_ice, npac(1:nbpac), rdm_ice_1d(1:nbpac), jpi, jpj )
          !
@@ -623,5 +622,5 @@
       DO jl = 1, jpl
          DO jk = 1, nlay_i          ! heat content in 10^9 Joules
-            e_i(:,:,jk,jl) = e_i(:,:,jk,jl) * area(:,:) * v_i(:,:,jl) / nlay_i  / unit_fac 
+            e_i(:,:,jk,jl) = e_i(:,:,jk,jl) * area(:,:) * v_i(:,:,jl) / nlay_i / unit_fac 
          END DO
       END DO
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90	(revision 3524)
@@ -12,16 +12,17 @@
    !!   'key_lim3'                                      LIM-3 sea-ice model
    !!----------------------------------------------------------------------
-   !!   lim_thd_sal : salinity variations in the ice
-   !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
-   USE phycst           ! physical constants (ocean directory)
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE ice              ! LIM variables
-   USE par_ice          ! LIM parameters
-   USE thd_ice          ! LIM thermodynamics
-   USE limvar           ! LIM variables
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   !!   lim_thd_sal   : salinity variations in the ice
+   !!----------------------------------------------------------------------
+   USE par_oce        ! ocean parameters
+   USE phycst         ! physical constants (ocean directory)
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE ice            ! LIM variables
+   USE par_ice        ! LIM parameters
+   USE thd_ice        ! LIM thermodynamics
+   USE limvar         ! LIM variables
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -32,5 +33,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -149,7 +150,7 @@
          DO ji = kideb, kiut
             i_ice_switch = 1._wp - MAX(  0._wp, SIGN( 1._wp , - ht_i_b(ji) )  )
-            fsbri_1d(ji) = fsbri_1d(ji) - i_ice_switch * rhoic * a_i_b(ji) * ht_i_b(ji)         &
-               &         * ( MAX( dsm_i_gd_1d(ji) + dsm_i_fl_1d(ji) , sm_i_b(ji) - zsiold(ji) ) ) * r1_rdtice
-         END DO ! ji
+            sfx_bri_1d(ji) = sfx_bri_1d(ji) - i_ice_switch * rhoic * a_i_b(ji) * ht_i_b(ji)         &
+               &           * ( MAX( dsm_i_gd_1d(ji) + dsm_i_fl_1d(ji) , sm_i_b(ji) - zsiold(ji) ) ) * r1_rdtice
+         END DO
 
          ! Only necessary for conservation check since salinity is modified
@@ -183,5 +184,5 @@
       ! note: s_i_new = bulk_sal in constant salinity case
       DO ji = kideb, kiut
-         fseqv_1d(ji) = fseqv_1d(ji) - s_i_new(ji) * rhoic * a_i_b(ji) * MAX( dh_i_bott(ji) , 0._wp ) * r1_rdtice
+         sfx_thd_1d(ji) = sfx_thd_1d(ji) - s_i_new(ji) * rhoic * a_i_b(ji) * MAX( dh_i_bott(ji) , 0._wp ) * r1_rdtice
       END DO
       !
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90	(revision 3524)
@@ -14,17 +14,18 @@
    !!   lim_trp      : advection/diffusion process of sea ice
    !!----------------------------------------------------------------------
-   USE phycst          ! physical constant
-   USE dom_oce         ! ocean domain
-   USE sbc_oce         ! ocean surface boundary condition
-   USE par_ice         ! LIM-3 parameter
-   USE dom_ice         ! LIM-3 domain
-   USE ice             ! LIM-3 variables
-   USE limadv          ! LIM-3 advection
-   USE limhdf          ! LIM-3 horizontal diffusion
-   USE in_out_manager  ! I/O manager
-   USE lbclnk          ! lateral boundary conditions -- MPP exchanges
-   USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
-   USE prtctl          ! Print control
+   USE phycst         ! physical constant
+   USE dom_oce        ! ocean domain
+   USE sbc_oce        ! ocean surface boundary condition
+   USE par_ice        ! ice parameter
+   USE dom_ice        ! ice domain
+   USE ice            ! ice variables
+   USE limadv         ! ice advection
+   USE limhdf         ! ice horizontal diffusion
+   USE in_out_manager ! I/O manager
+   USE lbclnk         ! lateral boundary conditions -- MPP exchanges
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE prtctl         ! Print control
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -45,5 +46,5 @@
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90	(revision 3524)
@@ -12,28 +12,28 @@
    !!    lim_update   : computes update of sea-ice global variables from trend terms
    !!----------------------------------------------------------------------
-   USE limrhg          ! ice rheology
-
-   USE dom_oce
-   USE oce             ! dynamics and tracers variables
-   USE in_out_manager
-   USE sbc_oce         ! Surface boundary condition: ocean fields
-   USE sbc_ice         ! Surface boundary condition: ice fields
-   USE dom_ice
-   USE phycst          ! physical constants
-   USE ice
-   USE limdyn
-   USE limtrp
-   USE limthd
-   USE limsbc
-   USE limdia
-   USE limwri
-   USE limrst
-   USE thd_ice         ! LIM thermodynamic sea-ice variables
-   USE par_ice
-   USE limitd_th
-   USE limvar
-   USE prtctl           ! Print control
-   USE lbclnk           ! lateral boundary condition - MPP exchanges
-   USE wrk_nemo         ! work arrays
+   USE dom_oce        ! ocean domain
+   USE oce            ! dynamics and tracers variables
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE sbc_ice        ! Surface boundary condition: ice fields
+   USE phycst         ! physical constants
+   USE ice            ! ice variables 
+   USE par_ice        ! ice parameters
+   USE thd_ice        ! ice thermodynamic variables
+   USE dom_ice        ! ice domain
+   USE limrhg         ! ice rheology
+   USE limdyn         ! ice dynamics
+   USE limtrp         ! ice transport
+   USE limthd         ! ice thermodynamics
+   USE limsbc         ! ice-oce surface boundary conditions
+   USE limdia         ! ice diagnostics
+   USE limwri         ! ice outputs
+   USE limrst         ! ice restart
+   USE limitd_th      ! ice thickness distribution (thermodynamics)
+   USE limvar         ! ice variables
+   USE prtctl         ! Print control
+   USE in_out_manager ! I/O manager
+   USE lbclnk         ! lateral boundary condition - MPP exchanges
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -54,5 +54,5 @@
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -201,5 +201,5 @@
 
                   !residual salt flux if ice is over-molten
-                  fsalt_res(ji,jj)  = fsalt_res(ji,jj) - sm_i(ji,jj,jl) * ( rhoic * zdvres * r1_rdtice )
+                  sfx_res(ji,jj)  = sfx_res(ji,jj) - sm_i(ji,jj,jl) * ( rhoic * zdvres * r1_rdtice )
                   !             fheat_res(ji,jj)  = fheat_res(ji,jj) + rhoic * lfus * zdvres * r1_rdtice
 
@@ -224,9 +224,7 @@
          DO jj = 1, jpj
             DO ji = 1, jpi
-               IF ( ABS(fsalt_res(ji,jj)) .GT. 1.0 ) THEN 
-                  WRITE(numout,*) ' ALERTE 1000 : residual salt flux of -> ', &
-                     fsalt_res(ji,jj)
-                  WRITE(numout,*) ' ji, jj : ', ji, jj, ' gphit, glamt : ', &
-                     gphit(ji,jj), glamt(ji,jj)
+               IF(  ABS( sfx_res(ji,jj) )  >  1._wp  ) THEN 
+                  WRITE(numout,*) ' ALERTE 1000 : residual salt flux of -> ', sfx_res(ji,jj)
+                  WRITE(numout,*) ' ji, jj : ', ji, jj, ' gphit, glamt : ', gphit(ji,jj), glamt(ji,jj)
                ENDIF
             END DO
@@ -1010,5 +1008,5 @@
          CALL prt_ctl(tab2d_1=fmmec  , clinfo1= ' lim_update : fmmec : ', tab2d_2=fhmec     , clinfo2= ' fhmec     : ')
          CALL prt_ctl(tab2d_1=sst_m  , clinfo1= ' lim_update : sst   : ', tab2d_2=sss_m     , clinfo2= ' sss       : ')
-         CALL prt_ctl(tab2d_1=fhbri  , clinfo1= ' lim_update : fhbri : ', tab2d_2=fheat_rpo , clinfo2= ' fheat_rpo : ')
+         CALL prt_ctl(tab2d_1=fhbri  , clinfo1= ' lim_update : fhbri : ', tab2d_2=fheat_mec , clinfo2= ' fheat_mec : ')
 
          CALL prt_ctl_info(' ')
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90	(revision 3524)
@@ -43,14 +43,15 @@
    !!   lim_var_bv        :
    !!----------------------------------------------------------------------
-   USE par_oce          ! ocean parameters
-   USE phycst           ! physical constants (ocean directory) 
-   USE sbc_oce          ! Surface boundary condition: ocean fields
-   USE ice              ! LIM variables
-   USE par_ice          ! LIM parameters
-   USE dom_ice          ! LIM domain
-   USE thd_ice          ! LIM thermodynamics
-   USE in_out_manager   ! I/O manager
-   USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
+   USE par_oce        ! ocean parameters
+   USE phycst         ! physical constants (ocean directory) 
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE ice            ! ice variables
+   USE par_ice        ! ice parameters
+   USE thd_ice        ! ice variables (thermodynamics)
+   USE dom_ice        ! ice domain
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -73,5 +74,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90	(revision 3524)
@@ -25,4 +25,5 @@
    USE wrk_nemo        ! work arrays
    USE par_ice
+   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
@@ -51,5 +52,5 @@
    REAL(wp)  ::   zone   = 1._wp      
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -245,6 +246,6 @@
             zcmo(ji,jj,25) = et_i(ji,jj)
             zcmo(ji,jj,26) = et_s(ji,jj)
-            zcmo(ji,jj,28) = fsbri(ji,jj)
-            zcmo(ji,jj,29) = fseqv(ji,jj)
+            zcmo(ji,jj,28) = sfx_bri(ji,jj)
+            zcmo(ji,jj,29) = sfx_thd(ji,jj)
 
             zcmo(ji,jj,30) = bv_i(ji,jj)
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90	(revision 3524)
@@ -8,5 +8,5 @@
    USE par_ice        ! LIM-3 parameters
    USE in_out_manager ! I/O manager
-   USE lib_mpp         ! MPP library
+   USE lib_mpp        ! MPP library
 
    IMPLICIT NONE
@@ -83,8 +83,8 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   i0            !: fraction of radiation transmitted to the ice
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   old_ht_i_b    !: Ice thickness at the beginnning of the time step [m]
-    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::  old_ht_s_b    !: Snow thickness at the beginning of the time step [m]
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fsbri_1d      !: Salt flux due to brine drainage
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   old_ht_s_b    !: Snow thickness at the beginning of the time step [m]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bri_1d    !: <==> the 2D sfx_bri
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fhbri_1d      !: Heat flux due to brine drainage
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fseqv_1d      !: Equivalent Salt flux due to ice growth/decay
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_thd_1d    !: <==> the 2D sfx_thd
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_fl_1d   !: Ice salinity variations due to flushing
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_gd_1d   !: Ice salinity variations due to gravity drainage
@@ -138,5 +138,5 @@
 
    !!----------------------------------------------------------------------
-   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
+   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011)
    !! $Id$
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
@@ -166,5 +166,5 @@
          &      tatm_ice_1d(jpij) , fsup       (jpij) , focea      (jpij) ,     &   
          &      i0         (jpij) , old_ht_i_b (jpij) , old_ht_s_b (jpij) ,     &  
-         &      fsbri_1d   (jpij) , fhbri_1d   (jpij) , fseqv_1d   (jpij) ,     &
+         &      sfx_bri_1d (jpij) , fhbri_1d   (jpij) , sfx_thd_1d (jpij) ,     &
          &      dsm_i_fl_1d(jpij) , dsm_i_gd_1d(jpij) , dsm_i_se_1d(jpij) ,     &     
          &      dsm_i_si_1d(jpij) , hicol_b    (jpij)                     , STAT=ierr(2) )
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 3524)
@@ -16,21 +16,22 @@
    !!   'key_ldfslp'                      Rotation of lateral mixing tensor
    !!----------------------------------------------------------------------
-   !!   ldf_slp_grif : calculates the triads of isoneutral slopes (Griffies operator)
-   !!   ldf_slp      : calculates the slopes of neutral surface   (Madec operator)
-   !!   ldf_slp_mxl  : calculates the slopes at the base of the mixed layer (Madec operator)
-   !!   ldf_slp_init : initialization of the slopes computation
+   !!   ldf_slp_grif  : calculates the triads of isoneutral slopes (Griffies operator)
+   !!   ldf_slp       : calculates the slopes of neutral surface   (Madec operator)
+   !!   ldf_slp_mxl   : calculates the slopes at the base of the mixed layer (Madec operator)
+   !!   ldf_slp_init  : initialization of the slopes computation
    !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and tracers
-   USE dom_oce         ! ocean space and time domain
-   USE ldftra_oce      ! lateral diffusion: traceur
-   USE ldfdyn_oce      ! lateral diffusion: dynamics
-   USE phycst          ! physical constants
-   USE zdfmxl          ! mixed layer depth
-   USE eosbn2          ! equation of states
-   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE in_out_manager  ! I/O manager
-   USE prtctl          ! Print control
-   USE wrk_nemo        ! work arrays
-   USE timing          ! Timing
+   USE oce            ! ocean dynamics and tracers
+   USE dom_oce        ! ocean space and time domain
+   USE ldftra_oce     ! lateral diffusion: traceur
+   USE ldfdyn_oce     ! lateral diffusion: dynamics
+   USE phycst         ! physical constants
+   USE zdfmxl         ! mixed layer depth
+   USE eosbn2         ! equation of states
+   USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
+   USE in_out_manager ! I/O manager
+   USE prtctl         ! Print control
+   USE wrk_nemo       ! work arrays
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 3524)
@@ -12,12 +12,13 @@
 
    !!----------------------------------------------------------------------
-   !!   albedo_ice  : albedo for   ice (clear and overcast skies)
-   !!   albedo_oce  : albedo for ocean (clear and overcast skies)
-   !!   albedo_init : initialisation of albedo computation
-   !!----------------------------------------------------------------------
-   USE phycst          ! physical constants
-   USE in_out_manager  ! I/O manager
-   USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
+   !!   albedo_ice    : albedo for   ice (clear and overcast skies)
+   !!   albedo_oce    : albedo for ocean (clear and overcast skies)
+   !!   albedo_init   : initialisation of albedo computation
+   !!----------------------------------------------------------------------
+   USE phycst         ! physical constants
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90	(revision 3524)
@@ -19,15 +19,16 @@
    !!   flx_blk_declin   : solar declination
    !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and tracers
-   USE dom_oce         ! ocean space and time domain
-   USE phycst          ! physical constants
-   USE fldread         ! read input fields
-   USE sbc_oce         ! Surface boundary condition: ocean fields
-   USE iom             ! I/O manager library
-   USE in_out_manager  ! I/O manager
-   USE lib_mpp         ! distribued memory computing library
-   USE wrk_nemo        ! work arrays
-   USE timing          ! Timing
-   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
+   USE oce            ! ocean dynamics and tracers
+   USE dom_oce        ! ocean space and time domain
+   USE phycst         ! physical constants
+   USE fldread        ! read input fields
+   USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE iom            ! I/O manager library
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! distribued memory computing library
+   USE wrk_nemo       ! work arrays
+   USE timing         ! Timing
+   USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    USE albedo
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90	(revision 3524)
@@ -5,20 +5,21 @@
    !!                   covered area using ice-if model
    !!======================================================================
-   !! History :  3.0   !  2006-06  (G. Madec)  Original code
+   !! History :  3.0  !  2006-06  (G. Madec)  Original code
    !!----------------------------------------------------------------------
 
    !!----------------------------------------------------------------------
-   !!   sbc_ice_if     : update sbc in ice-covered area
+   !!   sbc_ice_if    : update sbc in ice-covered area
    !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and tracers
-   USE dom_oce         ! ocean space and time domain
-   USE phycst          ! physical constants
-   USE eosbn2          ! equation of state
-   USE sbc_oce         ! surface boundary condition: ocean fields
+   USE oce            ! ocean dynamics and tracers
+   USE dom_oce        ! ocean space and time domain
+   USE phycst         ! physical constants
+   USE eosbn2         ! equation of state
+   USE sbc_oce        ! surface boundary condition: ocean fields
    USE sbccpl
-   USE fldread         ! read input field
-   USE iom             ! I/O manager library
-   USE in_out_manager  ! I/O manager
-   USE lib_mpp         ! MPP library
+   USE fldread        ! read input field
+   USE iom            ! I/O manager library
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90	(revision 3524)
@@ -9,17 +9,18 @@
 
    !!----------------------------------------------------------------------
-   !!   sbc_ssr        : add to sbc a restoring term toward SST/SSS climatology
-   !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and tracers
-   USE dom_oce         ! ocean space and time domain
-   USE sbc_oce         ! surface boundary condition
-   USE phycst          ! physical constants
-   USE sbcrnf          ! surface boundary condition : runoffs
-   USE fldread         ! read input fields
-   USE iom             ! I/O manager
-   USE in_out_manager  ! I/O manager
-   USE lib_mpp         ! distribued memory computing library
-   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE timing          ! Timing
+   !!   sbc_ssr       : add to sbc a restoring term toward SST/SSS climatology
+   !!----------------------------------------------------------------------
+   USE oce            ! ocean dynamics and tracers
+   USE dom_oce        ! ocean space and time domain
+   USE sbc_oce        ! surface boundary condition
+   USE phycst         ! physical constants
+   USE sbcrnf         ! surface boundary condition : runoffs
+   USE fldread        ! read input fields
+   USE iom            ! I/O manager
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! distribued memory computing library
+   USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90	(revision 3524)
@@ -14,17 +14,18 @@
    !!                   and vertical advection trends using MUSCL scheme
    !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and active tracers
-   USE dom_oce         ! ocean space and time domain
-   USE trdmod_oce      ! tracers trends 
-   USE trdtra      ! tracers trends 
-   USE in_out_manager  ! I/O manager
-   USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient
-   USE trabbl          ! tracers: bottom boundary layer
-   USE lib_mpp         ! distribued memory computing
-   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
-   USE diaptr          ! poleward transport diagnostics
-   USE trc_oce         ! share passive tracers/Ocean variables
-   USE wrk_nemo        ! Memory Allocation
-   USE timing          ! Timing
+   USE oce            ! ocean dynamics and active tracers
+   USE dom_oce        ! ocean space and time domain
+   USE trdmod_oce     ! tracers trends 
+   USE trdtra         ! tracers trends 
+   USE in_out_manager ! I/O manager
+   USE dynspg_oce     ! choice/control of key cpp for surface pressure gradient
+   USE trabbl         ! tracers: bottom boundary layer
+   USE lib_mpp        ! distribued memory computing
+   USE lbclnk         ! ocean lateral boundary condition (or mpp link) 
+   USE diaptr         ! poleward transport diagnostics
+   USE trc_oce        ! share passive tracers/Ocean variables
+   USE wrk_nemo       ! Memory Allocation
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90	(revision 3524)
@@ -25,5 +25,5 @@
    USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
-
+   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 3524)
@@ -28,4 +28,5 @@
    USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
+   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90	(revision 3524)
@@ -17,21 +17,20 @@
 
    !!----------------------------------------------------------------------
-   !!   tra_adv_tvd  : update the tracer trend with the horizontal
-   !!                  and vertical advection trends using a TVD scheme
-   !!   nonosc       : compute monotonic tracer fluxes by a nonoscillatory
-   !!                  algorithm 
-   !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and active tracers
-   USE dom_oce         ! ocean space and time domain
-   USE trdmod_oce      ! tracers trends
-   USE trdtra          ! tracers trends
-   USE in_out_manager  ! I/O manager
-   USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient
-   USE lib_mpp         ! MPP library
-   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
-   USE diaptr          ! poleward transport diagnostics
-   USE trc_oce         ! share passive tracers/Ocean variables
-   USE wrk_nemo        ! Memory Allocation
-   USE timing          ! Timing
+   !!   tra_adv_tvd   : update the tracer trend with the 3D advection trends using a TVD scheme
+   !!   nonosc        : compute monotonic tracer fluxes by a non-oscillatory algorithm 
+   !!----------------------------------------------------------------------
+   USE oce            ! ocean dynamics and active tracers
+   USE dom_oce        ! ocean space and time domain
+   USE trdmod_oce     ! tracers trends
+   USE trdtra         ! tracers trends
+   USE in_out_manager ! I/O manager
+   USE dynspg_oce     ! choice/control of key cpp for surface pressure gradient
+   USE lib_mpp        ! MPP library
+   USE lbclnk         ! ocean lateral boundary condition (or mpp link) 
+   USE diaptr         ! poleward transport diagnostics
+   USE trc_oce        ! share passive tracers/Ocean variables
+   USE wrk_nemo       ! Memory Allocation
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90	(revision 3524)
@@ -12,16 +12,17 @@
    !!                 advection trends using a third order biaised scheme  
    !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and active tracers
-   USE dom_oce         ! ocean space and time domain
-   USE trdmod_oce         ! ocean space and time domain
+   USE oce            ! ocean dynamics and active tracers
+   USE dom_oce        ! ocean space and time domain
+   USE trdmod_oce     ! ocean space and time domain
    USE trdtra
    USE lib_mpp
-   USE lbclnk          ! ocean lateral boundary condition (or mpp link)
-   USE in_out_manager  ! I/O manager
-   USE diaptr          ! poleward transport diagnostics
-   USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient
-   USE trc_oce         ! share passive tracers/Ocean variables
-   USE wrk_nemo        ! Memory Allocation
-   USE timing          ! Timing
+   USE lbclnk         ! ocean lateral boundary condition (or mpp link)
+   USE in_out_manager ! I/O manager
+   USE diaptr         ! poleward transport diagnostics
+   USE dynspg_oce     ! choice/control of key cpp for surface pressure gradient
+   USE trc_oce        ! share passive tracers/Ocean variables
+   USE wrk_nemo       ! Memory Allocation
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90	(revision 3524)
@@ -12,7 +12,7 @@
    !!   'key_zdfgls'                 Generic Length Scale vertical physics
    !!----------------------------------------------------------------------
-   !!   zdf_gls      : update momentum and tracer Kz from a gls scheme
-   !!   zdf_gls_init : initialization, namelist read, and parameters control
-   !!   gls_rst      : read/write gls restart in ocean restart file
+   !!   zdf_gls       : update momentum and tracer Kz from a gls scheme
+   !!   zdf_gls_init  : initialization, namelist read, and parameters control
+   !!   gls_rst       : read/write gls restart in ocean restart file
    !!----------------------------------------------------------------------
    USE oce            ! ocean dynamics and active tracers 
@@ -31,4 +31,5 @@
    USE iom            ! I/O manager library
    USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90	(revision 3524)
@@ -15,24 +15,25 @@
    !!   'key_zdfkpp'                                             KPP scheme
    !!----------------------------------------------------------------------
-   !!   zdf_kpp      : update momentum and tracer Kz from a kpp scheme
-   !!   zdf_kpp_init : initialization, namelist read, and parameters control
-   !!   tra_kpp      : compute and add to the T & S trend the non-local flux
-   !!   trc_kpp      : compute and add to the passive tracer trend the non-local flux (lk_top=T)
+   !!   zdf_kpp       : update momentum and tracer Kz from a kpp scheme
+   !!   zdf_kpp_init  : initialization, namelist read, and parameters control
+   !!   tra_kpp       : compute and add to the T & S trend the non-local flux
+   !!   trc_kpp       : compute and add to the passive tracer trend the non-local flux (lk_top=T)
    !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and active tracers 
-   USE dom_oce         ! ocean space and time domain
-   USE zdf_oce         ! ocean vertical physics
-   USE sbc_oce         ! surface boundary condition: ocean
-   USE phycst          ! physical constants
-   USE eosbn2          ! equation of state
-   USE zdfddm          ! double diffusion mixing
-   USE in_out_manager  ! I/O manager
-   USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
-   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE prtctl          ! Print control
-   USE trdmod_oce      ! ocean trends definition
-   USE trdtra          ! tracers trends
-   USE timing          ! Timing
+   USE oce            ! ocean dynamics and active tracers 
+   USE dom_oce        ! ocean space and time domain
+   USE zdf_oce        ! ocean vertical physics
+   USE sbc_oce        ! surface boundary condition: ocean
+   USE phycst         ! physical constants
+   USE eosbn2         ! equation of state
+   USE zdfddm         ! double diffusion mixing
+   USE in_out_manager ! I/O manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
+   USE prtctl         ! Print control
+   USE trdmod_oce     ! ocean trends definition
+   USE trdtra         ! tracers trends
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90	(revision 3524)
@@ -17,16 +17,17 @@
    !!   'key_zdfric'                                             Kz = f(Ri)
    !!----------------------------------------------------------------------
-   !!   zdf_ric      : update momentum and tracer Kz from the Richardson
+   !!   zdf_ric       : update momentum and tracer Kz from the Richardson
    !!                  number computation
-   !!   zdf_ric_init : initialization, namelist read, & parameters control
-   !!----------------------------------------------------------------------
-   USE oce                   ! ocean dynamics and tracers variables
-   USE dom_oce               ! ocean space and time domain variables
-   USE zdf_oce               ! ocean vertical physics
-   USE in_out_manager        ! I/O manager
-   USE lbclnk                ! ocean lateral boundary condition (or mpp link)
-   USE lib_mpp               ! MPP library
-   USE wrk_nemo              ! work arrays
-   USE timing                ! Timing
+   !!   zdf_ric_init  : initialization, namelist read, & parameters control
+   !!----------------------------------------------------------------------
+   USE oce            ! ocean dynamics and tracers variables
+   USE dom_oce        ! ocean space and time domain variables
+   USE zdf_oce        ! ocean vertical physics
+   USE in_out_manager ! I/O manager
+   USE lbclnk         ! ocean lateral boundary condition (or mpp link)
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    USE eosbn2, ONLY : nn_eos
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90	(revision 3524)
@@ -31,9 +31,9 @@
    !!   'key_zdftke'                                   TKE vertical physics
    !!----------------------------------------------------------------------
-   !!   zdf_tke      : update momentum and tracer Kz from a tke scheme
-   !!   tke_tke      : tke time stepping: update tke at now time step (en)
-   !!   tke_avn      : compute mixing length scale and deduce avm and avt
-   !!   zdf_tke_init : initialization, namelist read, and parameters control
-   !!   tke_rst      : read/write tke restart in ocean restart file
+   !!   zdf_tke       : update momentum and tracer Kz from a tke scheme
+   !!   tke_tke       : tke time stepping: update tke at now time step (en)
+   !!   tke_avn       : compute mixing length scale and deduce avm and avt
+   !!   zdf_tke_init  : initialization, namelist read, and parameters control
+   !!   tke_rst       : read/write tke restart in ocean restart file
    !!----------------------------------------------------------------------
    USE oce            ! ocean: dynamics and active tracers variables
@@ -52,4 +52,5 @@
    USE wrk_nemo       ! work arrays
    USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90	(revision 3524)
@@ -12,19 +12,20 @@
    !!   'key_zdftmx'                                  Tidal vertical mixing
    !!----------------------------------------------------------------------
-   !!   zdf_tmx      : global     momentum & tracer Kz with tidal induced Kz
-   !!   tmx_itf      : Indonesian momentum & tracer Kz with tidal induced Kz 
-   !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and tracers variables
-   USE dom_oce         ! ocean space and time domain variables
-   USE zdf_oce         ! ocean vertical physics variables
-   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE eosbn2          ! ocean equation of state
-   USE phycst          ! physical constants
-   USE prtctl          ! Print control
-   USE in_out_manager  ! I/O manager
-   USE iom             ! I/O Manager
-   USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
-   USE timing          ! Timing
+   !!   zdf_tmx       : global     momentum & tracer Kz with tidal induced Kz
+   !!   tmx_itf       : Indonesian momentum & tracer Kz with tidal induced Kz 
+   !!----------------------------------------------------------------------
+   USE oce            ! ocean dynamics and tracers variables
+   USE dom_oce        ! ocean space and time domain variables
+   USE zdf_oce        ! ocean vertical physics variables
+   USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
+   USE eosbn2         ! ocean equation of state
+   USE phycst         ! physical constants
+   USE prtctl         ! Print control
+   USE in_out_manager ! I/O manager
+   USE iom            ! I/O Manager
+   USE lib_mpp        ! MPP library
+   USE wrk_nemo       ! work arrays
+   USE timing         ! Timing
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90	(revision 3524)
@@ -4,7 +4,7 @@
    !! TOP :   PISCES Compute remineralization/scavenging of organic compounds
    !!======================================================================
-   !! History :   1.0  !  2004     (O. Aumont) Original code
-   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
-   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron
+   !! History :  1.0  !  2004     (O. Aumont) Original code
+   !!            2.0  !  2007-12  (C. Ethe, G. Madec)  F90
+   !!            3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron
    !!----------------------------------------------------------------------
 #if defined key_pisces
@@ -17,13 +17,14 @@
    !!   p4z_rem_alloc :  Allocate remineralisation variables
    !!----------------------------------------------------------------------
-   USE oce_trc         !  shared variables between ocean and passive tracers
-   USE trc             !  passive tracers common variables 
-   USE sms_pisces      !  PISCES Source Minus Sink variables
-   USE p4zopt          !  optical model
-   USE p4zche          !  chemical model
-   USE p4zprod         !  Growth rate of the 2 phyto groups
-   USE p4zmeso         !  Sources and sinks of mesozooplankton
-   USE p4zint          !  interpolation and computation of various fields
-   USE prtctl_trc      !  print control for debugging
+   USE oce_trc        !  shared variables between ocean and passive tracers
+   USE trc            !  passive tracers common variables 
+   USE sms_pisces     !  PISCES Source Minus Sink variables
+   USE p4zopt         !  optical model
+   USE p4zche         !  chemical model
+   USE p4zprod        !  Growth rate of the 2 phyto groups
+   USE p4zmeso        !  Sources and sinks of mesozooplankton
+   USE p4zint         !  interpolation and computation of various fields
+   USE prtctl_trc     !  print control for debugging
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90	(revision 3524)
@@ -19,4 +19,5 @@
    USE prtctl_trc      !  print control for debugging
    USE iom             !  I/O manager
+   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
    IMPLICIT NONE
Index: branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/SED/sedchem.F90
===================================================================
--- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/SED/sedchem.F90	(revision 3523)
+++ branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/SED/sedchem.F90	(revision 3524)
@@ -1,4 +1,4 @@
 MODULE sedchem
-
+   !
 #if defined key_sed 
    !!======================================================================
@@ -6,9 +6,8 @@
    !! sediment :   Variable for chemistry of the CO2 cycle
    !!======================================================================
-   !!   modules used
-   USE sed     ! sediment global variable
+   USE sed            ! sediment global variable
    USE sedarr
-
-   !! * Accessibility
+   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
+
    PUBLIC sed_chem   
 
