Index: branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/CONFIG/SHARED/namelist_ref
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 9015)
+++ branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 9016)
@@ -1201,8 +1201,15 @@
    ln_vel3d   = .false.             ! Logical switch for velocity observations
    ln_sss     = .false.             ! Logical swithc for SSS observations
-   ln_logchl  = .false.             ! Logical switch for log(Chl) obs
-   ln_spm     = .false.             ! Logical switch for SPM obs
-   ln_fco2    = .false.             
-   ln_pco2    = .false.
+   ln_slchltot = .false.            ! Logical switch for surface total              log10(chlorophyll) obs
+   ln_slchldia = .false.            ! Logical switch for surface diatom             log10(chlorophyll) obs
+   ln_slchlnon = .false.            ! Logical switch for surface non-diatom         log10(chlorophyll) obs
+   ln_slchldin = .false.            ! Logical switch for surface dinoflagellate     log10(chlorophyll) obs
+   ln_slchlmic = .false.            ! Logical switch for surface microphytoplankton log10(chlorophyll) obs
+   ln_slchlnan = .false.            ! Logical switch for surface nanophytoplankton  log10(chlorophyll) obs
+   ln_slchlpic = .false.            ! Logical switch for surface picophytoplankton  log10(chlorophyll) obs
+   ln_schltot  = .false.            ! Logical switch for surface total              chlorophyll        obs
+   ln_sspm     = .false.            ! Logical switch for surface suspended particulate matter obs
+   ln_sfco2    = .false.            ! Logical switch for surface fugacity         of carbon dioxide obs
+   ln_spco2    = .false.            ! Logical switch for surface partial pressure of carbon dioxide obs
    ln_altbias = .false.             ! Logical switch for altimeter bias correction
    ln_sstbias = .false.             ! Logical switch for SST bias correction
Index: branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 9015)
+++ branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 9016)
@@ -98,5 +98,5 @@
       & profdataqc           !: Profile data after quality control
 
-   CHARACTER(len=25), PUBLIC, DIMENSION(:), ALLOCATABLE :: &
+   CHARACTER(len=8), PUBLIC, DIMENSION(:), ALLOCATABLE :: &
       & cobstypesprof, &     !: Profile obs types
       & cobstypessurf        !: Surface obs types
@@ -147,22 +147,22 @@
 
       CHARACTER(len=128), DIMENSION(jpmaxnfiles) :: &
-         & cn_profbfiles,                 & ! T/S profile input filenames
-         & cn_sstfbfiles,                 & ! Sea surface temperature input filenames
-         & cn_slafbfiles,                 & ! Sea level anomaly input filenames
-         & cn_sicfbfiles,                 & ! Seaice concentration input filenames
-         & cn_velfbfiles,                 & ! Velocity profile input filenames
-         & cn_sssfbfiles,                 & ! Sea surface salinity input filenames
-         & cn_surf_logchl_totalfbfiles,   & ! Surface total              log10(chlorophyll) input filenames
-         & cn_surf_logchl_diatfbfiles,    & ! Surface diatom             log10(chlorophyll) input filenames
-         & cn_surf_logchl_nondiatfbfiles, & ! Surface non-diatom         log10(chlorophyll) input filenames
-         & cn_surf_logchl_dinofbfiles,    & ! Surface dinoflagellate     log10(chlorophyll) input filenames
-         & cn_surf_logchl_microfbfiles,   & ! Surface microphytoplankton log10(chlorophyll) input filenames
-         & cn_surf_logchl_nanofbfiles,    & ! Surface nanophytoplankton  log10(chlorophyll) input filenames
-         & cn_surf_logchl_picofbfiles,    & ! Surface picophytoplankton  log10(chlorophyll) input filenames
-         & cn_surf_chl_totalfbfiles,      & ! Surface total              chlorophyll        input filenames
-         & cn_surf_spmfbfiles,            & ! Surface suspended particulate matter input filenames
-         & cn_surf_fco2fbfiles,           & ! Surface fugacity         of carbon dioxide input filenames
-         & cn_surf_pco2fbfiles,           & ! Surface partial pressure of carbon dioxide input filenames
-         & cn_sstbiasfiles                  ! SST bias input filenames
+         & cn_profbfiles,      & ! T/S profile input filenames
+         & cn_sstfbfiles,      & ! Sea surface temperature input filenames
+         & cn_slafbfiles,      & ! Sea level anomaly input filenames
+         & cn_sicfbfiles,      & ! Seaice concentration input filenames
+         & cn_velfbfiles,      & ! Velocity profile input filenames
+         & cn_sssfbfiles,      & ! Sea surface salinity input filenames
+         & cn_slchltotfbfiles, & ! Surface total              log10(chlorophyll) input filenames
+         & cn_slchldiafbfiles, & ! Surface diatom             log10(chlorophyll) input filenames
+         & cn_slchlnonfbfiles, & ! Surface non-diatom         log10(chlorophyll) input filenames
+         & cn_slchldinfbfiles, & ! Surface dinoflagellate     log10(chlorophyll) input filenames
+         & cn_slchlmicfbfiles, & ! Surface microphytoplankton log10(chlorophyll) input filenames
+         & cn_slchlnanfbfiles, & ! Surface nanophytoplankton  log10(chlorophyll) input filenames
+         & cn_slchlpicfbfiles, & ! Surface picophytoplankton  log10(chlorophyll) input filenames
+         & cn_schltotfbfiles,  & ! Surface total              chlorophyll        input filenames
+         & cn_sspmfbfiles,     & ! Surface suspended particulate matter input filenames
+         & cn_sfco2fbfiles,    & ! Surface fugacity         of carbon dioxide input filenames
+         & cn_spco2fbfiles,    & ! Surface partial pressure of carbon dioxide input filenames
+         & cn_sstbiasfiles       ! SST bias input filenames
 
       CHARACTER(LEN=128) :: &
