Index: /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/CONFIG/SHARED/namelist_ref
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 12609)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 12610)
@@ -1198,5 +1198,6 @@
    ln_sla     = .false.             ! Logical switch for SLA observations
    ln_sst     = .false.             ! Logical switch for SST observations
-   ln_sic     = .false.             ! Logical switch for Sea Ice observations
+   ln_sic     = .false.             ! Logical switch for Sea Ice Concentration observations
+   ln_sit     = .false.             ! Logical switch for Sea Ice Thickness observations
    ln_vel3d   = .false.             ! Logical switch for velocity observations
    ln_sss     = .false.             ! Logical swithc for SSS observations
@@ -1240,4 +1241,5 @@
    ln_sss_fp_indegs = .true.
    ln_sic_fp_indegs = .true.
+   ln_sit_fp_indegs = .true.
 ! All of the *files* variables below are arrays. Use namelist_cfg to add more files
    cn_profbfiles = 'profiles_01.nc'      ! Profile feedback input observation file names
@@ -1245,4 +1247,5 @@
    cn_sstfbfiles = 'sst_01.nc'           ! SST feedback input observation file names
    cn_sicfbfiles = 'sic_01.nc'           ! SIC feedback input observation file names
+   cn_sitfbfiles = 'sit_01.nc'           ! SIT feedback input observation file names
    cn_velfbfiles = 'vel_01.nc'           ! Velocity feedback input observation file names
    cn_sssfbfiles = 'sss_01.nc'           ! SSS feedback input observation file names
@@ -1285,4 +1288,6 @@
    rn_sic_avglamscl = 0.                 ! E/W diameter of SIC observation footprint (metres/degrees)
    rn_sic_avgphiscl = 0.                 ! N/S diameter of SIC observation footprint (metres/degrees)
+   rn_sit_avglamscl = 0.                 ! E/W diameter of SIT observation footprint (metres/degrees)
+   rn_sit_avgphiscl = 0.                 ! N/S diameter of SIT observation footprint (metres/degrees)
    nn_1dint = 0                          ! Type of vertical interpolation method
    nn_2dint_default = 0                  ! Default horizontal interpolation method
@@ -1291,4 +1296,5 @@
    nn_2dint_sss = -1                     ! Horizontal interpolation method for SSS
    nn_2dint_sic = -1                     ! Horizontal interpolation method for SIC
+   nn_2dint_sit = -1                     ! Horizontal interpolation method for SIT
    nn_msshc = 0                          ! MSSH correction scheme
    rn_mdtcorr = 1.61                     ! MDT  correction
Index: /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 12609)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 12610)
@@ -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
@@ -49,5 +50,7 @@
    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
 
 #if defined key_asminc
@@ -57,4 +60,5 @@
 #endif
    LOGICAL, PUBLIC :: ln_bkgwri = .FALSE.      !: No output of the background state fields
+   LOGICAL, PUBLIC :: ln_avgbkg = .FALSE.      !: No output of the mean background state fields
    LOGICAL, PUBLIC :: ln_asmiau = .FALSE.      !: No applying forcing with an assimilation increment
    LOGICAL, PUBLIC :: ln_asmdin = .FALSE.      !: No direct initialization
@@ -62,5 +66,7 @@
    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
    LOGICAL, PUBLIC :: ln_temnofreeze = .FALSE. !: Don't allow the temperature to drop below freezing
@@ -85,4 +91,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
@@ -127,5 +134,5 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   hdiv   ! 2D workspace
       !!
-      NAMELIST/nam_asminc/ ln_bkgwri,                                      &
+      NAMELIST/nam_asminc/ ln_bkgwri, ln_avgbkg, ln_balwri,                &
          &                 ln_trainc, ln_dyninc, ln_sshinc,                &
          &                 ln_asmdin, ln_asmiau,                           &
@@ -138,4 +145,5 @@
       !-----------------------------------------------------------------------
       ln_seaiceinc = .FALSE.
+      ln_sitinc = .FALSE.
       ln_temnofreeze = .FALSE.
 
@@ -154,11 +162,14 @@
          WRITE(numout,*) 'asm_inc_init : Assimilation increment initialization :'
          WRITE(numout,*) '~~~~~~~~~~~~'
-         WRITE(numout,*) '   Namelist namasm : set assimilation increment parameters'
+         WRITE(numout,*) '   Namelist nam_asminc : set assimilation increment parameters'
          WRITE(numout,*) '      Logical switch for writing out background state          ln_bkgwri = ', ln_bkgwri
+         WRITE(numout,*) '      Logical switch for writing mean background state         ln_avgbkg = ', ln_avgbkg
+         WRITE(numout,*) '      Logical switch for writing out balancing increments      ln_balwri = ', ln_balwri
          WRITE(numout,*) '      Logical switch for applying tracer increments            ln_trainc = ', ln_trainc
          WRITE(numout,*) '      Logical switch for applying velocity increments          ln_dyninc = ', ln_dyninc
          WRITE(numout,*) '      Logical switch for applying SSH increments               ln_sshinc = ', ln_sshinc
