New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 14758 – NEMO

Changeset 14758


Ignore:
Timestamp:
2021-04-27T21:57:06+02:00 (3 years ago)
Author:
smueller
Message:

Upgrade of a range of local arrays to module arrays and removal of halo regions from a few local arrays (ticket #2353)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/OCE/ZDF/zdfosm.F90

    r14750 r14758  
    8383   PUBLIC   ln_osm_mle    ! logical needed by tra_mle_init in tramle.F90 
    8484 
     85   ! Scales 
     86   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: swth0     ! Surface heat flux (Kinematic) 
     87   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: sws0      ! Surface freshwater flux 
     88   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: swb0      ! Surface buoyancy flux 
     89   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: suw0      ! Surface u-momentum flux 
     90   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: sustar    ! Friction velocity 
     91   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: scos_wind ! Cos angle of surface stress 
     92   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: ssin_wind ! Sin angle of surface stress 
     93   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: swthav    ! Heat flux - bl average 
     94   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: swsav     ! Freshwater flux - bl average 
     95   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: swbav     ! Buoyancy flux - bl average 
     96   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: sustke    ! Surface Stokes drift 
     97   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: dstokes   ! Penetration depth of the Stokes drift 
     98   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: swstrl    ! Langmuir velocity scale 
     99   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: swstrc    ! Convective velocity scale 
     100   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: sla       ! Trubulent Langmuir number 
     101   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: svstr     ! Velocity scale that tends to sustar for large Langmuir number 
     102   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: shol      ! Stability parameter for boundary layer 
     103 
    85104   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ghamu    !: non-local u-momentum flux 
    86105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ghamv    !: non-local v-momentum flux 
     
    91110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   dh       ! depth of pycnocline 
    92111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   hml      ! ML depth 
    93    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   dstokes  !: penetration depth of the Stokes drift. 
    94112 
    95113   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)           ::   r1_ft    ! inverse of the modified Coriolis parameter at t-pts 
     
    179197      !!                 ***  FUNCTION zdf_osm_alloc  *** 
    180198      !!---------------------------------------------------------------------- 
     199      ! 
     200      INTEGER ::   ierr 
     201      ! 
     202      ALLOCATE( swth0(jpi,jpj),  sws0(jpi,jpj),      swb0(jpi,jpj),      suw0(jpi,jpj),     & 
     203         &      sustar(jpi,jpj), scos_wind(jpi,jpj), ssin_wind(jpi,jpj), swthav(jpi,jpj),   & 
     204         &      swsav(jpi,jpj),  swbav(jpi,jpj),     sustke(jpi,jpj),    swstrl(jpi,jpj),   & 
     205         &      swstrc(jpi,jpj), sla(jpi,jpj),       svstr(jpi,jpj),     shol(jpi,jpj),     & 
     206         &      STAT=ierr ) 
     207      zdf_osm_alloc = ierr 
     208      ! 
    181209      ALLOCATE( ghamu(jpi,jpj,jpk), ghamv(jpi,jpj,jpk), ghamt(jpi,jpj,jpk),ghams(jpi,jpj,jpk), & 
    182210         &       hbl(jpi,jpj), dh(jpi,jpj), hml(jpi,jpj), dstokes(jpi, jpj), & 
    183          &       etmean(jpi,jpj,jpk), STAT= zdf_osm_alloc ) 
    184  
     211         &       etmean(jpi,jpj,jpk), STAT=ierr ) 
     212      zdf_osm_alloc = zdf_osm_alloc + ierr 
     213      ! 
    185214      ALLOCATE(  hmle(jpi,jpj), r1_ft(jpi,jpj), dbdx_mle(jpi,jpj), dbdy_mle(jpi,jpj), & 
    186          &       mld_prof(jpi,jpj), STAT= zdf_osm_alloc ) 
    187  
     215         &       mld_prof(jpi,jpj), STAT=ierr ) 
     216      zdf_osm_alloc = zdf_osm_alloc + ierr 
     217      ! 
    188218      CALL mpp_sum ( 'zdfosm', zdf_osm_alloc ) 
    189219      IF( zdf_osm_alloc /= 0 )   CALL ctl_warn('zdf_osm_alloc: failed to allocate zdf_osm arrays') 
    190  
     220      ! 
    191221   END FUNCTION zdf_osm_alloc 
    192222 
     
    249279      REAL(wp) :: zt,zs,zu,zv,zrh               ! variables used in constructing averages 
    250280      ! Scales 
    251       REAL(wp), DIMENSION(jpi,jpj) :: zrad0     ! Surface solar temperature flux (deg m/s) 
    252       REAL(wp), DIMENSION(jpi,jpj) :: zradh     ! Radiative flux at bl base (Buoyancy units) 
    253       REAL(wp)   :: zradav                      ! Radiative flux, bl average (Buoyancy Units) 
    254       REAL(wp), DIMENSION(jpi,jpj) :: zustar    ! friction velocity 
    255       REAL(wp), DIMENSION(jpi,jpj) :: zwstrl    ! Langmuir velocity scale 
    256       REAL(wp), DIMENSION(jpi,jpj) :: zvstr     ! Velocity scale that ends to zustar for large Langmuir number. 
    257       REAL(wp), DIMENSION(jpi,jpj) :: zwstrc    ! Convective velocity scale 
    258       REAL(wp), DIMENSION(jpi,jpj) :: zuw0      ! Surface u-momentum flux 
    259       REAL(wp)   :: zvw0                        ! Surface v-momentum flux 
    260       REAL(wp), DIMENSION(jpi,jpj) :: zwth0     ! Surface heat flux (Kinematic) 
    261       REAL(wp), DIMENSION(jpi,jpj) :: zws0      ! Surface freshwater flux 
    262       REAL(wp), DIMENSION(jpi,jpj) :: zwb0      ! Surface buoyancy flux 
    263       REAL(wp), DIMENSION(jpi,jpj) :: zwb0tot   ! Total surface buoyancy flux including insolation 
    264       REAL(wp), DIMENSION(jpi,jpj) :: zwthav    ! Heat flux - bl average 
    265       REAL(wp), DIMENSION(jpi,jpj) :: zwsav     ! freshwater flux - bl average 
    266       REAL(wp), DIMENSION(jpi,jpj) :: zwbav     ! Buoyancy flux - bl average 
     281      REAL(wp), DIMENSION(A2D(0)) ::   zrad0     ! Surface solar temperature flux (deg m/s) 
     282      REAL(wp), DIMENSION(A2D(0)) ::   zradh     ! Radiative flux at bl base (Buoyancy units) 
     283      REAL(wp)                    ::   zradav    ! Radiative flux, bl average (Buoyancy Units) 
     284      REAL(wp)                    ::   zvw0      ! Surface v-momentum flux 
     285      REAL(wp), DIMENSION(A2D(0)) ::   zwb0tot   ! Total surface buoyancy flux including insolation 
    267286      REAL(wp), DIMENSION(jpi,jpj) :: zwb_ent   ! Buoyancy entrainment flux 
    268287      REAL(wp), DIMENSION(jpi,jpj) :: zwb_min 
     
    274293      REAL(wp), DIMENSION(jpi,jpj) :: zvel_mle  ! velocity scale for dhdt with stable ML and FK 
    275294 
    276       REAL(wp), DIMENSION(jpi,jpj) :: zustke    ! Surface Stokes drift 
    277       REAL(wp), DIMENSION(jpi,jpj) :: zla       ! Trubulent Langmuir number 
    278       REAL(wp), DIMENSION(jpi,jpj) :: zcos_wind ! Cos angle of surface stress 
    279       REAL(wp), DIMENSION(jpi,jpj) :: zsin_wind ! Sin angle of surface stress 
    280       REAL(wp), DIMENSION(jpi,jpj) :: zhol      ! Stability parameter for boundary layer 
    281295      LOGICAL, DIMENSION(jpi,jpj)  :: lconv     ! unstable/stable bl 
    282296      LOGICAL, DIMENSION(jpi,jpj)  :: lshear    ! Shear layers 
     
    349363      IF( ln_timing ) CALL timing_start('zdf_osm') 
    350364      ibld(:,:)   = 0     ; imld(:,:)  = 0 
    351       zrad0(:,:)  = zlarge ; zradh(:,:)   = zlarge ; zustar(:,:)    = zlarge 
    352       zwstrl(:,:) = zlarge ; zvstr(:,:)   = zlarge ; zwstrc(:,:)     = zlarge ; zuw0(:,:)      = zlarge 
    353       zwth0(:,:)  = zlarge ; zws0(:,:)    = zlarge ; zwb0(:,:)       = zlarge 
    354       zwthav(:,:) = zlarge ; zwsav(:,:)   = zlarge ; zwbav(:,:)      = zlarge ; zwb_ent(:,:)   = zlarge 
    355       zustke(:,:) = zlarge ; zla(:,:)     = zlarge ; zcos_wind(:,:)  = zlarge ; zsin_wind(:,:) = zlarge 
    356       zhol(:,:)   = zlarge ; zwb0tot(:,:) = zlarge ; zalpha_pyc(:,:) = zlarge 
     365      sustar(:,:) = zlarge 
     366      swstrl(:,:) = zlarge ; svstr(:,:)      = zlarge ; swstrc(:,:)     = zlarge ; suw0(:,:)      = zlarge 
     367      swth0(:,:)  = zlarge ; sws0(:,:)       = zlarge ; swb0(:,:)       = zlarge 
     368      swthav(:,:) = zlarge ; swsav(:,:)      = zlarge ; swbav(:,:)      = zlarge ; zwb_ent(:,:)   = zlarge 
     369      sustke(:,:) = zlarge ; sla(:,:)        = zlarge ; scos_wind(:,:)  = zlarge ; ssin_wind(:,:) = zlarge 
     370      shol(:,:)  = zlarge ; zalpha_pyc(:,:) = zlarge 
    357371      lconv(:,:)  = .FALSE.; lpyc(:,:) = .FALSE. ; lflux(:,:) = .FALSE. ;  lmle(:,:) = .FALSE. 
    358372      ! mixed layer 
     
    428442            &     ( zz0 * ( 1.0_wp - EXP( -hbl(ji,jj)/rn_si0 ) ) * rn_si0 +   & 
    429443            &       zz1 * ( 1.0_wp - EXP( -hbl(ji,jj)/rn_si1 ) ) * rn_si1 ) / hbl(ji,jj) 
    430          zwth0(ji,jj)  = - qns(ji,jj) * r1_rho0_rcp * tmask(ji,jj,1)       ! Upwards surface Temperature flux for non-local term 
    431          zwthav(ji,jj) = 0.5_wp * zwth0(ji,jj) -                       &   ! Turbulent heat flux averaged over depth of OSBL 
     444         swth0(ji,jj)  = - qns(ji,jj) * r1_rho0_rcp * tmask(ji,jj,1)       ! Upwards surface Temperature flux for non-local term 
     445         swthav(ji,jj) = 0.5_wp * swth0(ji,jj) -                       &   ! Turbulent heat flux averaged over depth of OSBL 
    432446            &            ( 0.5_wp * ( zrad0(ji,jj) + zradh(ji,jj) ) - zradav ) 
    433447      END_2D 
    434448      DO_2D( 0, 0, 0, 0 ) 
    435          zws0(ji,jj)    = -1.0_wp *                                     &   ! Upwards surface salinity flux for non-local term 
     449         sws0(ji,jj)    = -1.0_wp *                                     &   ! Upwards surface salinity flux for non-local term 
    436450            &          ( ( emp(ji,jj) - rnf(ji,jj) ) * ts(ji,jj,1,jp_sal,Kmm) + sfx(ji,jj) ) * r1_rho0 * tmask(ji,jj,1) 
    437451         zthermal       = rab_n(ji,jj,1,jp_tem) 
    438452         zbeta          = rab_n(ji,jj,1,jp_sal) 
    439          zwb0(ji,jj)    = grav * zthermal * zwth0(ji,jj) -              &   ! Non radiative upwards surface buoyancy flux 
    440             &             grav * zbeta * zws0(ji,jj) 
    441          zwb0tot(ji,jj) = zwb0(ji,jj) - grav * zthermal *               &   ! Total upwards surface buoyancy flux 
     453         swb0(ji,jj)    = grav * zthermal * swth0(ji,jj) -              &   ! Non radiative upwards surface buoyancy flux 
     454            &             grav * zbeta * sws0(ji,jj) 
     455         zwb0tot(ji,jj) = swb0(ji,jj) - grav * zthermal *               &   ! Total upwards surface buoyancy flux 
    442456            &                           ( zrad0(ji,jj) - zradh(ji,jj) ) 
    443          zwsav(ji,jj)   = 0.5 * zws0(ji,jj)                                 ! Turbulent salinity flux averaged over depth of the OBSL 
    444          zwbav(ji,jj)   = grav  * zthermal * zwthav(ji,jj) -            &   ! Turbulent buoyancy flux averaged over the depth of the 
    445             &             grav  * zbeta * zwsav(ji,jj)                      ! OBSBL 
     457         swsav(ji,jj)   = 0.5 * sws0(ji,jj)                                 ! Turbulent salinity flux averaged over depth of the OBSL 
     458         swbav(ji,jj)   = grav  * zthermal * swthav(ji,jj) -            &   ! Turbulent buoyancy flux averaged over the depth of the 
     459            &             grav  * zbeta * swsav(ji,jj)                      ! OBSBL 
    446460      END_2D 
    447461      DO_2D( 0, 0, 0, 0 ) 
    448          zuw0(ji,jj)    = - 0.5 * (utau(ji-1,jj) + utau(ji,jj)) *       &   ! Surface upward velocity fluxes 
     462         suw0(ji,jj)    = - 0.5 * (utau(ji-1,jj) + utau(ji,jj)) *       &   ! Surface upward velocity fluxes 
    449463            &             r1_rho0 * tmask(ji,jj,1) 
    450464         zvw0           = - 0.5 * (vtau(ji,jj-1) + vtau(ji,jj)) * r1_rho0 * tmask(ji,jj,1) 
    451          zustar(ji,jj)  = MAX( SQRT( SQRT( zuw0(ji,jj) *                &   ! Friction velocity (zustar), at T-point : LMD94 eq. 2 
    452             &                              zuw0(ji,jj) + zvw0 * zvw0 ) ), 1.0e-8_wp ) 
    453          zcos_wind(ji,jj) = -zuw0(ji,jj) / ( zustar(ji,jj) * zustar(ji,jj) ) 
    454          zsin_wind(ji,jj) = -zvw0        / ( zustar(ji,jj) * zustar(ji,jj) ) 
     465         sustar(ji,jj)  = MAX( SQRT( SQRT( suw0(ji,jj) *                &   ! Friction velocity (sustar), at T-point : LMD94 eq. 2 
     466            &                              suw0(ji,jj) + zvw0 * zvw0 ) ), 1.0e-8_wp ) 
     467         scos_wind(ji,jj) = -suw0(ji,jj) / ( sustar(ji,jj) * sustar(ji,jj) ) 
     468         ssin_wind(ji,jj) = -zvw0        / ( sustar(ji,jj) * sustar(ji,jj) ) 
    455469#ifdef key_osm_debug 
    456470         IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
     
    462476               & 'after calculating fluxes:  hbl=', hbl(ji,jj),' zthermal=',zthermal, ' zbeta=', zbeta,& 
    463477               & ' zrad0=', zrad0(ji,jj),' zradh=', zradh(ji,jj), ' zradav=', zradav,                  & 
    464                & ' zwth0=', zwth0(ji,jj), '  zwthav=', zwthav(ji,jj), ' zws0=', zws0(ji,jj),           & 
    465                & ' zwb0=', zwb0(ji,jj), ' zwb0tot=', zwb0tot(ji,jj), ' zwb0tot_in hbl=', zwb0tot(ji,jj) + grav * zthermal * zradh(ji,jj),& 
    466                & ' zwbav=', zwbav(ji,jj) 
     478               & ' swth0=', swth0(ji,jj), '  swthav=', swthav(ji,jj), ' sws0=', sws0(ji,jj),           & 
     479               & ' swb0=', swb0(ji,jj), ' zwb0tot=', zwb0tot(ji,jj), ' zwb0tot_in hbl=', zwb0tot(ji,jj) + grav * zthermal * zradh(ji,jj),& 
     480               & ' swbav=', swbav(ji,jj) 
    467481            FLUSH(narea+100) 
    468482         END IF 
    469483#endif 
    470484      END_2D 
    471       ! Calculate Stokes drift in direction of wind (zustke) and Stokes penetration depth (dstokes) 
     485      ! Calculate Stokes drift in direction of wind (sustke) and Stokes penetration depth (dstokes) 
    472486      SELECT CASE (nn_osm_wave) 
    473487         ! Assume constant La#=0.3 
    474488      CASE(0) 
    475489         DO_2D( 0, 0, 0, 0 ) 
    476             zus_x = zcos_wind(ji,jj) * zustar(ji,jj) / 0.3**2 
    477             zus_y = zsin_wind(ji,jj) * zustar(ji,jj) / 0.3**2 
     490            zus_x = scos_wind(ji,jj) * sustar(ji,jj) / 0.3**2 
     491            zus_y = ssin_wind(ji,jj) * sustar(ji,jj) / 0.3**2 
    478492            ! Linearly 
    479             zustke(ji,jj) = MAX ( SQRT( zus_x*zus_x + zus_y*zus_y), 1.0e-8 ) 
     493            sustke(ji,jj) = MAX ( SQRT( zus_x*zus_x + zus_y*zus_y), 1.0e-8 ) 
    480494            dstokes(ji,jj) = rn_osm_dstokes 
    481495         END_2D 
     
    484498         DO_2D( 0, 0, 0, 0 ) 
    485499            ! Use wind speed wndm included in sbc_oce module 
    486             zustke(ji,jj) =  MAX ( 0.016 * wndm(ji,jj), 1.0e-8 ) 
     500            sustke(ji,jj) =  MAX ( 0.016 * wndm(ji,jj), 1.0e-8 ) 
    487501            dstokes(ji,jj) = MAX ( 0.12 * wndm(ji,jj)**2 / grav, 5.e-1) 
    488502         END_2D 
     
    495509               ! Use  wave fields 
    496510               zabsstke = SQRT(ut0sd(ji,jj)**2 + vt0sd(ji,jj)**2) 
    497                zustke(ji,jj) = MAX ( ( zcos_wind(ji,jj) * ut0sd(ji,jj) + zsin_wind(ji,jj)  * vt0sd(ji,jj) ), 1.0e-8) 
     511               sustke(ji,jj) = MAX ( ( scos_wind(ji,jj) * ut0sd(ji,jj) + ssin_wind(ji,jj)  * vt0sd(ji,jj) ), 1.0e-8) 
    498512               dstokes(ji,jj) = MAX (zfac * hsw(ji,jj)*hsw(ji,jj) / ( MAX(zabsstke * wmp(ji,jj), 1.0e-7 ) ), 5.0e-1) 
    499513            ELSE 
    500514               ! Assume masking issue (e.g. ice in ECMWF reanalysis but not in model run) 
    501515               ! .. so default to Pierson-Moskowitz 
    502                zustke(ji,jj) = MAX ( 0.016 * wndm(ji,jj), 1.0e-8 ) 
     516               sustke(ji,jj) = MAX ( 0.016 * wndm(ji,jj), 1.0e-8 ) 
    503517               dstokes(ji,jj) = MAX ( 0.12 * wndm(ji,jj)**2 / grav, 5.e-1) 
    504518            END IF 
     
    508522      IF(narea==nn_narea_db)THEN 
    509523         WRITE(narea+100,'(2(a,g11.3))') & 
    510             & 'Before reduction:  zustke=', zustke(iloc_db,jloc_db),' dstokes =',dstokes(iloc_db,jloc_db) 
     524            & 'Before reduction:  sustke=', sustke(iloc_db,jloc_db),' dstokes =',dstokes(iloc_db,jloc_db) 
    511525         FLUSH(narea+100) 
    512526      END IF 
     
    516530         ! Reduce both Stokes drift and its depth scale by ocean fraction to represent sheltering by ice 
    517531         DO_2D( 0, 0, 0, 0 ) 
    518             zustke(ji,jj) = zustke(ji,jj) * (1.0_wp - fr_i(ji,jj)) 
     532            sustke(ji,jj) = sustke(ji,jj) * (1.0_wp - fr_i(ji,jj)) 
    519533            dstokes(ji,jj) = dstokes(ji,jj) * (1.0_wp - fr_i(ji,jj)) 
    520534         END_2D 
     
    529543         ! around the mean wind. The effect of this adjustment needs to be tested. 
    530544         IF(nn_osm_wave > 0) THEN 
    531             zustke(2:jpim1,2:jpjm1) = rn_zdfosm_adjust_sd * zustke(2:jpim1,2:jpjm1) 
     545            sustke(A2D(0)) = rn_zdfosm_adjust_sd * sustke(A2D(0)) 
    532546         END IF 
    533547      CASE(1) 
     
    542556            zsqrt_depth = SQRT(z2k_times_thickness) 
    543557            zexp_depth  = EXP(-z2k_times_thickness) 
    544             zustke(ji,jj) = zustke(ji,jj) * (1.0_wp - zexp_depth  & 
     558            sustke(ji,jj) = sustke(ji,jj) * (1.0_wp - zexp_depth  & 
    545559               &              - z_two_thirds * ( zsqrtpi*zsqrt_depth*z2k_times_thickness * ERFC(zsqrt_depth) & 
    546560               &              + 1.0_wp - (1.0_wp + z2k_times_thickness)*zexp_depth ) ) / z2k_times_thickness 
     
    567581            zf = z2k_times_thickness*(1.0_wp/zexperfc - 1.0_wp) 
    568582            dstokes(ji,jj) = 5.97 * zf * dstokes(ji,jj) 
    569             zustke(ji,jj) = zustke(ji,jj) * EXP(z2k_times_thickness * ( 1.0_wp / (2. * zf) - 1.0_wp )) * ( 1.0_wp - zexperfc) 
     583            sustke(ji,jj) = sustke(ji,jj) * EXP(z2k_times_thickness * ( 1.0_wp / (2. * zf) - 1.0_wp )) * ( 1.0_wp - zexperfc) 
    570584         END_2D 
    571585      END SELECT 
    572586 
    573       ! Langmuir velocity scale (zwstrl), La # (zla) 
    574       ! mixed scale (zvstr), convective velocity scale (zwstrc) 
     587      ! Langmuir velocity scale (swstrl), La # (sla) 
     588      ! mixed scale (svstr), convective velocity scale (swstrc) 
    575589      DO_2D( 0, 0, 0, 0 ) 
    576          ! Langmuir velocity scale (zwstrl), at T-point 
    577          zwstrl(ji,jj) = ( zustar(ji,jj) * zustar(ji,jj) * zustke(ji,jj) )**pthird 
    578          zla(ji,jj) = MAX(MIN(SQRT ( zustar(ji,jj) / ( zwstrl(ji,jj) + epsln ) )**3, 4.0), 0.2) 
    579          IF(zla(ji,jj) > 0.45) dstokes(ji,jj) = MIN(dstokes(ji,jj), 0.5_wp*hbl(ji,jj)) 
    580          ! Velocity scale that tends to zustar for large Langmuir numbers 
    581          zvstr(ji,jj) = ( zwstrl(ji,jj)**3  + & 
    582             & ( 1.0 - EXP( -0.5 * zla(ji,jj)**2 ) ) * zustar(ji,jj) * zustar(ji,jj) * zustar(ji,jj) )**pthird 
     590         ! Langmuir velocity scale (swstrl), at T-point 
     591         swstrl(ji,jj) = ( sustar(ji,jj) * sustar(ji,jj) * sustke(ji,jj) )**pthird 
     592         sla(ji,jj) = MAX(MIN(SQRT ( sustar(ji,jj) / ( swstrl(ji,jj) + epsln ) )**3, 4.0), 0.2) 
     593         IF(sla(ji,jj) > 0.45) dstokes(ji,jj) = MIN(dstokes(ji,jj), 0.5_wp*hbl(ji,jj)) 
     594         ! Velocity scale that tends to sustar for large Langmuir numbers 
     595         svstr(ji,jj) = ( swstrl(ji,jj)**3  + & 
     596            & ( 1.0 - EXP( -0.5 * sla(ji,jj)**2 ) ) * sustar(ji,jj) * sustar(ji,jj) * sustar(ji,jj) )**pthird 
    583597         
    584598         ! limit maximum value of Langmuir number as approximate treatment for shear turbulence. 
    585          ! Note zustke and zwstrl are not amended. 
     599         ! Note sustke and swstrl are not amended. 
    586600         ! 
    587          ! get convective velocity (zwstrc), stabilty scale (zhol) and logical conection flag lconv 
    588          IF ( zwbav(ji,jj) > 0.0) THEN 
    589             zwstrc(ji,jj) = ( 2.0 * zwbav(ji,jj) * 0.9 * hbl(ji,jj) )**pthird 
    590             zhol(ji,jj) = -0.9 * hbl(ji,jj) * 2.0 * zwbav(ji,jj) / (zvstr(ji,jj)**3 + epsln ) 
     601         ! get convective velocity (swstrc), stabilty scale (shol) and logical conection flag lconv 
     602         IF ( swbav(ji,jj) > 0.0) THEN 
     603            swstrc(ji,jj) = ( 2.0 * swbav(ji,jj) * 0.9 * hbl(ji,jj) )**pthird 
     604            shol(ji,jj) = -0.9 * hbl(ji,jj) * 2.0 * swbav(ji,jj) / (svstr(ji,jj)**3 + epsln ) 
    591605         ELSE 
    592             zwstrc(ji,jj) = 0.0_wp 
    593             zhol(ji,jj) = -hbl(ji,jj) *  2.0 * zwbav(ji,jj)/ (zvstr(ji,jj)**3  + epsln ) 
     606            swstrc(ji,jj) = 0.0_wp 
     607            shol(ji,jj) = -hbl(ji,jj) *  2.0 * swbav(ji,jj)/ (svstr(ji,jj)**3  + epsln ) 
    594608         ENDIF 
    595609#ifdef key_osm_debug 
    596610         IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    597611            WRITE(narea+100,'(2(a,g11.3),/,3(a,g11.3),/,3(a,g11.3),/)') & 
    598                & 'After reduction: zustke=', zustke(ji,jj), ' dstokes=', dstokes(ji,jj), & 
    599                & ' zustar =', zustar(ji,jj), ' zwstrl=', zwstrl(ji,jj), ' zwstrc=', zwstrc(ji,jj),& 
    600                & ' zhol=', zhol(ji,jj), ' zla=', zla(ji,jj), ' zvstr=', zvstr(ji,jj) 
     612               & 'After reduction: sustke=', sustke(ji,jj), ' dstokes=', dstokes(ji,jj), & 
     613               & ' zustar =', sustar(ji,jj), ' swstrl=', swstrl(ji,jj), ' swstrc=', swstrc(ji,jj),& 
     614               & ' shol=', shol(ji,jj), ' sla=', sla(ji,jj), ' svstr=', svstr(ji,jj) 
    601615            FLUSH(narea+100) 
    602616         END IF 
     
    675689#endif 
    676690      ! Velocity components in frame aligned with surface stress 
    677       CALL zdf_osm_velocity_rotation( zu_ml,  zv_ml,  zcos_wind, zsin_wind ) 
    678       CALL zdf_osm_velocity_rotation( zdu_ml, zdv_ml, zcos_wind, zsin_wind ) 
    679       CALL zdf_osm_velocity_rotation( zu_bl,  zv_bl,  zcos_wind, zsin_wind ) 
    680       CALL zdf_osm_velocity_rotation( zdu_bl, zdv_bl, zcos_wind, zsin_wind ) 
     691      CALL zdf_osm_velocity_rotation( zu_ml,  zv_ml  ) 
     692      CALL zdf_osm_velocity_rotation( zdu_ml, zdv_ml ) 
     693      CALL zdf_osm_velocity_rotation( zu_bl,  zv_bl  ) 
     694      CALL zdf_osm_velocity_rotation( zdu_bl, zdv_bl ) 
    681695#ifdef key_osm_debug 
    682696      IF(narea==nn_narea_db) THEN 
     
    911925#endif 
    912926      ! Rotate mean currents and changes onto wind aligned co-ordinates 
    913       CALL zdf_osm_velocity_rotation( zu_ml,  zv_ml,  zcos_wind, zsin_wind ) 
    914       CALL zdf_osm_velocity_rotation( zdu_ml, zdv_ml, zcos_wind, zsin_wind ) 
    915       CALL zdf_osm_velocity_rotation( zu_bl,  zv_bl,  zcos_wind, zsin_wind ) 
    916       CALL zdf_osm_velocity_rotation( zdu_bl, zdv_bl, zcos_wind, zsin_wind ) 
     927      CALL zdf_osm_velocity_rotation( zu_ml,  zv_ml  ) 
     928      CALL zdf_osm_velocity_rotation( zdu_ml, zdv_ml ) 
     929      CALL zdf_osm_velocity_rotation( zu_bl,  zv_bl  ) 
     930      CALL zdf_osm_velocity_rotation( zdu_bl, zdv_bl ) 
    917931#ifdef key_osm_debug 
    918932      IF(narea==nn_narea_db) THEN 
     
    966980      ! Calculate non-gradient components of the flux-gradient relationships 
    967981      ! -------------------------------------------------------------------- 
    968       CALL zdf_osm_fgr_terms( Kmm, ibld, imld, jp_ext, lconv, lpyc, j_ddh, zhbl, zhml, zdh, zdhdt, zhol, zshear,             & 
    969          &                    zustar, zwstrl, zvstr, zwstrc, zuw0, zwth0, zws0, zwb0, zwthav, zwsav, zwbav, zustke, zla,     & 
    970          &                    zdt_bl, zds_bl, zdb_bl, zdu_bl, zdv_bl, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml,                & 
     982      CALL zdf_osm_fgr_terms( Kmm, ibld, imld, jp_ext, lconv, lpyc, j_ddh, zhbl, zhml, zdh, zdhdt, zshear,          & 
     983         &                    zdt_bl, zds_bl, zdb_bl, zdu_bl, zdv_bl, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml,       & 
    971984         &                    zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext, zdbdz_pyc, zalpha_pyc, zdiffut, zviscos ) 
    972985 
     
    979992 
    980993      ! Rotate non-gradient velocity terms back to model reference frame 
    981       CALL zdf_osm_velocity_rotation( ghamu, ghamv, zcos_wind, zsin_wind, .FALSE., 2, ibld ) 
     994      CALL zdf_osm_velocity_rotation( ghamu, ghamv, .FALSE., 2, ibld ) 
    982995 
    983996      ! KPP-style Ri# mixing 
     
    10421055               DO jk = 1, ibld(ji,jj) 
    10431056                  znd = gdepw(ji,jj,jk,Kmm) / MAX(zhbl(ji,jj),epsln) 
    1044                   ghamt(ji,jj,jk) = ghamt(ji,jj,jk) - ( zwth0(ji,jj) - zrad0(ji,jj) + zradh(ji,jj) ) * ( 1.0 - znd ) 
    1045                   ghams(ji,jj,jk) = ghams(ji,jj,jk) - zws0(ji,jj) * ( 1.0 - znd ) 
     1057                  ghamt(ji,jj,jk) = ghamt(ji,jj,jk) - ( swth0(ji,jj) - zrad0(ji,jj) + zradh(ji,jj) ) * ( 1.0 - znd ) 
     1058                  ghams(ji,jj,jk) = ghams(ji,jj,jk) - sws0(ji,jj) * ( 1.0 - znd ) 
    10461059               END DO 
    10471060               DO jk = 1, mld_prof(ji,jj) 
    10481061                  znd = gdepw(ji,jj,jk,Kmm) / MAX(zhmle(ji,jj),epsln) 
    1049                   ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + ( zwth0(ji,jj) - zrad0(ji,jj) + zradh(ji,jj) ) * ( 1.0 - znd ) 
    1050                   ghams(ji,jj,jk) = ghams(ji,jj,jk) + zws0(ji,jj) * ( 1.0 -znd ) 
     1062                  ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + ( swth0(ji,jj) - zrad0(ji,jj) + zradh(ji,jj) ) * ( 1.0 - znd ) 
     1063                  ghams(ji,jj,jk) = ghams(ji,jj,jk) + sws0(ji,jj) * ( 1.0 -znd ) 
    10511064               END DO 
    10521065               ! Viscosity for MLEs 
     
    11261139            ! Stokes drift set by assumimg onstant La#=0.3(=0)  or Pierson-Moskovitz spectrum (=1). 
    11271140         CASE(0:1) 
    1128             IF ( iom_use("us_x") ) CALL iom_put( "us_x", tmask(:,:,1)*zustke*zcos_wind )   ! x surface Stokes drift 
    1129             IF ( iom_use("us_y") ) CALL iom_put( "us_y", tmask(:,:,1)*zustke*zsin_wind )  ! y surface Stokes drift 
    1130             IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*zustar**2*zustke ) 
     1141            IF ( iom_use("us_x") ) CALL iom_put( "us_x", tmask(:,:,1)*sustke*scos_wind )   ! x surface Stokes drift 
     1142            IF ( iom_use("us_y") ) CALL iom_put( "us_y", tmask(:,:,1)*sustke*ssin_wind )  ! y surface Stokes drift 
     1143            IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*sustar**2*sustke ) 
    11311144            ! Stokes drift read in from sbcwave  (=2). 
    11321145         CASE(2:3) 
     
    11381151            IF ( iom_use("hsw_NP") ) CALL iom_put( "hsw_NP", (0.22/grav)*wndm**2*tmask(:,:,1) )                   ! significant wave height from NP spectrum 
    11391152            IF ( iom_use("wndm") ) CALL iom_put( "wndm", wndm*tmask(:,:,1) )                   ! U_10 
    1140             IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*zustar**2* & 
     1153            IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*sustar**2* & 
    11411154               & SQRT(ut0sd**2 + vt0sd**2 ) ) 
    11421155         END SELECT 
     
    11451158         IF ( iom_use("ghamu") ) CALL iom_put( "ghamu", umask*ghamu )            ! <uw_NL> 
    11461159         IF ( iom_use("ghamv") ) CALL iom_put( "ghamv", vmask*ghamv )            ! <vw_NL> 
    1147          IF ( iom_use("zwth0") ) CALL iom_put( "zwth0", tmask(:,:,1)*zwth0 )            ! <Tw_0> 
    1148          IF ( iom_use("zws0") ) CALL iom_put( "zws0", tmask(:,:,1)*zws0 )                ! <Sw_0> 
    1149          IF ( iom_use("zwb0") ) CALL iom_put( "zwb0", tmask(:,:,1)*zwb0 )                ! <Sw_0> 
    1150          IF ( iom_use("zwbav") ) CALL iom_put( "zwbav", tmask(:,:,1)*zwth0 )     ! upward BL-avged turb buoyancy flux 
     1160         IF ( iom_use("zwth0") ) CALL iom_put( "zwth0", tmask(:,:,1)*swth0 )            ! <Tw_0> 
     1161         IF ( iom_use("zws0") ) CALL iom_put( "zws0", tmask(:,:,1)*sws0 )                ! <Sw_0> 
     1162         IF ( iom_use("zwb0") ) CALL iom_put( "zwb0", tmask(:,:,1)*swb0 )                ! <Sw_0> 
     1163         IF ( iom_use("zwbav") ) CALL iom_put( "zwbav", tmask(:,:,1)*swth0 )     ! upward BL-avged turb buoyancy flux 
    11511164         IF ( iom_use("hbl") ) CALL iom_put( "hbl", tmask(:,:,1)*hbl )                  ! boundary-layer depth 
    11521165         IF ( iom_use("ibld") ) CALL iom_put( "ibld", tmask(:,:,1)*ibld )               ! boundary-layer max k 
     
    11621175         IF ( iom_use("zdb_ml") ) CALL iom_put( "zdb_ml", tmask(:,:,1)*zdb_ml )           ! db at ml base 
    11631176         IF ( iom_use("dstokes") ) CALL iom_put( "dstokes", tmask(:,:,1)*dstokes )      ! Stokes drift penetration depth 
    1164          IF ( iom_use("zustke") ) CALL iom_put( "zustke", tmask(:,:,1)*zustke )            ! Stokes drift magnitude at T-points 
    1165          IF ( iom_use("zwstrc") ) CALL iom_put( "zwstrc", tmask(:,:,1)*zwstrc )         ! convective velocity scale 
    1166          IF ( iom_use("zwstrl") ) CALL iom_put( "zwstrl", tmask(:,:,1)*zwstrl )         ! Langmuir velocity scale 
    1167          IF ( iom_use("zustar") ) CALL iom_put( "zustar", tmask(:,:,1)*zustar )         ! friction velocity scale 
    1168          IF ( iom_use("zvstr") ) CALL iom_put( "zvstr", tmask(:,:,1)*zvstr )         ! mixed velocity scale 
    1169          IF ( iom_use("zla") ) CALL iom_put( "zla", tmask(:,:,1)*zla )         ! langmuir # 
    1170          IF ( iom_use("wind_power") ) CALL iom_put( "wind_power", 1000.*rho0*tmask(:,:,1)*zustar**3 ) ! BL depth internal to zdf_osm routine 
    1171          IF ( iom_use("wind_wave_power") ) CALL iom_put( "wind_wave_power", 1000.*rho0*tmask(:,:,1)*zustar**2*zustke ) 
     1177         IF ( iom_use("zustke") ) CALL iom_put( "zustke", tmask(:,:,1)*sustke )            ! Stokes drift magnitude at T-points 
     1178         IF ( iom_use("zwstrc") ) CALL iom_put( "zwstrc", tmask(:,:,1)*swstrc )         ! convective velocity scale 
     1179         IF ( iom_use("zwstrl") ) CALL iom_put( "zwstrl", tmask(:,:,1)*swstrl )         ! Langmuir velocity scale 
     1180         IF ( iom_use("zustar") ) CALL iom_put( "zustar", tmask(:,:,1)*sustar )         ! friction velocity scale 
     1181         IF ( iom_use("zvstr") ) CALL iom_put( "zvstr", tmask(:,:,1)*svstr )         ! mixed velocity scale 
     1182         IF ( iom_use("zla") ) CALL iom_put( "zla", tmask(:,:,1)*sla )         ! langmuir # 
     1183         IF ( iom_use("wind_power") ) CALL iom_put( "wind_power", 1000.*rho0*tmask(:,:,1)*sustar**3 ) ! BL depth internal to zdf_osm routine 
     1184         IF ( iom_use("wind_wave_power") ) CALL iom_put( "wind_wave_power", 1000.*rho0*tmask(:,:,1)*sustar**2*sustke ) 
    11721185         IF ( iom_use("zhbl") ) CALL iom_put( "zhbl", tmask(:,:,1)*zhbl )               ! BL depth internal to zdf_osm routine 
    11731186         IF ( iom_use("zhml") ) CALL iom_put( "zhml", tmask(:,:,1)*zhml )               ! ML depth internal to zdf_osm routine 
     
    11771190         IF ( iom_use("zshear") ) CALL iom_put( "zshear", tmask(:,:,1)*zshear )         !    shear production of TKE internal to zdf_osm routine 
    11781191         IF ( iom_use("zdh") ) CALL iom_put( "zdh", tmask(:,:,1)*zdh )                  ! pyc thicknessh internal to zdf_osm routine 
    1179          IF ( iom_use("zhol") ) CALL iom_put( "zhol", tmask(:,:,1)*zhol )               ! ML depth internal to zdf_osm routine 
     1192         IF ( iom_use("zhol") ) CALL iom_put( "zhol", tmask(:,:,1)*shol )               ! ML depth internal to zdf_osm routine 
    11801193         IF ( iom_use("zwb_ent") ) CALL iom_put( "zwb_ent", tmask(:,:,1)*zwb_ent )      ! upward turb buoyancy entrainment flux 
    11811194         IF ( iom_use("zt_ml") ) CALL iom_put( "zt_ml", tmask(:,:,1)*zt_ml )            ! average T in ML 
     
    12371250            IF ( lconv(ji,jj) ) THEN 
    12381251 
    1239                zvel_sc_pyc = ( 0.15 * zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 + 4.25 * zshear(ji,jj) * zhbl(ji,jj) )**pthird 
    1240                zvel_sc_ml = ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
    1241                zstab_fac = ( zhml(ji,jj) / zvel_sc_ml * ( 1.4 - 0.4 / ( 1.0 + EXP(-3.5 * LOG10(-zhol(ji,jj) ) ) )**1.25 ) )**2 
     1252               zvel_sc_pyc = ( 0.15 * svstr(ji,jj)**3 + swstrc(ji,jj)**3 + 4.25 * zshear(ji,jj) * zhbl(ji,jj) )**pthird 
     1253               zvel_sc_ml = ( svstr(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**pthird 
     1254               zstab_fac = ( zhml(ji,jj) / zvel_sc_ml * ( 1.4 - 0.4 / ( 1.0 + EXP(-3.5 * LOG10(-shol(ji,jj) ) ) )**1.25 ) )**2 
    12421255 
    12431256               zdifml_sc(ji,jj) = rn_dif_ml * zhml(ji,jj) * zvel_sc_ml 
     
    13621375#endif 
    13631376            ELSE 
    1364                zdifml_sc(ji,jj) = zvstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( zhol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
    1365                zvisml_sc(ji,jj) = zvstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( zhol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
     1377               zdifml_sc(ji,jj) = svstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( shol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
     1378               zvisml_sc(ji,jj) = svstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( shol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
    13661379#ifdef key_osm_debug 
    13671380               IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
     
    14861499         ! Determins stability and set flag lconv 
    14871500         DO_2D( 0, 0, 0, 0 ) 
    1488             IF ( zhol(ji,jj) < 0._wp ) THEN 
     1501            IF ( shol(ji,jj) < 0._wp ) THEN 
    14891502               lconv(ji,jj) = .TRUE. 
    14901503            ELSE 
     
    14931506         END_2D 
    14941507 
    1495          zekman(A2D(0)) = EXP( -1.0_wp * zek * ABS( ff_t(A2D(0)) ) * zhbl(A2D(0)) / MAX(zustar(A2D(0)), 1.e-8 ) ) 
     1508         zekman(A2D(0)) = EXP( -1.0_wp * zek * ABS( ff_t(A2D(0)) ) * zhbl(A2D(0)) / MAX(sustar(A2D(0)), 1.e-8 ) ) 
    14961509 
    14971510         zshear(A2D(0)) = 0._wp 
     
    15091522            IF ( lconv(ji,jj) ) THEN 
    15101523               IF ( zdb_bl(ji,jj) > 0._wp ) THEN 
    1511                   zri_p(ji,jj) = MAX (  SQRT( zdb_bl(ji,jj) * zdh(ji,jj) / MAX( zdu_bl(ji,jj)**2 + zdv_bl(ji,jj)**2, 1.e-8) )  *  ( zhbl(ji,jj) / zdh(ji,jj) ) * ( zvstr(ji,jj) / MAX( zustar(ji,jj), 1.e-6 ) )**2 & 
     1524                  zri_p(ji,jj) = MAX (  SQRT( zdb_bl(ji,jj) * zdh(ji,jj) / MAX( zdu_bl(ji,jj)**2 + zdv_bl(ji,jj)**2, 1.e-8) )  *  ( zhbl(ji,jj) / zdh(ji,jj) ) * ( svstr(ji,jj) / MAX( sustar(ji,jj), 1.e-6 ) )**2 & 
    15121525                     & / MAX( zekman(ji,jj), 1.e-6 )  , 5._wp ) 
    15131526 
     
    15191532                     zri_b(ji,jj) = zdb_ml(ji,jj) * zdh(ji,jj) / ( MAX( zdu_ml(ji,jj), 1e-5_wp )**2 + MAX(           zdv_ml(ji,jj), 1e-5_wp)**2 ) 
    15201533                  END IF 
    1521                   zshear(ji,jj) = za_shr * zekman(ji,jj) * ( MAX( zustar(ji,jj)**2 * zdu_ml(ji,jj) / zhbl(ji,jj), 0._wp ) + zb_shr * MAX( -ff_t(ji,jj) * zustke(ji,jj) * dstokes(ji,jj) * zdv_ml(ji,jj) / zhbl(ji,jj), 0._wp ) ) 
     1534                  zshear(ji,jj) = za_shr * zekman(ji,jj) * ( MAX( sustar(ji,jj)**2 * zdu_ml(ji,jj) / zhbl(ji,jj), 0._wp ) + zb_shr * MAX( -ff_t(ji,jj) * sustke(ji,jj) * dstokes(ji,jj) * zdv_ml(ji,jj) / zhbl(ji,jj), 0._wp ) ) 
    15221535#ifdef key_osm_debug 
    15231536                  ! IF(narea==nn_narea_db)THEN 
     
    15781591            IF ( lconv(ji,jj) ) THEN 
    15791592               zwcor = ABS(ff_t(ji,jj)) * zhbl(ji,jj) + epsln 
    1580                zrf_conv = TANH( ( zwstrc(ji,jj) / zwcor )**0.69 ) 
    1581                zrf_shear = TANH( ( zustar(ji,jj) / zwcor )**0.69 ) 
    1582                zrf_langmuir = TANH( ( zwstrl(ji,jj) / zwcor )**0.69 ) 
     1593               zrf_conv = TANH( ( swstrc(ji,jj) / zwcor )**0.69 ) 
     1594               zrf_shear = TANH( ( sustar(ji,jj) / zwcor )**0.69 ) 
     1595               zrf_langmuir = TANH( ( swstrl(ji,jj) / zwcor )**0.69 ) 
    15831596               IF (nn_osm_SD_reduce > 0 ) THEN 
    15841597                  ! Effective Stokes drift already reduced from surface value 
     
    15901603                     &                  * ( 1.0 + 4.0 * dstokes(ji,jj) / hbl(ji,jj) ) ) 
    15911604               END IF 
    1592                zwb_ent(ji,jj) = -2.0_wp * zalpha_c * zrf_conv * zwbav(ji,jj) & 
    1593                   &                  - zalpha_s * zrf_shear * zustar(ji,jj)**3 / zhml(ji,jj) & 
    1594                   &         + zr_stokes * ( zalpha_s * EXP( -1.5_wp * zla(ji,jj) ) * zrf_shear * zustar(ji,jj)**3 & 
    1595                   &                                         - zrf_langmuir * zalpha_lc * zwstrl(ji,jj)**3 ) / zhml(ji,jj) 
     1605               zwb_ent(ji,jj) = -2.0_wp * zalpha_c * zrf_conv * swbav(ji,jj) & 
     1606                  &                  - zalpha_s * zrf_shear * sustar(ji,jj)**3 / zhml(ji,jj) & 
     1607                  &         + zr_stokes * ( zalpha_s * EXP( -1.5_wp * sla(ji,jj) ) * zrf_shear * sustar(ji,jj)**3 & 
     1608                  &                                         - zrf_langmuir * zalpha_lc * swstrl(ji,jj)**3 ) / zhml(ji,jj) 
    15961609               ! 
    15971610#ifdef key_osm_debug 
     
    16451658            IF ( lconv(ji,jj) ) THEN 
    16461659               ! Unstable OSBL 
    1647                zwb_min(ji,jj) = zwb_ent(ji,jj) + zdh(ji,jj) / zhbl(ji,jj) * 2.0_wp * zwbav(ji,jj) 
     1660               zwb_min(ji,jj) = zwb_ent(ji,jj) + zdh(ji,jj) / zhbl(ji,jj) * 2.0_wp * swbav(ji,jj) 
    16481661            END IF  ! lconv 
    16491662#ifdef key_osm_debug 
    16501663            IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    16511664               WRITE(narea+100,'(3(a,g11.3))')'end of zdf_osm_osbl_state:zwb_ent=',zwb_ent(ji,jj), & 
    1652                   & '  zwb_min=',zwb_min(ji,jj), '  zwb0tot=', zwb0tot(ji,jj), '  zwbav= ', zwbav(ji,jj) 
     1665                  & '  zwb_min=',zwb_min(ji,jj), '  zwb0tot=', zwb0tot(ji,jj), '  swbav= ', swbav(ji,jj) 
    16531666               FLUSH(narea+100) 
    16541667            END IF 
     
    18321845               IF ( lconv(ji,jj) ) THEN   ! convective conditions 
    18331846                  IF ( lpyc(ji,jj) ) THEN 
    1834                      zzeta_m = 0.1_wp + 0.3_wp / ( 1.0_wp + EXP( -3.5_wp * LOG10( -1.0_wp * zhol(ji,jj) ) ) ) 
     1847                     zzeta_m = 0.1_wp + 0.3_wp / ( 1.0_wp + EXP( -3.5_wp * LOG10( -1.0_wp * shol(ji,jj) ) ) ) 
    18351848                     palpha(ji,jj) = 2.0_wp * ( 1.0_wp - ( 0.80_wp * zzeta_m + 0.5_wp * SQRT( 3.14159_wp / ppgamma_b ) ) *   & 
    18361849                        &                                zdbdz_bl_ext(ji,jj) * zdh(ji,jj) / zdb_ml(ji,jj) ) /                & 
     
    18741887                  IF ( zdhdt(ji,jj) > 0.0_wp ) THEN   ! Depth increasing, or steady. 
    18751888                     IF ( zdb_bl(ji,jj) > 0.0_wp ) THEN 
    1876                         IF ( zhol(ji,jj) >= 0.5_wp ) THEN   ! Very stable - 'thick' pycnocline 
     1889                        IF ( shol(ji,jj) >= 0.5_wp ) THEN   ! Very stable - 'thick' pycnocline 
    18771890                           ztmp = 1.0_wp / MAX( zhbl(ji,jj), epsln ) 
    18781891                           zbgrad = zdb_bl(ji,jj) * ztmp 
     
    18881901                              pdbdz(ji,jj,jk) =  zbgrad * EXP( -1.75_wp * ( znd + 0.75_wp )**2 ) 
    18891902                           END DO 
    1890                         ENDIF   ! IF (zhol >=0.5) 
     1903                        ENDIF   ! IF (shol >=0.5) 
    18911904#ifdef key_osm_debug 
    18921905                        IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
     
    19471960                        zwb_fk_b(ji,jj) = 0.5 * zwb_fk(ji,jj) * hmle(ji,jj) / hbl(ji,jj) 
    19481961                     ENDIF 
    1949                      zvel_max = ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
     1962                     zvel_max = ( svstr(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
    19501963                     IF ( ( zwb_ent(ji,jj) + 2.0 * zwb_fk_b(ji,jj) ) < 0.0 ) THEN 
    19511964                        ! OSBL is deepening, entrainment > restratification 
     
    19531966                           zgamma_b_nd = MAX( zdbdz_bl_ext(ji,jj), 0.0_wp ) * zdh(ji,jj) / ( zvel_max + MAX( zdb_bl(ji,jj), 1e-15 ) ) 
    19541967                           zpsi = ( 1.0_wp - 0.5_wp * zdh(ji,jj) / zhbl(ji,jj) ) *   & 
    1955                               &   ( zwb0(ji,jj) - MIN( ( zwb_min(ji,jj) + 2.0_wp * zwb_fk_b(ji,jj) ), 0.0_wp ) ) * zdh(ji,jj) / zhbl(ji,jj) 
     1968                              &   ( swb0(ji,jj) - MIN( ( zwb_min(ji,jj) + 2.0_wp * zwb_fk_b(ji,jj) ), 0.0_wp ) ) * zdh(ji,jj) / zhbl(ji,jj) 
    19561969                           zpsi = zpsi + 1.75_wp * ( 1.0_wp - 0.5_wp * zdh(ji,jj) / zhbl(ji,jj) ) *   & 
    19571970                              &   ( zdh(ji,jj) / zhbl(ji,jj) + zgamma_b_nd ) * MIN( ( zwb_min(ji,jj) + 2.0_wp * zwb_fk_b(ji,jj) ), 0.0_wp ) 
     
    19681981#endif 
    19691982                           IF ( j_ddh(ji,jj) == 1 ) THEN 
    1970                               IF ( ( zwstrc(ji,jj) / zvstr(ji,jj) )**3 <= 0.5 ) THEN 
    1971                                  zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zvstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     1983                              IF ( ( swstrc(ji,jj) / svstr(ji,jj) )**3 <= 0.5 ) THEN 
     1984                                 zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * svstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    19721985                              ELSE 
    1973                                  zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zwstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     1986                                 zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * swstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    19741987                              ENDIF 
    19751988                              ! Relaxation to dh_ref = zari * hbl 
     
    19872000                              zddhdt = -1.0_wp * a_ddh * ( 1.0 - 1.6_wp * zdh(ji,jj) / zhbl(ji,jj) ) * zwb_ent(ji,jj) /   & 
    19882001                                 &     ( zvel_max + MAX( zdb_bl(ji,jj), 1e-15 ) ) 
    1989                               zddhdt = EXP( -4.0_wp * ABS( ff_t(ji,jj) ) * zhbl(ji,jj) / MAX(zustar(ji,jj), 1e-8_wp ) ) * zddhdt 
     2002                              zddhdt = EXP( -4.0_wp * ABS( ff_t(ji,jj) ) * zhbl(ji,jj) / MAX(sustar(ji,jj), 1e-8_wp ) ) * zddhdt 
    19902003                           ELSE 
    19912004                              zddhdt = 0.0_wp 
     
    20062019                     ! Fox-Kemper not used. 
    20072020 
    2008                      zvel_max = - ( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_Dt / hbl(ji,jj) ) * zwb_ent(ji,jj) / & 
    2009                         &        MAX((zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird, epsln) 
     2021                     zvel_max = - ( 1.0 + 1.0 * ( svstr(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**pthird * rn_Dt / hbl(ji,jj) ) * zwb_ent(ji,jj) / & 
     2022                        &        MAX((svstr(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**pthird, epsln) 
    20102023                     zdhdt(ji,jj) = -zwb_ent(ji,jj) / ( zvel_max + MAX(zdb_bl(ji,jj), 1.0e-15) ) 
    20112024                     ! added ajgn 23 July as temporay fix 
     
    20142027 
    20152028               ELSE    ! lconv - Stable 
    2016                   zdhdt(ji,jj) = ( 0.06 + 0.52 * zhol(ji,jj) / 2.0 ) * zvstr(ji,jj)**3 / hbl(ji,jj) + zwbav(ji,jj) 
     2029                  zdhdt(ji,jj) = ( 0.06 + 0.52 * shol(ji,jj) / 2.0 ) * svstr(ji,jj)**3 / hbl(ji,jj) + swbav(ji,jj) 
    20172030                  IF ( zdhdt(ji,jj) < 0._wp ) THEN 
    20182031                     ! For long timsteps factor in brackets slows the rapid collapse of the OSBL 
    2019                      zpert = 2.0 * ( 1.0 + 0.0 * 2.0 * zvstr(ji,jj) * rn_Dt / hbl(ji,jj) ) * zvstr(ji,jj)**2 / hbl(ji,jj) 
     2032                     zpert = 2.0 * ( 1.0 + 0.0 * 2.0 * svstr(ji,jj) * rn_Dt / hbl(ji,jj) ) * svstr(ji,jj)**2 / hbl(ji,jj) 
    20202033                  ELSE 
    2021                      zpert = MAX( zvstr(ji,jj)**2 / hbl(ji,jj), zdb_bl(ji,jj) ) 
     2034                     zpert = MAX( svstr(ji,jj)**2 / hbl(ji,jj), zdb_bl(ji,jj) ) 
    20222035                  ENDIF 
    20232036                  zdhdt(ji,jj) = 2.0 * zdhdt(ji,jj) / MAX(zpert, epsln) 
     
    20362049                        zwb_fk_b(ji,jj) = 0.5 * zwb_fk(ji,jj) * hmle(ji,jj) / hbl(ji,jj) 
    20372050                     ENDIF 
    2038                      zvel_max = ( zwstrl(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
     2051                     zvel_max = ( swstrl(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
    20392052                     IF ( ( zwb_ent(ji,jj) + 2.0 * zwb_fk_b(ji,jj) ) < 0.0 ) THEN 
    20402053                        ! OSBL is deepening, entrainment > restratification 
     
    20552068 
    20562069                     zvel_max = -zwb_ent(ji,jj) / & 
    2057                         &        MAX((zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird, epsln) 
     2070                        &        MAX((svstr(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**pthird, epsln) 
    20582071                     zdhdt(ji,jj) = -zwb_ent(ji,jj) / ( zvel_max + MAX(zdb_bl(ji,jj), 1.0e-15) ) 
    20592072                     ! added ajgn 23 July as temporay fix 
     
    20622075 
    20632076               ELSE                        ! Stable 
    2064                   zdhdt(ji,jj) = ( 0.06 + 0.52 * zhol(ji,jj) / 2.0 ) * zvstr(ji,jj)**3 / hbl(ji,jj) + zwbav(ji,jj) 
     2077                  zdhdt(ji,jj) = ( 0.06 + 0.52 * shol(ji,jj) / 2.0 ) * svstr(ji,jj)**3 / hbl(ji,jj) + swbav(ji,jj) 
    20652078                  IF ( zdhdt(ji,jj) < 0._wp ) THEN 
    20662079                     ! For long timsteps factor in brackets slows the rapid collapse of the OSBL 
    2067                      zpert = 2.0 * zvstr(ji,jj)**2 / hbl(ji,jj) 
     2080                     zpert = 2.0 * svstr(ji,jj)**2 / hbl(ji,jj) 
    20682081                  ELSE 
    2069                      zpert = MAX( zvstr(ji,jj)**2 / hbl(ji,jj), zdb_bl(ji,jj) ) 
     2082                     zpert = MAX( svstr(ji,jj)**2 / hbl(ji,jj), zdb_bl(ji,jj) ) 
    20702083                  ENDIF 
    20712084                  zdhdt(ji,jj) = 2.0 * zdhdt(ji,jj) / MAX(zpert, epsln) 
     
    21312144 
    21322145                  IF( ln_osm_mle ) THEN 
    2133                      zvel_max = ( zwstrl(ji,jj)**3 + zwstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
     2146                     zvel_max = ( swstrl(ji,jj)**3 + swstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
    21342147                  ELSE 
    21352148 
    2136                      zvel_max = -( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_Dt / hbl(ji,jj) ) * zwb_ent(ji,jj) / & 
    2137                         &      ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
     2149                     zvel_max = -( 1.0 + 1.0 * ( svstr(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**pthird * rn_Dt / hbl(ji,jj) ) * zwb_ent(ji,jj) / & 
     2150                        &      ( svstr(ji,jj)**3 + 0.5 * swstrc(ji,jj)**3 )**pthird 
    21382151 
    21392152                  ENDIF 
     
    21902203                        &           - zbeta * ( zs_bl(ji,jj) - ts(ji,jj,jm,jp_sal,Kmm) ) ),& 
    21912204                        & 0.0 ) + & 
    2192                         &       2.0 * zvstr(ji,jj)**2 / zhbl_s 
     2205                        &       2.0 * svstr(ji,jj)**2 / zhbl_s 
    21932206 
    21942207                     ! Alan is thuis right? I have simply changed hbli to hbl 
    2195                      zhol(ji,jj) = -zhbl_s / ( ( zvstr(ji,jj)**3 + epsln )/ zwbav(ji,jj) ) 
    2196                      zdhdt(ji,jj) = -( zwbav(ji,jj) - 0.04 / 2.0 * zwstrl(ji,jj)**3 / zhbl_s - 0.15 / 2.0 * ( 1.0 - EXP( -1.5 * zla(ji,jj) ) ) * & 
    2197                         &                  zustar(ji,jj)**3 / zhbl_s ) * ( 0.725 + 0.225 * EXP( -7.5 * zhol(ji,jj) ) ) 
    2198                      zdhdt(ji,jj) = zdhdt(ji,jj) + zwbav(ji,jj) 
     2208                     shol(ji,jj) = -zhbl_s / ( ( svstr(ji,jj)**3 + epsln )/ swbav(ji,jj) ) 
     2209                     zdhdt(ji,jj) = -( swbav(ji,jj) - 0.04 / 2.0 * swstrl(ji,jj)**3 / zhbl_s - 0.15 / 2.0 * ( 1.0 - EXP( -1.5 * sla(ji,jj) ) ) * & 
     2210                        &                  sustar(ji,jj)**3 / zhbl_s ) * ( 0.725 + 0.225 * EXP( -7.5 * shol(ji,jj) ) ) 
     2211                     zdhdt(ji,jj) = zdhdt(ji,jj) + swbav(ji,jj) 
    21992212                     zhbl_s = zhbl_s + MIN( zdhdt(ji,jj) / zdb * rn_Dt / FLOAT( ibld(ji,jj) - imld(ji,jj) ), e3w(ji,jj,jm,Kmm) ) 
    22002213 
     
    22082221                     IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    22092222                        WRITE(narea+100,'(2(a,i7))')' jk=',jk,' jm=', jm 
    2210                         WRITE(narea+100,'(4(a,g11.3),a,l7)')'zdb=',zdb,' zhol',zhol(ji,jj),' zdhdt',zdhdt(ji,jj),' zhbl_s=', zhbl_s,' lpyc=',lpyc(ji,jj) 
     2223                        WRITE(narea+100,'(4(a,g11.3),a,l7)')'zdb=',zdb,' shol',shol(ji,jj),' zdhdt',zdhdt(ji,jj),' zhbl_s=', zhbl_s,' lpyc=',lpyc(ji,jj) 
    22112224                        FLUSH(narea+100) 
    22122225                     END IF 
     
    22602273                  IF ( zdb_bl(ji,jj) > 1e-15_wp ) THEN 
    22612274                     IF ( j_ddh(ji,jj) == 0 ) THEN 
    2262                         zvel_max = ( zvstr(ji,jj)**3 + 0.5_wp * zwstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
     2275                        zvel_max = ( svstr(ji,jj)**3 + 0.5_wp * swstrc(ji,jj)**3 )**p2third / hbl(ji,jj) 
    22632276                        ! ddhdt for pycnocline determined in osm_calculate_dhdt 
    22642277                        zddhdt = -a_ddh * ( 1.0 - 1.6 * zdh(ji,jj) / zhbl(ji,jj) ) * zwb_ent(ji,jj) / ( zvel_max + MAX( zdb_bl(ji,jj), 1e-15 ) ) 
    2265                         zddhdt = EXP( -4.0_wp * ABS( ff_t(ji,jj) ) * zhbl(ji,jj) / MAX( zustar(ji,jj), 1e-8 ) ) * zddhdt 
     2278                        zddhdt = EXP( -4.0_wp * ABS( ff_t(ji,jj) ) * zhbl(ji,jj) / MAX( sustar(ji,jj), 1e-8 ) ) * zddhdt 
    22662279                        ! maximum limit for how thick the shear layer can grow relative to the thickness of the boundary kayer 
    22672280                        dh(ji,jj) = MIN( dh(ji,jj) + zddhdt * rn_Dt, 0.625_wp * hbl(ji,jj) ) 
    22682281                     ELSE 
    22692282                        ! Need to recalculate because hbl has been updated. 
    2270                         IF ( ( zwstrc(ji,jj) / zvstr(ji,jj) )**3 <= 0.5 ) THEN 
    2271                            zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zvstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     2283                        IF ( ( swstrc(ji,jj) / svstr(ji,jj) )**3 <= 0.5 ) THEN 
     2284                           zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * svstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    22722285                        ELSE 
    2273                            zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zwstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     2286                           zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * swstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    22742287                        ENDIF 
    22752288                        ztau = MAX( zdb_bl(ji,jj) * ( zari * hbl(ji,jj) ) / ( a_ddh_2 * MAX(-zwb_ent(ji,jj), 1.e-12) ), 2.0 * rn_Dt ) 
     
    22782291                     ENDIF 
    22792292                  ELSE 
    2280                      ztau = MAX( MAX( hbl(ji,jj) / ( zvstr(ji,jj)**3 + 0.5_wp * zwstrc(ji,jj)**3 )**pthird, epsln), 2.0_wp * rn_Dt ) 
     2293                     ztau = MAX( MAX( hbl(ji,jj) / ( svstr(ji,jj)**3 + 0.5_wp * swstrc(ji,jj)**3 )**pthird, epsln), 2.0_wp * rn_Dt ) 
    22812294                     dh(ji,jj) = dh(ji,jj) * EXP( -1.0_wp * rn_Dt / ztau ) + 0.2_wp * zhbl(ji,jj) * ( 1.0_wp - EXP( -1.0_wp * rn_Dt / ztau ) ) 
    22822295                     IF ( dh(ji,jj) > hbl(ji,jj) ) dh(ji,jj) = 0.2_wp * hbl(ji,jj) 
     
    22852298                  ! Initially shear only for entraining OSBL. Stable code will be needed if extended to stable OSBL 
    22862299 
    2287                   ztau = hbl(ji,jj) / MAX(zvstr(ji,jj), epsln) 
     2300                  ztau = hbl(ji,jj) / MAX(svstr(ji,jj), epsln) 
    22882301                  IF ( zdhdt(ji,jj) >= 0.0 ) THEN    ! probably shouldn't include wm here 
    22892302                     ! boundary layer deepening 
    22902303                     IF ( zdb_bl(ji,jj) > 0._wp ) THEN 
    22912304                        ! pycnocline thickness set by stratification - use same relationship as for neutral conditions. 
    2292                         zari = MIN( 4.5 * ( zvstr(ji,jj)**2 ) & 
     2305                        zari = MIN( 4.5 * ( svstr(ji,jj)**2 ) & 
    22932306                           & /  MAX(zdb_bl(ji,jj) * zhbl(ji,jj), epsln ) + 0.01  , 0.2 ) 
    22942307                        zdh_ref = MIN( zari, 0.2 ) * hbl(ji,jj) 
     
    23122325                        ! OSBL is deepening. Note wb_fk_b is zero if ln_osm_mle=F 
    23132326                        IF ( zdb_bl(ji,jj) > 0._wp .and. zdbdz_bl_ext(ji,jj) > 0._wp)THEN 
    2314                            IF ( ( zwstrc(ji,jj) / MAX(zvstr(ji,jj), epsln) )**3 <= 0.5 ) THEN  ! near neutral stability 
    2315                               zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zvstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     2327                           IF ( ( swstrc(ji,jj) / MAX(svstr(ji,jj), epsln) )**3 <= 0.5 ) THEN  ! near neutral stability 
     2328                              zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * svstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    23162329                           ELSE                                                     ! unstable 
    2317                               zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zwstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     2330                              zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * swstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    23182331                           ENDIF 
    2319                            ztau = 0.2 * hbl(ji,jj) / MAX(epsln, (zvstr(ji,jj)**3 + 0.5 *zwstrc(ji,jj)**3)**pthird) 
     2332                           ztau = 0.2 * hbl(ji,jj) / MAX(epsln, (svstr(ji,jj)**3 + 0.5 *swstrc(ji,jj)**3)**pthird) 
    23202333                           zdh_ref = zari * hbl(ji,jj) 
    23212334                        ELSE 
    2322                            ztau = 0.2 * hbl(ji,jj) / MAX(epsln, (zvstr(ji,jj)**3 + 0.5 *zwstrc(ji,jj)**3)**pthird) 
     2335                           ztau = 0.2 * hbl(ji,jj) / MAX(epsln, (svstr(ji,jj)**3 + 0.5 *swstrc(ji,jj)**3)**pthird) 
    23232336                           zdh_ref = 0.2 * hbl(ji,jj) 
    23242337                        ENDIF 
    23252338                     ELSE 
    2326                         ztau = 0.2 * hbl(ji,jj) /  MAX(epsln, (zvstr(ji,jj)**3 + 0.5 *zwstrc(ji,jj)**3)**pthird) 
     2339                        ztau = 0.2 * hbl(ji,jj) /  MAX(epsln, (svstr(ji,jj)**3 + 0.5 *swstrc(ji,jj)**3)**pthird) 
    23272340                        zdh_ref = 0.2 * hbl(ji,jj) 
    23282341                     ENDIF 
    23292342                  ELSE ! ln_osm_mle 
    23302343                     IF ( zdb_bl(ji,jj) > 0._wp .and. zdbdz_bl_ext(ji,jj) > 0._wp)THEN 
    2331                         IF ( ( zwstrc(ji,jj) / MAX(zvstr(ji,jj), epsln) )**3 <= 0.5 ) THEN  ! near neutral stability 
    2332                            zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zvstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     2344                        IF ( ( swstrc(ji,jj) / MAX(svstr(ji,jj), epsln) )**3 <= 0.5 ) THEN  ! near neutral stability 
     2345                           zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * svstr(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    23332346                        ELSE                                                     ! unstable 
    2334                            zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * zwstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
     2347                           zari = MIN( 1.5 * zdb_bl(ji,jj) / ( zhbl(ji,jj) * ( MAX(zdbdz_bl_ext(ji,jj),0._wp) + zdb_bl(ji,jj)**2 / MAX(4.5 * swstrc(ji,jj)**2 , 1.e-12 )) ), 0.2d0 ) 
    23352348                        ENDIF 
    2336                         ztau = hbl(ji,jj) / MAX(epsln, (zvstr(ji,jj)**3 + 0.5 *zwstrc(ji,jj)**3)**pthird) 
     2349                        ztau = hbl(ji,jj) / MAX(epsln, (svstr(ji,jj)**3 + 0.5 *swstrc(ji,jj)**3)**pthird) 
    23372350                        zdh_ref = zari * hbl(ji,jj) 
    23382351                     ELSE 
    2339                         ztau = hbl(ji,jj) / MAX(epsln, (zvstr(ji,jj)**3 + 0.5 *zwstrc(ji,jj)**3)**pthird) 
     2352                        ztau = hbl(ji,jj) / MAX(epsln, (svstr(ji,jj)**3 + 0.5 *swstrc(ji,jj)**3)**pthird) 
    23402353                        zdh_ref = 0.2 * hbl(ji,jj) 
    23412354                     ENDIF 
     
    23482361                  ! Alan: this hml is never defined or used 
    23492362               ELSE   ! IF (lconv) 
    2350                   ztau = hbl(ji,jj) / MAX(zvstr(ji,jj), epsln) 
     2363                  ztau = hbl(ji,jj) / MAX(svstr(ji,jj), epsln) 
    23512364                  IF ( zdhdt(ji,jj) >= 0.0 ) THEN    ! probably shouldn't include wm here 
    23522365                     ! boundary layer deepening 
    23532366                     IF ( zdb_bl(ji,jj) > 0._wp ) THEN 
    23542367                        ! pycnocline thickness set by stratification - use same relationship as for neutral conditions. 
    2355                         zari = MIN( 4.5 * ( zvstr(ji,jj)**2 ) & 
     2368                        zari = MIN( 4.5 * ( svstr(ji,jj)**2 ) & 
    23562369                           & /  MAX(zdb_bl(ji,jj) * zhbl(ji,jj), epsln ) + 0.01  , 0.2 ) 
    23572370                        zdh_ref = MIN( zari, 0.2 ) * hbl(ji,jj) 
     
    26562669   END SUBROUTINE zdf_osm_vertical_average 
    26572670 
    2658    SUBROUTINE zdf_osm_velocity_rotation_2d( pu, pv, pcos_w, psin_w, fwd ) 
     2671   SUBROUTINE zdf_osm_velocity_rotation_2d( pu, pv, fwd ) 
    26592672      !!--------------------------------------------------------------------- 
    26602673      !!            ***  ROUTINE zdf_velocity_rotation_2d  *** 
     
    26642677      !! 
    26652678      !! ** Method : The velocity components are rotated into (fwd=.TRUE.) or 
    2666       !!             from (fwd=.FALSE.) the frame specified by pcos_w and psin_w 
     2679      !!             from (fwd=.FALSE.) the frame specified by scos_wind and 
     2680      !!             ssin_wind 
    26672681      !! 
    26682682      !!----------------------------------------------------------------------       
    26692683      REAL(wp),           INTENT(inout), DIMENSION(jpi,jpj) ::   pu, pv           ! Components of current 
    2670       REAL(wp),           INTENT(in   ), DIMENSION(jpi,jpj) ::   pcos_w, psin_w   ! Cos and sin of rotation angle 
    26712684      LOGICAL,  OPTIONAL, INTENT(in   )                     ::   fwd              ! Forward (default) or reverse rotation 
    26722685      ! 
     
    26802693      DO_2D( 0, 0, 0, 0 ) 
    26812694         ztmp      = pu(ji,jj) 
    2682          pu(ji,jj) = pu(ji,jj) * pcos_w(ji,jj) + zfwd * pv(ji,jj) * psin_w(ji,jj) 
    2683          pv(ji,jj) = pv(ji,jj) * pcos_w(ji,jj) - zfwd * ztmp      * psin_w(ji,jj) 
     2695         pu(ji,jj) = pu(ji,jj) * scos_wind(ji,jj) + zfwd * pv(ji,jj) * ssin_wind(ji,jj) 
     2696         pv(ji,jj) = pv(ji,jj) * scos_wind(ji,jj) - zfwd * ztmp      * ssin_wind(ji,jj) 
    26842697      END_2D 
    26852698      ! 
     
    26882701   END SUBROUTINE zdf_osm_velocity_rotation_2d 
    26892702 
    2690    SUBROUTINE zdf_osm_velocity_rotation_3d( pu, pv, pcos_w, psin_w, fwd, ktop, knlev ) 
     2703   SUBROUTINE zdf_osm_velocity_rotation_3d( pu, pv, fwd, ktop, knlev ) 
    26912704      !!--------------------------------------------------------------------- 
    26922705      !!            ***  ROUTINE zdf_velocity_rotation_3d  *** 
     
    26962709      !! 
    26972710      !! ** Method : The velocity components are rotated into (fwd=.TRUE.) or 
    2698       !!             from (fwd=.FALSE.) the frame specified by pcos_w and 
    2699       !!             psin_w; optionally, the rotation can be restricted at each 
    2700       !!             water column to span from the a minimum index ktop to the 
    2701       !!             depth index specified in array knlev 
     2711      !!             from (fwd=.FALSE.) the frame specified by scos_wind and 
     2712      !!             ssin_wind; optionally, the rotation can be restricted at 
     2713      !!             each water column to span from the a minimum index ktop to 
     2714      !!             the depth index specified in array knlev 
    27022715      !! 
    27032716      !!----------------------------------------------------------------------       
    27042717      REAL(wp),           INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pu, pv           ! Components of current 
    2705       REAL(wp),           INTENT(in   ), DIMENSION(jpi,jpj)     ::   pcos_w, psin_w   ! Cos and sin of rotation angle 
    27062718      LOGICAL,  OPTIONAL, INTENT(in   )                         ::   fwd              ! Forward (default) or reverse rotation 
    27072719      INTEGER,  OPTIONAL, INTENT(in   )                         ::   ktop             ! Minimum depth index 
     
    27312743         IF ( llkbot .OR. knlev(ji,jj) >= jk ) THEN 
    27322744            ztmp         = pu(ji,jj,jk) 
    2733             pu(ji,jj,jk) = pu(ji,jj,jk) * pcos_w(ji,jj) + zfwd * pv(ji,jj,jk) * psin_w(ji,jj) 
    2734             pv(ji,jj,jk) = pv(ji,jj,jk) * pcos_w(ji,jj) - zfwd * ztmp         * psin_w(ji,jj) 
     2745            pu(ji,jj,jk) = pu(ji,jj,jk) * scos_wind(ji,jj) + zfwd * pv(ji,jj,jk) * ssin_wind(ji,jj) 
     2746            pv(ji,jj,jk) = pv(ji,jj,jk) * scos_wind(ji,jj) - zfwd * ztmp         * ssin_wind(ji,jj) 
    27352747         END IF 
    27362748      END_3D 
     
    27402752   END SUBROUTINE zdf_osm_velocity_rotation_3d 
    27412753 
    2742    SUBROUTINE zdf_osm_fgr_terms( Kmm, kbld, kmld, kp_ext, ldconv, ldpyc, k_ddh, phbl, phml, pdh, pdhdt, phol, pshear,             & 
    2743       &                          pustar, pwstrl, pvstr, pwstrc, puw0, pwth0, pws0, pwb0, pwthav, pwsav, pwbav, pustke, pla,       & 
     2754   SUBROUTINE zdf_osm_fgr_terms( Kmm, kbld, kmld, kp_ext, ldconv, ldpyc, k_ddh, phbl, phml, pdh, pdhdt, pshear,             & 
    27442755      &                          pdt_bl, pds_bl, pdb_bl, pdu_bl, pdv_bl, pdt_ml, pds_ml, pdb_ml, pdu_ml, pdv_ml,                  & 
    27452756      &                          pdtdz_bl_ext, pdsdz_bl_ext, pdbdz_bl_ext, pdbdz_pyc, palpha_pyc, pdiffut, pviscos ) 
     
    27632774      REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pdh            ! Pycnocline depth 
    27642775      REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pdhdt          ! BL depth tendency 
    2765       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   phol           ! Stability parameter for boundary layer 
    27662776      REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pshear         ! Shear production 
    2767       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pustar         ! Friction velocity 
    2768       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pwstrl         ! Langmuir velocity scale 
    2769       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pvstr          ! Velocity scale (approaches zustar for large Langmuir number) 
    2770       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pwstrc         ! Convective velocity scale 
    2771       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   puw0           ! Surface u-momentum flux 
    2772       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pwth0          ! Surface heat flux 
    2773       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pws0           ! Surface freshwater flux 
    2774       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pwb0           ! Surface buoyancy flux 
    2775       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pwthav         ! BL average heat flux 
    2776       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pwsav          ! BL average freshwater flux 
    2777       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pwbav          ! BL average buoyancy flux 
    2778       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pustke         ! Surface Stokes drift 
    2779       REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pla            ! Langmuir number 
    27802777      REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pdt_bl         ! Temperature diff. between BL average and basal value 
    27812778      REAL(wp), DIMENSION(:,:),   INTENT(in   ) ::   pds_bl         ! Salinity diff. between BL average and basal value 
     
    28432840      ! ------------------------------------------------------ 
    28442841      WHERE ( ldconv(A2D(0)) ) 
    2845          zsc_wth_1(:,:) = pwstrl(A2D(0))**3 * pwth0(A2D(0)) / ( pvstr(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 + epsln ) 
    2846          zsc_ws_1(:,:)  = pwstrl(A2D(0))**3 * pws0(A2D(0))  / ( pvstr(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 + epsln ) 
     2842         zsc_wth_1(:,:) = swstrl(A2D(0))**3 * swth0(A2D(0)) / ( svstr(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 + epsln ) 
     2843         zsc_ws_1(:,:)  = swstrl(A2D(0))**3 * sws0(A2D(0))  / ( svstr(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 + epsln ) 
    28472844      ELSEWHERE 
    2848          zsc_wth_1(:,:) = 2.0_wp * pwthav(A2D(0)) 
    2849          zsc_ws_1(:,:)  = 2.0_wp * pwsav(A2D(0)) 
     2845         zsc_wth_1(:,:) = 2.0_wp * swthav(A2D(0)) 
     2846         zsc_ws_1(:,:)  = 2.0_wp * swsav(A2D(0)) 
    28502847      ENDWHERE 
    28512848      DO_3D( 0, 0, 0, 0, 2, MAX( jkm_mld, jkm_bld ) ) 
     
    28752872      ! 
    28762873      ! Stokes term in flux-gradient relationship (note in zsc_uw_n don't use 
    2877       ! zvstr since term needs to go to zero as zwstrl goes to zero) 
     2874      ! svstr since term needs to go to zero as swstrl goes to zero) 
    28782875      ! --------------------------------------------------------------------- 
    28792876      WHERE ( ldconv(A2D(0)) ) 
    2880          zsc_uw_1(:,:) = ( pwstrl(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 )**pthird * pustke(A2D(0)) /   & 
    2881             &                                  MAX( ( 1.0_wp - 1.0_wp * 6.5_wp * pla(A2D(0))**( 8.0_wp / 3.0_wp ) ), 0.2_wp ) 
    2882          zsc_uw_2(:,:) = ( pwstrl(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 )**pthird * pustke(A2D(0)) /   & 
    2883             &                                  MIN( pla(A2D(0))**( 8.0_wp / 3.0_wp ) + epsln, 0.12_wp ) 
    2884          zsc_vw_1(:,:) = ff_t(A2D(0)) * phml(A2D(0)) * pustke(A2D(0))**3 * MIN( pla(A2D(0))**( 8.0_wp / 3.0_wp ), 0.12_wp ) /   & 
    2885             &            ( ( pvstr(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 )**( 2.0_wp / 3.0_wp ) + epsln ) 
     2877         zsc_uw_1(:,:) = ( swstrl(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 )**pthird * sustke(A2D(0)) /   & 
     2878            &                                  MAX( ( 1.0_wp - 1.0_wp * 6.5_wp * sla(A2D(0))**( 8.0_wp / 3.0_wp ) ), 0.2_wp ) 
     2879         zsc_uw_2(:,:) = ( swstrl(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 )**pthird * sustke(A2D(0)) /   & 
     2880            &                                  MIN( sla(A2D(0))**( 8.0_wp / 3.0_wp ) + epsln, 0.12_wp ) 
     2881         zsc_vw_1(:,:) = ff_t(A2D(0)) * phml(A2D(0)) * sustke(A2D(0))**3 * MIN( sla(A2D(0))**( 8.0_wp / 3.0_wp ), 0.12_wp ) /   & 
     2882            &            ( ( svstr(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 )**( 2.0_wp / 3.0_wp ) + epsln ) 
    28862883      ELSEWHERE 
    2887          zsc_uw_1(:,:) = pustar(A2D(0))**2 
    2888          zsc_vw_1(:,:) = ff_t(A2D(0)) * phbl(A2D(0)) * pustke(A2D(0))**3 * MIN( pla(A2D(0))**( 8.0_wp / 3.0_wp ), 0.12_wp ) /   & 
    2889             &            ( pvstr(A2D(0))**2 + epsln ) 
     2884         zsc_uw_1(:,:) = sustar(A2D(0))**2 
     2885         zsc_vw_1(:,:) = ff_t(A2D(0)) * phbl(A2D(0)) * sustke(A2D(0))**3 * MIN( sla(A2D(0))**( 8.0_wp / 3.0_wp ), 0.12_wp ) /   & 
     2886            &            ( svstr(A2D(0))**2 + epsln ) 
    28902887      ENDWHERE 
    28912888      DO_3D( 0, 0, 0, 0, 2, MAX( jkm_mld, jkm_bld ) ) 
     
    29312928      ! ---------------------------------------------------------------------- 
    29322929      WHERE ( ldconv(A2D(0)) ) 
    2933          zsc_wth_1(:,:) = pwbav(A2D(0)) * pwth0(A2D(0)) * ( 1.0_wp + EXP( 0.2_wp * phol(A2D(0)) ) ) * phml(A2D(0)) /   & 
    2934             &             ( pvstr(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 + epsln ) 
    2935          zsc_ws_1(:,:)  = pwbav(A2D(0)) * pws0(A2D(0))  * ( 1.0_wp + EXP( 0.2_wp * phol(A2D(0)) ) ) * phml(A2D(0)) /   & 
    2936             &             ( pvstr(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 + epsln ) 
     2930         zsc_wth_1(:,:) = swbav(A2D(0)) * swth0(A2D(0)) * ( 1.0_wp + EXP( 0.2_wp * shol(A2D(0)) ) ) * phml(A2D(0)) /   & 
     2931            &             ( svstr(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 + epsln ) 
     2932         zsc_ws_1(:,:)  = swbav(A2D(0)) * sws0(A2D(0))  * ( 1.0_wp + EXP( 0.2_wp * shol(A2D(0)) ) ) * phml(A2D(0)) /   & 
     2933            &             ( svstr(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 + epsln ) 
    29372934      ELSEWHERE 
    29382935         zsc_wth_1(:,:) = 0.0_wp 
     
    29482945               zl_l   = 2.0_wp * ( 1.0_wp - EXP( -2.0_wp * ( zznd_ml + zznd_ml**3 / 3.0_wp ) ) ) *                         & 
    29492946                  &     ( 1.0_wp - EXP( -8.0_wp  * ( 1.15_wp - zznd_ml ) ) ) * ( 1.0_wp + dstokes(ji,jj) / phml (ji,jj) ) 
    2950                zl_eps = zl_l + ( zl_c - zl_l ) / ( 1.0_wp + EXP( -3.0_wp * LOG10( -1.0_wp * phol(ji,jj) ) ) )**( 3.0_wp / 2.0_wp ) 
     2947               zl_eps = zl_l + ( zl_c - zl_l ) / ( 1.0_wp + EXP( -3.0_wp * LOG10( -1.0_wp * shol(ji,jj) ) ) )**( 3.0_wp / 2.0_wp ) 
    29512948               ! Non-gradient buoyancy terms 
    29522949               ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 0.3_wp * 0.4_wp * zsc_wth_1(ji,jj) * zl_eps / ( 0.15_wp + zznd_ml ) 
     
    29622959      DO_2D( 0, 0, 0, 0 ) 
    29632960         IF ( ldconv(ji,jj) .AND. ldpyc(ji,jj) ) THEN 
    2964             ztau_sc_u(ji,jj)    = phml(ji,jj) / ( pvstr(ji,jj)**3 + pwstrc(ji,jj)**3 )**pthird *                             & 
    2965                &                ( 1.4_wp - 0.4_wp / ( 1.0_wp + EXP( -3.5_wp * LOG10( -1.0_wp * phol(ji,jj) ) ) )**1.5_wp ) 
    2966             zwth_ent(ji,jj)     = -0.003_wp * ( 0.15_wp * pvstr(ji,jj)**3 + pwstrc(ji,jj)**3 )**pthird *   & 
     2961            ztau_sc_u(ji,jj)    = phml(ji,jj) / ( svstr(ji,jj)**3 + swstrc(ji,jj)**3 )**pthird *                             & 
     2962               &                ( 1.4_wp - 0.4_wp / ( 1.0_wp + EXP( -3.5_wp * LOG10( -1.0_wp * shol(ji,jj) ) ) )**1.5_wp ) 
     2963            zwth_ent(ji,jj)     = -0.003_wp * ( 0.15_wp * svstr(ji,jj)**3 + swstrc(ji,jj)**3 )**pthird *   & 
    29672964               &                ( 1.0_wp - pdh(ji,jj) / phbl(ji,jj) ) * pdt_ml(ji,jj) 
    2968             zws_ent(ji,jj)      = -0.003_wp * ( 0.15_wp * pvstr(ji,jj)**3 + pwstrc(ji,jj)**3 )**pthird *   & 
     2965            zws_ent(ji,jj)      = -0.003_wp * ( 0.15_wp * svstr(ji,jj)**3 + swstrc(ji,jj)**3 )**pthird *   & 
    29692966               &                ( 1.0_wp - pdh(ji,jj) / phbl(ji,jj) ) * pds_ml(ji,jj) 
    29702967            IF ( dh(ji,jj) < 0.2_wp * hbl(ji,jj) ) THEN 
    29712968               zbuoy_pyc_sc        = 2.0_wp * MAX( pdb_ml(ji,jj), 0.0_wp ) / pdh(ji,jj) 
    2972                zdelta_pyc          = ( pvstr(ji,jj)**3 + pwstrc(ji,jj)**3 )**pthird /   & 
    2973                   &                       SQRT( MAX( zbuoy_pyc_sc, ( pvstr(ji,jj)**3 + pwstrc(ji,jj)**3 )**p2third / pdh(ji,jj)**2 ) ) 
     2969               zdelta_pyc          = ( svstr(ji,jj)**3 + swstrc(ji,jj)**3 )**pthird /   & 
     2970                  &                       SQRT( MAX( zbuoy_pyc_sc, ( svstr(ji,jj)**3 + swstrc(ji,jj)**3 )**p2third / pdh(ji,jj)**2 ) ) 
    29742971               zwt_pyc_sc_1(ji,jj) = 0.325_wp * ( palpha_pyc(ji,jj) * pdt_ml(ji,jj) / pdh(ji,jj) + pdtdz_bl_ext(ji,jj) ) *   & 
    29752972                  &                     zdelta_pyc**2 / pdh(ji,jj) 
    29762973               zws_pyc_sc_1(ji,jj) = 0.325_wp * ( palpha_pyc(ji,jj) * pds_ml(ji,jj) / pdh(ji,jj) + pdsdz_bl_ext(ji,jj) ) *   & 
    29772974                  &                     zdelta_pyc**2 / pdh(ji,jj) 
    2978                zzeta_pyc(ji,jj)    = 0.15_wp - 0.175_wp / ( 1.0_wp + EXP( -3.5_wp * LOG10( -1.0_wp * phol(ji,jj) ) ) ) 
     2975               zzeta_pyc(ji,jj)    = 0.15_wp - 0.175_wp / ( 1.0_wp + EXP( -3.5_wp * LOG10( -1.0_wp * shol(ji,jj) ) ) ) 
    29792976#ifdef key_osm_debug 
    29802977               IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
     
    30163013               ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 0.05_wp  * zwt_pyc_sc_1(ji,jj) *                              & 
    30173014                  &                                EXP( -0.25_wp * ( zznd_pyc / zzeta_pyc(ji,jj) )**2 ) *        & 
    3018                   &                                pdh(ji,jj) / ( pvstr(ji,jj)**3 + pwstrc(ji,jj)**3 )**pthird 
     3015                  &                                pdh(ji,jj) / ( svstr(ji,jj)**3 + swstrc(ji,jj)**3 )**pthird 
    30193016               ghams(ji,jj,jk) = ghams(ji,jj,jk) + 0.05_wp  * zws_pyc_sc_1(ji,jj) *                              & 
    30203017                  &                                EXP( -0.25_wp * ( zznd_pyc / zzeta_pyc(ji,jj) )**2 ) *        & 
    3021                   &                                pdh(ji,jj) / ( pvstr(ji,jj)**3 + pwstrc(ji,jj)**3 )**pthird 
     3018                  &                                pdh(ji,jj) / ( svstr(ji,jj)**3 + swstrc(ji,jj)**3 )**pthird 
    30223019            END IF 
    30233020         END IF   ! End of pycnocline 
     
    30313028      zsc_vw_1(:,:) = 0.0_wp 
    30323029      WHERE ( ldconv(A2D(0)) ) 
    3033          zsc_uw_1(:,:) = -1.0_wp * pwb0(A2D(0)) * pustar(A2D(0))**2 * phml(A2D(0)) /   & 
    3034             &            ( pvstr(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 + epsln ) 
    3035          zsc_uw_2(:,:) =           pwb0(A2D(0)) * pustke(A2D(0))    * phml(A2D(0)) /   & 
    3036             &            ( pvstr(A2D(0))**3 + 0.5_wp * pwstrc(A2D(0))**3 + epsln )**( 2.0_wp / 3.0_wp ) 
     3030         zsc_uw_1(:,:) = -1.0_wp * swb0(A2D(0)) * sustar(A2D(0))**2 * phml(A2D(0)) /   & 
     3031            &            ( svstr(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 + epsln ) 
     3032         zsc_uw_2(:,:) =           swb0(A2D(0)) * sustke(A2D(0))    * phml(A2D(0)) /   & 
     3033            &            ( svstr(A2D(0))**3 + 0.5_wp * swstrc(A2D(0))**3 + epsln )**( 2.0_wp / 3.0_wp ) 
    30373034      ELSEWHERE 
    30383035         zsc_uw_1(:,:) = 0.0_wp 
     
    30593056            IF ( k_ddh(ji,jj) == 0 ) THEN 
    30603057               ! Place holding code. Parametrization needs checking for these conditions. 
    3061                zomega = ( 0.15_wp * pwstrl(ji,jj)**3 + pwstrc(ji,jj)**3 + 4.75_wp * ( pshear(ji,jj) * phbl(ji,jj) ) )**pthird 
     3058               zomega = ( 0.15_wp * swstrl(ji,jj)**3 + swstrc(ji,jj)**3 + 4.75_wp * ( pshear(ji,jj) * phbl(ji,jj) ) )**pthird 
    30623059               zuw_bse(ji,jj) = -0.0035_wp * zomega * ( 1.0_wp - pdh(ji,jj) / phbl(ji,jj) ) * pdu_ml(ji,jj) 
    30633060               zvw_bse(ji,jj) = -0.0075_wp * zomega * ( 1.0_wp - pdh(ji,jj) / phbl(ji,jj) ) * pdv_ml(ji,jj) 
    30643061            ELSE 
    3065                zomega = ( 0.15_wp * pwstrl(ji,jj)**3 + pwstrc(ji,jj)**3 + 4.75_wp * ( pshear(ji,jj) * phbl(ji,jj) ) )**pthird 
     3062               zomega = ( 0.15_wp * swstrl(ji,jj)**3 + swstrc(ji,jj)**3 + 4.75_wp * ( pshear(ji,jj) * phbl(ji,jj) ) )**pthird 
    30663063               zuw_bse(ji,jj) = -0.0035_wp * zomega * ( 1.0_wp - pdh(ji,jj) / phbl(ji,jj) ) * pdu_ml(ji,jj) 
    30673064               zvw_bse(ji,jj) = -0.0075_wp * zomega * ( 1.0_wp - pdh(ji,jj) / phbl(ji,jj) ) * pdv_ml(ji,jj) 
    30683065            ENDIF 
    3069             zb_cubic(ji,jj) = pdh(ji,jj) / phbl(ji,jj) * puw0(ji,jj) - ( 2.0 + pdh(ji,jj) / phml(ji,jj) ) * zuw_bse(ji,jj) 
     3066            zb_cubic(ji,jj) = pdh(ji,jj) / phbl(ji,jj) * suw0(ji,jj) - ( 2.0 + pdh(ji,jj) / phml(ji,jj) ) * zuw_bse(ji,jj) 
    30703067            za_cubic(ji,jj) = zuw_bse(ji,jj) - zb_cubic(ji,jj) 
    3071             zvw_max = 0.7_wp * ff_t(ji,jj) * ( pustke(ji,jj) * dstokes(ji,jj) + 0.7_wp * pustar(ji,jj) * phml(ji,jj) ) 
     3068            zvw_max = 0.7_wp * ff_t(ji,jj) * ( sustke(ji,jj) * dstokes(ji,jj) + 0.7_wp * sustar(ji,jj) * phml(ji,jj) ) 
    30723069            zd_cubic(ji,jj) = zvw_max * pdh(ji,jj) / phml(ji,jj) - ( 2.0_wp + pdh(ji,jj) / phml(ji,jj) ) * zvw_bse(ji,jj) 
    30733070            zc_cubic(ji,jj) = zvw_bse(ji,jj) - zd_cubic(ji,jj) 
     
    31153112      ! ----------------------------------------------------------------------- 
    31163113      WHERE ( ldconv(A2D(0)) ) 
    3117          zsc_wth_1(:,:) = pwth0(A2D(0)) / ( 1.0_wp - 0.56_wp * EXP( phol(A2D(0)) ) ) 
    3118          zsc_ws_1(:,:)  = pws0(A2D(0))  / ( 1.0_wp - 0.56_wp * EXP( phol(A2D(0)) ) ) 
     3114         zsc_wth_1(:,:) = swth0(A2D(0)) / ( 1.0_wp - 0.56_wp * EXP( shol(A2D(0)) ) ) 
     3115         zsc_ws_1(:,:)  = sws0(A2D(0))  / ( 1.0_wp - 0.56_wp * EXP( shol(A2D(0)) ) ) 
    31193116         WHERE ( ldpyc(A2D(0)) )   ! Pycnocline scales 
    3120             zsc_wth_pyc(:,:) = -0.003_wp * pwstrc(A2D(0)) * ( 1.0_wp - pdh(A2D(0)) / phbl(A2D(0)) ) * pdt_ml(A2D(0)) 
    3121             zsc_ws_pyc(:,:)  = -0.003_wp * pwstrc(A2D(0)) * ( 1.0_wp - pdh(A2D(0)) / phbl(A2D(0)) ) * pds_ml(A2D(0)) 
     3117            zsc_wth_pyc(:,:) = -0.003_wp * swstrc(A2D(0)) * ( 1.0_wp - pdh(A2D(0)) / phbl(A2D(0)) ) * pdt_ml(A2D(0)) 
     3118            zsc_ws_pyc(:,:)  = -0.003_wp * swstrc(A2D(0)) * ( 1.0_wp - pdh(A2D(0)) / phbl(A2D(0)) ) * pds_ml(A2D(0)) 
    31223119         END WHERE 
    31233120      ELSEWHERE 
    3124          zsc_wth_1(:,:) = 2.0 * pwthav(A2D(0)) 
    3125          zsc_ws_1(:,:)  =       pws0(A2D(0)) 
     3121         zsc_wth_1(:,:) = 2.0 * swthav(A2D(0)) 
     3122         zsc_ws_1(:,:)  =       sws0(A2D(0)) 
    31263123      END WHERE 
    31273124      DO_3D( 0, 0, 0, 0, 1, MAX( jkm_mld, jkm_bld ) ) 
     
    31563153      ! 
    31573154      WHERE ( ldconv(A2D(0)) ) 
    3158          zsc_uw_1(:,:) = pustar(A2D(0))**2 
    3159          zsc_vw_1(:,:) = ff_t(A2D(0)) * pustke(A2D(0)) * phml(A2D(0)) 
     3155         zsc_uw_1(:,:) = sustar(A2D(0))**2 
     3156         zsc_vw_1(:,:) = ff_t(A2D(0)) * sustke(A2D(0)) * phml(A2D(0)) 
    31603157      ELSEWHERE 
    3161          zsc_uw_1(:,:) = pustar(A2D(0))**2 
     3158         zsc_uw_1(:,:) = sustar(A2D(0))**2 
    31623159         zsc_uw_2(:,:) = ( 2.25_wp - 3.0_wp * ( 1.0_wp - EXP( -1.25_wp * 2.0_wp ) ) ) * ( 1.0_wp - EXP( -4.0_wp * 2.0_wp ) ) *   & 
    31633160            &            zsc_uw_1(:,:) 
    3164          zsc_vw_1(:,:) = ff_t(A2D(0)) * pustke(A2D(0)) * phbl(A2D(0)) 
     3161         zsc_vw_1(:,:) = ff_t(A2D(0)) * sustke(A2D(0)) * phbl(A2D(0)) 
    31653162         zsc_vw_2(:,:) = -0.11_wp * SIN( 3.14159_wp * ( 2.0_wp + 0.4_wp ) ) * EXP( -1.0_wp * ( 1.5_wp + 2.0_wp )**2 ) *   & 
    31663163            &            zsc_vw_1(:,:) 
     
    32773274               IF ( pdhdt(ji,jj) > 0.0_wp ) THEN   ! Depth increasing, or steady. 
    32783275                  IF ( pdb_bl(ji,jj) > 0.0_wp ) THEN 
    3279                      IF ( phol(ji,jj) >= 0.5_wp ) THEN   ! Very stable - 'thick' pycnocline 
     3276                     IF ( shol(ji,jj) >= 0.5_wp ) THEN   ! Very stable - 'thick' pycnocline 
    32803277                        ztmp = 1.0_wp / MAX( phbl(ji,jj), epsln ) 
    32813278                        ztgrad = pdt_bl(ji,jj) * ztmp 
     
    33093306                           END IF 
    33103307                        END IF 
    3311                      ENDIF   ! IF (zhol >=0.5) 
     3308                     ENDIF   ! IF (shol >=0.5) 
    33123309                  ENDIF      ! IF (zdb_bl> 0.) 
    33133310               ENDIF         ! IF (zdhdt >= 0) zdhdt < 0 not considered since pycnocline profile is zero and profile arrays are intialized to zero 
Note: See TracChangeset for help on using the changeset viewer.