@@ -170,28 +170,28 @@
 
 
-      LOGICAL :: ln_t3d                 ! Logical switch for temperature profiles
-      LOGICAL :: ln_s3d                 ! Logical switch for salinity profiles
-      LOGICAL :: ln_sla                 ! Logical switch for sea level anomalies 
-      LOGICAL :: ln_sst                 ! Logical switch for sea surface temperature
-      LOGICAL :: ln_sic                 ! Logical switch for sea ice concentration
-      LOGICAL :: ln_sss                 ! Logical switch for sea surface salinity obs
-      LOGICAL :: ln_vel3d               ! Logical switch for velocity (u,v) obs
-      LOGICAL :: ln_surf_logchl_total   ! Logical switch for surface total              log10(chlorophyll) obs
-      LOGICAL :: ln_surf_logchl_diat    ! Logical switch for surface diatom             log10(chlorophyll) obs
-      LOGICAL :: ln_surf_logchl_nondiat ! Logical switch for surface non-diatom         log10(chlorophyll) obs
-      LOGICAL :: ln_surf_logchl_dino    ! Logical switch for surface dinoflagellate     log10(chlorophyll) obs
-      LOGICAL :: ln_surf_logchl_micro   ! Logical switch for surface microphytoplankton log10(chlorophyll) obs
-      LOGICAL :: ln_surf_logchl_nano    ! Logical switch for surface nanophytoplankton  log10(chlorophyll) obs
-      LOGICAL :: ln_surf_logchl_pico    ! Logical switch for surface picophytoplankton  log10(chlorophyll) obs
-      LOGICAL :: ln_surf_chl_total      ! Logical switch for surface total              chlorophyll        obs
-      LOGICAL :: ln_surf_spm            ! Logical switch for surface suspended particulate matter obs
-      LOGICAL :: ln_surf_fco2           ! Logical switch for surface fugacity         of carbon dioxide obs
-      LOGICAL :: ln_surf_pco2           ! Logical switch for surface partial pressure of carbon dioxide obs
-      LOGICAL :: ln_nea                 ! Logical switch to remove obs near land
-      LOGICAL :: ln_altbias             ! Logical switch for altimeter bias
-      LOGICAL :: ln_sstbias             ! Logical switch for bias correction of SST
-      LOGICAL :: ln_ignmis              ! Logical switch for ignoring missing files
-      LOGICAL :: ln_s_at_t              ! Logical switch to compute model S at T obs
-      LOGICAL :: ln_bound_reject        ! Logical switch for rejecting obs near the boundary
+      LOGICAL :: ln_t3d          ! Logical switch for temperature profiles
+      LOGICAL :: ln_s3d          ! Logical switch for salinity profiles
+      LOGICAL :: ln_sla          ! Logical switch for sea level anomalies 
+      LOGICAL :: ln_sst          ! Logical switch for sea surface temperature
+      LOGICAL :: ln_sic          ! Logical switch for sea ice concentration
+      LOGICAL :: ln_sss          ! Logical switch for sea surface salinity obs
+      LOGICAL :: ln_vel3d        ! Logical switch for velocity (u,v) obs
+      LOGICAL :: ln_slchltot     ! Logical switch for surface total              log10(chlorophyll) obs
+      LOGICAL :: ln_slchldia     ! Logical switch for surface diatom             log10(chlorophyll) obs
+      LOGICAL :: ln_slchlnon     ! Logical switch for surface non-diatom         log10(chlorophyll) obs
+      LOGICAL :: ln_slchldin     ! Logical switch for surface dinoflagellate     log10(chlorophyll) obs
+      LOGICAL :: ln_slchlmic     ! Logical switch for surface microphytoplankton log10(chlorophyll) obs
+      LOGICAL :: ln_slchlnan     ! Logical switch for surface nanophytoplankton  log10(chlorophyll) obs
+      LOGICAL :: ln_slchlpic     ! Logical switch for surface picophytoplankton  log10(chlorophyll) obs
+      LOGICAL :: ln_schltot      ! Logical switch for surface total              chlorophyll        obs
+      LOGICAL :: ln_sspm         ! Logical switch for surface suspended particulate matter obs
+      LOGICAL :: ln_sfco2        ! Logical switch for surface fugacity         of carbon dioxide obs
+      LOGICAL :: ln_spco2        ! Logical switch for surface partial pressure of carbon dioxide obs
+      LOGICAL :: ln_nea          ! Logical switch to remove obs near land
+      LOGICAL :: ln_altbias      ! Logical switch for altimeter bias
+      LOGICAL :: ln_sstbias      ! Logical switch for bias correction of SST
+      LOGICAL :: ln_ignmis       ! Logical switch for ignoring missing files
+      LOGICAL :: ln_s_at_t       ! Logical switch to compute model S at T obs
+      LOGICAL :: ln_bound_reject ! Logical switch for rejecting obs near the boundary
 
       REAL(dp) :: rn_dobsini     ! Obs window start date YYYYMMDD.HHMMSS
