Index: branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/CONFIG/SEABASS/cpp_SEABASS.fcm
===================================================================
--- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/CONFIG/SEABASS/cpp_SEABASS.fcm	(revision 5196)
+++ branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/CONFIG/SEABASS/cpp_SEABASS.fcm	(revision 5196)
@@ -0,0 +1,1 @@
+ bld::tool::fppkeys key_seabass key_zco key_zdfcst key_dynspg_flt key_traldf_c2d key_dynldf_c2d key_diainstant key_tam key_nosignedzero
Index: branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/CONFIG/cfg.txt
===================================================================
--- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/CONFIG/cfg.txt	(revision 5192)
+++ branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/CONFIG/cfg.txt	(revision 5196)
@@ -8,2 +8,3 @@
 ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC
 ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC
+SEABASS OPA_SRC
Index: branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
===================================================================
--- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90	(revision 5192)
+++ branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90	(revision 5196)
@@ -113,4 +113,6 @@
          ELSEIF( cp_cfg == 'gyre' ) THEN
             CALL istate_gyre                     ! GYRE  configuration : start from pre-defined T-S fields
+         ELSEIF( cp_cfg == 'seabass' ) THEN
+            CALL istate_seabass
          ELSEIF( ln_tsd_init      ) THEN         ! Initial T-S fields read in files
             CALL dta_tsd( nit000, tsb )                  ! read 3D T and S data at nit000
@@ -412,4 +414,52 @@
 
 
+
+   SUBROUTINE istate_seabass
+      !!----------------------------------------------------------------------
+      !!                   ***  ROUTINE istate_seabass  ***
+      !!
+      !! ** Purpose :   Initialization of the dynamics and tracers for seabass
+      !!      configuration (double gyre)
+      !!
+      !! ** Method  : - set temperature field following Chassignet and Gent, JPO
+      !!                    21, pp1290-1299, 1991, and the law
+      !!                    rho/rho0=1-2.e-4(T-T0)
+      !!              - set salinity field constant
+      !!
+      !!----------------------------------------------------------------------
+      !! * Local variables
+      INTEGER :: ji, jj, jk     ! dummy loop indices
+      REAL(wp) ::   zsal = 35.5
+      !!----------------------------------------------------------------------
+
+      IF(lwp) WRITE(numout,*)
+      IF(lwp) WRITE(numout,*) 'istate_seabass : initial analytical T and constant S profiles '
+      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~'
+
+      DO jk = 1, jpk
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               tsn(ji,jj,jk,jp_tem) = ( 25.+5.9e-5*800./9.81/2.e-4*   &
+               &    (exp(-gdept_0(jk)/800.)-1.))  * tmask(ji,jj,jk)
+               tsb(ji,jj,jk,jp_tem) = tsn(ji,jj,jk, jp_tem)
+          END DO
+        END DO
+      END DO
+
+      tsn(:,:,:,jp_sal) = zsal  * tmask(:,:,:)
+      tsb(:,:,:,jp_sal) = tsn(:,:,:,jp_sal)
+
+      IF(lwp) THEN
+         WRITE(numout,*)
+         WRITE(numout,*) '              Initial temperature and salinity profiles:'
+         WRITE(numout, "(9x,' level   gdept   temperature   salinity   ')" )
+         WRITE(numout, "(10x, i4, 3f10.2)" ) ( jk, gdept_0(jk), tsn(2,2,jk,jp_tem), tsn(2,2,jk,jp_sal), jk = 1, jpk )
+      ENDIF
+
+
+   END SUBROUTINE istate_seabass
+
+
+
    SUBROUTINE istate_uvg
       !!----------------------------------------------------------------------
Index: branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90
===================================================================
--- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90	(revision 5192)
+++ branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90	(revision 5196)
@@ -26,4 +26,5 @@
    PUBLIC   sbc_ana    ! routine called in sbcmod module
    PUBLIC   sbc_gyre   ! routine called in sbcmod module
+   PUBLIC   sbc_seabass   ! routine called in sbcmod module
 
    !                                !!* Namelist namsbc_ana *
@@ -323,4 +324,91 @@
    END SUBROUTINE sbc_gyre
 