+         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 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 Incremental Analysis Updating (IAU)   ln_asmiau = ', ln_asmiau
          WRITE(numout,*) '      Timestep of background in [0,nitend-nit000-1]            nitbkg    = ', nitbkg
@@ -216,6 +227,8 @@
 
       IF (      ( ( .NOT. ln_asmdin ).AND.( .NOT. ln_asmiau ) ) &
-           .AND.( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ) .OR. ( ln_seaiceinc) )) &
-         & CALL ctl_stop( ' One or more of ln_trainc, ln_dyninc, ln_sshinc and ln_seaiceinc is set to .true.', &
+         & .AND.( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ).OR. &
+         &        ( ln_sitinc ).OR.( lk_bgcinc ) )) &
+         & CALL ctl_stop( ' One or more of ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', &
+         &                ' ln_sitinc and ln_(bgc-variable)inc is set to .true.', &
          &                ' but ln_asmdin and ln_asmiau are both set to .false. :', &
          &                ' Inconsistent options')
@@ -226,6 +239,7 @@
 
       IF ( ( .NOT. ln_trainc ).AND.( .NOT. ln_dyninc ).AND.( .NOT. ln_sshinc ).AND.( .NOT. ln_seaiceinc ) &
-         &                     )  &
-         & CALL ctl_warn( ' ln_trainc, ln_dyninc, ln_sshinc and ln_seaiceinc are set to .false. :', &
+         & .AND.( .NOT. ln_sitinc ).AND.( .NOT. lk_bgcinc ) )  &
+         & CALL ctl_warn( ' ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', &
+         &                ' ln_sitinc and ln_(bgc-variable)inc are set to .false. :', &
          &                ' The assimilation increments are not applied')
 
@@ -325,23 +339,34 @@
       !--------------------------------------------------------------------
 
-      ALLOCATE( t_bkginc(jpi,jpj,jpk) )
-      ALLOCATE( s_bkginc(jpi,jpj,jpk) )
-      ALLOCATE( u_bkginc(jpi,jpj,jpk) )
-      ALLOCATE( v_bkginc(jpi,jpj,jpk) )
-      ALLOCATE( ssh_bkginc(jpi,jpj)   )
-      ALLOCATE( seaice_bkginc(jpi,jpj))
+      IF ( ln_trainc ) THEN
+         ALLOCATE( t_bkginc(jpi,jpj,jpk) )
+         ALLOCATE( s_bkginc(jpi,jpj,jpk) )
+         t_bkginc(:,:,:) = 0.0
+         s_bkginc(:,:,:) = 0.0
+      ENDIF
+      IF ( ln_dyninc ) THEN 
+         ALLOCATE( u_bkginc(jpi,jpj,jpk) )
+         ALLOCATE( v_bkginc(jpi,jpj,jpk) )
+         u_bkginc(:,:,:) = 0.0
+         v_bkginc(:,:,:) = 0.0
+      ENDIF
+      IF ( ln_sshinc ) THEN
+         ALLOCATE( ssh_bkginc(jpi,jpj)   )
+         ssh_bkginc(:,:) = 0.0
+      ENDIF
+      IF ( ln_seaiceinc ) THEN 
+         ALLOCATE( seaice_bkginc(jpi,jpj))
+         seaice_bkginc(:,:) = 0.0
+      ENDIF
+      IF ( ln_sitinc ) THEN 
+         ALLOCATE( sit_bkginc(jpi,jpj))
+         sit_bkginc(:,:) = 0.0
+      ENDIF
 #if defined key_asminc
       ALLOCATE( ssh_iau(jpi,jpj)      )
-#endif
-      t_bkginc(:,:,:) = 0.0
-      s_bkginc(:,:,:) = 0.0
-      u_bkginc(:,:,:) = 0.0
-      v_bkginc(:,:,:) = 0.0
-      ssh_bkginc(:,:) = 0.0
-      seaice_bkginc(:,:) = 0.0
-#if defined key_asminc
       ssh_iau(:,:)    = 0.0
 #endif
-      IF ( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ) ) THEN
+      IF ( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ) &
+         &  .OR.( ln_sitinc ).OR.( lk_bgcinc ) ) THEN
 
          !--------------------------------------------------------------------
@@ -406,4 +431,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
 
@@ -766,4 +800,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
@@ -923,4 +958,92 @@
    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 ( 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
+
+#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
+
+#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
+
+      ENDIF
+
+   END SUBROUTINE sit_asm_inc
 
    SUBROUTINE seaice_asm_inc( kt, kindic )
@@ -928,5 +1051,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_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 12609)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 12610)
@@ -22,4 +22,5 @@
    USE obs_read_surf            ! Reading and allocation of surface obs
    USE obs_readmdt              ! Reading and allocation of MDT for SLA.