@@ -207,5 +207,5 @@
       LOGICAL :: llvar1          ! Logical for profile variable 1
       LOGICAL :: llvar2          ! Logical for profile variable 1
-      LOGICAL :: ltype_fpindegs  ! Local version of ln_*_fp_indegs
+      LOGICAL :: ltype_fp_indegs ! Local version of ln_*_fp_indegs
       LOGICAL :: ltype_night     ! Local version of ln_sstnight (false for other variables)
 
@@ -223,9 +223,8 @@
       NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              &
          &            ln_sst, ln_sic, ln_sss, ln_vel3d,               &
-         &            ln_surf_logchl_total,   ln_surf_logchl_diat,    &
-         &            ln_surf_logchl_nondiat, ln_surf_logchl_dino,    &
-         &            ln_surf_logchl_micro,   ln_surf_logchl_nano,    &
-         &            ln_surf_logchl_pico,    ln_surf_chl_total,      &
-         &            ln_surf_spm, ln_surf_fco2, ln_surf_pco2,        &
+         &            ln_slchltot, ln_slchldia, ln_slchlnon,          &
+         &            ln_slchldin, ln_slchlmic, ln_slchlnan,          &
+         &            ln_slchlpic, ln_schltot,                        &
+         &            ln_sspm,     ln_sfco2,    ln_spco2,             &
          &            ln_altbias, ln_sstbias, ln_nea,                 &
          &            ln_grid_global, ln_grid_search_lookup,          &
@@ -237,13 +236,10 @@
          &            cn_sstfbfiles, cn_sicfbfiles,                   &
          &            cn_velfbfiles, cn_sssfbfiles,                   &
-         &            cn_surf_logchl_totalfbfiles,                    &
-         &            cn_surf_logchl_diatfbfiles,                     &
-         &            cn_surf_logchl_nondiatfbfiles,                  &
-         &            cn_surf_logchl_dinofbfiles,                     &
-         &            cn_surf_logchl_microfbfiles,                    &
-         &            cn_surf_logchl_nanofbfiles,                     &
-         &            cn_surf_logchl_picofbfiles,                     &
-         &            cn_surf_chl_totalfbfiles, cn_surf_spmfbfiles,   &
-         &            cn_surf_fco2fbfiles, cn_surf_pco2fbfiles,       &
+         &            cn_slchltotfbfiles, cn_slchldiafbfiles,         &
+         &            cn_slchlnonfbfiles, cn_slchldinfbfiles,         &
+         &            cn_slchlmicfbfiles, cn_slchlnanfbfiles,         &
+         &            cn_slchlpicfbfiles,                             &
+         &            cn_schltotfbfiles, cn_sspmfbfiles,              &
+         &            cn_sfco2fbfiles, cn_spco2fbfiles,               &
          &            cn_sstbiasfiles, cn_altbiasfile,                &
          &            cn_gridsearchfile, rn_gridsearchres,            &
@@ -272,23 +268,23 @@
 
       ! Some namelist arrays need initialising
-      cn_profbfiles(:)                 = ''
-      cn_slafbfiles(:)                 = ''
-      cn_sstfbfiles(:)                 = ''
-      cn_sicfbfiles(:)                 = ''
-      cn_velfbfiles(:)                 = ''
-      cn_sssfbfiles(:)                 = ''
-      cn_surf_logchl_totalfbfiles(:)   = ''
-      cn_surf_logchl_diatfbfiles(:)    = ''
-      cn_surf_logchl_nondiatfbfiles(:) = ''
-      cn_surf_logchl_dinofbfiles(:)    = ''
-      cn_surf_logchl_microfbfiles(:)   = ''
-      cn_surf_logchl_nanofbfiles(:)    = ''
-      cn_surf_logchl_picofbfiles(:)    = ''
-      cn_surf_chl_totalfbfiles(:)      = ''
-      cn_surf_spmfbfiles(:)            = ''
-      cn_surf_fco2fbfiles(:)           = ''
-      cn_surf_pco2fbfiles(:)           = ''
-      cn_sstbiasfiles(:)               = ''
-      nn_profdavtypes(:)               = -1
+      cn_profbfiles(:)      = ''
+      cn_slafbfiles(:)      = ''
+      cn_sstfbfiles(:)      = ''
+      cn_sicfbfiles(:)      = ''
+      cn_velfbfiles(:)      = ''
+      cn_sssfbfiles(:)      = ''
+      cn_slchltotfbfiles(:) = ''
+      cn_slchldiafbfiles(:) = ''
+      cn_slchlnonfbfiles(:) = ''
+      cn_slchldinfbfiles(:) = ''
+      cn_slchlmicfbfiles(:) = ''
+      cn_slchlnanfbfiles(:) = ''
+      cn_slchlpicfbfiles(:) = ''
+      cn_schltotfbfiles(:)  = ''
+      cn_sspmfbfiles(:)     = ''
+      cn_sfco2fbfiles(:)    = ''
+      cn_spco2fbfiles(:)    = ''
+      cn_sstbiasfiles(:)    = ''
+      nn_profdavtypes(:)    = -1
 
       CALL ini_date( rn_dobsini )
