Index: branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/CONFIG/SHARED/namelist_ref
===================================================================
--- branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 11936)
+++ branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 11939)
@@ -1298,5 +1298,6 @@
     ln_asmdin      = .false. !  Logical switch for Direct Initialization (DI)
     ln_asmiau      = .false. !  Logical switch for Incremental Analysis Updating (IAU)
-    ln_seaiceinc   = .false. !  Logical switch for applying sea ice increments
+    ln_seaiceinc   = .false. !  Logical switch for applying sea ice concentration increments
+    ln_sitinc      = .false. !  Logical switch for applying sea ice thickness increments
     ln_phytobal    = .false. !  Logical switch for phytoplankton multivariate balancing
     ln_slchltotinc = .false. !  Logical switch for applying slchltot increments
Index: branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
===================================================================
--- branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 11936)
+++ branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 11939)
@@ -21,5 +21,6 @@
    !!   dyn_asm_inc    : Apply the dynamic (u and v) increments
    !!   ssh_asm_inc    : Apply the SSH increment
-   !!   seaice_asm_inc : Apply the seaice increment
+   !!   seaice_asm_inc : Apply the sea ice concentration increment
+   !!   sit_asm_inc    : Apply the sea ice thickness increment
    !!----------------------------------------------------------------------
    USE wrk_nemo         ! Memory Allocation
@@ -41,5 +42,5 @@
 #if defined key_cice && defined key_asminc
    USE sbc_ice, ONLY : & ! CICE Ice model variables
-   & ndaice_da, nfresh_da, nfsalt_da
+   & ndaice_da, ndsit_da, nfresh_da, nfsalt_da
 #endif
    USE sbc_oce          ! Surface boundary condition variables.
@@ -54,5 +55,6 @@
    PUBLIC   dyn_asm_inc    !: Apply the dynamic (u and v) increments
    PUBLIC   ssh_asm_inc    !: Apply the SSH increment
-   PUBLIC   seaice_asm_inc !: Apply the seaice increment
+   PUBLIC   seaice_asm_inc !: Apply the seaice concentration increment
+   PUBLIC   sit_asm_inc    !: Apply the seaice thickness increment
    PUBLIC   bgc_asm_inc    !: Apply the biogeochemistry increments
 
@@ -68,5 +70,6 @@
    LOGICAL, PUBLIC :: ln_dyninc = .FALSE.      !: No dynamics (u and v) assimilation increments
    LOGICAL, PUBLIC :: ln_sshinc = .FALSE.      !: No sea surface height assimilation increment
-   LOGICAL, PUBLIC :: ln_seaiceinc             !: No sea ice concentration increment
+   LOGICAL, PUBLIC :: ln_seaiceinc = .FALSE.   !: No sea ice concentration increment
+   LOGICAL, PUBLIC :: ln_sitinc = .FALSE.      !: No sea ice thickness increment
    LOGICAL, PUBLIC :: lk_bgcinc = .FALSE.      !: No biogeochemistry increments
    LOGICAL, PUBLIC :: ln_salfix = .FALSE.      !: Apply minimum salinity check
@@ -94,4 +97,5 @@
    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   ssh_bkg, ssh_bkginc   ! Background sea surface height and its increment
    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   seaice_bkginc         ! Increment to the background sea ice conc
+   REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   sit_bkginc            ! Increment to the background sea ice thickness
 
    !! * Substitutions
@@ -147,5 +151,5 @@
          &                 nitbkg, nitdin, nitiaustr, nitiaufin, niaufn,   &
          &                 ln_salfix, salfixmin, nn_divdmp,                &
-         &                 ln_seaiceinc, ln_temnofreeze,                   &
+         &                 ln_seaiceinc, ln_sitinc, ln_temnofreeze,        &
          &                 mld_choice_bgc, rn_maxchlinc
       !!----------------------------------------------------------------------
@@ -155,4 +159,5 @@
       !-----------------------------------------------------------------------
       ln_seaiceinc = .FALSE.
+      ln_sitinc = .FALSE.
       ln_temnofreeze = .FALSE.
 
