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 14913 – NEMO

Changeset 14913


Ignore:
Timestamp:
2021-05-27T13:18:26+02:00 (3 years ago)
Author:
smueller
Message:

Synchronizing with /NEMO/trunk@14912 (ticket #2353)

Location:
NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg

    r14856 r14913  
    4242&namtile        !   parameters of the tiling 
    4343!----------------------------------------------------------------------- 
    44    ln_tile = .false.     !  Use tiling (T) or not (F) 
    45    nn_ltile_i = 10       !  Length of tiles in i 
    46    nn_ltile_j = 10       !  Length of tiles in j 
    4744/ 
    4845!----------------------------------------------------------------------- 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/cfgs/SHARED/namelist_ref

    r14822 r14913  
    9999!----------------------------------------------------------------------- 
    100100   ln_tile = .false.     !  Use tiling (T) or not (F) 
    101    nn_ltile_i = 10       !  Length of tiles in i 
     101   nn_ltile_i = 99999    !  Length of tiles in i 
    102102   nn_ltile_j = 10       !  Length of tiles in j 
    103103/ 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/ICE/icestp.F90

    r14072 r14913  
    460460            qcn_ice    (ji,jj,jl) = 0._wp   ! conductive flux (ln_cndflx=T & ln_cndemule=T) 
    461461            qtr_ice_bot(ji,jj,jl) = 0._wp   ! part of solar radiation transmitted through the ice needed at least for outputs 
     462            qml_ice    (ji,jj,jl) = 0._wp   ! surface melt heat flux 
    462463            ! Melt pond surface melt diagnostics (mv - more efficient: grouped into one water volume flux) 
    463464            dh_i_sum_2d(ji,jj,jl) = 0._wp 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/ICE/icethd.F90

    r14822 r14913  
    536536         CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_bot_1d(1:npti), qcn_ice_bot(:,:,kl) ) 
    537537         CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_top_1d(1:npti), qcn_ice_top(:,:,kl) ) 
     538         CALL tab_1d_2d( npti, nptidx(1:npti), qml_ice_1d    (1:npti), qml_ice    (:,:,kl) ) 
    538539         ! extensive variables 
    539540         CALL tab_1d_2d( npti, nptidx(1:npti), v_i_1d (1:npti), v_i (:,:,kl) ) 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/OCE/ZDF/zdfiwm.F90

    r14856 r14913  
    144144      ! Set to zero the 1st and last vertical levels of appropriate variables 
    145145      IF( iom_use("emix_iwm") ) THEN 
    146          DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    147             zemx_iwm (ji,jj,1) = 0._wp   ;   zemx_iwm (ji,jj,jpk) = 0._wp 
    148          END_2D 
     146         zemx_iwm(:,:,:) = 0._wp 
    149147      ENDIF 
    150148      IF( iom_use("av_ratio") ) THEN 
    151          DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    152             zav_ratio(ji,jj,1) = 0._wp   ;   zav_ratio(ji,jj,jpk) = 0._wp 
    153          END_2D 
     149         zav_ratio(:,:,:) = 0._wp 
    154150      ENDIF 
    155151      IF( iom_use("av_wave") .OR. sn_cfctl%l_prtctl ) THEN 
    156          DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    157             zav_wave (ji,jj,1) = 0._wp   ;   zav_wave (ji,jj,jpk) = 0._wp 
    158          END_2D 
     152         zav_wave(:,:,:) = 0._wp 
    159153      ENDIF 
    160154      ! 
     
    366360      IF( iom_use("bflx_iwm") .OR. iom_use("pcmap_iwm") ) THEN 
    367361         ALLOCATE( z2d(A2D(nn_hls)) , z3d(A2D(nn_hls),jpk) ) 
     362         ! Initialisation for iom_put 
    368363         z2d(:,:) = 0._wp ; z3d(:,:,:) = 0._wp 
    369  
    370          ! Initialisation for iom_put 
    371          DO_2D( 0, 0, 0, 0 ) 
    372             z3d(ji,jj,1) = 0._wp   ;   z3d(ji,jj,jpk) = 0._wp 
    373          END_2D 
    374364 
    375365         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    376366            z3d(ji,jj,jk) = MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) 
    377          END_3D 
    378          DO_2D( 0, 0, 0, 0 ) 
    379             z2d(ji,jj) = 0._wp 
    380          END_2D 
    381          DO_3D( 0, 0, 0, 0, 2, jpkm1 )  
    382367            z2d(ji,jj) = z2d(ji,jj) + e3w(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * wmask(ji,jj,jk) 
    383368         END_3D 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/OCE/ZDF/zdfosm.F90

    r14912 r14913  
    264264      zdf_osm_alloc = zdf_osm_alloc + ierr 
    265265      ! 
    266       ALLOCATE( etmean(A2D((nn_hls-1)),jpk), dh(jpi,jpj), r1_ft(A2D((nn_hls-1))), STAT=ierr ) 
     266      ALLOCATE( etmean(A2D(nn_hls-1),jpk), dh(jpi,jpj), r1_ft(A2D(nn_hls-1)), STAT=ierr ) 
    267267      zdf_osm_alloc = zdf_osm_alloc + ierr 
    268268      ! 
    269       ALLOCATE( nbld(jpi,jpj), nmld(A2D((nn_hls-1))), STAT=ierr ) 
     269      ALLOCATE( nbld(jpi,jpj), nmld(A2D(nn_hls-1)), STAT=ierr ) 
    270270      zdf_osm_alloc = zdf_osm_alloc + ierr 
    271271      ! 
    272       ALLOCATE( n_ddh(A2D((nn_hls-1))), STAT=ierr ) 
     272      ALLOCATE( n_ddh(A2D(nn_hls-1)), STAT=ierr ) 
    273273      zdf_osm_alloc = zdf_osm_alloc + ierr 
    274274      ! 
    275       ALLOCATE( l_conv(A2D((nn_hls-1))), l_shear(A2D((nn_hls-1))), l_coup(A2D((nn_hls-1))), l_pyc(A2D((nn_hls-1))),   & 
    276          &      l_flux(A2D((nn_hls-1))), l_mle(A2D((nn_hls-1))), STAT=ierr ) 
     275      ALLOCATE( l_conv(A2D(nn_hls-1)), l_shear(A2D(nn_hls-1)), l_coup(A2D(nn_hls-1)), l_pyc(A2D(nn_hls-1)),   & 
     276         &      l_flux(A2D(nn_hls-1)), l_mle(A2D(nn_hls-1)),  STAT=ierr ) 
    277277      zdf_osm_alloc = zdf_osm_alloc + ierr 
    278278      ! 
    279       ALLOCATE( swth0(A2D((nn_hls-1))),  sws0(A2D((nn_hls-1))),      swb0(A2D((nn_hls-1))),      suw0(A2D((nn_hls-1))),      & 
    280          &      sustar(A2D((nn_hls-1))), scos_wind(A2D((nn_hls-1))), ssin_wind(A2D((nn_hls-1))), swthav(A2D((nn_hls-1))),    & 
    281          &      swsav(A2D((nn_hls-1))),  swbav(A2D((nn_hls-1))),     sustke(A2D((nn_hls-1))),    dstokes(A2D((nn_hls-1))),   & 
    282          &      swstrl(A2D((nn_hls-1))), swstrc(A2D((nn_hls-1))),    sla(A2D((nn_hls-1))),       svstr(A2D((nn_hls-1))),     & 
    283          &      shol(A2D((nn_hls-1))),   STAT=ierr ) 
     279      ALLOCATE( swth0(A2D(nn_hls-1)),  sws0(A2D(nn_hls-1)),      swb0(A2D(nn_hls-1)),      suw0(A2D(nn_hls-1)),      & 
     280         &      sustar(A2D(nn_hls-1)), scos_wind(A2D(nn_hls-1)), ssin_wind(A2D(nn_hls-1)), swthav(A2D(nn_hls-1)),    & 
     281         &      swsav(A2D(nn_hls-1)),  swbav(A2D(nn_hls-1)),     sustke(A2D(nn_hls-1)),    dstokes(A2D(nn_hls-1)),   & 
     282         &      swstrl(A2D(nn_hls-1)), swstrc(A2D(nn_hls-1)),    sla(A2D(nn_hls-1)),       svstr(A2D(nn_hls-1)),     & 
     283         &      shol(A2D(nn_hls-1)),   STAT=ierr ) 
    284284      zdf_osm_alloc = zdf_osm_alloc + ierr 
    285285      ! 
     
    359359      REAL(wp) ::   zesh2, zri, zfri   ! Interior Richardson mixing 
    360360      !! Scales 
    361       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zrad0       ! Surface solar temperature flux (deg m/s) 
    362       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zradh       ! Radiative flux at bl base (Buoyancy units) 
    363       REAL(wp)                              ::   zradav      ! Radiative flux, bl average (Buoyancy Units) 
    364       REAL(wp)                              ::   zvw0        ! Surface v-momentum flux 
    365       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zwb0tot     ! Total surface buoyancy flux including insolation 
    366       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zwb_ent     ! Buoyancy entrainment flux 
    367       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zwb_min 
    368       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zwb_fk_b    ! MLE buoyancy flux averaged over OSBL 
    369       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zwb_fk      ! Max MLE buoyancy flux 
    370       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdiff_mle   ! Extra MLE vertical diff 
    371       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zvel_mle    ! Velocity scale for dhdt with stable ML and FK 
     361      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zrad0       ! Surface solar temperature flux (deg m/s) 
     362      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zradh       ! Radiative flux at bl base (Buoyancy units) 
     363      REAL(wp)                           ::   zradav      ! Radiative flux, bl average (Buoyancy Units) 
     364      REAL(wp)                           ::   zvw0        ! Surface v-momentum flux 
     365      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zwb0tot     ! Total surface buoyancy flux including insolation 
     366      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zwb_ent     ! Buoyancy entrainment flux 
     367      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zwb_min 
     368      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zwb_fk_b    ! MLE buoyancy flux averaged over OSBL 
     369      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zwb_fk      ! Max MLE buoyancy flux 
     370      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdiff_mle   ! Extra MLE vertical diff 
     371      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zvel_mle    ! Velocity scale for dhdt with stable ML and FK 
    372372      !! Mixed-layer variables 
    373       INTEGER,  DIMENSION(A2D((nn_hls-1))) ::   jk_nlev   ! Number of levels 
    374       INTEGER,  DIMENSION(A2D((nn_hls-1))) ::   jk_ext   ! Offset for external level 
    375       !! 
    376       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zhbl   ! BL depth - grid 
    377       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zhml   ! ML depth - grid 
    378       !! 
    379       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zhmle   ! MLE depth - grid 
    380       REAL(wp), DIMENSION(A2D(nn_hls))     ::   zmld    ! ML depth on grid 
    381       !! 
    382       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdh                          ! Pycnocline depth - grid 
    383       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdhdt                        ! BL depth tendency 
    384       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdtdz_bl_ext, zdsdz_bl_ext   ! External temperature/salinity gradients 
    385       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdbdz_bl_ext                 ! External buoyancy gradients 
    386       REAL(wp), DIMENSION(A2D(nn_hls))     ::   zdtdx, zdtdy, zdsdx, zdsdy   ! Horizontal gradients for Fox-Kemper parametrization 
    387       !! 
    388       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdbds_mle   ! Magnitude of horizontal buoyancy gradient 
     373      INTEGER,  DIMENSION(A2D(nn_hls-1)) ::   jk_nlev  ! Number of levels 
     374      INTEGER,  DIMENSION(A2D(nn_hls-1)) ::   jk_ext   ! Offset for external level 
     375      !! 
     376      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zhbl   ! BL depth - grid 
     377      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zhml   ! ML depth - grid 
     378      !! 
     379      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zhmle   ! MLE depth - grid 
     380      REAL(wp), DIMENSION(A2D(nn_hls))   ::   zmld    ! ML depth on grid 
     381      !! 
     382      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdh                          ! Pycnocline depth - grid 
     383      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdhdt                        ! BL depth tendency 
     384      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdtdz_bl_ext, zdsdz_bl_ext   ! External temperature/salinity gradients 
     385      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdbdz_bl_ext                 ! External buoyancy gradients 
     386      REAL(wp), DIMENSION(A2D(nn_hls))   ::   zdtdx, zdtdy, zdsdx, zdsdy   ! Horizontal gradients for Fox-Kemper parametrization 
     387      !! 
     388      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdbds_mle   ! Magnitude of horizontal buoyancy gradient 
    389389      !! Flux-gradient relationship variables 
    390       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zshear   ! Shear production 
    391       !! 
    392       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zhbl_t   ! Holds boundary layer depth updated by full timestep 
     390      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zshear   ! Shear production 
     391      !! 
     392      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zhbl_t   ! Holds boundary layer depth updated by full timestep 
    393393      !! For calculating Ri#-dependent mixing 
    394394      REAL(wp), DIMENSION(A2D(nn_hls)) ::   z2du     ! u-shear^2 
     
    399399      REAL(wp)                                 ::   zz0, zz1, zfac 
    400400      REAL(wp)                                 ::   zus_x, zus_y     ! Temporary Stokes drift 
    401       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk) ::   zviscos          ! Viscosity 
    402       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk) ::   zdiffut          ! t-diffusivity 
     401      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk)  ::   zviscos          ! Viscosity 
     402      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk)  ::   zdiffut          ! t-diffusivity 
    403403      REAL(wp)                                 ::   zabsstke 
    404404      REAL(wp)                                 ::   zsqrtpi, z_two_thirds, zthickness 
     
    644644      ! 
    645645      ! Averages over well-mixed and boundary layer, note BL averages use jk_ext=2 everywhere 
    646       jk_nlev(:,:) = nbld(A2D((nn_hls-1))) 
     646      jk_nlev(:,:) = nbld(A2D(nn_hls-1)) 
    647647      jk_ext(:,:) = 1   ! ag 19/03 
    648648      CALL zdf_osm_vertical_average( Kbb,      Kmm,      jk_nlev,  av_t_bl,  av_s_bl,    & 
    649649         &                           av_b_bl,  av_u_bl,  av_v_bl,  jk_ext,   av_dt_bl,   & 
    650650         &                           av_ds_bl, av_db_bl, av_du_bl, av_dv_bl ) 
    651       jk_nlev(:,:) = nmld(A2D((nn_hls-1))) - 1 
    652       jk_ext(:,:) = nbld(A2D((nn_hls-1))) - nmld(A2D((nn_hls-1))) + jk_ext(:,:) + 1   ! ag 19/03 
     651      jk_nlev(:,:) = nmld(A2D(nn_hls-1)) - 1 
     652      jk_ext(:,:) = nbld(A2D(nn_hls-1)) - nmld(A2D(nn_hls-1)) + jk_ext(:,:) + 1   ! ag 19/03 
    653653      CALL zdf_osm_vertical_average( Kbb,      Kmm,      jk_nlev,  av_t_ml,  av_s_ml,    & 
    654654         &                           av_b_ml,  av_u_ml,  av_v_ml,  jk_ext,   av_dt_ml,   & 
     
    672672            IF ( hmle(ji,jj) >= gdepw(ji,jj,jk,Kmm) ) mld_prof(ji,jj) = MIN( mbkt(ji,jj), jk) 
    673673         END_3D 
    674          jk_nlev(:,:) = mld_prof(A2D((nn_hls-1))) 
     674         jk_nlev(:,:) = mld_prof(A2D(nn_hls-1)) 
    675675         CALL zdf_osm_vertical_average( Kbb,      Kmm,      jk_nlev,  av_t_mle, av_s_mle,   & 
    676676            &                           av_b_mle, av_u_mle, av_v_mle ) 
     
    700700      ! 
    701701      !! External gradient below BL needed both with and w/o FK 
    702       jk_ext(:,:) = nbld(A2D((nn_hls-1))) + 1 
     702      jk_ext(:,:) = nbld(A2D(nn_hls-1)) + 1 
    703703      CALL zdf_osm_external_gradients( Kmm, jk_ext, zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext )   ! ag 19/03 
    704704      ! 
     
    721721      ! 
    722722      ! Recalculate bl averages using jk_ext & ml averages .... note no rotation of u & v here.. 
    723       jk_nlev(:,:) = nbld(A2D((nn_hls-1))) 
     723      jk_nlev(:,:) = nbld(A2D(nn_hls-1)) 
    724724      jk_ext(:,:) = 1   ! ag 19/03 
    725725      CALL zdf_osm_vertical_average( Kbb,      Kmm,      jk_nlev,  av_t_bl,  av_s_bl,    & 
    726726         &                           av_b_bl,  av_u_bl,  av_v_bl,  jk_ext,   av_dt_bl,   & 
    727727         &                           av_ds_bl, av_db_bl, av_du_bl, av_dv_bl ) 
    728       jk_nlev(:,:) = nmld(A2D((nn_hls-1))) - 1 
    729       jk_ext(:,:) = nbld(A2D((nn_hls-1))) - nmld(A2D((nn_hls-1))) + jk_ext(:,:) + 1   ! ag 19/03 
     728      jk_nlev(:,:) = nmld(A2D(nn_hls-1)) - 1 
     729      jk_ext(:,:) = nbld(A2D(nn_hls-1)) - nmld(A2D(nn_hls-1)) + jk_ext(:,:) + 1   ! ag 19/03 
    730730      CALL zdf_osm_vertical_average( Kbb,      Kmm,      jk_nlev,  av_t_ml,  av_s_ml,    & 
    731731         &                           av_b_ml,  av_u_ml,  av_v_ml,  jk_ext,   av_dt_ml,   & 
     
    768768      ! 
    769769      ! Recalculate BL averages and differences using new BL depth 
    770       jk_nlev(:,:) = nbld(A2D((nn_hls-1))) 
     770      jk_nlev(:,:) = nbld(A2D(nn_hls-1)) 
    771771      jk_ext(:,:) = 1   ! ag 19/03 
    772772      CALL zdf_osm_vertical_average( Kbb,      Kmm,      jk_nlev,  av_t_bl,  av_s_bl,    & 
     
    800800      !      jk_ext = nbld - nmld + 1 
    801801      ! Recalculate ML averages and differences using new ML depth 
    802       jk_nlev(:,:) = nmld(A2D((nn_hls-1))) - 1 
    803       jk_ext(:,:) = nbld(A2D((nn_hls-1))) - nmld(A2D((nn_hls-1))) + jk_ext(:,:) + 1   ! ag 19/03 
     802      jk_nlev(:,:) = nmld(A2D(nn_hls-1)) - 1 
     803      jk_ext(:,:) = nbld(A2D(nn_hls-1)) - nmld(A2D(nn_hls-1)) + jk_ext(:,:) + 1   ! ag 19/03 
    804804      CALL zdf_osm_vertical_average( Kbb,      Kmm,      jk_nlev,  av_t_ml,  av_s_ml,    & 
    805805         &                           av_b_ml,  av_u_ml,  av_v_ml,  jk_ext,   av_dt_ml,   & 
    806806         &                           av_ds_ml, av_db_ml, av_du_ml, av_dv_ml ) 
    807807      ! 
    808       jk_ext(:,:) = nbld(A2D((nn_hls-1))) + 1 
     808      jk_ext(:,:) = nbld(A2D(nn_hls-1)) + 1 
    809809      CALL zdf_osm_external_gradients( Kmm, jk_ext, zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext ) 
    810810      ! Rotate mean currents and changes onto wind aligned co-ordinates 
     
    834834      ! 
    835835      ! Rotate non-gradient velocity terms back to model reference frame 
    836       jk_nlev(:,:) = nbld(A2D((nn_hls-1))) 
     836      jk_nlev(:,:) = nbld(A2D(nn_hls-1)) 
    837837      CALL zdf_osm_velocity_rotation( ghamu, ghamv, .FALSE.,  2, jk_nlev ) 
    838838      ! 
     
    10381038      !!              knlev+kp_ext 
    10391039      !!---------------------------------------------------------------------- 
    1040       INTEGER,                              INTENT(in   )           ::   Kbb, Kmm   ! Ocean time-level indices 
    1041       INTEGER,  DIMENSION(A2D((nn_hls-1))), INTENT(in   )           ::   knlev      ! Number of levels to average over. 
    1042       REAL(wp), DIMENSION(jpi,jpj),         INTENT(  out)           ::   pt, ps     ! Average temperature and salinity 
    1043       REAL(wp), DIMENSION(jpi,jpj),         INTENT(  out)           ::   pb         ! Average buoyancy 
    1044       REAL(wp), DIMENSION(jpi,jpj),         INTENT(  out)           ::   pu, pv     ! Average current components 
    1045       INTEGER,  DIMENSION(A2D((nn_hls-1))), INTENT(in   ), OPTIONAL ::   kp_ext     ! External-level offsets 
    1046       REAL(wp), DIMENSION(jpi,jpj),         INTENT(  out), OPTIONAL ::   pdt        ! Difference between average temperature, 
    1047       REAL(wp), DIMENSION(jpi,jpj),         INTENT(  out), OPTIONAL ::   pds        !    salinity, 
    1048       REAL(wp), DIMENSION(jpi,jpj),         INTENT(  out), OPTIONAL ::   pdb        !    buoyancy, and 
    1049       REAL(wp), DIMENSION(jpi,jpj),         INTENT(  out), OPTIONAL ::   pdu, pdv   !    velocity components and the OSBL 
     1040      INTEGER,                            INTENT(in   )           ::   Kbb, Kmm   ! Ocean time-level indices 
     1041      INTEGER,  DIMENSION(A2D(nn_hls-1)), INTENT(in   )           ::   knlev      ! Number of levels to average over. 
     1042      REAL(wp), DIMENSION(jpi,jpj),       INTENT(  out)           ::   pt, ps     ! Average temperature and salinity 
     1043      REAL(wp), DIMENSION(jpi,jpj),       INTENT(  out)           ::   pb         ! Average buoyancy 
     1044      REAL(wp), DIMENSION(jpi,jpj),       INTENT(  out)           ::   pu, pv     ! Average current components 
     1045      INTEGER,  DIMENSION(A2D(nn_hls-1)), INTENT(in   ), OPTIONAL ::   kp_ext     ! External-level offsets 
     1046      REAL(wp), DIMENSION(jpi,jpj),       INTENT(  out), OPTIONAL ::   pdt        ! Difference between average temperature, 
     1047      REAL(wp), DIMENSION(jpi,jpj),       INTENT(  out), OPTIONAL ::   pds        !    salinity, 
     1048      REAL(wp), DIMENSION(jpi,jpj),       INTENT(  out), OPTIONAL ::   pdb        !    buoyancy, and 
     1049      REAL(wp), DIMENSION(jpi,jpj),       INTENT(  out), OPTIONAL ::   pdu, pdv   !    velocity components and the OSBL 
    10501050      !! 
    10511051      INTEGER                              ::   jk, jkflt, jkmax, ji, jj   ! Loop indices 
    10521052      INTEGER                              ::   ibld_ext                   ! External-layer index 
    1053       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zthick                     ! Layer thickness 
     1053      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zthick                     ! Layer thickness 
    10541054      REAL(wp)                             ::   zthermal                   ! Thermal expansion coefficient 
    10551055      REAL(wp)                             ::   zbeta                      ! Haline contraction coefficient 
     
    11741174      !! 
    11751175      !!----------------------------------------------------------------------       
    1176       REAL(wp),           INTENT(inout), DIMENSION(jpi,jpj,jpk)     ::   pu, pv   ! Components of current 
    1177       LOGICAL,  OPTIONAL, INTENT(in   )                             ::   fwd      ! Forward (default) or reverse rotation 
    1178       INTEGER,  OPTIONAL, INTENT(in   )                             ::   ktop     ! Minimum depth index 
    1179       INTEGER,  OPTIONAL, INTENT(in   ), DIMENSION(A2D((nn_hls-1))) ::   knlev    ! Array of maximum depth indices 
     1176      REAL(wp),           INTENT(inout), DIMENSION(jpi,jpj,jpk)   ::   pu, pv   ! Components of current 
     1177      LOGICAL,  OPTIONAL, INTENT(in   )                           ::   fwd      ! Forward (default) or reverse rotation 
     1178      INTEGER,  OPTIONAL, INTENT(in   )                           ::   ktop     ! Minimum depth index 
     1179      INTEGER,  OPTIONAL, INTENT(in   ), DIMENSION(A2D(nn_hls-1)) ::   knlev    ! Array of maximum depth indices 
    11801180      !! 
    11811181      INTEGER  ::   ji, jj, jk, jktop, jkmax   ! Loop indices 
     
    12211221      !! 
    12221222      !!---------------------------------------------------------------------- 
    1223       INTEGER,                              INTENT(in   ) ::   Kmm       ! Ocean time-level index 
    1224       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(  out) ::   pwb_ent   ! Buoyancy fluxes at base 
    1225       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(  out) ::   pwb_min   !    of well-mixed layer 
    1226       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(  out) ::   pshear    ! Production of TKE due to shear across the pycnocline 
    1227       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phbl      ! BL depth 
    1228       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phml      ! ML depth 
    1229       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pdh       ! Pycnocline depth 
     1223      INTEGER,                            INTENT(in   ) ::   Kmm       ! Ocean time-level index 
     1224      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(  out) ::   pwb_ent   ! Buoyancy fluxes at base 
     1225      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(  out) ::   pwb_min   !    of well-mixed layer 
     1226      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(  out) ::   pshear    ! Production of TKE due to shear across the pycnocline 
     1227      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phbl      ! BL depth 
     1228      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phml      ! ML depth 
     1229      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pdh       ! Pycnocline depth 
    12301230      !! 
    12311231      INTEGER :: jj, ji   ! Loop indices 
    12321232      !! 
    1233       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zekman 
    1234       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zri_p, zri_b   ! Richardson numbers 
    1235       REAL(wp)                             ::   zshear_u, zshear_v, zwb_shr 
    1236       REAL(wp)                             ::   zwcor, zrf_conv, zrf_shear, zrf_langmuir, zr_stokes 
     1233      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zekman 
     1234      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zri_p, zri_b   ! Richardson numbers 
     1235      REAL(wp)                           ::   zshear_u, zshear_v, zwb_shr 
     1236      REAL(wp)                           ::   zwcor, zrf_conv, zrf_shear, zrf_langmuir, zr_stokes 
    12371237      !! 
    12381238      REAL(wp), PARAMETER ::   pp_a_shr         = 0.4_wp,  pp_b_shr    = 6.5_wp,  pp_a_wb_s = 0.8_wp 
     
    12691269         pshear(ji,jj) = 0.0_wp 
    12701270      END_2D 
    1271       zekman(:,:) = EXP( -1.0_wp * pp_ek * ABS( ff_t(A2D((nn_hls-1))) ) * phbl(A2D((nn_hls-1))) /   & 
    1272          &               MAX( sustar(A2D((nn_hls-1))), 1.e-8 ) ) 
     1271      zekman(:,:) = EXP( -1.0_wp * pp_ek * ABS( ff_t(A2D(nn_hls-1)) ) * phbl(A2D(nn_hls-1)) /   & 
     1272         &               MAX( sustar(A2D(nn_hls-1)), 1.e-8 ) ) 
    12731273      ! 
    12741274      DO_2D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     
    13841384      !! 
    13851385      !!----------------------------------------------------------------------    
    1386       INTEGER,                              INTENT(in   ) ::   Kmm            ! Ocean time-level index 
    1387       INTEGER,  DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   kbase          ! OSBL base layer index 
    1388       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(  out) ::   pdtdz, pdsdz   ! External gradients of temperature, salinity 
    1389       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(  out) ::   pdbdz          !    and buoyancy 
     1386      INTEGER,                            INTENT(in   ) ::   Kmm            ! Ocean time-level index 
     1387      INTEGER,  DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   kbase          ! OSBL base layer index 
     1388      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(  out) ::   pdtdz, pdsdz   ! External gradients of temperature, salinity 
     1389      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(  out) ::   pdbdz          !    and buoyancy 
    13901390      !! 
    13911391      INTEGER  ::   ji, jj, jkb, jkb1 
     
    14291429      !! 
    14301430      !!---------------------------------------------------------------------- 
    1431       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(  out) ::   pdhdt          ! Rate of change of hbl 
    1432       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phbl           ! BL depth 
    1433       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pdh            ! Pycnocline depth 
    1434       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_ent        ! Buoyancy entrainment flux 
    1435       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_min 
    1436       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
    1437       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(  out) ::   pwb_fk_b       ! MLE buoyancy flux averaged over OSBL 
    1438       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_fk         ! Max MLE buoyancy flux 
    1439       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pvel_mle       ! Vvelocity scale for dhdt with stable ML and FK 
     1431      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(  out) ::   pdhdt          ! Rate of change of hbl 
     1432      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phbl           ! BL depth 
     1433      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pdh            ! Pycnocline depth 
     1434      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_ent        ! Buoyancy entrainment flux 
     1435      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_min 
     1436      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
     1437      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(  out) ::   pwb_fk_b       ! MLE buoyancy flux averaged over OSBL 
     1438      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_fk         ! Max MLE buoyancy flux 
     1439      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pvel_mle       ! Vvelocity scale for dhdt with stable ML and FK 
    14401440      !! 
    14411441      INTEGER  ::   jj, ji 
     
    15981598      !! 
    15991599      !!---------------------------------------------------------------------- 
    1600       INTEGER,                              INTENT(in   ) ::   Kmm        ! Ocean time-level index 
    1601       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   pdhdt      ! Rates of change of hbl 
    1602       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   phbl       ! BL depth 
    1603       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phbl_t     ! BL depth 
    1604       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_ent    ! Buoyancy entrainment flux 
    1605       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_fk_b   ! MLE buoyancy flux averaged over OSBL 
     1600      INTEGER,                            INTENT(in   ) ::   Kmm        ! Ocean time-level index 
     1601      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   pdhdt      ! Rates of change of hbl 
     1602      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   phbl       ! BL depth 
     1603      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phbl_t     ! BL depth 
     1604      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_ent    ! Buoyancy entrainment flux 
     1605      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_fk_b   ! MLE buoyancy flux averaged over OSBL 
    16061606      !! 
    16071607      INTEGER  ::   jk, jj, ji, jm 
     
    16981698      !! 
    16991699      !!---------------------------------------------------------------------- 
    1700       INTEGER,                              INTENT(in   ) ::   Kmm            ! Ocean time-level index 
    1701       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   pdh            ! Pycnocline thickness 
    1702       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   phml           ! ML depth 
    1703       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pdhdt          ! BL depth tendency 
    1704       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phbl           ! BL depth 
    1705       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_ent        ! Buoyancy entrainment flux 
    1706       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
    1707       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_fk_b       ! MLE buoyancy flux averaged over OSBL 
     1700      INTEGER,                            INTENT(in   ) ::   Kmm            ! Ocean time-level index 
     1701      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   pdh            ! Pycnocline thickness 
     1702      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   phml           ! ML depth 
     1703      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pdhdt          ! BL depth tendency 
     1704      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phbl           ! BL depth 
     1705      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_ent        ! Buoyancy entrainment flux 
     1706      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
     1707      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_fk_b       ! MLE buoyancy flux averaged over OSBL 
    17081708      !! 
    17091709      INTEGER  ::   jj, ji 
     
    18581858      !! 
    18591859      !!---------------------------------------------------------------------- 
    1860       INTEGER,                                   INTENT(in   ) ::   Kmm            ! Ocean time-level index 
    1861       INTEGER,  DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   kp_ext         ! External-level offsets 
    1862       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk),  INTENT(  out) ::   pdbdz          ! Gradients in the pycnocline 
    1863       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(  out) ::   palpha 
    1864       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdh            ! Pycnocline thickness 
    1865       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   phbl           ! BL depth 
    1866       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
    1867       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   phml           ! ML depth 
    1868       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdhdt          ! Rates of change of hbl 
     1860      INTEGER,                                 INTENT(in   ) ::   Kmm            ! Ocean time-level index 
     1861      INTEGER,  DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   kp_ext         ! External-level offsets 
     1862      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk),  INTENT(  out) ::   pdbdz          ! Gradients in the pycnocline 
     1863      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(  out) ::   palpha 
     1864      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdh            ! Pycnocline thickness 
     1865      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   phbl           ! BL depth 
     1866      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
     1867      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   phml           ! ML depth 
     1868      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdhdt          ! Rates of change of hbl 
    18691869      !! 
    18701870      INTEGER  ::   jk, jj, ji 
     
    19691969      !! 
    19701970      !!---------------------------------------------------------------------- 
    1971       INTEGER,                                   INTENT(in   ) ::   Kbb, Kmm       ! Ocean time-level indices 
    1972       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk),  INTENT(inout) ::   pdiffut        ! t-diffusivity 
    1973       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk),  INTENT(inout) ::   pviscos        ! Viscosity 
    1974       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   phbl           ! BL depth 
    1975       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   phml           ! ML depth 
    1976       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdh            ! Pycnocline depth 
    1977       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdhdt          ! BL depth tendency 
    1978       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pshear         ! Shear production 
    1979       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pwb_ent        ! Buoyancy entrainment flux 
    1980       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pwb_min 
     1971      INTEGER,                                 INTENT(in   ) ::   Kbb, Kmm       ! Ocean time-level indices 
     1972      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk),  INTENT(inout) ::   pdiffut        ! t-diffusivity 
     1973      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk),  INTENT(inout) ::   pviscos        ! Viscosity 
     1974      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   phbl           ! BL depth 
     1975      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   phml           ! ML depth 
     1976      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdh            ! Pycnocline depth 
     1977      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdhdt          ! BL depth tendency 
     1978      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pshear         ! Shear production 
     1979      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pwb_ent        ! Buoyancy entrainment flux 
     1980      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pwb_min 
    19811981      !! 
    19821982      INTEGER ::   ji, jj, jk   ! Loop indices 
    19831983      !! Scales used to calculate eddy diffusivity and viscosity profiles 
    1984       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdifml_sc,    zvisml_sc 
    1985       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zdifpyc_n_sc, zdifpyc_s_sc 
    1986       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zvispyc_n_sc, zvispyc_s_sc 
    1987       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zbeta_d_sc,   zbeta_v_sc 
    1988       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zb_coup,      zc_coup_vis,  zc_coup_dif 
     1984      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdifml_sc,    zvisml_sc 
     1985      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zdifpyc_n_sc, zdifpyc_s_sc 
     1986      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zvispyc_n_sc, zvispyc_s_sc 
     1987      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zbeta_d_sc,   zbeta_v_sc 
     1988      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zb_coup,      zc_coup_vis,  zc_coup_dif 
    19891989      !! 
    19901990      REAL(wp) ::   zvel_sc_pyc, zvel_sc_ml, zstab_fac, zz_b 
     
    21642164      !! 
    21652165      !!---------------------------------------------------------------------- 
    2166       INTEGER,                                   INTENT(in   ) ::   Kmm            ! Time-level index 
    2167       INTEGER,  DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   kp_ext         ! Offset for external level 
    2168       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   phbl           ! BL depth 
    2169       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   phml           ! ML depth 
    2170       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdh            ! Pycnocline depth 
    2171       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdhdt          ! BL depth tendency 
    2172       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pshear         ! Shear production 
    2173       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdtdz_bl_ext   ! External temperature gradients 
    2174       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdsdz_bl_ext   ! External salinity gradients 
    2175       REAL(wp), DIMENSION(A2D((nn_hls-1))),      INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
    2176       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk),  INTENT(in   ) ::   pdiffut        ! t-diffusivity 
    2177       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk),  INTENT(in   ) ::   pviscos        ! Viscosity 
    2178       !! 
    2179       REAL(wp), DIMENSION(A2D((nn_hls-1)))     ::   zalpha_pyc   ! 
    2180       REAL(wp), DIMENSION(A2D((nn_hls-1)),jpk) ::   zdbdz_pyc    ! Parametrised gradient of buoyancy in the pycnocline 
     2166      INTEGER,                                 INTENT(in   ) ::   Kmm            ! Time-level index 
     2167      INTEGER,  DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   kp_ext         ! Offset for external level 
     2168      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   phbl           ! BL depth 
     2169      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   phml           ! ML depth 
     2170      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdh            ! Pycnocline depth 
     2171      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdhdt          ! BL depth tendency 
     2172      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pshear         ! Shear production 
     2173      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdtdz_bl_ext   ! External temperature gradients 
     2174      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdsdz_bl_ext   ! External salinity gradients 
     2175      REAL(wp), DIMENSION(A2D(nn_hls-1)),      INTENT(in   ) ::   pdbdz_bl_ext   ! External buoyancy gradients 
     2176      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk),  INTENT(in   ) ::   pdiffut        ! t-diffusivity 
     2177      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk),  INTENT(in   ) ::   pviscos        ! Viscosity 
     2178      !! 
     2179      REAL(wp), DIMENSION(A2D(nn_hls-1))     ::   zalpha_pyc   ! 
     2180      REAL(wp), DIMENSION(A2D(nn_hls-1),jpk) ::   zdbdz_pyc    ! Parametrised gradient of buoyancy in the pycnocline 
    21812181      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   z3ddz_pyc_1, z3ddz_pyc_2   ! Pycnocline gradient/shear profiles 
    21822182      !! 
    2183       INTEGER                              ::   ji, jj, jk, jkm_bld, jkf_mld, jkm_mld   ! Loop indices 
    2184       INTEGER                              ::   istat                                   ! Memory allocation status 
    2185       REAL(wp)                             ::   zznd_d, zznd_ml, zznd_pyc, znd          ! Temporary non-dimensional depths 
    2186       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zsc_wth_1,zsc_ws_1                      ! Temporary scales 
    2187       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zsc_uw_1, zsc_uw_2                      ! Temporary scales 
    2188       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zsc_vw_1, zsc_vw_2                      ! Temporary scales 
    2189       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   ztau_sc_u                               ! Dissipation timescale at base of WML 
    2190       REAL(wp)                             ::   zbuoy_pyc_sc, zdelta_pyc                ! 
    2191       REAL(wp)                             ::   zl_c,zl_l,zl_eps                        ! Used to calculate turbulence length scale 
    2192       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   za_cubic, zb_cubic                      ! Coefficients in cubic polynomial specifying 
    2193       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zc_cubic, zd_cubic                      !    diffusivity in pycnocline 
    2194       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zwt_pyc_sc_1, zws_pyc_sc_1              ! 
    2195       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zzeta_pyc                               ! 
    2196       REAL(wp)                             ::   zomega, zvw_max                         ! 
    2197       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zuw_bse,zvw_bse                         ! Momentum, heat, and salinity fluxes 
    2198       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zwth_ent,zws_ent                        !    at the top of the pycnocline 
    2199       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   zsc_wth_pyc, zsc_ws_pyc                 ! Scales for pycnocline transport term 
    2200       REAL(wp)                             ::   ztmp                                    ! 
    2201       REAL(wp)                             ::   ztgrad, zsgrad, zbgrad                  ! Variables used to calculate pycnocline 
    2202       !!                                                                                !    gradients 
    2203       REAL(wp)                             ::   zugrad, zvgrad                          ! Variables for calculating pycnocline shear 
    2204       REAL(wp)                             ::   zdtdz_pyc                               ! Parametrized gradient of temperature in 
    2205       !!                                                                                !    pycnocline 
    2206       REAL(wp)                             ::   zdsdz_pyc                               ! Parametrised gradient of salinity in 
    2207       !!                                                                                !    pycnocline 
    2208       REAL(wp)                             ::   zdudz_pyc                               ! u-shear across the pycnocline 
    2209       REAL(wp)                             ::   zdvdz_pyc                               ! v-shear across the pycnocline 
     2183      INTEGER                            ::   ji, jj, jk, jkm_bld, jkf_mld, jkm_mld   ! Loop indices 
     2184      INTEGER                            ::   istat                                   ! Memory allocation status 
     2185      REAL(wp)                           ::   zznd_d, zznd_ml, zznd_pyc, znd          ! Temporary non-dimensional depths 
     2186      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zsc_wth_1,zsc_ws_1                      ! Temporary scales 
     2187      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zsc_uw_1, zsc_uw_2                      ! Temporary scales 
     2188      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zsc_vw_1, zsc_vw_2                      ! Temporary scales 
     2189      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   ztau_sc_u                               ! Dissipation timescale at base of WML 
     2190      REAL(wp)                           ::   zbuoy_pyc_sc, zdelta_pyc                ! 
     2191      REAL(wp)                           ::   zl_c,zl_l,zl_eps                        ! Used to calculate turbulence length scale 
     2192      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   za_cubic, zb_cubic                      ! Coefficients in cubic polynomial specifying 
     2193      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zc_cubic, zd_cubic                      !    diffusivity in pycnocline 
     2194      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zwt_pyc_sc_1, zws_pyc_sc_1              ! 
     2195      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zzeta_pyc                               ! 
     2196      REAL(wp)                           ::   zomega, zvw_max                         ! 
     2197      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zuw_bse,zvw_bse                         ! Momentum, heat, and salinity fluxes 
     2198      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zwth_ent,zws_ent                        !    at the top of the pycnocline 
     2199      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   zsc_wth_pyc, zsc_ws_pyc                 ! Scales for pycnocline transport term 
     2200      REAL(wp)                           ::   ztmp                                    ! 
     2201      REAL(wp)                           ::   ztgrad, zsgrad, zbgrad                  ! Variables used to calculate pycnocline 
     2202      !!                                                                              !    gradients 
     2203      REAL(wp)                           ::   zugrad, zvgrad                          ! Variables for calculating pycnocline shear 
     2204      REAL(wp)                           ::   zdtdz_pyc                               ! Parametrized gradient of temperature in 
     2205      !!                                                                              !    pycnocline 
     2206      REAL(wp)                           ::   zdsdz_pyc                               ! Parametrised gradient of salinity in 
     2207      !!                                                                              !    pycnocline 
     2208      REAL(wp)                           ::   zdudz_pyc                               ! u-shear across the pycnocline 
     2209      REAL(wp)                           ::   zdvdz_pyc                               ! v-shear across the pycnocline 
    22102210      !!---------------------------------------------------------------------- 
    22112211      ! 
     
    22292229      ! Stokes term in scalar flux, flux-gradient relationship 
    22302230      ! ------------------------------------------------------ 
    2231       WHERE ( l_conv(A2D((nn_hls-1))) ) 
    2232          zsc_wth_1(:,:) = swstrl(A2D((nn_hls-1)))**3 * swth0(A2D((nn_hls-1))) /   & 
    2233             &             ( svstr(A2D((nn_hls-1)))**3 + 0.5_wp * swstrc(A2D((nn_hls-1)))**3 + epsln ) 
    2234          zsc_ws_1(:,:)  = swstrl(A2D((nn_hls-1)))**3 * sws0(A2D((nn_hls-1)))  /   & 
    2235             &             ( svstr(A2D((nn_hls-1)))**3 + 0.5_wp * swstrc(A2D((nn_hls-1)))**3 + epsln ) 
     2231      WHERE ( l_conv(A2D(nn_hls-1)) ) 
     2232         zsc_wth_1(:,:) = swstrl(A2D(nn_hls-1))**3 * swth0(A2D(nn_hls-1)) /   & 
     2233            &             ( svstr(A2D(nn_hls-1))**3 + 0.5_wp * swstrc(A2D(nn_hls-1))**3 + epsln ) 
     2234         zsc_ws_1(:,:)  = swstrl(A2D(nn_hls-1))**3 * sws0(A2D(nn_hls-1))  /   & 
     2235            &             ( svstr(A2D(nn_hls-1))**3 + 0.5_wp * swstrc(A2D(nn_hls-1))**3 + epsln ) 
    22362236      ELSEWHERE 
    2237          zsc_wth_1(:,:) = 2.0_wp * swthav(A2D((nn_hls-1))) 
    2238          zsc_ws_1(:,:)  = 2.0_wp * swsav(A2D((nn_hls-1))) 
     2237         zsc_wth_1(:,:) = 2.0_wp * swthav(A2D(nn_hls-1)) 
     2238         zsc_ws_1(:,:)  = 2.0_wp * swsav(A2D(nn_hls-1)) 
    22392239      ENDWHERE 
    22402240      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, MAX( jkm_mld, jkm_bld ) ) 
     
    22662266      ! svstr since term needs to go to zero as swstrl goes to zero) 
    22672267      ! --------------------------------------------------------------------- 
    2268       WHERE ( l_conv(A2D((nn_hls-1))) ) 
    2269          zsc_uw_1(:,:) = ( swstrl(A2D((nn_hls-1)))**3 +                                                & 
    2270             &              0.5_wp * swstrc(A2D((nn_hls-1)))**3 )**pthird * sustke(A2D((nn_hls-1))) /   & 
    2271             &              MAX( ( 1.0_wp - 1.0_wp * 6.5_wp * sla(A2D((nn_hls-1)))**( 8.0_wp / 3.0_wp ) ), 0.2_wp ) 
    2272          zsc_uw_2(:,:) = ( swstrl(A2D((nn_hls-1)))**3 +                                                & 
    2273             &              0.5_wp * swstrc(A2D((nn_hls-1)))**3 )**pthird * sustke(A2D((nn_hls-1))) /   & 
    2274             &              MIN( sla(A2D((nn_hls-1)))**( 8.0_wp / 3.0_wp ) + epsln, 0.12_wp ) 
    2275          zsc_vw_1(:,:) = ff_t(A2D((nn_hls-1))) * phml(A2D((nn_hls-1))) * sustke(A2D((nn_hls-1)))**3 *   & 
    2276             &            MIN( sla(A2D((nn_hls-1)))**( 8.0_wp / 3.0_wp ), 0.12_wp ) /                    & 
    2277             &            ( ( svstr(A2D((nn_hls-1)))**3 + 0.5_wp * swstrc(A2D((nn_hls-1)))**3 )**( 2.0_wp / 3.0_wp ) + epsln ) 
     2268      WHERE ( l_conv(A2D(nn_hls-1)) ) 
     2269         zsc_uw_1(:,:) = ( swstrl(A2D(nn_hls-1))**3 +                                                & 
     2270            &              0.5_wp * swstrc(A2D(nn_hls-1))**3 )**pthird * sustke(A2D(nn_hls-1)) /   & 
     2271            &              MAX( ( 1.0_wp - 1.0_wp * 6.5_wp * sla(A2D(nn_hls-1))**( 8.0_wp / 3.0_wp ) ), 0.2_wp ) 
     2272         zsc_uw_2(:,:) = ( swstrl(A2D(nn_hls-1))**3 +                                                & 
     2273            &              0.5_wp * swstrc(A2D(nn_hls-1))**3 )**pthird * sustke(A2D(nn_hls-1)) /   & 
     2274            &              MIN( sla(A2D(nn_hls-1))**( 8.0_wp / 3.0_wp ) + epsln, 0.12_wp ) 
     2275         zsc_vw_1(:,:) = ff_t(A2D(nn_hls-1)) * phml(A2D(nn_hls-1)) * sustke(A2D(nn_hls-1))**3 *   & 
     2276            &            MIN( sla(A2D(nn_hls-1))**( 8.0_wp / 3.0_wp ), 0.12_wp ) /                    & 
     2277            &            ( ( svstr(A2D(nn_hls-1))**3 + 0.5_wp * swstrc(A2D(nn_hls-1))**3 )**( 2.0_wp / 3.0_wp ) + epsln ) 
    22782278      ELSEWHERE 
    2279          zsc_uw_1(:,:) = sustar(A2D((nn_hls-1)))**2 
    2280          zsc_vw_1(:,:) = ff_t(A2D((nn_hls-1))) * phbl(A2D((nn_hls-1))) * sustke(A2D((nn_hls-1)))**3 *   & 
    2281             &            MIN( sla(A2D((nn_hls-1)))**( 8.0_wp / 3.0_wp ), 0.12_wp ) / ( svstr(A2D((nn_hls-1)))**2 + epsln ) 
     2279         zsc_uw_1(:,:) = sustar(A2D(nn_hls-1))**2 
     2280         zsc_vw_1(:,:) = ff_t(A2D(nn_hls-1)) * phbl(A2D(nn_hls-1)) * sustke(A2D(nn_hls-1))**3 *   & 
     2281            &            MIN( sla(A2D(nn_hls-1))**( 8.0_wp / 3.0_wp ), 0.12_wp ) / ( svstr(A2D(nn_hls-1))**2 + epsln ) 
    22822282      ENDWHERE 
    22832283      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, MAX( jkm_mld, jkm_bld ) ) 
     
    23032303      ! (X0.3) and pressure (X0.5)] 
    23042304      ! ---------------------------------------------------------------------- 
    2305       WHERE ( l_conv(A2D((nn_hls-1))) ) 
    2306          zsc_wth_1(:,:) = swbav(A2D((nn_hls-1))) * swth0(A2D((nn_hls-1))) * ( 1.0_wp + EXP( 0.2_wp * shol(A2D((nn_hls-1))) ) ) *   & 
    2307             &             phml(A2D((nn_hls-1))) / ( svstr(A2D((nn_hls-1)))**3 + 0.5_wp * swstrc(A2D((nn_hls-1)))**3 + epsln ) 
    2308          zsc_ws_1(:,:)  = swbav(A2D((nn_hls-1))) * sws0(A2D((nn_hls-1)))  * ( 1.0_wp + EXP( 0.2_wp * shol(A2D((nn_hls-1))) ) ) *   & 
    2309             &             phml(A2D((nn_hls-1))) / ( svstr(A2D((nn_hls-1)))**3 + 0.5_wp * swstrc(A2D((nn_hls-1)))**3 + epsln ) 
     2305      WHERE ( l_conv(A2D(nn_hls-1)) ) 
     2306         zsc_wth_1(:,:) = swbav(A2D(nn_hls-1)) * swth0(A2D(nn_hls-1)) * ( 1.0_wp + EXP( 0.2_wp * shol(A2D(nn_hls-1)) ) ) *   & 
     2307            &             phml(A2D(nn_hls-1)) / ( svstr(A2D(nn_hls-1))**3 + 0.5_wp * swstrc(A2D(nn_hls-1))**3 + epsln ) 
     2308         zsc_ws_1(:,:)  = swbav(A2D(nn_hls-1)) * sws0(A2D(nn_hls-1))  * ( 1.0_wp + EXP( 0.2_wp * shol(A2D(nn_hls-1)) ) ) *   & 
     2309            &             phml(A2D(nn_hls-1)) / ( svstr(A2D(nn_hls-1))**3 + 0.5_wp * swstrc(A2D(nn_hls-1))**3 + epsln ) 
    23102310      ELSEWHERE 
    23112311         zsc_wth_1(:,:) = 0.0_wp 
     
    23792379      ! 
    23802380      zsc_vw_1(:,:) = 0.0_wp 
    2381       WHERE ( l_conv(A2D((nn_hls-1))) ) 
    2382          zsc_uw_1(:,:) = -1.0_wp * swb0(A2D((nn_hls-1))) * sustar(A2D((nn_hls-1)))**2 * phml(A2D((nn_hls-1))) /   & 
    2383             &            ( svstr(A2D((nn_hls-1)))**3 + 0.5_wp * swstrc(A2D((nn_hls-1)))**3 + epsln ) 
    2384          zsc_uw_2(:,:) =           swb0(A2D((nn_hls-1))) * sustke(A2D((nn_hls-1)))    * phml(A2D((nn_hls-1))) /   & 
    2385             &            ( svstr(A2D((nn_hls-1)))**3 + 0.5_wp * swstrc(A2D((nn_hls-1)))**3 + epsln )**( 2.0_wp / 3.0_wp ) 
     2381      WHERE ( l_conv(A2D(nn_hls-1)) ) 
     2382         zsc_uw_1(:,:) = -1.0_wp * swb0(A2D(nn_hls-1)) * sustar(A2D(nn_hls-1))**2 * phml(A2D(nn_hls-1)) /   & 
     2383            &            ( svstr(A2D(nn_hls-1))**3 + 0.5_wp * swstrc(A2D(nn_hls-1))**3 + epsln ) 
     2384         zsc_uw_2(:,:) =           swb0(A2D(nn_hls-1)) * sustke(A2D(nn_hls-1))    * phml(A2D(nn_hls-1)) /   & 
     2385            &            ( svstr(A2D(nn_hls-1))**3 + 0.5_wp * swstrc(A2D(nn_hls-1))**3 + epsln )**( 2.0_wp / 3.0_wp ) 
    23862386      ELSEWHERE 
    23872387         zsc_uw_1(:,:) = 0.0_wp 
     
    24432443      ! (X0.3) ] 
    24442444      ! ----------------------------------------------------------------------- 
    2445       WHERE ( l_conv(A2D((nn_hls-1))) ) 
    2446          zsc_wth_1(:,:) = swth0(A2D((nn_hls-1))) / ( 1.0_wp - 0.56_wp * EXP( shol(A2D((nn_hls-1))) ) ) 
    2447          zsc_ws_1(:,:)  = sws0(A2D((nn_hls-1)))  / ( 1.0_wp - 0.56_wp * EXP( shol(A2D((nn_hls-1))) ) ) 
    2448          WHERE ( l_pyc(A2D((nn_hls-1))) )   ! Pycnocline scales 
    2449             zsc_wth_pyc(:,:) = -0.003_wp * swstrc(A2D((nn_hls-1))) * ( 1.0_wp - pdh(A2D((nn_hls-1))) / phbl(A2D((nn_hls-1))) ) *   & 
    2450                &               av_dt_ml(A2D((nn_hls-1))) 
    2451             zsc_ws_pyc(:,:)  = -0.003_wp * swstrc(A2D((nn_hls-1))) * ( 1.0_wp - pdh(A2D((nn_hls-1))) / phbl(A2D((nn_hls-1))) ) *   & 
    2452                &               av_ds_ml(A2D((nn_hls-1))) 
     2445      WHERE ( l_conv(A2D(nn_hls-1)) ) 
     2446         zsc_wth_1(:,:) = swth0(A2D(nn_hls-1)) / ( 1.0_wp - 0.56_wp * EXP( shol(A2D(nn_hls-1)) ) ) 
     2447         zsc_ws_1(:,:)  = sws0(A2D(nn_hls-1))  / ( 1.0_wp - 0.56_wp * EXP( shol(A2D(nn_hls-1)) ) ) 
     2448         WHERE ( l_pyc(A2D(nn_hls-1)) )   ! Pycnocline scales 
     2449            zsc_wth_pyc(:,:) = -0.003_wp * swstrc(A2D(nn_hls-1)) * ( 1.0_wp - pdh(A2D(nn_hls-1)) / phbl(A2D(nn_hls-1)) ) *   & 
     2450               &               av_dt_ml(A2D(nn_hls-1)) 
     2451            zsc_ws_pyc(:,:)  = -0.003_wp * swstrc(A2D(nn_hls-1)) * ( 1.0_wp - pdh(A2D(nn_hls-1)) / phbl(A2D(nn_hls-1)) ) *   & 
     2452               &               av_ds_ml(A2D(nn_hls-1)) 
    24532453         END WHERE 
    24542454      ELSEWHERE 
    2455          zsc_wth_1(:,:) = 2.0_wp * swthav(A2D((nn_hls-1))) 
    2456          zsc_ws_1(:,:)  =          sws0(A2D((nn_hls-1))) 
     2455         zsc_wth_1(:,:) = 2.0_wp * swthav(A2D(nn_hls-1)) 
     2456         zsc_ws_1(:,:)  =          sws0(A2D(nn_hls-1)) 
    24572457      END WHERE 
    24582458      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, MAX( jkm_mld, jkm_bld ) ) 
     
    24912491      END_3D 
    24922492      ! 
    2493       WHERE ( l_conv(A2D((nn_hls-1))) ) 
    2494          zsc_uw_1(:,:) = sustar(A2D((nn_hls-1)))**2 
    2495          zsc_vw_1(:,:) = ff_t(A2D((nn_hls-1))) * sustke(A2D((nn_hls-1))) * phml(A2D((nn_hls-1))) 
     2493      WHERE ( l_conv(A2D(nn_hls-1)) ) 
     2494         zsc_uw_1(:,:) = sustar(A2D(nn_hls-1))**2 
     2495         zsc_vw_1(:,:) = ff_t(A2D(nn_hls-1)) * sustke(A2D(nn_hls-1)) * phml(A2D(nn_hls-1)) 
    24962496      ELSEWHERE 
    2497          zsc_uw_1(:,:) = sustar(A2D((nn_hls-1)))**2 
     2497         zsc_uw_1(:,:) = sustar(A2D(nn_hls-1))**2 
    24982498         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 ) ) *   & 
    24992499            &            zsc_uw_1(:,:) 
    2500          zsc_vw_1(:,:) = ff_t(A2D((nn_hls-1))) * sustke(A2D((nn_hls-1))) * phbl(A2D((nn_hls-1))) 
     2500         zsc_vw_1(:,:) = ff_t(A2D(nn_hls-1)) * sustke(A2D(nn_hls-1)) * phbl(A2D(nn_hls-1)) 
    25012501         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 ) *   & 
    25022502            &            zsc_vw_1(:,:) 
     
    27022702      !! 
    27032703      !!---------------------------------------------------------------------- 
    2704       INTEGER,                              INTENT(in   ) ::   Kmm          ! Time-level index 
    2705       REAL(wp), DIMENSION(A2D(nn_hls)),     INTENT(  out) ::   pmld         ! == Estimated FK BLD used for MLE horizontal gradients == ! 
    2706       REAL(wp), DIMENSION(A2D(nn_hls)),     INTENT(inout) ::   pdtdx        ! Horizontal gradient for Fox-Kemper parametrization 
    2707       REAL(wp), DIMENSION(A2D(nn_hls)),     INTENT(inout) ::   pdtdy        ! Horizontal gradient for Fox-Kemper parametrization 
    2708       REAL(wp), DIMENSION(A2D(nn_hls)),     INTENT(inout) ::   pdsdx        ! Horizontal gradient for Fox-Kemper parametrization 
    2709       REAL(wp), DIMENSION(A2D(nn_hls)),     INTENT(inout) ::   pdsdy        ! Horizontal gradient for Fox-Kemper parametrization 
    2710       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   pdbds_mle    ! Magnitude of horizontal buoyancy gradient 
     2704      INTEGER,                            INTENT(in   ) ::   Kmm          ! Time-level index 
     2705      REAL(wp), DIMENSION(A2D(nn_hls)),   INTENT(  out) ::   pmld         ! == Estimated FK BLD used for MLE horizontal gradients == ! 
     2706      REAL(wp), DIMENSION(A2D(nn_hls)),   INTENT(inout) ::   pdtdx        ! Horizontal gradient for Fox-Kemper parametrization 
     2707      REAL(wp), DIMENSION(A2D(nn_hls)),   INTENT(inout) ::   pdtdy        ! Horizontal gradient for Fox-Kemper parametrization 
     2708      REAL(wp), DIMENSION(A2D(nn_hls)),   INTENT(inout) ::   pdsdx        ! Horizontal gradient for Fox-Kemper parametrization 
     2709      REAL(wp), DIMENSION(A2D(nn_hls)),   INTENT(inout) ::   pdsdy        ! Horizontal gradient for Fox-Kemper parametrization 
     2710      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   pdbds_mle    ! Magnitude of horizontal buoyancy gradient 
    27112711      !! 
    27122712      INTEGER                               ::   ji, jj, jk   ! Dummy loop indices 
     
    28092809      !! 
    28102810      !!----------------------------------------------------------------------       
    2811       INTEGER,                              INTENT(in   ) ::   Kmm         ! Time-level index 
    2812       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   pwb_fk 
    2813       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phbl        ! BL depth 
    2814       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phmle       ! MLE depth 
    2815       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb_ent     ! Buoyancy entrainment flux 
    2816       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pdbds_mle   ! Magnitude of horizontal buoyancy gradient 
    2817       !! 
    2818       INTEGER                              ::   ji, jj, jk        ! Dummy loop indices 
    2819       REAL(wp), DIMENSION(A2D((nn_hls-1))) ::   znd_param 
    2820       REAL(wp)                             ::   zthermal, zbeta 
    2821       REAL(wp)                             ::   zbuoy 
    2822       REAL(wp)                             ::   ztmp 
    2823       REAL(wp)                             ::   zpe_mle_layer 
    2824       REAL(wp)                             ::   zpe_mle_ref 
    2825       REAL(wp)                             ::   zdbdz_mle_int 
     2811      INTEGER,                            INTENT(in   ) ::   Kmm         ! Time-level index 
     2812      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   pwb_fk 
     2813      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phbl        ! BL depth 
     2814      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phmle       ! MLE depth 
     2815      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb_ent     ! Buoyancy entrainment flux 
     2816      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pdbds_mle   ! Magnitude of horizontal buoyancy gradient 
     2817      !! 
     2818      INTEGER                            ::   ji, jj, jk        ! Dummy loop indices 
     2819      REAL(wp), DIMENSION(A2D(nn_hls-1)) ::   znd_param 
     2820      REAL(wp)                           ::   zthermal, zbeta 
     2821      REAL(wp)                           ::   zbuoy 
     2822      REAL(wp)                           ::   ztmp 
     2823      REAL(wp)                           ::   zpe_mle_layer 
     2824      REAL(wp)                           ::   zpe_mle_ref 
     2825      REAL(wp)                           ::   zdbdz_mle_int 
    28262826      !!----------------------------------------------------------------------       
    28272827      ! 
     
    29212921      !! 
    29222922      !!---------------------------------------------------------------------- 
    2923       INTEGER,                              INTENT(in   ) ::   Kmm         ! Time-level index 
    2924       REAL(wp), DIMENSION(A2D((nn_hls))),   INTENT(in   ) ::   pmld        ! == Estimated FK BLD used for MLE horiz gradients == ! 
    2925       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   phmle       ! MLE depth 
    2926       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   pvel_mle    ! Velocity scale for dhdt with stable ML and FK 
    2927       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(inout) ::   pdiff_mle   ! Extra MLE vertical diff 
    2928       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pdbds_mle   ! Magnitude of horizontal buoyancy gradient 
    2929       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   phbl        ! BL depth 
    2930       REAL(wp), DIMENSION(A2D((nn_hls-1))), INTENT(in   ) ::   pwb0tot     ! Total surface buoyancy flux including insolation 
     2923      INTEGER,                            INTENT(in   ) ::   Kmm         ! Time-level index 
     2924      REAL(wp), DIMENSION(A2D(nn_hls)),   INTENT(in   ) ::   pmld        ! == Estimated FK BLD used for MLE horiz gradients == ! 
     2925      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   phmle       ! MLE depth 
     2926      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   pvel_mle    ! Velocity scale for dhdt with stable ML and FK 
     2927      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(inout) ::   pdiff_mle   ! Extra MLE vertical diff 
     2928      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pdbds_mle   ! Magnitude of horizontal buoyancy gradient 
     2929      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   phbl        ! BL depth 
     2930      REAL(wp), DIMENSION(A2D(nn_hls-1)), INTENT(in   ) ::   pwb0tot     ! Total surface buoyancy flux including insolation 
    29312931      !! 
    29322932      INTEGER  ::   ji, jj, jk   ! Dummy loop indices 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/OCE/do_loop_substitute.h90

    r14856 r14913  
    6161#define DO_2D(L, R, B, T) DO jj = ntsj-(B), ntej+(T) ; DO ji = ntsi-(L), ntei+(R) 
    6262#define DO_2D_OVR(L, R, B, T) DO_2D(L-(L+R)*nthl, R-(R+L)*nthr, B-(B+T)*nthb, T-(T+B)*ntht) 
    63 #define A1Di(H) ntsi-H:ntei+H 
    64 #define A1Dj(H) ntsj-H:ntej+H 
     63#define A1Di(H) ntsi-(H):ntei+(H) 
     64#define A1Dj(H) ntsj-(H):ntej+(H) 
    6565#define A2D(H) A1Di(H),A1Dj(H) 
    6666#define A1Di_T(T) (ntsi-nn_hls-1)*T+1: 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/TOP/C14/trcnam_c14.F90

    r12377 r14913  
    6060      ln_trc_cbc(jp_c14) = .false. 
    6161      ln_trc_obc(jp_c14) = .false. 
     62      ln_trc_ais(jp_c14) = .false. 
    6263      ! 
    6364      READ  ( numtrc_ref, namc14_typ, IOSTAT = ios, ERR = 901) 
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/TOP/CFC/trcnam_cfc.F90

    r12377 r14913  
    7777         ln_trc_cbc(jn) = .false. 
    7878         ln_trc_obc(jn) = .false. 
     79         ln_trc_ais(jn) = .false. 
    7980      ENDIF 
    8081      ! 
Note: See TracChangeset for help on using the changeset viewer.