Index: /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
===================================================================
--- /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90	(revision 7061)
+++ /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90	(revision 7062)
@@ -1087,5 +1087,7 @@
             DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd)
                nbr => idx_bdy(ib_bdy)%nbr(ib,igrd)
-               idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) *0.5 )      ! tanh formulation
+               idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) * 0.5 &
+                                            &  *(10./ FLOAT(nn_rimwidth(ib_bdy))) ) ! JGraham:modified for rim=15
+!               idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) *0.5 )      ! tanh formulation
 !               idx_bdy(ib_bdy)%nbw(ib,igrd) = (FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)))**2.  ! quadratic
 !               idx_bdy(ib_bdy)%nbw(ib,igrd) =  FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy))       ! linear
Index: /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
===================================================================
--- /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90	(revision 7061)
+++ /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90	(revision 7062)
@@ -209,5 +209,5 @@
       ptsd(:,:,:,jp_sal) = sf_tsd(jp_sal)%fnow(:,:,:) 
       !
-      IF( ln_sco ) THEN                   !==   s- or mixed s-zps-coordinate   ==!
+      IF( ln_sco .and. 1==0) THEN                   !==   s- or mixed s-zps-coordinate   ==!
          !
          CALL wrk_alloc( jpk, ztp, zsp )
Index: /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/tide.h90
===================================================================
--- /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/tide.h90	(revision 7061)
+++ /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/tide.h90	(revision 7062)
@@ -28,2 +28,16 @@
    Wave(18) = tide(  'L2'     , 0.006694 ,    2   ,  2 , -1 ,  2 , -1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,  215    )
    Wave(19) = tide(  'T2'     , 0.006614 ,    2   ,  2 ,  0 , -1 ,  0 ,  1  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    )
+   !
+   !             !! name_tide , equitide , nutide , nt , ns , nh , np , np1 , shift , nksi , nnu0 , nnu1 , nnu2 , R , formula !!
+   Wave(20) = tide(  'MNS2'   , 0.000000 ,    2   ,  2 , -5 ,  4 ,  1 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    6    )
+   Wave(21) = tide(  'Lam2'   , 0.001760 ,    2   ,  2 , -1 ,  0 ,  1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,   78    )
+   Wave(22) = tide(  'MSN2'   , 0.000000 ,    2   ,  2 ,  1 ,  0 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  2   , 0 ,    6    )
+   Wave(23) = tide(  '2SM2'   , 0.000000 ,    2   ,  2 ,  2 , -2 ,  0 ,  0  ,    0  , -2   ,  2   ,  0   ,  0   , 0 ,   16    )
+   Wave(24) = tide(  'MO3'    , 0.000000 ,    3   ,  3 , -4 ,  1 ,  0 ,  0  ,  +90  ,  2   , -2   ,  0   ,  0   , 0 ,   13    )
+   Wave(25) = tide(  'MK3'    , 0.000000 ,    3   ,  3 , -2 ,  3 ,  0 ,  0  ,  -90  ,  2   , -2   , -1   ,  0   , 0 ,   10    )
+   Wave(26) = tide(  'MN4'    , 0.000000 ,    4   ,  4 , -5 ,  4 ,  1 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    1    )
+   Wave(27) = tide(  'MS4'    , 0.000000 ,    4   ,  4 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    2    )
+   Wave(28) = tide(  'M6'     , 0.000000 ,    6   ,  6 , -6 ,  6 ,  0 ,  0  ,    0  ,  6   , -6   ,  0   ,  0   , 0 ,    4    )
+   Wave(29) = tide(  '2MS6'   , 0.000000 ,    6   ,  6 , -4 ,  4 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    6    )
+   Wave(30) = tide(  '2MK6'   , 0.000000 ,    6   ,  6 , -4 ,  6 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   , -2   , 0 ,    5    )
+   Wave(31) = tide(  '3M2S2'  , 0.000000 ,    2   , 2  , -6 ,  6 ,  0 ,  0  ,    0  ,  6   , -6   ,  0   ,  0   , 0 ,   12    )
Index: /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/tide_mod.F90
===================================================================
--- /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/tide_mod.F90	(revision 7061)
+++ /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/tide_mod.F90	(revision 7062)
@@ -16,8 +16,8 @@
    PUBLIC   tide_init_Wave   ! called by tideini and diaharm modules
 
-   INTEGER, PUBLIC, PARAMETER ::   jpmax_harmo = 19   !: maximum number of harmonic
+   INTEGER, PUBLIC, PARAMETER ::   jpmax_harmo = 31   !: maximum number of harmonic
 
    TYPE, PUBLIC ::    tide
-      CHARACTER(LEN=4) ::   cname_tide
+      CHARACTER(LEN=5) ::   cname_tide
       REAL(wp)         ::   equitide
       INTEGER          ::   nutide
Index: /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
===================================================================
--- /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 7061)
+++ /branches/UKMO/AMM15_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 7062)
@@ -58,4 +58,5 @@
 
    REAL(wp) ::   rbcp   ! Brown & Campana parameters for semi-implicit hpg
+   INTEGER  ::   warn_1, warn_2   ! indicators for warning statement
 
    !! * Substitutions
@@ -93,6 +94,6 @@
       INTEGER, INTENT(in) ::   kt    ! ocean time-step index
       !!
-      INTEGER  ::   jk, jn    ! dummy loop indices
-      REAL(wp) ::   zfact     ! local scalars
+      INTEGER  ::   jk, jn, ji, jj     ! dummy loop indices
+      REAL(wp) ::   zfact, zfreeze     ! local scalars
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds
       !!----------------------------------------------------------------------
@@ -120,5 +121,34 @@
       IF( lk_bdy )   CALL bdy_tra( kt )  ! BDY open boundaries
 #endif
- 
+
+#if ( ! defined key_lim3 && ! defined key_lim2 && ! key_cice )
+      IF ( kt == nit000 ) warn_1=0
+      warn_2=0
+      DO jk = 1, jpkm1
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               IF ( tsa(ji,jj,jk,jp_tem) .lt. 0.0 ) THEN
+                  ! calculate freezing point
+                  zfreeze = ( -0.0575_wp + 1.710523E-3 * Sqrt(Abs(tsn(ji,jj,jk,jp_sal)))   & 
+                            - 2.154996E-4 * tsn(ji,jj,jk,jp_sal) ) * tsn(ji,jj,jk,jp_sal) - 7.53E-4 * ( 10.0_wp + fsdept(ji,jj,jk) )
+                  IF ( tsa(ji,jj,jk,jp_tem) .lt. zfreeze ) THEN
+                     tsa(ji,jj,jk,jp_tem)=zfreeze
+                     warn_2=1
+                  ENDIF
+               ENDIF
+            END DO
+         END DO
+      END DO
+      CALL mpp_max(warn_1)
+      CALL mpp_max(warn_2)
+      IF ( (warn_1 == 0) .and. (warn_2 /= 0) ) THEN
+         IF(lwp) THEN
+            CALL ctl_warn( ' Temperatures dropping below freezing point, ', &
+                      &    ' being forced to freezing point, no longer conservative' ) 
+         ENDIF
+         warn_1=1
+      ENDIF
+#endif
+
       ! set time step size (Euler/Leapfrog)
       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dtra(:) =     rdttra(:)      ! at nit000             (Euler)