+   SUBROUTINE sbc_seabass( kt )
+      !!---------------------------------------------------------------------
+      !!                    ***  ROUTINE sbc_seabass ***
+      !!
+      !! ** Purpose :   provide at each time-step the ocean surface boundary
+      !!      condition, i.e. the momentum, heat and freshwater fluxes.
+      !!
+      !! ** Method  :   Constant and uniform surface forcing specified from
+      !!      namsbc_ana namelist parameters. All the fluxes are time inde-
+      !!      pendant except the stresses which increase from zero during
+      !!      the first nn_tau000 time-step
+      !!      * C A U T I O N : never mask the surface stress field !
+      !!
+      !! ** Action  : - set the ocean surface boundary condition, i.e.
+      !!                   utau, vtau, qns, qsr, emp, emps
+      !!----------------------------------------------------------------------
+      INTEGER, INTENT(in) ::   kt       ! ocean time step
+      !!
+      INTEGER             ::   ji, jj          ! dummy loop indices
+      REAL(wp)            ::   zfacto          ! local scalar
+      REAL(wp) ::   zrhoa  = 1.22_wp      ! Air density kg/m3
+      REAL(wp) ::   zcdrag = 1.5e-3_wp    ! drag coefficient
+      REAL(wp)            ::   ztx, zty, ztau  ! local scalar
+      !!
+      NAMELIST/namsbc_ana/ nn_tau000, rn_utau0, rn_vtau0, rn_qns0, rn_qsr0, rn_emp0
+      !!---------------------------------------------------------------------
+      !
+      IF( kt == nit000 ) THEN
+         !
+         REWIND ( numnam )                   ! Read Namelist namsbc : surface fluxes
+         READ   ( numnam, namsbc_ana )
+         !
+         IF(lwp) WRITE(numout,*)' '
+         IF(lwp) WRITE(numout,*)' sbc_ana : Constant surface fluxes read in namsbc_ana namelist'
+         IF(lwp) WRITE(numout,*)' ~~~~~~~ '
+         IF(lwp) WRITE(numout,*)'              spin up of the stress  nn_tau000 = ', nn_tau000, ' time-steps'
+         IF(lwp) WRITE(numout,*)'              constant i-stress      rn_utau0  = ', rn_utau0 , ' N/m2'
+         IF(lwp) WRITE(numout,*)'              constant j-stress      rn_vtau0  = ', rn_vtau0 , ' N/m2'
+         IF(lwp) WRITE(numout,*)'              non solar heat flux    rn_qns0   = ', rn_qns0  , ' W/m2'
+         IF(lwp) WRITE(numout,*)'              solar heat flux        rn_qsr0   = ', rn_qsr0  , ' W/m2'
+         IF(lwp) WRITE(numout,*)'              net heat flux          rn_emp0   = ', rn_emp0  , ' Kg/m2/s'
+         !
+         nn_tau000 = MAX( nn_tau000, 1 )   ! must be >= 1
+         qns   (:,:) = rn_qns0
+         qsr   (:,:) = 0._wp
+         emp   (:,:) = 0._wp
+         emps  (:,:) = 0._wp
+         !
+         IF (jphgr_msh .eq. 2 .or. jphgr_msh .eq. 3) THEN
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  utau(ji,jj) = -rn_utau0 * COS(2.*rpi         &
+                  &             * (gphiu(ji,jj)+18.5533)/(2207.84+18.5533))
+                  vtau (ji,jj) =   0.
+               END DO
+            END DO
+         ELSE
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  utau(ji,jj) = -rn_utau0 * COS(2.*rpi         &
+                  &             * (gphiu(ji,jj)-24.)/(44.-24.))
+                  vtau (ji,jj) =   0.
+               END DO
+            END DO
+         END IF
+
+
+         IF(lwp) WRITE(numout,*)' tau     : Constant surface wind stress read in namelist'
+
+      ENDIF
+
+      zfacto = 0.5 / ( zrhoa * zcdrag )
+!CDIR NOVERRCHK
+      DO jj = 2, jpjm1
+!CDIR NOVERRCHK
+         DO ji = fs_2, fs_jpim1   ! vect. opt.
+            ztx = utau(ji-1,jj  ) + utau(ji,jj)
+            zty = vtau(ji  ,jj-1) + vtau(ji,jj)
+            ztau = SQRT( ztx * ztx + zty * zty )
+            wndm(ji,jj) = SQRT ( ztau * zfacto ) * tmask(ji,jj,1)
+         END DO
+      END DO
+      CALL lbc_lnk( wndm(:,:) , 'T', 1. )
+      !
+
+   END SUBROUTINE sbc_seabass
+
    !!======================================================================
 END MODULE sbcana
