Index: NEMO/trunk/src/ICE/ice1d.F90
===================================================================
--- NEMO/trunk/src/ICE/ice1d.F90	(revision 9725)
+++ NEMO/trunk/src/ICE/ice1d.F90	(revision 9750)
@@ -112,7 +112,9 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_bo_i       !: Bottom  Conduction flux 
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_s_tot      !: Snow accretion/ablation        [m]
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_surf     !: Ice surface accretion/ablation [m]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_sum      !: Ice surface ablation [m]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_itm      !: Ice internal ablation [m]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_bom      !: Ice bottom ablation  [m]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_bog      !: Ice bottom accretion  [m]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_sub      !: Ice surface sublimation [m]
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_bott     !: Ice bottom accretion/ablation  [m]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_s_mlt      !: Snow melt [m]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_snowice    !: Snow ice formation             [m of ice]
@@ -203,11 +205,11 @@
       !
       ii = ii + 1
-      ALLOCATE( t_su_1d  (jpij) , t_si_1d  (jpij) , a_i_1d    (jpij) , a_ib_1d(jpij) ,                  &
-         &      h_i_1d   (jpij) , h_ib_1d  (jpij) , h_s_1d    (jpij) , fc_su  (jpij) , fc_bo_i(jpij) ,  &    
-         &      dh_s_tot (jpij) , dh_i_surf(jpij) , dh_i_sub  (jpij) ,                                  &    
-         &      dh_i_bott(jpij) , dh_s_mlt (jpij) , dh_snowice(jpij) , s_i_1d (jpij) , s_i_new(jpij) ,  &
-         &      a_ip_1d  (jpij) , v_ip_1d  (jpij) , v_i_1d    (jpij) , v_s_1d (jpij) ,                  &
-         &      h_ip_1d  (jpij) , a_ip_frac_1d(jpij) ,                                                  &
-         &      sv_i_1d  (jpij) , oa_i_1d  (jpij) , STAT=ierr(ii) )
+      ALLOCATE( t_su_1d (jpij) , t_si_1d (jpij) , a_i_1d    (jpij) , a_ib_1d (jpij) ,                   &
+         &      h_i_1d  (jpij) , h_ib_1d (jpij) , h_s_1d    (jpij) , fc_su   (jpij) , fc_bo_i (jpij) ,  &    
+         &      dh_s_tot(jpij) , dh_i_sum(jpij) , dh_i_itm  (jpij) , dh_i_bom(jpij) , dh_i_bog(jpij) ,  &    
+         &      dh_i_sub(jpij) , dh_s_mlt(jpij) , dh_snowice(jpij) , s_i_1d  (jpij) , s_i_new (jpij) ,  &
+         &      a_ip_1d (jpij) , v_ip_1d (jpij) , v_i_1d    (jpij) , v_s_1d  (jpij) ,                   &
+         &      h_ip_1d (jpij) , a_ip_frac_1d(jpij) ,                                                   &
+         &      sv_i_1d (jpij) , oa_i_1d (jpij) , STAT=ierr(ii) )
       !
       ii = ii + 1
Index: NEMO/trunk/src/ICE/icethd.F90
===================================================================
--- NEMO/trunk/src/ICE/icethd.F90	(revision 9725)
+++ NEMO/trunk/src/ICE/icethd.F90	(revision 9750)
@@ -77,5 +77,5 @@
       !!                - call ice_thd_sal  for ice desalination
       !!                - call ice_thd_temp to  retrieve temperature from ice enthalpy
-      !!                - call ice_thd_lam  for extra lateral ice melt if active virtual thickness distribution
+      !!                - call ice_thd_mono for extra lateral ice melt if active virtual thickness distribution
       !!                - call ice_thd_da   for lateral ice melt
       !!             - back to the geographic grid
@@ -224,7 +224,8 @@
             !                                                       ! --- & Change units of e_i, e_s from J/m2 to J/m3 --- !
             !
-            s_i_new   (1:npti) = 0._wp ; dh_s_tot (1:npti) = 0._wp  ! --- some init --- !  (important to have them here) 
-            dh_i_surf (1:npti) = 0._wp ; dh_i_bott(1:npti) = 0._wp
-            dh_snowice(1:npti) = 0._wp ; dh_i_sub (1:npti) = 0._wp ; dh_s_mlt(1:npti) = 0._wp
+            s_i_new   (1:npti) = 0._wp ; dh_s_tot(1:npti) = 0._wp  ! --- some init --- !  (important to have them here) 
+            dh_i_sum  (1:npti) = 0._wp ; dh_i_bom(1:npti) = 0._wp ; dh_i_itm  (1:npti) = 0._wp 
+            dh_i_sub  (1:npti) = 0._wp ; dh_i_bog(1:npti) = 0._wp
+            dh_snowice(1:npti) = 0._wp ; dh_s_mlt(1:npti) = 0._wp
             !
             IF( ln_icedH ) THEN                                     ! --- growing/melting --- !