@@ -178,5 +183,6 @@
          WRITE(numout,*) '      Logical switch for applying SSH increments               ln_sshinc = ', ln_sshinc
          WRITE(numout,*) '      Logical switch for Direct Initialization (DI)            ln_asmdin = ', ln_asmdin
-         WRITE(numout,*) '      Logical switch for applying sea ice increments        ln_seaiceinc = ', ln_seaiceinc
+         WRITE(numout,*) '      Logical switch for applying SIC increments               ln_seaiceinc = ', ln_seaiceinc
+         WRITE(numout,*) '      Logical switch for applying SIT increments               ln_sitinc = ', ln_sitinc
          WRITE(numout,*) '      Logical switch for phytoplankton balancing             ln_phytobal = ', ln_phytobal
          WRITE(numout,*) '      Logical switch for applying slchltot increments     ln_slchltotinc = ', ln_slchltotinc
@@ -264,7 +270,7 @@
       IF (      ( ( .NOT. ln_asmdin ).AND.( .NOT. ln_asmiau ) ) &
          & .AND.( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ).OR. &
-         &        ( lk_bgcinc ) )) &
+         &        ( ln_sitinc ).OR.( lk_bgcinc ) )) &
          & CALL ctl_stop( ' One or more of ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', &
-         &                ' ln_(bgc-variable)inc is set to .true.', &
+         &                ' ln_sitinc and ln_(bgc-variable)inc is set to .true.', &
          &                ' but ln_asmdin and ln_asmiau are both set to .false. :', &
          &                ' Inconsistent options')
@@ -275,7 +281,7 @@
 
       IF ( ( .NOT. ln_trainc ).AND.( .NOT. ln_dyninc ).AND.( .NOT. ln_sshinc ).AND.( .NOT. ln_seaiceinc ) &
-         & .AND.( .NOT. lk_bgcinc ) )  &
+         & .AND.( .NOT. ln_sitinc ).AND.( .NOT. lk_bgcinc ) )  &
          & CALL ctl_warn( ' ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', &
-         &                ' ln_(bgc-variable)inc are set to .false. :', &
+         &                ' ln_sitinc and ln_(bgc-variable)inc are set to .false. :', &
          &                ' The assimilation increments are not applied')
 
@@ -383,4 +389,5 @@
       ALLOCATE( ssh_bkginc(jpi,jpj)   )
       ALLOCATE( seaice_bkginc(jpi,jpj))
+      ALLOCATE( sit_bkginc(jpi,jpj)   )
 #if defined key_asminc
       ALLOCATE( ssh_iau(jpi,jpj)      )
@@ -392,9 +399,10 @@
       ssh_bkginc(:,:) = 0.0
       seaice_bkginc(:,:) = 0.0
+      sit_bkginc(:,:) = 0.0
 #if defined key_asminc
       ssh_iau(:,:)    = 0.0
 #endif
       IF ( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ) &
-         &  .OR.( lk_bgcinc ) ) THEN
+         &  .OR.( ln_sitinc ).OR.( lk_bgcinc ) ) THEN
 
          !--------------------------------------------------------------------
@@ -459,4 +467,13 @@
             ! to allow for differences in masks
             WHERE( ABS( ssh_bkginc(:,:) ) > 1.0e+10 ) ssh_bkginc(:,:) = 0.0
+         ENDIF
+
+         IF ( ln_sitinc ) THEN
+            CALL iom_get( inum, jpdom_autoglo, 'bckinsit', sit_bkginc, 1 )
+            ! Apply the masks
+            sit_bkginc(:,:) = sit_bkginc(:,:) * tmask(:,:,1)
+            ! Set missing increments to 0.0 rather than 1e+20
+            ! to allow for differences in masks
+            WHERE( ABS( sit_bkginc(:,:) ) > 1.0e+10 ) sit_bkginc(:,:) = 0.0
          ENDIF
 
@@ -827,4 +844,5 @@
       ! Perhaps the following call should be in step
       IF   ( ln_seaiceinc  )   CALL seaice_asm_inc ( kt )   ! apply sea ice concentration increment