+   USE obs_readsnowdepth        ! Get model snow depth for conversion of freeboard to ice thickness 
    USE obs_prep                 ! Preparation of obs. (grid search etc).
    USE obs_oper                 ! Observation operators
@@ -53,5 +54,6 @@
    LOGICAL :: ln_sst_fp_indegs     !: T=>     SST obs footprint size specified in degrees, F=> in metres
    LOGICAL :: ln_sss_fp_indegs     !: T=>     SSS obs footprint size specified in degrees, F=> in metres
-   LOGICAL :: ln_sic_fp_indegs     !: T=> sea-ice obs footprint size specified in degrees, F=> in metres
+   LOGICAL :: ln_sic_fp_indegs     !: T=> SIC obs footprint size specified in degrees, F=> in metres
+   LOGICAL :: ln_sit_fp_indegs     !: T=> SIT obs footprint size specified in degrees, F=> in metres
    LOGICAL :: ln_output_clim       !: Logical switch for interpolating and writing T/S climatology
    LOGICAL :: ln_time_mean_sla_bkg !: Logical switch for applying time mean of SLA background to remove tidal signal
@@ -65,6 +67,8 @@
    REAL(wp) :: rn_sss_avglamscl     !: E/W diameter of SSS observation footprint
    REAL(wp) :: rn_sss_avgphiscl     !: N/S diameter of SSS observation footprint
-   REAL(wp) :: rn_sic_avglamscl     !: E/W diameter of sea-ice observation footprint
-   REAL(wp) :: rn_sic_avgphiscl     !: N/S diameter of sea-ice observation footprint
+   REAL(wp) :: rn_sic_avglamscl     !: E/W diameter of SIC observation footprint
+   REAL(wp) :: rn_sic_avgphiscl     !: N/S diameter of SIC observation footprint
+   REAL(wp) :: rn_sit_avglamscl     !: E/W diameter of SIT observation footprint
+   REAL(wp) :: rn_sit_avgphiscl     !: N/S diameter of SIT observation footprint
    REAL(wp), PUBLIC :: &
       &        MeanPeriodHours = 24. + (5./6.) !: Meaning period for surface data.
@@ -76,5 +80,6 @@
    INTEGER :: nn_2dint_sst     !: SST horizontal interpolation method (-1 = default)
    INTEGER :: nn_2dint_sss     !: SSS horizontal interpolation method (-1 = default)
-   INTEGER :: nn_2dint_sic     !: Seaice horizontal interpolation method (-1 = default)
+   INTEGER :: nn_2dint_sic     !: SIC horizontal interpolation method (-1 = default)
+   INTEGER :: nn_2dint_sit     !: SIT horizontal interpolation method (-1 = default)
  
    INTEGER, DIMENSION(imaxavtypes) :: &
@@ -136,4 +141,8 @@
       !!        !  15-02  (M. Martin) Simplification of namelist and code
       !!----------------------------------------------------------------------
+#if defined key_cice
+USE sbc_oce, ONLY : &        ! CICE variables
+   & thick_s                 ! snow depth for freeboard conversion 
+#endif
 
       IMPLICIT NONE
@@ -157,4 +166,5 @@
          & cn_slafbfiles,      & ! Sea level anomaly input filenames
          & cn_sicfbfiles,      & ! Seaice concentration input filenames
+         & cn_sitfbfiles,      & ! Seaice thickness input filenames
          & cn_velfbfiles,      & ! Velocity profile input filenames
          & cn_sssfbfiles,      & ! Sea surface salinity input filenames
@@ -189,4 +199,5 @@
 
 
+      LOGICAL :: ln_seaicetypes = .FALSE.          ! Logical switch indicating data type is sea ice
       LOGICAL :: ln_t3d          ! Logical switch for temperature profiles
       LOGICAL :: ln_s3d          ! Logical switch for salinity profiles
@@ -194,4 +205,5 @@
       LOGICAL :: ln_sst          ! Logical switch for sea surface temperature
       LOGICAL :: ln_sic          ! Logical switch for sea ice concentration
+      LOGICAL :: ln_sit          ! Logical switch for sea ice thickness
       LOGICAL :: ln_sss          ! Logical switch for sea surface salinity obs
       LOGICAL :: ln_vel3d        ! Logical switch for velocity (u,v) obs
@@ -252,5 +264,5 @@
 
       NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              &
-         &            ln_sst, ln_sic, ln_sss, ln_vel3d,               &
+         &            ln_sst, ln_sic, ln_sit, ln_sss, ln_vel3d,               &
          &            ln_slchltot, ln_slchldia, ln_slchlnon,          &
          &            ln_slchldin, ln_slchlmic, ln_slchlnan,          &
@@ -269,6 +281,8 @@
          &            ln_sla_fp_indegs, ln_sst_fp_indegs,             &
          &            ln_sss_fp_indegs, ln_sic_fp_indegs,             &
+         &            ln_sit_fp_indegs,                               &
          &            cn_profbfiles, cn_slafbfiles,                   &
          &            cn_sstfbfiles, cn_sicfbfiles,                   &