@@ -239,11 +240,11 @@
                               CALL ice_thd_temp                     ! --- temperature update --- !
             !
-!!gm please create a new logical (l_thd_lam or a better explicit name) set one for all in icestp.F90 module
-!!gm        l_thd_lam = ln_icedH .AND. ( ( nn_virtual_itd == 1 .OR. nn_virtual_itd == 4 ) .AND. jpl == 1 )
+!!gm please create a new logical (l_thd_mono or a better explicit name) set one for all in icestp.F90 module
+!!gm        l_thd_mono = ln_icedH .AND. ( ( nn_virtual_itd == 1 .OR. nn_virtual_itd == 4 ) .AND. jpl == 1 )
 !!gm        by the way, the different options associated with nn_virtual_itd =1 to 4  are quite impossible to identify
 !!gm        more comment to add when ready the namelist, with an explicit print in the ocean.output
             IF( ln_icedH ) THEN
                IF ( ( nn_virtual_itd == 1 .OR. nn_virtual_itd == 3 ) .AND. jpl == 1 ) THEN
-                              CALL ice_thd_lam                      ! --- extra lateral melting if virtual_itd --- !
+                              CALL ice_thd_mono                      ! --- extra lateral melting if virtual_itd --- !
                END IF
             END IF
@@ -307,7 +308,7 @@
 
 
-   SUBROUTINE ice_thd_lam
-      !!-----------------------------------------------------------------------
-      !!                   ***  ROUTINE ice_thd_lam *** 
+   SUBROUTINE ice_thd_mono
+      !!-----------------------------------------------------------------------
+      !!                   ***  ROUTINE ice_thd_mono *** 
       !!                 
       !! ** Purpose :   Lateral melting in case virtual_itd
@@ -321,5 +322,5 @@
       !
       DO ji = 1, npti
-         zdh_mel = MIN( 0._wp, dh_i_surf(ji) + dh_i_bott(ji) + dh_snowice(ji) + dh_i_sub(ji) )
+         zdh_mel = MIN( 0._wp, dh_i_itm(ji) + dh_i_sum(ji) + dh_i_bom(ji) + dh_snowice(ji) + dh_i_sub(ji) )
          IF( zdh_mel < 0._wp .AND. a_i_1d(ji) > 0._wp )  THEN
             zvi          = a_i_1d(ji) * h_i_1d(ji)
@@ -338,5 +339,5 @@
       END DO
       !
-   END SUBROUTINE ice_thd_lam
+   END SUBROUTINE ice_thd_mono
 
 
Index: NEMO/trunk/src/ICE/icethd_dh.F90
===================================================================
--- NEMO/trunk/src/ICE/icethd_dh.F90	(revision 9725)
+++ NEMO/trunk/src/ICE/icethd_dh.F90	(revision 9750)
@@ -333,5 +333,5 @@
                zfmdt          = - zdeltah(ji,jk) * rhoic              ! Mass flux x time step > 0
                          
-               dh_i_surf(ji)  = dh_i_surf(ji) + zdeltah(ji,jk)        ! Cumulate surface melt
+               dh_i_itm(ji)   = dh_i_itm(ji) + zdeltah(ji,jk)         ! Cumulate internal melting
                
                zfmdt          = - rhoic * zdeltah(ji,jk)              ! Recompute mass flux [kg/m2, >0]
@@ -357,5 +357,5 @@
                zq_su(ji)      = MAX( 0._wp , zq_su(ji) - zdeltah(ji,jk) * rhoic * zdE ) ! update available heat
                
-               dh_i_surf(ji)  = dh_i_surf(ji) + zdeltah(ji,jk)        ! Cumulate surface melt
+               dh_i_sum(ji)   = dh_i_sum(ji) + zdeltah(ji,jk)         ! Cumulate surface melt
                
                zfmdt          = - rhoic * zdeltah(ji,jk)              ! Recompute mass flux [kg/m2, >0]
@@ -404,5 +404,5 @@
       ! update ice thickness
       DO ji = 1, npti