@@ -328,15 +324,15 @@
          WRITE(numout,*) '             Logical switch for velocity observations               ln_vel3d = ', ln_vel3d
          WRITE(numout,*) '             Logical switch for SSS observations                      ln_sss = ', ln_sss
-         WRITE(numout,*) '             Logical switch for surf_logchl_total obs   ln_surf_logchl_total = ', ln_surf_logchl_total
-         WRITE(numout,*) '             Logical switch for surf_logchl_diat obs     ln_surf_logchl_diat = ', ln_surf_logchl_diat
-         WRITE(numout,*) '             Logical switch for surf_logchl_nondiat   ln_surf_logchl_nondiat = ', ln_surf_logchl_nondiat
-         WRITE(numout,*) '             Logical switch for surf_logchl_dino obs     ln_surf_logchl_dino = ', ln_surf_logchl_dino
-         WRITE(numout,*) '             Logical switch for surf_logchl_micro obs   ln_surf_logchl_micro = ', ln_surf_logchl_micro
-         WRITE(numout,*) '             Logical switch for surf_logchl_nano obs     ln_surf_logchl_nano = ', ln_surf_logchl_nano
-         WRITE(numout,*) '             Logical switch for surf_logchl_pico obs     ln_surf_logchl_pico = ', ln_surf_logchl_pico
-         WRITE(numout,*) '             Logical switch for surf_chl_total obs         ln_surf_chl_total = ', ln_surf_chl_total
-         WRITE(numout,*) '             Logical switch for surface SPM observations         ln_surf_spm = ', ln_surf_spm
-         WRITE(numout,*) '             Logical switch for surface fCO2 observations       ln_surf_fco2 = ', ln_surf_fco2
-         WRITE(numout,*) '             Logical switch for surface pCO2 observations       ln_surf_pco2 = ', ln_surf_pco2
+         WRITE(numout,*) '             Logical switch for surface total logchl obs         ln_slchltot = ', ln_slchltot
+         WRITE(numout,*) '             Logical switch for surface diatom logchl obs        ln_slchldia = ', ln_slchldia
+         WRITE(numout,*) '             Logical switch for surface non-diatom logchl obs    ln_slchlnon = ', ln_slchlnon
+         WRITE(numout,*) '             Logical switch for surface dino logchl obs          ln_slchldin = ', ln_slchldin
+         WRITE(numout,*) '             Logical switch for surface micro logchl obs         ln_slchlmic = ', ln_slchlmic
+         WRITE(numout,*) '             Logical switch for surface nano logchl obs          ln_slchlnan = ', ln_slchlnan
+         WRITE(numout,*) '             Logical switch for surface pico logchl obs          ln_slchlpic = ', ln_slchlpic
+         WRITE(numout,*) '             Logical switch for surface total chl obs             ln_schltot = ', ln_schltot
+         WRITE(numout,*) '             Logical switch for surface SPM observations             ln_sspm = ', ln_sspm
+         WRITE(numout,*) '             Logical switch for surface fCO2 observations           ln_sfco2 = ', ln_sfco2
+         WRITE(numout,*) '             Logical switch for surface pCO2 observations           ln_spco2 = ', ln_spco2
          WRITE(numout,*) '             Global distribution of observations              ln_grid_global = ', ln_grid_global
          WRITE(numout,*) '             Logical switch for obs grid search lookup ln_grid_search_lookup = ', ln_grid_search_lookup
@@ -380,10 +376,8 @@
 
       nproftypes = COUNT( (/ln_t3d .OR. ln_s3d, ln_vel3d /) )
-      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sss,              &
-         &                  ln_surf_logchl_total, ln_surf_logchl_diat,   &
-         &                  ln_surf_logchl_nondiat, ln_surf_logchl_dino, &
-         &                  ln_surf_logchl_micro, ln_surf_logchl_nano,   &
-         &                  ln_surf_logchl_pico, ln_surf_chl_total,      &
-         &                  ln_surf_spm, ln_surf_fco2, ln_surf_pco2 /) )
+      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sss,                     &
+         &                  ln_slchltot, ln_slchldia, ln_slchlnon, ln_slchldin, &
+         &                  ln_slchlmic, ln_slchlnan, ln_slchlpic, ln_schltot,  &
+         &                  ln_sspm, ln_sfco2, ln_spco2 /) )
 
       IF ( nproftypes == 0 .AND. nsurftypes == 0 ) THEN