+         &            cn_sitfbfiles,                                  &
          &            cn_velfbfiles, cn_sssfbfiles,                   &
          &            cn_slchltotfbfiles, cn_slchldiafbfiles,         &
@@ -292,7 +306,8 @@
          &            rn_sss_avglamscl, rn_sss_avgphiscl,             &
          &            rn_sic_avglamscl, rn_sic_avgphiscl,             &
+         &            rn_sit_avglamscl, rn_sit_avgphiscl,             &
          &            nn_1dint, nn_2dint_default,                     &
          &            nn_2dint_sla, nn_2dint_sst,                     &
-         &            nn_2dint_sss, nn_2dint_sic,                     &
+         &            nn_2dint_sss, nn_2dint_sic, nn_2dint_sit,       &
          &            nn_msshc, rn_mdtcorr, rn_mdtcutoff,             &
          &            nn_profdavtypes
@@ -307,4 +322,5 @@
       cn_sstfbfiles(:)      = ''
       cn_sicfbfiles(:)      = ''
+      cn_sitfbfiles(:)      = ''
       cn_velfbfiles(:)      = ''
       cn_sssfbfiles(:)      = ''
@@ -369,5 +385,6 @@
          WRITE(numout,*) '             Logical switch for SLA observations                      ln_sla = ', ln_sla
          WRITE(numout,*) '             Logical switch for SST observations                      ln_sst = ', ln_sst
-         WRITE(numout,*) '             Logical switch for Sea Ice observations                  ln_sic = ', ln_sic
+         WRITE(numout,*) '             Logical switch for SIC observations                      ln_sic = ', ln_sic
+         WRITE(numout,*) '             Logical switch for SIT observations                      ln_sit = ', ln_sit
          WRITE(numout,*) '             Logical switch for velocity observations               ln_vel3d = ', ln_vel3d
          WRITE(numout,*) '             Logical switch for SSS observations                      ln_sss = ', ln_sss
@@ -408,4 +425,5 @@
          WRITE(numout,*) '             Type of horizontal interpolation method for SSS    nn_2dint_sss = ', nn_2dint_sss
          WRITE(numout,*) '             Type of horizontal interpolation method for SIC    nn_2dint_sic = ', nn_2dint_sic
+         WRITE(numout,*) '             Type of horizontal interpolation method for SIT    nn_2dint_sit = ', nn_2dint_sit
          WRITE(numout,*) '             Default E/W diameter of obs footprint      rn_default_avglamscl = ', rn_default_avglamscl
          WRITE(numout,*) '             Default N/S diameter of obs footprint      rn_default_avgphiscl = ', rn_default_avgphiscl
@@ -420,4 +438,7 @@
          WRITE(numout,*) '             SIC N/S diameter of obs footprint              rn_sic_avgphiscl = ', rn_sic_avgphiscl
          WRITE(numout,*) '             SIC obs footprint in deg [T] or m [F]          ln_sic_fp_indegs = ', ln_sic_fp_indegs
+         WRITE(numout,*) '             SIT E/W diameter of obs footprint              rn_sit_avglamscl = ', rn_sit_avglamscl
+         WRITE(numout,*) '             SIT N/S diameter of obs footprint              rn_sit_avgphiscl = ', rn_sit_avgphiscl
+         WRITE(numout,*) '             SIT obs footprint in deg [T] or m [F]          ln_sit_fp_indegs = ', ln_sit_fp_indegs
          WRITE(numout,*) '             Rejection of observations near land switch               ln_nea = ', ln_nea
          WRITE(numout,*) '             Rejection of obs near open bdys                 ln_bound_reject = ', ln_bound_reject
@@ -441,5 +462,5 @@
          &                  ln_pchltot,  ln_pno3,     ln_psi4,     ln_ppo4,     &
          &                  ln_pdic,     ln_palk,     ln_pph,      ln_po2 /) )
-      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sss,                     &
+      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sit, ln_sss,             &
          &                  ln_slchltot, ln_slchldia, ln_slchlnon, ln_slchldin, &
          &                  ln_slchlmic, ln_slchlnan, ln_slchlpic, ln_schltot,  &
@@ -560,4 +581,9 @@
             cobstypessurf(jtype) = 'sic'
             clsurffiles(jtype,:) = cn_sicfbfiles
+         ENDIF
+         IF (ln_sit) THEN
+            jtype = jtype + 1
+            cobstypessurf(jtype) = 'sit'
+            clsurffiles(jtype,:) = cn_sitfbfiles
          ENDIF
          IF (ln_sss) THEN
@@ -675,4 +701,14 @@
                ztype_avgphiscl = rn_sic_avgphiscl
                ltype_fp_indegs = ln_sic_fp_indegs