-         h_i_1d(ji) =  MAX( 0._wp , h_i_1d(ji) + dh_i_surf(ji) + dh_i_sub(ji) )
+         h_i_1d(ji) =  MAX( 0._wp , h_i_1d(ji) + dh_i_sum(ji) + dh_i_itm(ji) + dh_i_sub(ji) )
       END DO
 
@@ -422,6 +422,6 @@
       ! If salinity varies in time, an iterative procedure is required, because
       ! the involved quantities are inter-dependent.
-      ! Basal growth (dh_i_bott) depends upon new ice specific enthalpy (zEi),
-      ! which depends on forming ice salinity (s_i_new), which depends on dh/dt (dh_i_bott)
+      ! Basal growth (dh_i_bog) depends upon new ice specific enthalpy (zEi),
+      ! which depends on forming ice salinity (s_i_new), which depends on dh/dt (dh_i_bog)
       ! -> need for an iterative procedure, which converges quickly
 
@@ -437,5 +437,5 @@
                !--- zswi12 if 2.0e-8 < dh/dt < 3.6e-7 
                !--- zswi2  if dh/dt > 3.6e-7
-               zgrr     = MIN( 1.0e-3, MAX ( dh_i_bott(ji) * r1_rdtice , epsi10 ) )
+               zgrr     = MIN( 1.0e-3, MAX ( dh_i_bog(ji) * r1_rdtice , epsi10 ) )
                zswi2    = MAX( 0._wp , SIGN( 1._wp , zgrr - 3.6e-7 ) )
                zswi12   = MAX( 0._wp , SIGN( 1._wp , zgrr - 2.0e-8 ) ) * ( 1.0 - zswi2 )
@@ -457,20 +457,20 @@
                zdE           = zEi - zEw                                                              ! Specific enthalpy difference (J/kg, <0)
 
-               dh_i_bott(ji) = rdt_ice * MAX( 0._wp , zf_tt(ji) / ( zdE * rhoic ) )
+               dh_i_bog(ji)  = rdt_ice * MAX( 0._wp , zf_tt(ji) / ( zdE * rhoic ) )
                
             END DO
             ! Contribution to Energy and Salt Fluxes                                    
-            zfmdt          = - rhoic * dh_i_bott(ji)                                                  ! Mass flux x time step (kg/m2, < 0)
+            zfmdt          = - rhoic * dh_i_bog(ji)                                                   ! Mass flux x time step (kg/m2, < 0)
             
             hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice                           ! Heat flux to the ocean [W.m-2], >0
             hfx_bog_1d(ji) = hfx_bog_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice                           ! Heat flux used in this process [W.m-2], <0
             
-            sfx_bog_1d(ji) = sfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bott(ji) * s_i_new(ji) * r1_rdtice   ! Salt flux, <0
-
-            wfx_bog_1d(ji) = wfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bott(ji) * r1_rdtice                 ! Mass flux, <0
+            sfx_bog_1d(ji) = sfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bog(ji) * s_i_new(ji) * r1_rdtice    ! Salt flux, <0
+
+            wfx_bog_1d(ji) = wfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bog(ji) * r1_rdtice                  ! Mass flux, <0
 
             ! update heat content (J.m-2) and layer thickness
-            eh_i_old(ji,nlay_i+1) = eh_i_old(ji,nlay_i+1) + dh_i_bott(ji) * (-zEi * rhoic)
-            h_i_old (ji,nlay_i+1) = h_i_old (ji,nlay_i+1) + dh_i_bott(ji)
+            eh_i_old(ji,nlay_i+1) = eh_i_old(ji,nlay_i+1) + dh_i_bog(ji) * (-zEi * rhoic)
+            h_i_old (ji,nlay_i+1) = h_i_old (ji,nlay_i+1) + dh_i_bog(ji)
 
          ENDIF
@@ -495,5 +495,5 @@
                                                                     ! this should normally not happen, but sometimes, heat diffusion leads to this
 
-                  dh_i_bott (ji)    = dh_i_bott(ji) + zdeltah(ji,jk)
+                  dh_i_itm (ji)     = dh_i_itm(ji) + zdeltah(ji,jk)
 
                   zfmdt             = - zdeltah(ji,jk) * rhoic      ! Mass flux x time step > 0
@@ -523,5 +523,5 @@
                   zq_bo(ji)       = MAX( 0._wp , zq_bo(ji) - zdeltah(ji,jk) * rhoic * zdE )   ! update available heat. MAX is necessary for roundup errors
 
