Index: branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 9867)
+++ branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 10181)
@@ -52,5 +52,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
 
    REAL(wp) :: rn_default_avglamscl !: Default E/W diameter of observation footprint
@@ -62,7 +63,9 @@
    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
+   
    INTEGER :: nn_1dint         !: Vertical interpolation method
    INTEGER :: nn_2dint_default !: Default horizontal interpolation method
@@ -70,5 +73,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) :: &
@@ -151,4 +155,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
@@ -187,4 +192,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
@@ -242,5 +248,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,          &
@@ -257,6 +263,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,         &
@@ -279,7 +287,9 @@
          &            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_sit,                                   &
          &            nn_msshc, rn_mdtcorr, rn_mdtcutoff,             &
          &            nn_profdavtypes
@@ -294,4 +304,5 @@
       cn_sstfbfiles(:)      = ''
       cn_sicfbfiles(:)      = ''
+      cn_sitfbfiles(:)      = ''      
       cn_velfbfiles(:)      = ''
       cn_sssfbfiles(:)      = ''
@@ -355,5 +366,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 Sea Ice Concentration observations    ln_sic = ', ln_sic
+         WRITE(numout,*) '             Logical switch for Sea Ice Thickness 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
@@ -393,4 +405,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
@@ -405,4 +418,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
@@ -424,5 +440,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,  &
@@ -535,4 +551,9 @@
             clsurffiles(jtype,:) = cn_sicfbfiles
          ENDIF
+         IF (ln_sit) THEN
+            jtype = jtype + 1
+            cobstypessurf(jtype) = 'sit'
+            clsurffiles(jtype,:) = cn_sitfbfiles
+         ENDIF         
          IF (ln_sss) THEN
             jtype = jtype + 1
@@ -645,4 +666,14 @@
                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
                IF ( nn_2dint_sss == -1 ) THEN
@@ -877,5 +908,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_hadocc
@@ -1190,5 +1223,5 @@
                         &           '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 + &
@@ -1201,5 +1234,27 @@
                   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 ! **Copied from SIC, check applies to SIT!**
+                  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'
+                  ENDIF
+                  surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + &
+                     &                        surfdataqc(jtype)%nsstp(1)
+                  CYCLE
+               ELSE            
+#if defined key_cice
+               ! Will need to convert freeboard to thickness here
+                  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
Index: branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 9867)
+++ branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 10181)
@@ -493,4 +493,11 @@
          clgrid     = 'T'
 
+      CASE('SIT')
+
+         clfiletype = 'sitfb'
+         cllongname = 'Sea ice thickness'
+         clunits    = 'm'
+         clgrid     = 'T'
+         
       CASE('SSS')
 