+               ltype_night     = .FALSE.
+            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN
+               IF ( nn_2dint_sit == -1 ) THEN
+                  n2dint_type  = nn_2dint_default
+               ELSE
+                  n2dint_type  = nn_2dint_sit
+               ENDIF
+               ztype_avglamscl = rn_sit_avglamscl
+               ztype_avgphiscl = rn_sit_avgphiscl
+               ltype_fp_indegs = ln_sit_fp_indegs
                ltype_night     = .FALSE.
             ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN
@@ -863,5 +899,6 @@
                & ltype_clim = .TRUE.
 
-            IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN
+            IF ( (TRIM(cobstypessurf(jtype)) == 'sla') .OR. &
+               & (TRIM(cobstypessurf(jtype)) == 'sit') ) THEN
                nvarssurf(jtype) = 1
                nextrsurf(jtype) = 2
@@ -879,4 +916,7 @@
             ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sic' ) THEN
                clvars(1) = 'ICECONC'
+            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN
+               clvars(1) = 'FBD'
+               ln_seaicetypes = .TRUE.
             ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN
                clvars(1) = 'SSS'
@@ -920,5 +960,5 @@
                &               llnightav(jtype), ltype_clim, ln_time_mean_sla_bkg, clvars )
 
-            CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject )
+            CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject, ln_seaicetypes )
 
             IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN
@@ -927,4 +967,10 @@
                   & CALL obs_rea_altbias ( surfdataqc(jtype), n2dintsurf(jtype), cn_altbiasfile )
             ENDIF
+
+#if defined key_cice
+            IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN
+               CALL obs_rea_snowdepth( surfdataqc(jtype), n2dintsurf(jtype), thick_s(:,:) )
+            ENDIF 
+#endif
 
             IF ( TRIM(cobstypessurf(jtype)) == 'sst' .AND. ln_sstbias ) THEN
@@ -995,5 +1041,7 @@
 #endif
 #if defined key_cice
-      USE sbc_oce, ONLY : fr_i     ! ice fraction
+      USE sbc_oce, ONLY : &        ! CICE variables
+         & fr_i,          &        ! ice fraction
+         & thick_i                 ! ice thickness
 #endif
 #if defined key_top
@@ -1329,9 +1377,6 @@
                         &           'time-step but some obs are valid then.' )
                      WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), &
-                        &           ' sea-ice obs will be missed'
+                        &           ' sea-ice concentration obs will be missed'
                   ENDIF
-                  surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + &
-                     &                        surfdataqc(jtype)%nsstp(1)
-                  CYCLE
                ELSE
 #if defined key_cice
@@ -1340,6 +1385,25 @@
                   zsurfvar(:,:) = 1._wp - frld(:,:)
 #else
-               CALL ctl_stop( ' Trying to run sea-ice observation operator', &
+               CALL ctl_stop( ' Trying to run sea-ice concentration observation operator', &
                   &           ' but no sea-ice model appears to have been defined' )
+#endif
+               ENDIF
+
+            CASE('sit')
+               IF ( kstp == 0 ) THEN
+                  IF ( lwp .AND. surfdataqc(jtype)%nsstpmpp(1) > 0 ) THEN
+                     CALL ctl_warn( 'Sea-ice not initialised on zeroth '// &
+                        &           'time-step but some obs are valid then.' )
+                     WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), &
+                        &           ' sea-ice thickness obs will be missed and QC flag set to 4'
+                  ENDIF                                 
+               ELSE       
+#if defined key_cice
+                  zsurfvar(:,:) = thick_i(:,:)
+#elif defined key_lim2 || defined key_lim3
+                  CALL ctl_stop( ' No sea-ice thickness observation operator defined for LIM model' )
+#else
+                  CALL ctl_stop( ' Trying to run sea-ice thickness observation operator', &
+                     &           ' but no sea-ice model appears to have been defined' )
 #endif
                ENDIF
@@ -1641,4 +1705,5 @@
                   &               lfpindegs(jtype), kmeanstp = imeanstp )
 
+
             ELSE
                CALL obs_surf_opt( surfdataqc(jtype), kstp, jpi, jpj,       &
@@ -1648,4 +1713,10 @@
                   &               ravglamscl(jtype), ravgphiscl(jtype),    &
                   &               lfpindegs(jtype) )