@@ -453,73 +447,73 @@
          ENDIF
 
-         IF (ln_surf_logchl_total) THEN
+         IF (ln_slchltot) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_logchl_total', &
-               &                   cn_surf_logchl_totalfbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_logchl_diat) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'slchltot', &
+               &                   cn_slchltotfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_slchldia) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_logchl_diat', &
-               &                   cn_surf_logchl_diatfbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_logchl_nondiat) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'slchldia', &
+               &                   cn_slchldiafbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_slchlnon) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_logchl_nondiat', &
-               &                   cn_surf_logchl_nondiatfbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_logchl_dino) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'slchlnon', &
+               &                   cn_slchlnonfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_slchldin) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_logchl_dino', &
-               &                   cn_surf_logchl_dinofbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_logchl_micro) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'slchldin', &
+               &                   cn_slchldinfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_slchlmic) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_logchl_micro', &
-               &                   cn_surf_logchl_microfbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_logchl_nano) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'slchlmic', &
+               &                   cn_slchlmicfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_slchlnan) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_logchl_nano', &
-               &                   cn_surf_logchl_nanofbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_logchl_pico) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'slchlnan', &
+               &                   cn_slchlnanfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_slchlpic) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_logchl_pico', &
-               &                   cn_surf_logchl_picofbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_chl_total) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'slchlpic', &
+               &                   cn_slchlpicfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_schltot) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_chl_total', &
-               &                   cn_surf_chl_totalfbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_spm) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'schltot', &
+               &                   cn_schltotfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_sspm) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_spm', &
-               &                   cn_surf_spmfbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_fco2) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'sspm', &
+               &                   cn_sspmfbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_sfco2) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_fco2', &
-               &                   cn_surf_fco2fbfiles, ifilessurf, cobstypessurf, clsurffiles )
-         ENDIF
-
-         IF (ln_surf_pco2) THEN
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'sfco2', &
+               &                   cn_sfco2fbfiles, ifilessurf, cobstypessurf, clsurffiles )
+         ENDIF
+
+         IF (ln_spco2) THEN
             jtype = jtype + 1
-            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'surf_pco2', &
-               &                   cn_surf_pco2fbfiles, ifilessurf, cobstypessurf, clsurffiles )
+            CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'spco2', &
+               &                   cn_spco2fbfiles, ifilessurf, cobstypessurf, clsurffiles )
          ENDIF
 
          DO jtype = 1, nsurftypes
 
-            IF ( TRIM(n2dintsurf(jtype)) == 'sla' ) THEN
+            IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN
                IF ( nn_2dint_sla == -1 ) THEN
                   n2dint_type  = nn_2dint_default
@@ -529,7 +523,7 @@
                rtype_avglamscl = rn_sla_avglamscl
                rtype_avgphiscl = rn_sla_avgphiscl
-               ltype_fpindegs  = ln_sla_fpindegs
+               ltype_fp_indegs = ln_sla_fp_indegs
                ltype_night     = .FALSE.
-            ELSE IF ( TRIM(n2dintsurf(jtype)) == 'sst' ) THEN
+            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sst' ) THEN
                IF ( nn_2dint_sst == -1 ) THEN
                   n2dint_type  = nn_2dint_default
@@ -539,7 +533,7 @@
                rtype_avglamscl = rn_sst_avglamscl
                rtype_avgphiscl = rn_sst_avgphiscl
-               ltype_fpindegs  = ln_sst_fpindegs
+               ltype_fp_indegs = ln_sst_fp_indegs
                ltype_night     = ln_sstnight
-            ELSE IF ( TRIM(n2dintsurf(jtype)) == 'sic' ) THEN
+            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sic' ) THEN
                IF ( nn_2dint_sic == -1 ) THEN
                   n2dint_type  = nn_2dint_default
@@ -549,7 +543,7 @@
                rtype_avglamscl = rn_sic_avglamscl
                rtype_avgphiscl = rn_sic_avgphiscl
-               ltype_fpindegs  = ln_sic_fpindegs
+               ltype_fp_indegs = ln_sic_fp_indegs
                ltype_night     = .FALSE.
-            ELSE IF ( TRIM(n2dintsurf(jtype)) == 'sss' ) THEN
+            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN
                IF ( nn_2dint_sss == -1 ) THEN
                   n2dint_type  = nn_2dint_default
@@ -559,5 +553,5 @@
                rtype_avglamscl = rn_sss_avglamscl
                rtype_avgphiscl = rn_sss_avgphiscl
-               ltype_fpindegs  = ln_sss_fpindegs
+               ltype_fp_indegs = ln_sss_fp_indegs
                ltype_night     = .FALSE.
             ELSE
@@ -565,13 +559,13 @@
                rtype_avglamscl = rn_default_avglamscl
                rtype_avgphiscl = rn_default_avgphiscl
-               ltype_fpindegs  = ln_default_fpindegs
+               ltype_fp_indegs = ln_default_fp_indegs
                ltype_night     = .FALSE.
             ENDIF
             
