Index: branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/CONFIG/SHARED/namelist_ref
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 12796)
+++ branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 12820)
@@ -1200,4 +1200,5 @@
    ln_sic     = .false.             ! Logical switch for Sea Ice Concentration observations
    ln_sit     = .false.             ! Logical switch for Sea Ice Thickness observations
+   ln_fbd     = .false.             ! Logical switch for Sea Ice Freeboard observations
    ln_vel3d   = .false.             ! Logical switch for velocity observations
    ln_sss     = .false.             ! Logical swithc for SSS observations
@@ -1242,4 +1243,5 @@
    ln_sic_fp_indegs = .true.
    ln_sit_fp_indegs = .true.
+   ln_fbd_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
@@ -1248,4 +1250,5 @@
    cn_sicfbfiles = 'sic_01.nc'           ! SIC feedback input observation file names
    cn_sitfbfiles = 'sit_01.nc'           ! SIT feedback input observation file names
+   cn_fbdfbfiles = 'fbd_01.nc'           ! FBD 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
@@ -1290,4 +1293,6 @@
    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)
+   rn_fbd_avglamscl = 0.                 ! E/W diameter of FBD observation footprint (metres/degrees)
+   rn_fbd_avgphiscl = 0.                 ! N/S diameter of FBD observation footprint (metres/degrees)
    nn_1dint = 0                          ! Type of vertical interpolation method
    nn_2dint_default = 0                  ! Default horizontal interpolation method
@@ -1297,4 +1302,5 @@
    nn_2dint_sic = -1                     ! Horizontal interpolation method for SIC
    nn_2dint_sit = -1                     ! Horizontal interpolation method for SIT
+   nn_2dint_fbd = -1                     ! Horizontal interpolation method for FBD
    nn_msshc = 0                          ! MSSH correction scheme
    rn_mdtcorr = 1.61                     ! MDT  correction
Index: branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 12796)
+++ branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 12820)
@@ -56,4 +56,5 @@
    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_fbd_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
@@ -71,4 +72,6 @@
    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) :: rn_fbd_avglamscl     !: E/W diameter of FBD observation footprint
+   REAL(wp) :: rn_fbd_avgphiscl     !: N/S diameter of FBD observation footprint
    REAL(wp), PUBLIC :: &
       &        MeanPeriodHours = 24. + (5./6.) !: Meaning period for surface data.
@@ -82,4 +85,5 @@
    INTEGER :: nn_2dint_sic     !: SIC horizontal interpolation method (-1 = default)
    INTEGER :: nn_2dint_sit     !: SIT horizontal interpolation method (-1 = default)
+   INTEGER :: nn_2dint_fbd     !: FBD horizontal interpolation method (-1 = default)
  
    INTEGER, DIMENSION(imaxavtypes) :: &
@@ -167,4 +171,5 @@
          & cn_sicfbfiles,      & ! Seaice concentration input filenames
          & cn_sitfbfiles,      & ! Seaice thickness input filenames
+         & cn_fbdfbfiles,      & ! Seaice freeboard input filenames
          & cn_velfbfiles,      & ! Velocity profile input filenames
          & cn_sssfbfiles,      & ! Sea surface salinity input filenames
@@ -206,4 +211,5 @@
       LOGICAL :: ln_sic          ! Logical switch for sea ice concentration
       LOGICAL :: ln_sit          ! Logical switch for sea ice thickness
+      LOGICAL :: ln_fbd          ! Logical switch for sea ice freeboard
       LOGICAL :: ln_sss          ! Logical switch for sea surface salinity obs
       LOGICAL :: ln_vel3d        ! Logical switch for velocity (u,v) obs
@@ -264,5 +270,6 @@
 
       NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              &
-         &            ln_sst, ln_sic, ln_sit, ln_sss, ln_vel3d,               &
+         &            ln_sst, ln_sic, ln_sit, ln_fbd,                 &
+         &            ln_sss, ln_vel3d,                               &
          &            ln_slchltot, ln_slchldia, ln_slchlnon,          &
          &            ln_slchldin, ln_slchlmic, ln_slchlnan,          &
@@ -281,8 +288,8 @@
          &            ln_sla_fp_indegs, ln_sst_fp_indegs,             &
          &            ln_sss_fp_indegs, ln_sic_fp_indegs,             &
-         &            ln_sit_fp_indegs,                               &
+         &            ln_sit_fp_indegs, ln_fbd_fp_indegs,             &
          &            cn_profbfiles, cn_slafbfiles,                   &
          &            cn_sstfbfiles, cn_sicfbfiles,                   &
-         &            cn_sitfbfiles,                                  &
+         &            cn_sitfbfiles, cn_fbdfbfiles,                   &
          &            cn_velfbfiles, cn_sssfbfiles,                   &
          &            cn_slchltotfbfiles, cn_slchldiafbfiles,         &
@@ -307,7 +314,9 @@
          &            rn_sic_avglamscl, rn_sic_avgphiscl,             &
          &            rn_sit_avglamscl, rn_sit_avgphiscl,             &
+         &            rn_fbd_avglamscl, rn_fbd_avgphiscl,             &
          &            nn_1dint, nn_2dint_default,                     &
          &            nn_2dint_sla, nn_2dint_sst,                     &