+            ENDIF
+
+            ! Change label of data from FBD ("freeboard") to SIT ("Sea Ice
+            ! Thickness")
+            IF ( TRIM(surfdataqc(jtype)%cvars(1)) == 'FBD' ) THEN
+                 surfdata(jtype)%cvars(1) = 'SIT'
             ENDIF
 
Index: /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90	(revision 12609)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90	(revision 12610)
@@ -37,4 +37,8 @@
    USE obs_grid,      ONLY : & 
       & obs_level_search     
+#if defined key_cice
+   USE ice_constants, ONLY : &    ! For conversion from sea ice freeboard to thickness
+      & rhos, rhoi, rhow
+#endif
 
    IMPLICIT NONE
@@ -943,5 +947,31 @@
             ENDIF         
          ENDIF
-
+         
+         IF ( surfdataqc%lclim ) surfdataqc%rclm(jobs,1) = zclm(1)
+
+#if defined key_cice
+         IF ( TRIM(surfdataqc%cvars(1)) == 'FBD' ) THEN
+            ! Convert radar freeboard to true freeboard (add 1/4 snow depth; 1/4 based on ratio of speed of light in vacuum compared to snow (3.0e8 vs 2.4e8 m/s))
+            surfdataqc%rext(jobs,1) = surfdataqc%robs(jobs,1) 
+            surfdataqc%robs(jobs,1) = surfdataqc%rext(jobs,1) + 0.25*surfdataqc%rext(jobs,2)
+            ! If the corrected freeboard observation is outside -0.3 to 3.0 m (CPOM) then set the QC flag to bad
+            IF ((surfdataqc%robs(jobs,1) < -0.3) .OR. (surfdataqc%robs(jobs,1) > 3.0)) THEN
+               surfdataqc%nqc(jobs) = 4
+            ENDIF           
+            ! Convert corrected freeboard to ice thickness following Tilling et al. (2016)
+            surfdataqc%robs(jobs,1) = (surfdataqc%robs(jobs,1)*rhow + surfdataqc%rext(jobs,2)*rhos)/ &
+                                      (rhow - rhoi)
+            ! Flag any negative ice thickness values as bad
+            IF (surfdataqc%robs(jobs,1) < 0.0) THEN
+               surfdataqc%nqc(jobs) = 4
+            ENDIF                                     
+         ENDIF
+         
+         IF ( zext(1) == obfillflt ) THEN
+            ! If the observation value is a fill value, set QC flag to bad
+            surfdataqc%nqc(jobs) = 4
+         ENDIF
+#endif defined key_cice
+         
       END DO
 
Index: /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90	(revision 12609)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90	(revision 12610)
@@ -54,5 +54,5 @@
 
    SUBROUTINE obs_pre_surf( surfdata, surfdataqc, ld_nea, ld_bound_reject, &
-                            kqc_cutoff )
+                            ld_seaicetypes, kqc_cutoff )
       !!----------------------------------------------------------------------
       !!                    ***  ROUTINE obs_pre_sla  ***
@@ -84,5 +84,6 @@
       LOGICAL, INTENT(IN) :: ld_nea                ! Switch for rejecting observation near land
       LOGICAL, INTENT(IN) :: ld_bound_reject       ! Switch for rejecting obs near the boundary
-      INTEGER, INTENT(IN), OPTIONAL :: kqc_cutoff   ! cut off for QC value
+      LOGICAL, INTENT(IN) :: ld_seaicetypes        ! Switch to indicate sea ice data
+      INTEGER, INTENT(IN), OPTIONAL :: kqc_cutoff  ! cut off for QC value
       !! * Local declarations
       INTEGER :: iqc_cutoff = 255   ! cut off for QC value
@@ -141,9 +142,18 @@
       ! -----------------------------------------------------------------------
 
-      CALL obs_coo_tim( icycle, &
-         &              iyea0,   imon0,   iday0,   ihou0,   imin0,      &
-         &              surfdata%nsurf,   surfdata%nyea, surfdata%nmon, &
-         &              surfdata%nday,    surfdata%nhou, surfdata%nmin, &
-         &              surfdata%nqc,     surfdata%mstp, iotdobs        )
+      IF ( ld_seaicetypes ) THEN
+         CALL obs_coo_tim( icycle, &
+            &              iyea0,   imon0,   iday0,   ihou0,   imin0,      &
+            &              surfdata%nsurf,   surfdata%nyea, surfdata%nmon, &
+            &              surfdata%nday,    surfdata%nhou, surfdata%nmin, &
+            &              surfdata%nqc,     surfdata%mstp, iotdobs,       &
+            &              ld_seaicetypes = ld_seaicetypes )
+      ELSE
+         CALL obs_coo_tim( icycle, &
+            &              iyea0,   imon0,   iday0,   ihou0,   imin0,      &
+            &              surfdata%nsurf,   surfdata%nyea, surfdata%nmon, &
+            &              surfdata%nday,    surfdata%nhou, surfdata%nmin, &
+            &              surfdata%nqc,     surfdata%mstp, iotdobs        )
+      ENDIF
 
       CALL obs_mpp_sum_integer( iotdobs, iotdobsmpp )
@@ -559,5 +569,5 @@
       &                    kobsno,                                        &
       &                    kobsyea, kobsmon, kobsday, kobshou, kobsmin,   &
-      &                    kobsqc,  kobsstp, kotdobs                      )
+      &                    kobsqc,  kobsstp, kotdobs, ld_seaicetypes      )
       !!----------------------------------------------------------------------
       !!                    ***  ROUTINE obs_coo_tim ***
@@ -607,4 +617,5 @@
          & kobsstp          ! Number of time steps up to the 
                             ! observation time