-                  dh_i_bott(ji)   = dh_i_bott(ji) + zdeltah(ji,jk)                            ! Update basal melt
+                  dh_i_bom(ji)    = dh_i_bom(ji) + zdeltah(ji,jk)                            ! Update basal melt
 
                   zfmdt           = - zdeltah(ji,jk) * rhoic                                  ! Mass flux x time step > 0
@@ -549,5 +549,5 @@
       ! --------------------------
       DO ji = 1, npti
-         h_i_1d(ji) = MAX( 0._wp , h_i_1d(ji) + dh_i_bott(ji) )
+         h_i_1d(ji) = MAX( 0._wp , h_i_1d(ji) + dh_i_bog(ji) + dh_i_bom(ji) )
       END DO  
 
Index: NEMO/trunk/src/ICE/icethd_pnd.F90
===================================================================
--- NEMO/trunk/src/ICE/icethd_pnd.F90	(revision 9725)
+++ NEMO/trunk/src/ICE/icethd_pnd.F90	(revision 9750)
@@ -157,5 +157,5 @@
             !
             ! available meltwater for melt ponding [m, >0] and fraction
-            zdv_mlt = -( dh_i_surf(ji)*rhoic + dh_s_mlt(ji)*rhosn ) * z1_rhofw * a_i_1d(ji)
+            zdv_mlt = -( dh_i_sum(ji)*rhoic + dh_s_mlt(ji)*rhosn ) * z1_rhofw * a_i_1d(ji)
             zfr_mlt = zrmin + ( zrmax - zrmin ) * a_i_1d(ji)  ! from CICE doc
             !zfr_mlt = zrmin + zrmax * a_i_1d(ji)             ! from Holland paper 
Index: NEMO/trunk/src/ICE/icethd_sal.F90
===================================================================
--- NEMO/trunk/src/ICE/icethd_sal.F90	(revision 9725)
+++ NEMO/trunk/src/ICE/icethd_sal.F90	(revision 9750)
@@ -77,7 +77,7 @@
             !---------------------------------------------------------
             IF( h_i_1d(ji) > 0._wp ) THEN
-               zs_sni   = sss_1d(ji) * ( rhoic - rhosn ) * r1_rhoic                                 ! Salinity of snow ice
-               zs_i_si = ( zs_sni      - s_i_1d(ji) ) *             dh_snowice(ji)  / h_i_1d(ji) ! snow-ice    
-               zs_i_bg = ( s_i_new(ji) - s_i_1d(ji) ) * MAX( 0._wp, dh_i_bott(ji) ) / h_i_1d(ji) ! bottom growth
+               zs_sni   = sss_1d(ji) * ( rhoic - rhosn ) * r1_rhoic                 ! Salinity of snow ice
+               zs_i_si = ( zs_sni      - s_i_1d(ji) ) * dh_snowice(ji) / h_i_1d(ji) ! snow-ice    
+               zs_i_bg = ( s_i_new(ji) - s_i_1d(ji) ) * dh_i_bog  (ji) / h_i_1d(ji) ! bottom growth
                ! Update salinity (nb: salt flux already included in icethd_dh)
                s_i_1d(ji) = s_i_1d(ji) + zs_i_bg + zs_i_si
Index: NEMO/trunk/src/ICE/iceupdate.F90
===================================================================
--- NEMO/trunk/src/ICE/iceupdate.F90	(revision 9725)
+++ NEMO/trunk/src/ICE/iceupdate.F90	(revision 9750)
@@ -263,5 +263,5 @@
       IF( iom_use('hfxbog'     ) )   CALL iom_put ("hfxbog"     , hfx_bog             )   ! heat flux used for ice bottom growth 
       IF( iom_use('hfxbom'     ) )   CALL iom_put ("hfxbom"     , hfx_bom             )   ! heat flux used for ice bottom melt
-      IF( iom_use('hfxsum'     ) )   CALL iom_put ("hfxsum"     , hfx_sum             )   ! heat flux used for ice surface growth
+      IF( iom_use('hfxsum'     ) )   CALL iom_put ("hfxsum"     , hfx_sum             )   ! heat flux used for ice surface melt
       IF( iom_use('hfxopw'     ) )   CALL iom_put ("hfxopw"     , hfx_opw             )   ! heat flux used for ice formation in open water
       IF( iom_use('hfxdif'     ) )   CALL iom_put ("hfxdif"     , hfx_dif             )   ! heat flux used for ice temperature change