-         &            nn_2dint_sss, nn_2dint_sic, nn_2dint_sit,       &
+         &            nn_2dint_sss, nn_2dint_sic,                     &
+         &            nn_2dint_sit, nn_2dint_fbd,                     &
          &            nn_msshc, rn_mdtcorr, rn_mdtcutoff,             &
          &            nn_profdavtypes
@@ -323,4 +332,5 @@
       cn_sicfbfiles(:)      = ''
       cn_sitfbfiles(:)      = ''
+      cn_fbdfbfiles(:)      = ''
       cn_velfbfiles(:)      = ''
       cn_sssfbfiles(:)      = ''
@@ -387,4 +397,5 @@
          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 FBD observations                      ln_fbd = ', ln_fbd
          WRITE(numout,*) '             Logical switch for velocity observations               ln_vel3d = ', ln_vel3d
          WRITE(numout,*) '             Logical switch for SSS observations                      ln_sss = ', ln_sss
@@ -426,4 +437,5 @@
          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,*) '             Type of horizontal interpolation method for FBD    nn_2dint_fbd = ', nn_2dint_fbd
          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
@@ -441,4 +453,7 @@
          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,*) '             FBD E/W diameter of obs footprint              rn_fbd_avglamscl = ', rn_fbd_avglamscl
+         WRITE(numout,*) '             FBD N/S diameter of obs footprint              rn_fbd_avgphiscl = ', rn_fbd_avgphiscl
+         WRITE(numout,*) '             FBD obs footprint in deg [T] or m [F]          ln_fbd_fp_indegs = ', ln_fbd_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
@@ -462,5 +477,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_sit, ln_sss,             &
+      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sit, ln_fbd, ln_sss,     &
          &                  ln_slchltot, ln_slchldia, ln_slchlnon, ln_slchldin, &
          &                  ln_slchlmic, ln_slchlnan, ln_slchlpic, ln_schltot,  &
@@ -586,4 +601,9 @@
             cobstypessurf(jtype) = 'sit'
             clsurffiles(jtype,:) = cn_sitfbfiles
+         ENDIF
+         IF (ln_fbd) THEN
+            jtype = jtype + 1
+            cobstypessurf(jtype) = 'fbd'
+            clsurffiles(jtype,:) = cn_fbdfbfiles
          ENDIF
          IF (ln_sss) THEN
@@ -711,4 +731,14 @@
                ztype_avgphiscl = rn_sit_avgphiscl
                ltype_fp_indegs = ln_sit_fp_indegs
+               ltype_night     = .FALSE.
+            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'fbd' ) THEN
+               IF ( nn_2dint_fbd == -1 ) THEN
+                  n2dint_type  = nn_2dint_default
+               ELSE
+                  n2dint_type  = nn_2dint_fbd
+               ENDIF
+               ztype_avglamscl = rn_fbd_avglamscl
+               ztype_avgphiscl = rn_fbd_avgphiscl
+               ltype_fp_indegs = ln_fbd_fp_indegs
                ltype_night     = .FALSE.
             ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN
@@ -900,5 +930,6 @@
 
             IF ( (TRIM(cobstypessurf(jtype)) == 'sla') .OR. &
-               & (TRIM(cobstypessurf(jtype)) == 'sit') ) THEN
+               & (TRIM(cobstypessurf(jtype)) == 'sit') .OR. &
+               & (TRIM(cobstypessurf(jtype)) == 'fbd') ) THEN
                nvarssurf(jtype) = 1
                nextrsurf(jtype) = 2
@@ -916,6 +947,9 @@
             ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sic' ) THEN
                clvars(1) = 'ICECONC'
+            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'fbd' ) THEN
+               clvars(1) = 'FBD'
+               ln_seaicetypes = .TRUE.
             ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN
-               clvars(1) = 'FBD'
+               clvars(1) = 'SIT'
                ln_seaicetypes = .TRUE.
             ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN
@@ -969,5 +1003,5 @@
 
 #if defined key_cice
-            IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN
+            IF ( TRIM(cobstypessurf(jtype)) == 'fbd' ) THEN
                CALL obs_rea_snowdepth( surfdataqc(jtype), n2dintsurf(jtype), thick_s(:,:) )
             ENDIF 
@@ -1409,4 +1443,23 @@
                ENDIF
 
+            CASE('fbd')
+               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 freeboard 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 freeboard observation operator defined for LIM model' )
+#else
+                  CALL ctl_stop( ' Trying to run sea-ice freeboard observation operator', &
+                     &           ' but no sea-ice model appears to have been defined' )
+#endif
+               ENDIF
+
             CASE('slchltot')
 #if defined key_hadocc
@@ -1715,10 +1768,4 @@
             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
-
          END DO
 
Index: branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 12796)
+++ branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 12820)
@@ -537,4 +537,13 @@
 
          clfiletype = 'sitfb'
+         cllongname = 'Sea ice thickness'
+         clunits    = 'm'
+         clgrid     = 'T'
+
+      CASE('FBD')
+
+         clfiletype = 'fbdfb'
+         ! Change label from FBD ("freeboard") to SIT ("Sea Ice Thickness")
+         surfdata%cvars(1) = 'SIT'
          cllongname = 'Sea ice thickness'
          clunits    = 'm'