+      IF   ( ln_sitinc  )      CALL sit_asm_inc ( kt )      ! apply sea ice thickness increment
       !
    END SUBROUTINE tra_asm_inc
@@ -988,4 +1006,225 @@
    END SUBROUTINE ssh_asm_inc
 
+   SUBROUTINE sit_asm_inc( kt, kindic )
+      !!----------------------------------------------------------------------
+      !!                    ***  ROUTINE sit_asm_inc  ***
+      !!          
+      !! ** Purpose : Apply the sea ice thickness assimilation increment.
+      !!
+      !! ** Method  : Direct initialization or Incremental Analysis Updating.
+      !!
+      !! ** Action  : 
+      !!
+      !!----------------------------------------------------------------------
+      IMPLICIT NONE
+      !
+      INTEGER, INTENT(in)           ::   kt   ! Current time step
+      INTEGER, INTENT(in), OPTIONAL ::   kindic   ! flag for disabling the deallocation
+      !
+      INTEGER  ::   it
+      REAL(wp) ::   zincwgt   ! IAU weight for current time step
+! #if defined key_lim2
+!       REAL(wp), DIMENSION(jpi,jpj) ::   zofrld, zohicif, zseaicendg, zhicifinc  ! LIM
+!       REAL(wp) ::   zhicifmin = 0.5_wp      ! ice minimum depth in metres
+!       !!THICKNESS INCS NOT SET UP FOR LIM
+! #endif
+      !!----------------------------------------------------------------------
+
+      IF ( ln_asmiau ) THEN
+
+         !--------------------------------------------------------------------
+         ! Incremental Analysis Updating
+         !--------------------------------------------------------------------
+
+         IF ( ( kt >= nitiaustr_r ).AND.( kt <= nitiaufin_r ) ) THEN
+
+            it = kt - nit000 + 1
+            zincwgt = wgtiau(it)      ! IAU weight for the current time step 
+            ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments)
+            ! EF: Actually CICE is expecting a tendency so is divided by rdt below
+
+            IF(lwp) THEN
+               WRITE(numout,*) 
+               WRITE(numout,*) 'sit_asm_inc : sea ice thick IAU at time step = ', &
+                  &  kt,' with IAU weight = ', wgtiau(it)
+               WRITE(numout,*) '~~~~~~~~~~~~'
+            ENDIF
+
+            ! Sea-ice : LIM-3 case (to add)
+
+! #if defined key_lim2
+!             ! Sea-ice : LIM-2 case (to add if needed)
+!             zofrld (:,:) = frld(:,:)
+!             zohicif(:,:) = hicif(:,:)
+!             !
+!             frld  = MIN( MAX( frld (:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp)
+!             pfrld = MIN( MAX( pfrld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp)
+!             fr_i(:,:) = 1.0_wp - frld(:,:)        ! adjust ice fraction
+!             !
+!             zseaicendg(:,:) = zofrld(:,:) - frld(:,:)   ! find out actual sea ice nudge applied
+!             !
+!             ! Nudge sea ice depth to bring it up to a required minimum depth
+!             WHERE( zseaicendg(:,:) > 0.0_wp .AND. hicif(:,:) < zhicifmin ) 
+!                zhicifinc(:,:) = (zhicifmin - hicif(:,:)) * zincwgt    
+!             ELSEWHERE
+!                zhicifinc(:,:) = 0.0_wp
+!             END WHERE
+!             !
+!             ! nudge ice depth
+!             hicif (:,:) = hicif (:,:) + zhicifinc(:,:)
+!             phicif(:,:) = phicif(:,:) + zhicifinc(:,:)       
+!             !
+!             ! seaice salinity balancing (to add)
+! #endif
+
+#if defined key_cice && defined key_asminc
+            ! Sea-ice thickness : CICE case. Pass ice thickness increment tendency into CICE
+            ndsit_da(:,:) = sit_bkginc(:,:) * zincwgt / rdt
+#endif
+
+            IF ( kt == nitiaufin_r ) THEN
+               DEALLOCATE( sit_bkginc )
+            ENDIF
+
+         ELSE
+
+#if defined key_cice && defined key_asminc
+            ! Sea-ice thickness : CICE case. Zero ice increment tendency into CICE
+            ndsit_da(:,:) = 0.0_wp
+#endif
+
+         ENDIF
+
+      ELSEIF ( ln_asmdin ) THEN
+
+         !--------------------------------------------------------------------
+         ! Direct Initialization
+         !--------------------------------------------------------------------
+
+         IF ( kt == nitdin_r ) THEN
+
+            neuler = 0                    ! Force Euler forward step
+
+            ! Sea-ice : LIM-3 case (to add)
+
+! #if defined key_lim2
+!             ! Sea-ice : LIM-2 case (add if needed)
+!             zofrld(:,:)=frld(:,:)
+!             zohicif(:,:)=hicif(:,:)
+!             ! 
+!             ! Initialize the now fields the background + increment
+!             frld (:,:) = MIN( MAX( frld(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp)
+!             pfrld(:,:) = frld(:,:) 
+!             fr_i (:,:) = 1.0_wp - frld(:,:)                ! adjust ice fraction
+!             zseaicendg(:,:) = zofrld(:,:) - frld(:,:)      ! find out actual sea ice nudge applied
+!             !
+!             ! Nudge sea ice depth to bring it up to a required minimum depth
+!             WHERE( zseaicendg(:,:) > 0.0_wp .AND. hicif(:,:) < zhicifmin ) 
+!                zhicifinc(:,:) = (zhicifmin - hicif(:,:)) * zincwgt    
+!             ELSEWHERE
+!                zhicifinc(:,:) = 0.0_wp
+!             END WHERE
+!             !
+!             ! nudge ice depth
+!             hicif (:,:) = hicif (:,:) + zhicifinc(:,:)
+!             phicif(:,:) = phicif(:,:)       
+!             !
+!             ! seaice salinity balancing (to add)
+! #endif
+ 
+#if defined key_cice && defined key_asminc
+            ! Sea-ice thickness : CICE case. Pass ice thickness increment tendency into CICE
+           ndsit_da(:,:) = sit_bkginc(:,:) / rdt
+#endif
+           IF ( .NOT. PRESENT(kindic) ) THEN
+              DEALLOCATE( sit_bkginc )
+           END IF
+
+         ELSE
+
+#if defined key_cice && defined key_asminc
+            ! Sea-ice thicnkness : CICE case. Zero ice thickness increment tendency into CICE 
+            ndsit_da(:,:) = 0.0_wp
+#endif
+         
+         ENDIF
+
+!#if defined defined key_lim2 || defined key_cice
+!
+!            IF (ln_seaicebal ) THEN       
+!             !! balancing salinity increments
+!             !! simple case from limflx.F90 (doesn't include a mass flux)
+!             !! assumption is that as ice concentration is reduced or increased
+!             !! the snow and ice depths remain constant
+!             !! note that snow is being created where ice concentration is being increased
+!             !! - could be more sophisticated and
+!             !! not do this (but would need to alter h_snow)
+!
+!             usave(:,:,:)=sb(:,:,:)   ! use array as a temporary store
+!
+!             DO jj = 1, jpj
+!               DO ji = 1, jpi 
+!           ! calculate change in ice and snow mass per unit area
+!           ! positive values imply adding salt to the ocean (results from ice formation)
+!           ! fwf : ice formation and melting
+!
+!                 zfons = ( -nfresh_da(ji,jj)*soce + nfsalt_da(ji,jj) )*rdt
+!
+!           ! change salinity down to mixed layer depth
+!                 mld=hmld_kara(ji,jj)
+!
+!           ! prevent small mld
+!           ! less than 10m can cause salinity instability 
+!                 IF (mld < 10) mld=10
+!
+!           ! set to bottom of a level 
+!                 DO jk = jpk-1, 2, -1
+!                   IF ((mld > gdepw(ji,jj,jk)) .and. (mld < gdepw(ji,jj,jk+1))) THEN 
+!                     mld=gdepw(ji,jj,jk+1)
+!                     jkmax=jk
+!                   ENDIF
+!                 ENDDO
+!
+!            ! avoid applying salinity balancing in shallow water or on land
+!            ! 
+!
+!            ! dsal_ocn (psu kg m^-2) / (kg m^-3 * m)
+!
+!                 dsal_ocn=0.0_wp
+!                 sal_thresh=5.0_wp        ! minimum salinity threshold for salinity balancing
+!
+!                 if (tmask(ji,jj,1) > 0 .AND. tmask(ji,jj,jkmax) > 0 ) &
+!                              dsal_ocn = zfons / (rhop(ji,jj,1) * mld)
+!
+!           ! put increments in for levels in the mixed layer
+!           ! but prevent salinity below a threshold value 
+!
+!                   DO jk = 1, jkmax              
+!
+!                     IF (dsal_ocn > 0.0_wp .or. sb(ji,jj,jk)+dsal_ocn > sal_thresh) THEN 
+!                           sb(ji,jj,jk) = sb(ji,jj,jk) + dsal_ocn
+!                           sn(ji,jj,jk) = sn(ji,jj,jk) + dsal_ocn
+!                     ENDIF
+!
+!                   ENDDO
+!
+!      !            !  salt exchanges at the ice/ocean interface
+!      !            zpmess         = zfons / rdt_ice    ! rdt_ice is ice timestep
+!      !
+!      !! Adjust fsalt. A +ve fsalt means adding salt to ocean
+!      !!           fsalt(ji,jj) =  fsalt(ji,jj) + zpmess     ! adjust fsalt  
+!      !!               
+!      !!           emps(ji,jj) = emps(ji,jj) + zpmess        ! or adjust emps (see icestp1d) 
+!      !!                                                     ! E-P (kg m-2 s-2)
+!      !            emp(ji,jj) = emp(ji,jj) + zpmess          ! E-P (kg m-2 s-2)
+!               ENDDO !ji
+!             ENDDO !jj!
+!
+!            ENDIF !ln_seaicebal
+!
+!#endif
+
+
+   END SUBROUTINE sit_asm_inc
 
    SUBROUTINE seaice_asm_inc( kt, kindic )
@@ -993,5 +1232,5 @@
       !!                    ***  ROUTINE seaice_asm_inc  ***
       !!          
-      !! ** Purpose : Apply the sea ice assimilation increment.
+      !! ** Purpose : Apply the sea ice concentration assimilation increment.
       !!
       !! ** Method  : Direct initialization or Incremental Analysis Updating.
Index: branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
===================================================================
--- branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90	(revision 11936)
+++ branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90	(revision 11939)
@@ -105,4 +105,8 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tsfc_ice           !: sea-ice surface skin temperature (on categories)
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   kn_ice             !: sea-ice surface layer thermal conductivity (on cats)
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_iu           !: ice thickness at NEMO U point
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_iv           !: ice thickness at NEMO V point
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_su           !: snow depth at NEMO U point
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_sv           !: snow depth at NEMO V point
 
    ! variables used in the coupled interface
@@ -116,4 +120,5 @@
 #if defined key_asminc
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ndaice_da          !: NEMO fresh water flux to ocean due to data assim
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ndsit_da           !: NEMO ice thickness change due to data assim
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   nfresh_da          !: NEMO salt flux to ocean due to data assim
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   nfsalt_da          !: NEMO ice concentration change/second from data assim
@@ -171,7 +176,11 @@
                 wndj_ice(jpi,jpj)     , nfrzmlt(jpi,jpj)      , ss_iou(jpi,jpj)       , &
                 ss_iov(jpi,jpj)       , fr_iu(jpi,jpj)        , fr_iv(jpi,jpj)        , &
+                thick_iu(jpi,jpj)     , thick_iv(jpi,jpj)     ,                         &
+                thick_su(jpi,jpj)     , thick_sv(jpi,jpj)     ,                         &
+                ht_i(jpi,jpj,ncat)    , ht_s(jpi,jpj,ncat)    ,                         &
                 a_i(jpi,jpj,ncat)     , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat) , &
 #if defined key_asminc
                 ndaice_da(jpi,jpj)    , nfresh_da(jpi,jpj)    , nfsalt_da(jpi,jpj)    , &
+                ndsit_da(jpi,jpj)     ,                                                 &
 #endif
                 sstfrz(jpi,jpj)       , STAT= ierr(1) )
Index: branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
===================================================================
--- branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 11936)
+++ branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 11939)
@@ -121,4 +121,7 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sprecip           !: solid precipitation                          [Kg/m2/s]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fr_i              !: ice fraction = 1 - lead fraction      (between 0 to 1)
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   thick_i           !: ice thickness [m]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   thick_s           !: snow depth [m]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   vol_i             !: ice volume [m3]
 #if defined key_cpl_carbon_cycle
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   atm_co2           !: atmospheric pCO2                             [ppm]
@@ -196,4 +199,5 @@
          !
       ALLOCATE( tprecip(jpi,jpj) , sprecip(jpi,jpj) , fr_i(jpi,jpj) ,     &
+         & thick_i(jpi,jpj) , thick_s(jpi,jpj) , vol_i(jpi,jpj) ,         &  
 #if defined key_cpl_carbon_cycle
          &      atm_co2(jpi,jpj) ,                                        &
Index: branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
===================================================================
--- branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 11936)
+++ branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 11939)
@@ -57,5 +57,5 @@
                 flatn_f,fsurfn_f,fcondtopn_f,                    &
 #ifdef key_asminc
-                daice_da,fresh_da,fsalt_da,                    &
+                daice_da,dhi_da,fresh_da,fsalt_da,               &
 #endif
                 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl,   &
@@ -250,4 +250,45 @@
       CALL lbc_lnk ( fr_iu , 'U', 1. )
       CALL lbc_lnk ( fr_iv , 'V', 1. )
+
+! Snow and ice thickness
+! vice, vsno is volume per unit area of grid cell = thickness
+      CALL cice2nemo(vice,thick_i,'T', 1. )
+      CALL cice2nemo(vsno,thick_s,'T', 1. )
+     
+      IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN
+         DO jl = 1,ncat
+            CALL cice2nemo(vsnon(:,:,jl,:),ht_s(:,:,jl),'T', 1. )
+            CALL cice2nemo(vicen(:,:,jl,:),ht_i(:,:,jl),'T', 1. )
+         ENDDO
+      ENDIF
+
+! T point to U point
+! T point to V point
+
+! Sea ice thickness
+      thick_iu(:,:)=0.0
+      thick_iv(:,:)=0.0
+      DO jj=1,jpjm1
+         DO ji=1,jpim1
+            thick_iu(ji,jj)=0.5*(thick_i(ji,jj)+thick_i(ji+1,jj))*umask(ji,jj,1)
+            thick_iv(ji,jj)=0.5*(thick_i(ji,jj)+thick_i(ji,jj+1))*vmask(ji,jj,1)
+         ENDDO
+      ENDDO
+
+      CALL lbc_lnk ( thick_iu , 'U', 1. )
+      CALL lbc_lnk ( thick_iv , 'V', 1. )
+
+! Snow depth
+      thick_su(:,:)=0.0
+      thick_sv(:,:)=0.0
+      DO jj=1,jpjm1
+         DO ji=1,jpim1
+            thick_su(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji+1,jj))*umask(ji,jj,1)
+            thick_sv(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji,jj+1))*vmask(ji,jj,1)
+         ENDDO
+      ENDDO
+
+      CALL lbc_lnk ( thick_su , 'U', 1. )
+      CALL lbc_lnk ( thick_sv , 'V', 1. )     
 
       !                                      ! embedded sea ice
@@ -311,4 +352,5 @@
 	   nfsalt_da(:,:) = 0.0   
 	   ndaice_da(:,:) = 0.0         
+	   ndsit_da(:,:)  = 0.0         
 #endif
       !
@@ -469,4 +511,7 @@
       ztmp(:,:)=ndaice_da(:,:)*tmask(:,:,1)
       Call nemo2cice(ztmp,daice_da,'T', 1. )
+!Ice thickness change (from assimilation)
+      ztmp(:,:)=ndsit_da(:,:)*tmask(:,:,1)
+      Call nemo2cice(ztmp,dhi_da,'T', 1. )
 #endif 
 