Index: branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
===================================================================
--- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 5192)
+++ branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 5196)
@@ -101,5 +101,5 @@
         IF( lk_cice )   nn_ice      = 4
       ENDIF
-      IF( cp_cfg == 'gyre' ) THEN            ! GYRE configuration
+      IF( cp_cfg == 'gyre' .OR. cp_cfg == 'seabass' ) THEN            ! GYRE configuration
           ln_ana      = .TRUE.   
           nn_ice      =   0
@@ -178,5 +178,5 @@
       IF( ln_blk_mfs      ) THEN   ;   nsbc =  6   ; icpt = icpt + 1   ;   ENDIF       ! MFS  bulk       formulation
       IF( ln_cpl          ) THEN   ;   nsbc =  5   ; icpt = icpt + 1   ;   ENDIF       ! Coupled         formulation
-      IF( cp_cfg == 'gyre') THEN   ;   nsbc =  0                       ;   ENDIF       ! GYRE analytical formulation
+      IF( cp_cfg == 'gyre' .OR. cp_cfg == 'seabass' ) THEN   ;   nsbc =  0                       ;   ENDIF       ! GYRE analytical formulation
       IF( lk_esopa        )            nsbc = -1                                       ! esopa test, ALL formulations
       !
@@ -256,5 +256,11 @@
       SELECT CASE( nsbc )                                ! Compute ocean surface boundary condition
       !                                                  ! (i.e. utau,vtau, qns, qsr, emp, emps)
-      CASE(  0 )   ;   CALL sbc_gyre    ( kt )                    ! analytical formulation : GYRE configuration
+      CASE(  0 )   ;                                     ! analytical formulation : GYRE or 
+                                                         ! SEABASS configurations
+         IF (cp_cfg == 'gyre') THEN
+            CALL sbc_gyre    ( kt )                    ! analytical formulation : GYRE configuration
+         ELSEIF (cp_cfg == 'seabass') THEN
+            CALL sbc_seabass     ( kt )
+         ENDIF
       CASE(  1 )   ;   CALL sbc_ana     ( kt )                    ! analytical formulation : uniform sbc
       CASE(  2 )   ;   CALL sbc_flx     ( kt )                    ! flux formulation