-            CALL obs_setinterpopts( nsurftypes, jtype, TRIM(n2dintsurf(jtype)), &
-               &                    nn_2dint_default, n2dint_type,              &
-               &                    rtype_avglamscl, rtype_avgphiscl,           &
-               &                    ltype_fpindegs, ltype_night,                &
-               &                    n2dintsurf, ravglamscl, ravgphiscl,         &
+            CALL obs_setinterpopts( nsurftypes, jtype, TRIM(cobstypessurf(jtype)), &
+               &                    nn_2dint_default, n2dint_type,                 &
+               &                    rtype_avglamscl, rtype_avgphiscl,              &
+               &                    ltype_fp_indegs, ltype_night,                  &
+               &                    n2dintsurf, ravglamscl, ravgphiscl,            &
                &                    lfpindegs, llnightav )
 
@@ -923,5 +917,5 @@
                ENDIF
 
-            CASE('surf_logchl_total')
+            CASE('slchltot')
 #if defined key_hadocc
                ! Surface chlorophyll from HadOCC
@@ -935,5 +929,5 @@
                   &            trn(:,:,1,jp_fabm_chl3) + trn(:,:,1,jp_fabm_chl4)
 #else
-               CALL ctl_stop( ' Trying to run surf_logchl_total observation operator', &
+               CALL ctl_stop( ' Trying to run slchltot observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -948,7 +942,7 @@
                END WHERE
 
-            CASE('surf_logchl_diat')
+            CASE('slchldia')
 #if defined key_hadocc
-               CALL ctl_stop( ' Trying to run surf_logchl_diat observation operator', &
+               CALL ctl_stop( ' Trying to run slchldia observation operator', &
                   &           ' but HadOCC does not explicitly simulate diatoms' )
 #elif defined key_medusa && defined key_foam_medusa
@@ -959,5 +953,5 @@
                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl1)
 #else
-               CALL ctl_stop( ' Trying to run surf_logchl_diat observation operator', &
+               CALL ctl_stop( ' Trying to run slchldia observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -972,7 +966,7 @@
                END WHERE
 
-            CASE('surf_logchl_nondiat')
+            CASE('slchlnon')
 #if defined key_hadocc
-               CALL ctl_stop( ' Trying to run surf_logchl_nondiat observation operator', &
+               CALL ctl_stop( ' Trying to run slchlnon observation operator', &
                   &           ' but HadOCC does not explicitly simulate non-diatoms' )
 #elif defined key_medusa && defined key_foam_medusa
@@ -984,5 +978,5 @@
                   &            trn(:,:,1,jp_fabm_chl3) + trn(:,:,1,jp_fabm_chl4)
 #else
-               CALL ctl_stop( ' Trying to run surf_logchl_nondiat observation operator', &
+               CALL ctl_stop( ' Trying to run slchlnon observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -997,10 +991,10 @@
                END WHERE
 
-            CASE('surf_logchl_dino')
+            CASE('slchldin')
 #if defined key_hadocc
-               CALL ctl_stop( ' Trying to run surf_logchl_dino observation operator', &
+               CALL ctl_stop( ' Trying to run slchldin observation operator', &
                   &           ' but HadOCC does not explicitly simulate dinoflagellates' )
 #elif defined key_medusa && defined key_foam_medusa
-               CALL ctl_stop( ' Trying to run surf_logchl_dino observation operator', &
+               CALL ctl_stop( ' Trying to run slchldin observation operator', &
                   &           ' but MEDUSA does not explicitly simulate dinoflagellates' )
 #elif defined key_fabm
@@ -1008,5 +1002,5 @@
                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl4)
 #else
-               CALL ctl_stop( ' Trying to run surf_logchl_dino observation operator', &
+               CALL ctl_stop( ' Trying to run slchldin observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -1021,10 +1015,10 @@
                END WHERE
 
-            CASE('surf_logchl_micro')
+            CASE('slchlmic')
 #if defined key_hadocc
-               CALL ctl_stop( ' Trying to run surf_logchl_micro observation operator', &
+               CALL ctl_stop( ' Trying to run slchlmic observation operator', &
                   &           ' but HadOCC does not explicitly simulate microphytoplankton' )
 #elif defined key_medusa && defined key_foam_medusa
-               CALL ctl_stop( ' Trying to run surf_logchl_micro observation operator', &
+               CALL ctl_stop( ' Trying to run slchlmic observation operator', &
                   &           ' but MEDUSA does not explicitly simulate microphytoplankton' )
 #elif defined key_fabm
@@ -1032,5 +1026,5 @@
                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl1) + trn(:,:,1,jp_fabm_chl4)
 #else
-               CALL ctl_stop( ' Trying to run surf_logchl_micro observation operator', &
+               CALL ctl_stop( ' Trying to run slchlmic observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -1045,10 +1039,10 @@
                END WHERE
 
-            CASE('surf_logchl_nano')
+            CASE('slchlnan')
 #if defined key_hadocc
-               CALL ctl_stop( ' Trying to run surf_logchl_nano observation operator', &
+               CALL ctl_stop( ' Trying to run slchlnan observation operator', &
                   &           ' but HadOCC does not explicitly simulate nanophytoplankton' )
 #elif defined key_medusa && defined key_foam_medusa
-               CALL ctl_stop( ' Trying to run surf_logchl_nano observation operator', &
+               CALL ctl_stop( ' Trying to run slchlnan observation operator', &
                   &           ' but MEDUSA does not explicitly simulate nanophytoplankton' )
 #elif defined key_fabm
@@ -1056,5 +1050,5 @@
                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl2)
 #else
-               CALL ctl_stop( ' Trying to run surf_logchl_nano observation operator', &
+               CALL ctl_stop( ' Trying to run slchlnan observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -1069,10 +1063,10 @@
                END WHERE
 
-            CASE('surf_logchl_pico')
+            CASE('slchlpic')
 #if defined key_hadocc
-               CALL ctl_stop( ' Trying to run surf_logchl_pico observation operator', &
+               CALL ctl_stop( ' Trying to run slchlpic observation operator', &
                   &           ' but HadOCC does not explicitly simulate picophytoplankton' )
 #elif defined key_medusa && defined key_foam_medusa
-               CALL ctl_stop( ' Trying to run surf_logchl_pico observation operator', &
+               CALL ctl_stop( ' Trying to run slchlpic observation operator', &
                   &           ' but MEDUSA does not explicitly simulate picophytoplankton' )
 #elif defined key_fabm
@@ -1080,5 +1074,5 @@
                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl3)
 #else
-               CALL ctl_stop( ' Trying to run surf_logchl_pico observation operator', &
+               CALL ctl_stop( ' Trying to run slchlpic observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -1093,5 +1087,5 @@
                END WHERE
 
-            CASE('surf_chl_total')
+            CASE('schltot')
 #if defined key_hadocc
                ! Surface chlorophyll from HadOCC
@@ -1105,10 +1099,10 @@
                   &            trn(:,:,1,jp_fabm_chl3) + trn(:,:,1,jp_fabm_chl4)
 #else
-               CALL ctl_stop( ' Trying to run surf_chl_total observation operator', &
+               CALL ctl_stop( ' Trying to run schltot observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
                zsurfmask(:,:) = tmask(:,:,1)         ! create a special mask to exclude certain things
 
-            CASE('surf_spm')
+            CASE('sspm')
 #if defined key_spm
                zsurfvar(:,:) = 0.0
@@ -1117,9 +1111,9 @@
                END DO
 #else
-               CALL ctl_stop( ' Trying to run spm observation operator', &
+               CALL ctl_stop( ' Trying to run sspm observation operator', &
                   &           ' but no spm model appears to have been defined' )
 #endif
 
-            CASE('surf_fco2')
+            CASE('sfco2')
 #if defined key_hadocc
                zsurfvar(:,:) = HADOCC_FCO2(:,:)    ! fCO2 from HadOCC
@@ -1157,9 +1151,9 @@
                   &            (82.0578 * (tsn(:,:,1,jp_tem)+rt0)))
 #else
-               CALL ctl_stop( ' Trying to run fco2 observation operator', &
+               CALL ctl_stop( ' Trying to run sfco2 observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
 
-            CASE('surf_pco2')
+            CASE('spco2')
 #if defined key_hadocc
                zsurfvar(:,:) = HADOCC_PCO2(:,:)    ! pCO2 from HadOCC
@@ -1177,5 +1171,5 @@
                zsurfvar(:,:) = pco2_3d(:,:,1)
 #else
-               CALL ctl_stop( ' Trying to run pCO2 observation operator', &
+               CALL ctl_stop( ' Trying to run spco2 observation operator', &
                   &           ' but no biogeochemical model appears to have been defined' )
 #endif
@@ -1499,8 +1493,8 @@
           &                   ifiles      ! Out appended number of files for this type
 
-       CHARACTER(len=25), INTENT(IN) :: ctypein 
+       CHARACTER(len=8), INTENT(IN) :: ctypein 
        CHARACTER(len=128), DIMENSION(jpmaxnfiles), INTENT(IN) :: &
           &                   cfilestype  ! In list of files for this obs type
-       CHARACTER(len=25), DIMENSION(ntypes), INTENT(INOUT) :: &
+       CHARACTER(len=8), DIMENSION(ntypes), INTENT(INOUT) :: &
           &                   cobstypes   ! Out appended list of obs types
        CHARACTER(len=128), DIMENSION(ntypes, jpmaxnfiles), INTENT(INOUT) :: &
@@ -1548,5 +1542,5 @@
        LOGICAL, INTENT(IN)  :: lfp_indegs_type    !T=> footprint in degrees, F=> in metres
        LOGICAL, INTENT(IN)  :: lavnight_type      !T=> obs represent night time average
-       CHARACTER(len=25), INTENT(IN) :: ctypein 
+       CHARACTER(len=8), INTENT(IN) :: ctypein 
 
        INTEGER, DIMENSION(ntypes), INTENT(INOUT) :: &
@@ -1559,5 +1553,5 @@
        lavnight(jtype) = lavnight_type
 
-       IF ( (n2dint_type >= 1) .AND. (n2dint_type <= 6) ) THEN
+       IF ( (n2dint_type >= 0) .AND. (n2dint_type <= 6) ) THEN
           n2dint(jtype) = n2dint_type
        ELSE IF ( n2dint_type == -1 ) THEN
Index: branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90
===================================================================
--- branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 9015)
+++ branches/UKMO/dev_r5518_obs_oper_update_bgc3d/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90	(revision 9016)
@@ -83,5 +83,5 @@
       TYPE(obfbdata) :: fbdata
       CHARACTER(LEN=40) :: clfname
-      CHARACTER(LEN=27) :: clfiletype
+      CHARACTER(LEN=10) :: clfiletype
       INTEGER :: ilevel
       INTEGER :: jvar
@@ -320,5 +320,5 @@
       TYPE(obfbdata) :: fbdata
       CHARACTER(LEN=40) :: clfname         ! netCDF filename
-      CHARACTER(LEN=27) :: clfiletype
+      CHARACTER(LEN=10) :: clfiletype
       CHARACTER(LEN=12), PARAMETER :: cpname = 'obs_wri_surf'
       CHARACTER(LEN=ilenlong) :: cllongname  ! Long name of variable
@@ -399,77 +399,77 @@
          clgrid     = 'T'
 
-      CASE('SURF_LOGCHL_TOTAL','LOGCHL','LogChl','logchl')
-
-         clfiletype = 'surf_logchl_totalfb'
+      CASE('SLCHLTOT','LOGCHL','LogChl','logchl')
+
+         clfiletype = 'slchltotfb'
          cllongname = 'Surface total log10(chlorophyll)'
          clunits    = 'log10(mg/m3)'
          clgrid     = 'T'
 
-      CASE('SURF_LOGCHL_DIAT')
-
-         clfiletype = 'surf_logchl_diatfb'
+      CASE('SLCHLDIA')
+
+         clfiletype = 'slchldiafb'
          cllongname = 'Surface diatom log10(chlorophyll)'
          clunits    = 'log10(mg/m3)'
          clgrid     = 'T'
 
-      CASE('SURF_LOGCHL_NONDIAT')
-
-         clfiletype = 'surf_logchl_nondiatfb'
+      CASE('SLCHLNON')
+
+         clfiletype = 'slchlnonfb'
          cllongname = 'Surface non-diatom log10(chlorophyll)'
          clunits    = 'log10(mg/m3)'
          clgrid     = 'T'
 
-      CASE('SURF_LOGCHL_DINO')
-
-         clfiletype = 'surf_logchl_dinofb'
+      CASE('SLCHLDIN')
+
+         clfiletype = 'slchldinfb'
          cllongname = 'Surface dinoflagellate log10(chlorophyll)'
          clunits    = 'log10(mg/m3)'
          clgrid     = 'T'
 
-      CASE('SURF_LOGCHL_MICRO')
-
-         clfiletype = 'surf_logchl_microfb'
+      CASE('SLCHLMIC')
+
+         clfiletype = 'slchlmicfb'
          cllongname = 'Surface microphytoplankton log10(chlorophyll)'
          clunits    = 'log10(mg/m3)'
          clgrid     = 'T'
 
-      CASE('SURF_LOGCHL_NANO')
-
-         clfiletype = 'surf_logchl_nanofb'
+      CASE('SLCHLNAN')
+
+         clfiletype = 'slchlnanfb'
          cllongname = 'Surface nanophytoplankton log10(chlorophyll)'
          clunits    = 'log10(mg/m3)'
          clgrid     = 'T'
 
-      CASE('SURF_LOGCHL_PICO')
-
-         clfiletype = 'surf_logchl_picofb'
+      CASE('SLCHLPIC')
+
+         clfiletype = 'slchlpicfb'
          cllongname = 'Surface picophytoplankton log10(chlorophyll)'
          clunits    = 'log10(mg/m3)'
          clgrid     = 'T'
 
-      CASE('SURF_CHL_TOTAL')
-
-         clfiletype = 'surf_chl_totalfb'
+      CASE('SCHLTOT')
+
+         clfiletype = 'schltotfb'
          cllongname = 'Surface total chlorophyll'
          clunits    = 'mg/m3'
          clgrid     = 'T'
 
-      CASE('SURF_SPM')
-
-         clfiletype = 'surf_spmfb'
+      CASE('SSPM')
+
+         clfiletype = 'sspmfb'
          cllongname = 'Surface suspended particulate matter'
          clunits    = 'g/m3'
          clgrid     = 'T'
 
-      CASE('SURF_FCO2','FCO2','fCO2','fco2')
-
-         clfiletype = 'surf_fco2fb'
+      CASE('SFCO2','FCO2','fCO2','fco2')
+
+         clfiletype = 'sfco2fb'
          cllongname = 'Surface fugacity of carbon dioxide'
          clunits    = 'uatm'
          clgrid     = 'T'
 
-      CASE('SURF_PCO2')
-
-         clfiletype = 'surf_pco2fb'
+      CASE('SPCO2')
+
+         clfiletype = 'spco2fb'
          cllongname = 'Surface partial pressure of carbon dioxide'
          clunits    = 'uatm'