+      LOGICAL, OPTIONAL, INTENT(IN) :: ld_seaicetypes
 
       !! * Local declarations
@@ -621,4 +632,5 @@
       INTEGER :: iskip
       INTEGER :: idaystp
+      INTEGER :: icecount
       REAL(KIND=wp) :: zminstp
       REAL(KIND=wp) :: zhoustp
@@ -715,4 +727,17 @@
             CYCLE
          ENDIF
+
+         ! Flag sea ice observations falling on initial timestep
+           IF ( PRESENT(ld_seaicetypes) ) THEN
+
+                IF ( ( kobsstp(jobs) == (nit000 - 1) ) ) THEN
+                   IF (lwp) WRITE(numout,*)( 'Sea-ice not initialised on zeroth '// &
+                             &    'time-step but SIT observation valid then, flagging '// &
+                                  'in time check subroutine obs_coo_tim.' )
+                   kobsqc(jobs) = IBSET(kobsqc(jobs),13)
+                   kotdobs      = kotdobs + 1
+                   CYCLE
+                ENDIF
+           ENDIF                     
 
       END DO
Index: /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_surf.F90
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_surf.F90	(revision 12609)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_surf.F90	(revision 12610)
@@ -396,4 +396,8 @@
          surfdata%cext(2) = 'MDT'
       ENDIF
+      IF ( ldmod .AND. ( TRIM( surfdata%cvars(1) ) == 'FBD' ) ) THEN
+           surfdata%cext(1) = 'freeboard'
+           surfdata%cext(2) = 'thick_s'
+      ENDIF
       IF ( iextr > kextr ) surfdata%cext(iextr) = 'STD'
 
@@ -477,4 +481,8 @@
                ! Observed value
                surfdata%robs(iobs,1) = inpfiles(jj)%pob(1,ji,1)
+               IF ( TRIM(surfdata%cvars(1)) == 'FBD' ) THEN
+                   surfdata%rext(iobs,1) = inpfiles(jj)%pob(1,ji,1)
+                   surfdata%rext(iobs,2) = fbrmdi
+               ENDIF
 
                ! Model and MDT is set to fbrmdi unless read from file