Index: branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/par_SEABASS.h90
===================================================================
--- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/par_SEABASS.h90	(revision 5196)
+++ branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/par_SEABASS.h90	(revision 5196)
@@ -0,0 +1,96 @@
+   !!---------------------------------------------------------------------
+   !!                     ***  par_SEABASS.h90  ***
+   !!   Ocean Domain : SEA Box for ASSimilation configuration
+   !!---------------------------------------------------------------------
+   !!----------------------------------------------------------------------
+   !!  OPA 9.0 , LOCEAN-IPSL (2005)
+   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
+   !!----------------------------------------------------------------------
+   CHARACTER (len=16), PARAMETER ::   &  !:
+      cp_cfg = "seabass"          !: name of the configuration
+   INTEGER, PARAMETER ::     &  !:
+      jp_cfg =  4   ,        &  !: 4 = 1/4 of a degree
+                                 !: 6  = 1/6 of a degree
+                                 !: 12 = 1/12 of a degree
+      ! data size              !!! * size of all the input files *
+      jpidta  = 30*jp_cfg+1,         &  !: 1st horizontal dimension ( >= jpi )
+      jpjdta  = 20*jp_cfg+1,          &  !: 2nd    "            "    ( >= jpj )
+      jpkdta  = 11,          &  !: number of levels         ( >= jpk )
+
+      ! global domain size     !!! * full domain *
+      jpiglo  = jpidta,      &  !: 1st dimension of global domain --> i
+      jpjglo  = jpjdta,      &  !: 2nd    "                  "    --> j
+      ! zoom starting position
+      jpizoom =   1   ,      &  !: left bottom (i,j) indices of the zoom
+      jpjzoom =   1   ,      &  !: in data indices
+
+      ! Domain characteristics
+      jperio  =     0 ,      &  !: lateral cond. type (between 0 and 6). 0 : closed
+      jpisl   =     0 ,      &  !: number of islands
+      jpnisl  = jpiglo          !: maximum number of points per island
+
+   !!  Values set to pp_not_used indicates that this parameter is not used in THIS config.
+   !!  Values set to pp_to_be_computed  indicates that variables will be computed in domzgr
+   REAL(wp), PARAMETER ::   &  !:
+      pp_not_used       = 999999._wp  , & !: ???
+      pp_to_be_computed =      0._wp      !: ???
+   !!
+   !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 )
+   !!
+   INTEGER,PARAMETER   ::    & !:
+      jphgr_msh = 1            !: type of horizontal mesh
+      !                        ! = 0 curvilinear coordinate on the sphere
+      !                        !     read in coordinate.nc file
+      !                        ! = 1 geographical mesh on the sphere
+      !                        !     with regular grid-spacing
+      !                        ! = 2 f-plane with regular grid-spacing
+      !                        ! = 3 beta-plane with regular grid-spacing
+      !                        ! = 4 Mercator grid with T/U point at the equator  with
+      !                        !     isotropic resolution (e1_deg)
+      !                        ! =5  beta-plane with regular grid-spacing and rotated domain (GYRE configuration)
+
+      !   ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid.
+      !   The mercator grid starts only approximately at gphi0 because
+      !   of the constraint that the equator be a T point.
+   REAL(wp) ,PARAMETER ::     &  !:
+      ppglam0  =   -60.0_wp,   &  !: longitude of first raw and column T-point (jphgr_msh = 1)
+      ppgphi0  =   24.0_wp,   &  !: latitude  of first raw and column T-point (jphgr_msh = 1)
+      !                          ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3)
+      ppe1_deg = 1./jp_cfg ,     &  !: zonal      grid-spacing (degrees)
+      ppe2_deg = 1./jp_cfg ,     &  !: meridional grid-spacing (degrees)
+      !
+      ppe1_m   = 111.319543153E3/jp_cfg,    &  !: zonal      grid-spacing (meters )
+      ppe2_m   = 111.319543153E3/jp_cfg        !: meridional grid-spacing (meters )
+   !!
+   !!  Coefficients associated with the vertical coordinate system
+   !!
+
+   REAL(wp), PARAMETER  ::       &  !:
+      &     ppsur = 0.e0      ,  &  !: Computed in domzgr
+      &     ppa0  = 0.e0      ,  &  !:
+      &     ppa1  = 0.e0      ,  &  !:
+      !
+      &     ppkth =  17.28520372419791_wp   ,  &  !: (non dimensional): gives the approximate
+      !                                           !    layer number above which  stretching will
+      !                                           !    be maximum. Usually of order jpk/2.
+      &     ppacr =  5.000000000000000_wp         !: (non dimensional): stretching factor
+      !                                           !    for the grid. The highest zacr, the smallest
+      !                                           !    the stretching.
+
+   !!
+   !!  If all ppa0 ppa1 and ppsur are specified to 0, then
+   !!  they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr
+   !!
+   REAL(wp), PARAMETER ::        &  !:
+      &     ppdzmin = 303.0e0 ,  &  !: (meters): depth of the top (first) model layer
+      !                             !            depth of second "w" level
+      &     pphmax  = 4195.         !: (meters): maximum depth of the ocean
+      !                             !            depth of the last "w" level
+   LOGICAL,  PARAMETER ::        &
+      &     ldbletanh = .FALSE.                   !: Use/do not use double tanf function for vertical coordinates
+   REAL(wp), PARAMETER ::        &
+      &     ppa2    = pp_not_used           ,  &  !: Double tanh function parameters
+      &     ppkth2  = pp_not_used           ,  &  !:
+      &     ppacr2  = pp_not_used                 !:
+
+   !!---------------------------------------------------------------------
Index: branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/par_oce.F90
===================================================================
--- branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/par_oce.F90	(revision 5192)
+++ branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/par_oce.F90	(revision 5196)
@@ -76,4 +76,9 @@
    !!---------------------------------------------------------------------
 #             include "par_GYRE.h90"
+#elif defined key_seabass
+   !!---------------------------------------------------------------------
+   !!   'key_seabass'      :                  mid-latitude basin : SEABASS
+   !!---------------------------------------------------------------------
+#             include "par_SEABASS.h90"
 #elif defined key_pomme_r025
    !!---------------------------------------------------------------------