Index: /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readsnowdepth.F90
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readsnowdepth.F90	(revision 12610)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readsnowdepth.F90	(revision 12610)
@@ -0,0 +1,152 @@
+MODULE obs_readsnowdepth
+   !!======================================================================
+   !!                       ***  MODULE obs_readsnowdepth  ***
+   !! Observation diagnostics: Get the snow depth for freeboard conversion to thickness
+   !!======================================================================
+   !! History :      ! 2018-10 (E. Fiedler) Initial version
+   !!----------------------------------------------------------------------
+
+   !!----------------------------------------------------------------------
+   !!   obs_rea_snowdepth    : Driver for reading MDT
+   !!----------------------------------------------------------------------
+   USE wrk_nemo         ! Memory Allocation
+   USE par_kind         ! Precision variables
+   USE par_oce          ! Domain parameters
+   USE in_out_manager   ! I/O manager
+   USE obs_surf_def     ! Surface observation definitions
+   USE obs_inter_sup    ! Interpolation support routines
+   USE obs_inter_h2d    ! 2D interpolation
+   USE obs_utils        ! Various observation tools
+   USE iom_nf90         ! IOM NetCDF
+   USE netcdf           ! NetCDF library
+   USE lib_mpp          ! MPP library
+   USE dom_oce, ONLY : &                  ! Domain variables
+      &                    tmask, tmask_i, e1t, e2t, gphit, glamt
+   USE obs_const, ONLY :   obfillflt      ! Fillvalue
+   USE oce      , ONLY :   sshn           ! Model variables
+
+
+
+   IMPLICIT NONE
+   PRIVATE
+   
+   PUBLIC   obs_rea_snowdepth     ! called by dia_obs
+
+   !!----------------------------------------------------------------------
+   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
+   !! $Id$
+   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
+   !!----------------------------------------------------------------------
+CONTAINS
+
+   SUBROUTINE obs_rea_snowdepth( fbddata, k2dint, thick_s )
+      !!---------------------------------------------------------------------
+      !!
+      !!                   *** ROUTINE obs_rea_snowdepth ***
+      !!
+      !! ** Purpose : Get snowdepth from CICE
+      !!
+      !! ** Method  : 
+      !!
+      !! ** Action  : 
+      !!----------------------------------------------------------------------
+      USE iom
+      !
+      TYPE(obs_surf), INTENT(inout)  ::   fbddata   ! Sea ice freeboard data
+      INTEGER       , INTENT(in)     ::   k2dint    ! ?
+      REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: thick_s ! Model snow depth
+     
+      CHARACTER(LEN=12), PARAMETER ::   cpname  = 'obs_rea_snowdepth'
+
+      INTEGER ::   jobs                ! Obs loop variable
+      INTEGER ::   jpi_thick_s, jpj_thick_s      ! Number of grid point in lat/lon for the snow depth
+      INTEGER ::   iico, ijco          ! Grid point indices
+
+      !
+      REAL(wp), DIMENSION(1)     ::   zext, zobsmask
+      REAL(wp), DIMENSION(2,2,1) ::   zweig
+      !
+      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   zmask, z_thick_s_l, zglam, zgphi
+      INTEGER , DIMENSION(:,:,:), ALLOCATABLE ::   igrdi, igrdj
+      !
+      REAL(wp), POINTER, DIMENSION(:,:) ::  z_thick_s, thick_s_mask
+         
+      REAL(wp) :: zlam, zphi, zfill, zinfill    ! local scalar
+      !!----------------------------------------------------------------------
+
+      CALL wrk_alloc(jpi,jpj,z_thick_s,thick_s_mask) 
+
+      IF(lwp)WRITE(numout,*) 
+      IF(lwp)WRITE(numout,*) ' obs_rea_snowdepth : Get model snow depth for freeboard conversion to sea ice thickness'
+      IF(lwp)WRITE(numout,*) ' ------------- '
+      CALL FLUSH(numout)
+
+      ! Get ice thickness information
+      z_thick_s = thick_s
+
+      ! Setup mask based on tmask
+      thick_s_mask(:,:) = tmask(:,:,1)
+
+      ! Interpolate the snow depth already on the model grid at the observation point
+  
+      ALLOCATE( &
+         & igrdi(2,2,fbddata%nsurf), &
+         & igrdj(2,2,fbddata%nsurf), &
+         & zglam(2,2,fbddata%nsurf), &
+         & zgphi(2,2,fbddata%nsurf), &
+         & zmask(2,2,fbddata%nsurf), &
+         & z_thick_s_l(2,2,fbddata%nsurf)  &
+         & )
+         
+      DO jobs = 1, fbddata%nsurf
+
+         igrdi(1,1,jobs) = fbddata%mi(jobs)-1
+         igrdj(1,1,jobs) = fbddata%mj(jobs)-1
+         igrdi(1,2,jobs) = fbddata%mi(jobs)-1
+         igrdj(1,2,jobs) = fbddata%mj(jobs)
+         igrdi(2,1,jobs) = fbddata%mi(jobs)
+         igrdj(2,1,jobs) = fbddata%mj(jobs)-1
+         igrdi(2,2,jobs) = fbddata%mi(jobs)
+         igrdj(2,2,jobs) = fbddata%mj(jobs)
+
+      END DO
+
+      CALL obs_int_comm_2d( 2, 2, fbddata%nsurf, jpi, jpj, igrdi, igrdj, glamt  , zglam )
+      CALL obs_int_comm_2d( 2, 2, fbddata%nsurf, jpi, jpj, igrdi, igrdj, gphit  , zgphi )
+      CALL obs_int_comm_2d( 2, 2, fbddata%nsurf, jpi, jpj, igrdi, igrdj, thick_s_mask, zmask )
+      CALL obs_int_comm_2d( 2, 2, fbddata%nsurf, jpi, jpj, igrdi, igrdj, z_thick_s  , z_thick_s_l )
+
+      DO jobs = 1, fbddata%nsurf
+            
+         zlam = fbddata%rlam(jobs)
+         zphi = fbddata%rphi(jobs)
+
+         CALL obs_int_h2d_init( 1, 1, k2dint, zlam, zphi,         &
+            &                   zglam(:,:,jobs), zgphi(:,:,jobs), &
+            &                   zmask(:,:,jobs), zweig, zobsmask )
+            
+         CALL obs_int_h2d( 1, 1, zweig, z_thick_s_l(:,:,jobs),  zext )
+ 
+         fbddata%rext(jobs,2) = zext(1)
+
+! mark any masked data with a QC flag
+         IF( zobsmask(1) == 0 )   fbddata%nqc(jobs) = IBSET(fbddata%nqc(jobs),15)
+
+         END DO
+         
+      DEALLOCATE( &
+         & igrdi, &
+         & igrdj, &
+         & zglam, &
+         & zgphi, &
+         & zmask, &
+         & z_thick_s_l  &
+         & )
+
+      CALL wrk_dealloc(jpi,jpj,z_thick_s,thick_s_mask) 
+      IF(lwp)WRITE(numout,*) ' ------------- '
+      !
+   END SUBROUTINE obs_rea_snowdepth
+   
+   !!======================================================================
+END MODULE obs_readsnowdepth
Index: /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90
===================================================================
--- /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 12609)
+++ /branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 12610)
@@ -530,6 +530,13 @@
 
          clfiletype = 'sicfb'
-         cllongname = 'Sea ice'
+         cllongname = 'Sea ice concentration'
          clunits    = 'Fraction'
+         clgrid     = 'T'
+
+      CASE('SIT')
+
+         clfiletype = 'sitfb'
+         cllongname = 'Sea ice thickness'
+         clunits    = 'm'
          clgrid     = 'T'
 
