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

Changeset 14677


Ignore:
Timestamp:
2021-04-07T16:10:14+02:00 (3 years ago)
Author:
agn
Message:

zdfosm.F90 now sese Alan's bottom-drag interaction but uses rCdU_bot drag velocity

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/NERC/dev_r11078_OSMOSIS_IMMERSE_Nurser_4.0/src/OCE/ZDF/zdfosm.F90

    r14647 r14677  
    5757  USE eosbn2         ! equation of state 
    5858  USE traqsr         ! details of solar radiation absorption 
     59  USE zdfdrg,  ONLY  : rCdU_bot  ! bottom friction velocity 
    5960  USE zdfddm         ! double diffusion mixing (avs array) 
    6061  !   USE zdfmxl         ! mixed layer depth 
     
    273274    LOGICAL, DIMENSION(jpi,jpj)  :: lconv     ! unstable/stable bl 
    274275    LOGICAL, DIMENSION(jpi,jpj)  :: lshear    ! Shear layers 
     276    LOGICAL, DIMENSION(jpi,jpj)  :: lcoup     ! Coupling to bottom 
    275277    LOGICAL, DIMENSION(jpi,jpj)  :: lpyc      ! OSBL pycnocline present 
    276278    LOGICAL, DIMENSION(jpi,jpj)  :: lflux     ! surface flux extends below OSBL into MLE layer. 
     
    622624             zhol(ji,jj) = -0.9 * hbl(ji,jj) * 2.0 * zwbav(ji,jj) / (zvstr(ji,jj)**3 + epsln ) 
    623625          ELSE 
     626             zwstrc(ji,jj) = 0.0_wp 
    624627             zhol(ji,jj) = -hbl(ji,jj) *  2.0 * zwbav(ji,jj)/ (zvstr(ji,jj)**3  + epsln ) 
    625628          ENDIF 
    626629#ifdef key_osm_debug 
    627630          IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    628              WRITE(narea+100,'(2(a,g11.3),/,3(a,g11.3),/,2(a,g11.3),/)') & 
     631             WRITE(narea+100,'(2(a,g11.3),/,3(a,g11.3),/,3(a,g11.3),/)') & 
    629632                  & 'After reduction: zustke=', zustke(ji,jj), ' dstokes=', dstokes(ji,jj), & 
    630633                  & ' zustar =', zustar(ji,jj), ' zwstrl=', zwstrl(ji,jj), ' zwstrc=', zwstrc(ji,jj),& 
    631                   & ' zhol=', zhol(ji,jj), ' zla=', zla(ji,jj) 
     634                  & ' zhol=', zhol(ji,jj), ' zla=', zla(ji,jj), ' zvstr=', zvstr(ji,jj) 
    632635             FLUSH(narea+100) 
    633636          END IF 
     
    652655          DO ji = 1, jpi 
    653656             IF ( hbl(ji,jj) >= gdepw_n(ji,jj,jk) ) THEN 
    654                 ibld(ji,jj) = MIN(mbkt(ji,jj), jk) 
     657                ibld(ji,jj) = MIN(mbkt(ji,jj)-2, jk) 
    655658             ENDIF 
    656659          END DO 
     
    690693 
    691694    ! Averages over well-mixed and boundary layer, note BL averages use jp_ext=2 everywhere 
    692     jp_ext(:,:) = 2 
     695    jp_ext(:,:) = 1   ! ag 19/03 
    693696    CALL zdf_osm_vertical_average(ibld, jp_ext, zt_bl, zs_bl, zb_bl, zu_bl, zv_bl, zdt_bl, zds_bl, zdb_bl, zdu_bl, zdv_bl) 
    694     !      jp_ext(:,:) = ibld(:,:) - imld(:,:) + 1 
    695     CALL zdf_osm_vertical_average(imld-1, ibld-imld+1, zt_ml, zs_ml, zb_ml, zu_ml, zv_ml, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml) 
     697    jp_ext(:,:) = ibld(:,:) - imld(:,:) + jp_ext(:,:) + 1 ! ag 19/03 
     698    CALL zdf_osm_vertical_average(imld-1, jp_ext, zt_ml, zs_ml, zb_ml, zu_ml, zv_ml, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml) 
    696699#ifdef key_osm_debug 
    697700    IF(narea==nn_narea_db) THEN 
     
    801804 
    802805    !! External gradient below BL needed both with and w/o FK 
    803     CALL zdf_osm_external_gradients( ibld+2, zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext ) 
     806    CALL zdf_osm_external_gradients( ibld+1, zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext )    ! ag 19/03 
    804807 
    805808    ! Test if pycnocline well resolved 
    806     DO jj = 2, jpjm1 
    807        DO ji = 2,jpim1 
    808           IF (lconv(ji,jj) ) THEN 
    809              ztmp = 0.2 * zhbl(ji,jj) / e3w_n(ji,jj,ibld(ji,jj)) 
    810              IF ( ztmp > 6 ) THEN 
    811                 ! pycnocline well resolved 
    812                 jp_ext(ji,jj) = 1 
    813              ELSE 
    814                 ! pycnocline poorly resolved 
    815                 jp_ext(ji,jj) = 0 
    816              ENDIF 
    817           ELSE 
    818              ! Stable conditions 
    819              jp_ext(ji,jj) = 0 
    820           ENDIF 
    821        END DO 
    822     END DO 
     809!    DO jj = 2, jpjm1                                             Removed with ag 19/03 changes. A change in eddy diffusivity/viscosity 
     810!       DO ji = 2,jpim1                                           should account for this. 
     811!          IF (lconv(ji,jj) ) THEN 
     812!             ztmp = 0.2 * zhbl(ji,jj) / e3w_n(ji,jj,ibld(ji,jj)) 
     813!             IF ( ztmp > 3 ) THEN           ! ag 19/03 
     814!                ! pycnocline well resolved 
     815!               jp_ext(ji,jj) = 1 
     816!             ELSE 
     817!                ! pycnocline poorly resolved 
     818!                jp_ext(ji,jj) = 0 
     819!             ENDIF 
     820!          ELSE 
     821!             ! Stable conditions 
     822!             jp_ext(ji,jj) = 0 
     823!          ENDIF 
     824!       END DO 
     825!    END DO 
    823826#ifdef key_osm_debug 
    824827    IF(narea==nn_narea_db) THEN 
     
    833836 
    834837    ! Recalculate bl averages using jp_ext & ml averages .... note no rotation of u & v here.. 
     838    jp_ext(:,:) = 1    ! ag 19/03 
    835839    CALL zdf_osm_vertical_average(ibld, jp_ext, zt_bl, zs_bl, zb_bl, zu_bl, zv_bl, zdt_bl, zds_bl, zdb_bl, zdu_bl, zdv_bl ) 
    836     !      jp_ext = ibld-imld+1 
    837     CALL zdf_osm_vertical_average(imld-1, ibld-imld+1, zt_ml, zs_ml, zb_ml, zu_ml, zv_ml, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml) 
     840    jp_ext(:,:) = ibld(:,:) - imld(:,:) + jp_ext(:,:) + 1 ! ag 19/03 
     841    CALL zdf_osm_vertical_average(imld-1, jp_ext, zt_ml, zs_ml, zb_ml, zu_ml, zv_ml, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml)    ! ag 19/03 
    838842#ifdef key_osm_debug 
    839843    IF(narea==nn_narea_db) THEN 
     
    858862          zhbl_t(ji,jj) = hbl(ji,jj) + (zdhdt(ji,jj) - wn(ji,jj,ibld(ji,jj)))* rn_rdt ! certainly need wn here, so subtract it 
    859863          ! adjustment to represent limiting by ocean bottom 
    860           IF ( zhbl_t(ji,jj) >= gdepw_n(ji, jj, mbkt(ji,jj) + 1 ) ) THEN 
    861              zhbl_t(ji,jj) = MIN(zhbl_t(ji,jj), gdepw_n(ji,jj, mbkt(ji,jj) + 1) - depth_tol)! ht_n(:,:)) 
    862              lpyc(ji,jj) = .FALSE. 
     864          IF ( mbkt(ji,jj) >2 ) THEN ! to ensure mbkt(ji,jj) - 2 > 0 so no incorrect array access 
     865             IF( zhbl_t(ji,jj) >= gdepw_n(ji, jj, mbkt(ji,jj) - 2 ) ) THEN 
     866                zhbl_t(ji,jj) = MIN(zhbl_t(ji,jj), gdepw_n(ji,jj, mbkt(ji,jj) - 2) - depth_tol)! ht_n(:,:)) 
     867                lpyc(ji,jj) = .FALSE. 
     868             ENDIF 
    863869          ENDIF 
    864870#ifdef key_osm_debug 
     
    885891    END DO 
    886892 
     893! Test if surface boundary layer coupled to bottom. 
     894 
     895    lcoup(:,:) = .FALSE.                                    ! ag 19/03 
     896    DO jj = 2, jpjm1                                        ! ag 19/03 
     897      DO ji = 2, jpim1                                      ! ag 19/03 
     898        IF ( mbkt(ji,jj) >2 ) THEN ! to ensure mbkt(ji,jj) - 2 > 0 so no incorrect array access 
     899           IF ( zhbl_t(ji,jj) >= gdepw_n(ji,jj,mbkt(ji,jj) - 2) ) THEN ! ag 19/03 
     900              zhbl_t(ji,jj) = gdepw_n(ji,jj,mbkt(ji,jj)-2)     ! ag 19/03 
     901              lcoup(ji,jj) = .TRUE.                            ! ag 19/03 
     902           ENDIF                                               ! ag 19/03 
     903        ENDIF                                               ! ag 19/03 
     904      END DO                                                ! ag 19/03 
     905    END DO                                                  ! ag 19/03 
     906 
    887907    ! 
    888908    ! Step through model levels taking account of buoyancy change to determine the effect on dhdt 
     
    892912 
    893913    !   Recalculate BL averages and differences using new BL depth 
     914    jp_ext(:,:) = 1                  ! ag 19/03 
    894915    CALL zdf_osm_vertical_average( ibld, jp_ext, zt_bl, zs_bl, zb_bl, zu_bl, zv_bl, zdt_bl, zds_bl, zdb_bl, zdu_bl, zdv_bl ) 
    895916    ! 
    896     ! 
    897     ! Check to see if lpyc needs to be changed  
    898  
     917     
    899918    CALL zdf_osm_pycnocline_thickness( dh, zdh ) 
     919 
     920! reset l_pyc before calculating terms in the flux-gradient relationships 
    900921 
    901922    DO jj = 2, jpjm1 
    902923       DO ji = 2, jpim1 
    903           IF ( zdb_bl(ji,jj) < rn_osm_bl_thresh .or. ibld(ji,jj) + jp_ext(ji,jj) >= mbkt(ji,jj) .or. ibld(ji,jj)-imld(ji,jj) == 1 ) lpyc(ji,jj) = .FALSE.  
     924          IF ( zdb_bl(ji,jj) < rn_osm_bl_thresh .or. ibld(ji,jj) >= mbkt(ji,jj) -2 .or. ibld(ji,jj)-imld(ji,jj) == 1 .or. zdhdt(ji,jj) < 0._wp) THEN                                            ! ag 19/03 
     925             lpyc(ji,jj) = .FALSE.                         ! ag 19/03 
     926             IF ( ibld(ji,jj) >= mbkt(ji,jj) -2 ) THEN 
     927                imld(ji,jj) = ibld(ji,jj) - 1                 ! ag 19/03 
     928                zdh(ji,jj) = gdepw_n(ji,jj,ibld(ji,jj)) - gdepw_n(ji,jj,imld(ji,jj))   ! ag 19/03 
     929                zhml(ji,jj) = gdepw_n(ji,jj,imld(ji,jj))      ! ag 19/03 
     930                dh(ji,jj) = zdh(ji,jj)                        ! ag 19/03   
     931                hml(ji,jj) = hbl(ji,jj) - dh(ji,jj)           ! ag 19/03 
     932#ifdef key_osm_debug 
     933                IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
     934                   WRITE(narea+100,'(a)')'After setting pycnocline thickness BL running aground: lpyc= Fl: ibld(ji,jj) >= mbkt(ji,jj) -2' 
     935                   WRITE(narea+100,'(2(a,i7),2(a,g11.3))')' ibld=',ibld(ji,jj),' imld=',imld(ji,jj), ' zdh=',zdh(ji,jj), ' zhml=',zhml(ji,jj) 
     936                   WRITE(narea+100,'(2(a,g11.3))')'dh=',dh,' hml=',hml(ji,jj) 
     937                   FLUSH(narea+100) 
     938                END IF 
     939#endif 
     940             ENDIF 
     941          ENDIF                                            ! ag 19/03 
    904942       END DO 
    905943    END DO 
     
    910948    !      jp_ext = ibld - imld +1 
    911949    !     Recalculate ML averages and differences using new ML depth 
    912     CALL zdf_osm_vertical_average( imld-1, ibld-imld+1, zt_ml, zs_ml, zb_ml, zu_ml, zv_ml, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml ) 
    913     ! rotate mean currents and changes onto wind align co-ordinates 
    914     ! 
     950    jp_ext(:,:) = ibld(:,:) - imld(:,:) + jp_ext(:,:) + 1         ! ag 19/03 
     951    CALL zdf_osm_vertical_average( imld-1, jp_ext, zt_ml, zs_ml, zb_ml, zu_ml, zv_ml, zdt_ml, zds_ml, zdb_ml, zdu_ml, zdv_ml ) 
     952 
     953    CALL zdf_osm_external_gradients( ibld+1, zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext ) 
    915954#ifdef key_osm_debug 
    916955    IF(narea==nn_narea_db) THEN 
     
    927966    END IF 
    928967#endif 
     968 
     969! rotate mean currents and changes onto wind align co-ordinates 
     970  
    929971    CALL zdf_osm_velocity_rotation( zcos_wind, zsin_wind, zu_ml, zv_ml, zdu_ml, zdv_ml ) 
    930972    CALL zdf_osm_velocity_rotation( zcos_wind, zsin_wind, zu_bl, zv_bl, zdu_bl, zdv_bl ) 
     
    943985    !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    944986 
    945     CALL zdf_osm_external_gradients( ibld+2, zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext ) 
     987    jp_ext(:,:) = 1                  ! ag 19/03 
    946988    CALL zdf_osm_pycnocline_scalar_profiles( zdtdz_pyc, zdsdz_pyc, zdbdz_pyc, zalpha_pyc ) 
    947989    CALL zdf_osm_pycnocline_shear_profiles( zdudz_pyc, zdvdz_pyc ) 
     
    11281170#endif 
    11291171                   ! 
    1130                 IF ( dh(ji,jj)  <  0.2*hbl(ji,jj) ) THEN 
     1172                IF ( dh(ji,jj)  <  0.2*hbl(ji,jj) .AND. ibld(ji,jj) - imld(ji,jj) > 3 ) THEN 
    11311173                   zbuoy_pyc_sc = 2.0_wp * MAX(zdb_ml(ji,jj), 0._wp) / zdh(ji,jj) 
    11321174                   zdelta_pyc = ( zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 )**pthird / SQRT( MAX( zbuoy_pyc_sc, ( zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 )**p2third / zdh(ji,jj)**2 ) ) 
     
    17461788 
    17471789      ! Scales used to calculate eddy diffusivity and viscosity profiles 
    1748       REAL(wp), DIMENSION(jpi,jpj) :: zdifml_sc, zvisml_sc 
    1749       REAL(wp), DIMENSION(jpi,jpj) :: zdifpyc_n_sc, zdifpyc_s_sc, zdifpyc_shr 
    1750       REAL(wp), DIMENSION(jpi,jpj) :: zvispyc_n_sc, zvispyc_s_sc,zvispyc_shr 
    1751       REAL(wp), DIMENSION(jpi,jpj) :: zbeta_d_sc, zbeta_v_sc 
     1790      REAL(wp), DIMENSION(jpi,jpj) :: pdifml_sc, pvisml_sc 
     1791      REAL(wp), DIMENSION(jpi,jpj) :: pdifpyc_n_sc, pdifpyc_s_sc, pdifpyc_shr 
     1792      REAL(wp), DIMENSION(jpi,jpj) :: pvispyc_n_sc, pvispyc_s_sc,pvispyc_shr 
     1793      REAL(wp), DIMENSION(jpi,jpj) :: pbeta_d_sc, pbeta_v_sc 
     1794      REAL(wp), DIMENSION(jpi,jpj) :: pb_coup, pc_coup_vis, pc_coup_dif 
    17521795      ! 
    1753       REAL(wp) :: zvel_sc_pyc, zvel_sc_ml, zstab_fac 
     1796      REAL(wp) :: pvel_sc_pyc, pvel_sc_ml, pstab_fac, pz_b 
     1797      REAL(wp) :: pa_cubic, pb_cubic, pc_cubic, pd_cubic 
     1798      REAL(wp) :: pznd_ml, pznd_pyc 
     1799      REAL(wp) :: zmsku, zmskv 
    17541800 
    17551801      REAL(wp), PARAMETER :: rn_dif_ml = 0.8, rn_vis_ml = 0.375 
     
    17591805      DO jj = 2, jpjm1 
    17601806         DO ji = 2, jpim1 
     1807            pb_coup(ji,jj) = 0._wp 
    17611808            IF ( lconv(ji,jj) ) THEN 
    17621809 
    1763                zvel_sc_pyc = ( 0.15 * zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 + 4.25 * zshear(ji,jj) * zhbl(ji,jj) )**pthird 
    1764                zvel_sc_ml = ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
    1765                zstab_fac = ( zhml(ji,jj) / zvel_sc_ml * ( 1.4 - 0.4 / ( 1.0 + EXP(-3.5 * LOG10(-zhol(ji,jj) ) ) )**1.25 ) )**2 
    1766  
    1767                zdifml_sc(ji,jj) = rn_dif_ml * zhml(ji,jj) * zvel_sc_ml 
    1768                zvisml_sc(ji,jj) = rn_vis_ml * zdifml_sc(ji,jj) 
     1810               pvel_sc_pyc = ( 0.15 * zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 + 4.25 * zshear(ji,jj) * zhbl(ji,jj) )**pthird 
     1811               pvel_sc_ml = ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
     1812               pstab_fac = ( zhml(ji,jj) / pvel_sc_ml * ( 1.4 - 0.4 / ( 1.0 + EXP(-3.5 * LOG10(-zhol(ji,jj) ) ) )**1.25 ) )**2 
     1813 
     1814               pdifml_sc(ji,jj) = rn_dif_ml * zhml(ji,jj) * pvel_sc_ml 
     1815               pvisml_sc(ji,jj) = rn_vis_ml * pdifml_sc(ji,jj) 
    17691816#ifdef key_osm_debug 
    17701817               IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1771                   WRITE(narea+100,'(2(a,g11.3))')'Start of 1st major loop of osm_diffusivity_viscositys, lconv=T: zdifml_sc=',zdifml_sc(ji,jj),' zvisml_sc=',zvisml_sc(ji,jj) 
    1772                   WRITE(narea+100,'(3(a,g11.3))')'zvel_sc_pyc=',zvel_sc_pyc,' zvel_sc_ml=',zvel_sc_ml,' zstab_fac=',zstab_fac 
     1818                  WRITE(narea+100,'(2(a,g11.3))')'Start of 1st major loop of osm_diffusivity_viscositys, lconv=T: zdifml_sc=',pdifml_sc(ji,jj),' zvisml_sc=',pvisml_sc(ji,jj) 
     1819                  WRITE(narea+100,'(3(a,g11.3))')'zvel_sc_pyc=',pvel_sc_pyc,' zvel_sc_ml=',pvel_sc_ml,' pstab_fac=',pstab_fac 
    17731820                  FLUSH(narea+100) 
    17741821               END IF 
    17751822#endif 
    17761823               IF ( lpyc(ji,jj) ) THEN 
    1777                   zdifpyc_n_sc(ji,jj) =  rn_dif_pyc * zvel_sc_ml * zdh(ji,jj) 
    1778                   zvispyc_n_sc(ji,jj) = 0.09 * zvel_sc_pyc * ( 1.0 - zhbl(ji,jj) / zdh(ji,jj) )**2 * ( 0.005 * ( zu_ml(ji,jj)-zu_bl(ji,jj) )**2 + 0.0075 * ( zv_ml(ji,jj)-zv_bl(ji,jj) )**2 ) / zdh(ji,jj) 
    1779                   zvispyc_n_sc(ji,jj) = rn_vis_pyc * zvel_sc_ml * zdh(ji,jj) + zvispyc_n_sc(ji,jj) * zstab_fac 
     1824                  pdifpyc_n_sc(ji,jj) =  rn_dif_pyc * pvel_sc_ml * zdh(ji,jj) 
     1825                  pvispyc_n_sc(ji,jj) = 0.09 * pvel_sc_pyc * ( 1.0 - zhbl(ji,jj) / zdh(ji,jj) )**2 * ( 0.005 * ( zu_ml(ji,jj)-zu_bl(ji,jj) )**2 + 0.0075 * ( zv_ml(ji,jj)-zv_bl(ji,jj) )**2 ) / zdh(ji,jj) 
     1826                  pvispyc_n_sc(ji,jj) = rn_vis_pyc * pvel_sc_ml * zdh(ji,jj) + pvispyc_n_sc(ji,jj) * pstab_fac 
    17801827#ifdef key_osm_debug 
    17811828                  IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1782                      WRITE(narea+100,'(2(a,g11.3))')' lpyc=lconv=T, variables w/o shear contributions: zdifpyc_n_sc',zdifpyc_n_sc(ji,jj) ,' zvispyc_n_sc=',zvispyc_n_sc(ji,jj) 
     1829                     WRITE(narea+100,'(2(a,g11.3))')' lpyc=lconv=T, variables w/o shear contributions: zdifpyc_n_sc',pdifpyc_n_sc(ji,jj) ,' zvispyc_n_sc=',pvispyc_n_sc(ji,jj) 
    17831830                     FLUSH(narea+100) 
    17841831                  END IF 
    17851832#endif 
    17861833                  IF ( lshear(ji,jj) .AND. j_ddh(ji,jj) /= 2 ) THEN 
    1787                      zdifpyc_n_sc(ji,jj) = zdifpyc_n_sc(ji,jj) + rn_vispyc_shr * ( zshear(ji,jj) * zhbl(ji,jj) )**pthird * zhbl(ji,jj) 
    1788                      zvispyc_n_sc(ji,jj) = zvispyc_n_sc(ji,jj) + rn_vispyc_shr * ( zshear(ji,jj) * zhbl(ji,jj ) )**pthird * zhbl(ji,jj) 
     1834                     pdifpyc_n_sc(ji,jj) = pdifpyc_n_sc(ji,jj) + rn_vispyc_shr * ( zshear(ji,jj) * zhbl(ji,jj) )**pthird * zhbl(ji,jj) 
     1835                     pvispyc_n_sc(ji,jj) = pvispyc_n_sc(ji,jj) + rn_vispyc_shr * ( zshear(ji,jj) * zhbl(ji,jj ) )**pthird * zhbl(ji,jj) 
    17891836                  ENDIF 
    17901837#ifdef key_osm_debug 
    17911838                  IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1792                      WRITE(narea+100,'(2(a,g11.3))')' lpyc=lconv=T, variables w shear contributions: zdifpyc_n_sc',zdifpyc_n_sc(ji,jj) ,' zvispyc_n_sc=',zvispyc_n_sc(ji,jj) 
     1839                     WRITE(narea+100,'(2(a,g11.3))')' lpyc=lconv=T, variables w shear contributions: zdifpyc_n_sc',pdifpyc_n_sc(ji,jj) ,' zvispyc_n_sc=',pvispyc_n_sc(ji,jj) 
    17931840                     FLUSH(narea+100) 
    17941841                  END IF 
    17951842#endif 
    1796                   zdifpyc_s_sc(ji,jj) = zwb_ent(ji,jj) + 0.0025 * zvel_sc_pyc * ( zhbl(ji,jj) / zdh(ji,jj) - 1.0 ) * ( zb_ml(ji,jj) - zb_bl(ji,jj) ) 
    1797                   zvispyc_s_sc(ji,jj) = 0.09 * ( zwb_min(ji,jj) + 0.0025 * zvel_sc_pyc * ( zhbl(ji,jj) / zdh(ji,jj) - 1.0 ) * ( zb_ml(ji,jj) - zb_bl(ji,jj) ) ) 
     1843                  pdifpyc_s_sc(ji,jj) = zwb_ent(ji,jj) + 0.0025 * pvel_sc_pyc * ( zhbl(ji,jj) / zdh(ji,jj) - 1.0 ) * ( zb_ml(ji,jj) - zb_bl(ji,jj) ) 
     1844                  pvispyc_s_sc(ji,jj) = 0.09 * ( zwb_min(ji,jj) + 0.0025 * pvel_sc_pyc * ( zhbl(ji,jj) / zdh(ji,jj) - 1.0 ) * ( zb_ml(ji,jj) - zb_bl(ji,jj) ) ) 
    17981845#ifdef key_osm_debug 
    17991846                  IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1800                      WRITE(narea+100,'(2(a,g11.3))')' 1st shot at: zdifpyc_s_sc',zdifpyc_s_sc(ji,jj) ,' zvispyc_s_sc=',zvispyc_s_sc(ji,jj) 
     1847                     WRITE(narea+100,'(2(a,g11.3))')' 1st shot at: zdifpyc_s_sc',pdifpyc_s_sc(ji,jj) ,' zvispyc_s_sc=',pvispyc_s_sc(ji,jj) 
    18011848                     FLUSH(narea+100) 
    18021849                  END IF 
    18031850#endif 
    1804                   zdifpyc_s_sc(ji,jj) = 0.09 * zdifpyc_s_sc(ji,jj) * zstab_fac 
    1805                   zvispyc_s_sc(ji,jj) = zvispyc_s_sc(ji,jj) * zstab_fac 
     1851                  pdifpyc_s_sc(ji,jj) = 0.09 * pdifpyc_s_sc(ji,jj) * pstab_fac 
     1852                  pvispyc_s_sc(ji,jj) = pvispyc_s_sc(ji,jj) * pstab_fac 
    18061853#ifdef key_osm_debug 
    18071854                  IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1808                      WRITE(narea+100,'(2(a,g11.3))')' 2nd shot at: zdifpyc_s_sc',zdifpyc_s_sc(ji,jj) ,' zvispyc_s_sc=',zvispyc_s_sc(ji,jj) 
     1855                     WRITE(narea+100,'(2(a,g11.3))')' 2nd shot at: zdifpyc_s_sc',pdifpyc_s_sc(ji,jj) ,' zvispyc_s_sc=',pvispyc_s_sc(ji,jj) 
    18091856                     FLUSH(narea+100) 
    18101857                  END IF 
    18111858#endif 
    18121859 
    1813                   zdifpyc_s_sc(ji,jj) = MAX( zdifpyc_s_sc(ji,jj), -0.5 * zdifpyc_n_sc(ji,jj) ) 
    1814                   zvispyc_s_sc(ji,jj) = MAX( zvispyc_s_sc(ji,jj), -0.5 * zvispyc_n_sc(ji,jj) ) 
    1815 #ifdef key_osm_debug 
    1816                   IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1817                      WRITE(narea+100,'(2(a,g11.3))')' Final zdifpyc_s_sc',zdifpyc_s_sc(ji,jj) ,' zvispyc_s_sc=',zvispyc_s_sc(ji,jj) 
    1818                      FLUSH(narea+100) 
    1819                   END IF 
    1820 #endif 
    1821  
    1822                   zbeta_d_sc(ji,jj) = 1.0 - ( ( zdifpyc_n_sc(ji,jj) + 1.4 * zdifpyc_s_sc(ji,jj) ) / ( zdifml_sc(ji,jj) + epsln ) )**p2third 
    1823                   zbeta_v_sc(ji,jj) = 1.0 -  2.0 * ( zvispyc_n_sc(ji,jj) + zvispyc_s_sc(ji,jj) ) / ( zvisml_sc(ji,jj) + epsln ) 
     1860                  pdifpyc_s_sc(ji,jj) = MAX( pdifpyc_s_sc(ji,jj), -0.5 * pdifpyc_n_sc(ji,jj) ) 
     1861                  pvispyc_s_sc(ji,jj) = MAX( pvispyc_s_sc(ji,jj), -0.5 * pvispyc_n_sc(ji,jj) ) 
     1862 
     1863                  pbeta_d_sc(ji,jj) = 1.0 - ( ( pdifpyc_n_sc(ji,jj) + 1.4 * pdifpyc_s_sc(ji,jj) ) / ( pdifml_sc(ji,jj) + epsln ) )**p2third 
     1864                  pbeta_v_sc(ji,jj) = 1.0 -  2.0 * ( pvispyc_n_sc(ji,jj) + pvispyc_s_sc(ji,jj) ) / ( pvisml_sc(ji,jj) + epsln ) 
    18241865               ELSE 
    1825                   zbeta_d_sc(ji,jj) = 1.0 
    1826                   zbeta_v_sc(ji,jj) = 1.0 
    1827                ENDIF 
     1866                  pdifpyc_n_sc(ji,jj) =  rn_dif_pyc * pvel_sc_ml * zdh(ji,jj)    ! ag 19/03 
     1867                  pdifpyc_s_sc(ji,jj) = 0._wp   ! ag 19/03 
     1868                  pvispyc_n_sc(ji,jj) = rn_vis_pyc * pvel_sc_ml * zdh(ji,jj)  ! ag 19/03 
     1869                  pvispyc_s_sc(ji,jj) = 0._wp  ! ag 19/03 
     1870                  IF(lcoup(ji,jj) ) THEN   ! ag 19/03 
     1871                    ! code from SUBROUTINE tke_tke zdftke.F90; uses bottom drag velocity rCdU_bot(ji,jj) = Cd|ub| 
     1872                    !     already calculated at T-points in SUBROUTINE zdf_drg from zdfdrg.F90 
     1873                    !  Gives friction velocity sqrt bottom drag/rho_0 i.e. u* = SQRT(rCdU_bot*ub) 
     1874                    ! wet-cell averaging .. 
     1875                    zmsku = ( 2. - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
     1876                    zmskv = ( 2. - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) 
     1877                    pb_coup(ji,jj) = 0.4 * SQRT(rCdU_bot(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mbkt(ji,jj))+ub(ji-1,jj,mbkt(ji,jj)) ) )**2  & 
     1878                  &                                           + ( zmskv*( vb(ji,jj,mbkt(ji,jj))+vb(ji,jj-1,mbkt(ji,jj)) ) )**2  ) ) 
     1879 
     1880                    pz_b = -gdepw_n(ji,jj,mbkt(ji,jj) + 1 )  ! ag 19/03 
     1881                    pc_coup_vis(ji,jj) = -0.5 * ( 0.5 * pvisml_sc(ji,jj) / zhml(ji,jj) - pb_coup(ji,jj) ) / ( zhml(ji,jj) + pz_b )  ! ag 19/03 
     1882#ifdef key_osm_debug 
     1883                    IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
     1884                       WRITE(narea+100,'(3(a,g11.3))')' lcoup = T; 1st pz_b= ', pz_b, 'pb_coup', pb_coup(ji,jj), ' pc_coup_vis', pc_coup_vis(ji,jj) 
     1885                       FLUSH(narea+100) 
     1886                    END IF 
     1887#endif 
     1888#ifdef key_osm_debug 
     1889                    WRITE(narea+400,'(4(a,i7))') ' lcoup = T at ji=',ji,' jj= ',jj,' jig= ', mig(ji), 'jjg= ', mjg(jj) 
     1890                    WRITE(narea+400,'(3(a,g11.3))') '1st pz_b= ', pz_b, 'pb_coup', pb_coup(ji,jj), ' pc_coup_vis', pc_coup_vis(ji,jj) 
     1891                    FLUSH(narea+400) 
     1892#endif 
     1893                    pz_b = -zhml(ji,jj) + gdepw_n(ji,jj,mbkt(ji,jj)+1)  ! ag 19/03  
     1894                    pbeta_v_sc(ji,jj) = 1.0 - 2.0 * ( pb_coup(ji,jj) * pz_b + pc_coup_vis(ji,jj) * pz_b**2 ) / pvisml_sc(ji,jj)  ! ag 19/03 
     1895                    pbeta_d_sc(ji,jj) = 1.0 - ( ( pb_coup(ji,jj) * pz_b + pc_coup_vis(ji,jj) * pz_b**2 ) / pdifml_sc(ji,jj) )**p2third 
     1896                    pc_coup_dif(ji,jj) = 0.5 * ( -pdifml_sc(ji,jj) / zhml(ji,jj) * ( 1.0 - pbeta_d_sc(ji,jj) )**1.5 + 1.5 * (pdifml_sc(ji,jj) / zhml(ji,jj) )* pbeta_d_sc(ji,jj) * SQRT( 1.0 - pbeta_d_sc(ji,jj) ) -pb_coup(ji,jj) ) / pz_b  ! ag 19/03 
     1897#ifdef key_osm_debug 
     1898                    IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
     1899                       WRITE(narea+100,'(2(a,g11.3))')' 2nd pz_b= ', pz_b, ' pc_coup_dif', pc_coup_dif(ji,jj) 
     1900                       FLUSH(narea+100) 
     1901                    END IF 
     1902#endif 
     1903#ifdef key_osm_debug 
     1904                    WRITE(narea+400,'(3(a,g11.3))') '2nd pz_b= ', pz_b,' pc_coup_vis', pc_coup_vis(ji,jj) 
     1905                    FLUSH(narea+400) 
     1906#endif 
     1907                  ELSE     ! ag 19/03 
     1908                    pbeta_d_sc(ji,jj) = 1.0 - ( ( pdifpyc_n_sc(ji,jj) + 1.4 * pdifpyc_s_sc(ji,jj) ) / ( pdifml_sc(ji,jj) + epsln ) )**p2third     ! ag 19/03 
     1909                    pbeta_v_sc(ji,jj) = 1.0 -  2.0 * ( pvispyc_n_sc(ji,jj) + pvispyc_s_sc(ji,jj) ) / ( pvisml_sc(ji,jj) + epsln ) ! ag 19/03 
     1910                  ENDIF ! ag 19/03 
     1911               ENDIF    ! ag 19/03 
    18281912#ifdef key_osm_debug 
    18291913               IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1830                   WRITE(narea+100,'(2(a,g11.3))')'lconv=T: zbeta_d_sc',zbeta_d_sc(ji,jj) ,' zbeta_v_sc=',zbeta_v_sc(ji,jj) 
     1914                  WRITE(narea+100,'(2(a,g11.3))')'lconv=T: zbeta_d_sc',pbeta_d_sc(ji,jj) ,' zbeta_v_sc=',pbeta_v_sc(ji,jj) 
     1915                  WRITE(narea+100,'(2(a,g11.3))')' Final zdifpyc_n_sc',pdifpyc_n_sc(ji,jj) ,' zvispyc_n_sc=',pvispyc_n_sc(ji,jj) 
     1916                  WRITE(narea+100,'(2(a,g11.3))')' Final zdifpyc_s_sc',pdifpyc_s_sc(ji,jj) ,' zvispyc_s_sc=',pvispyc_s_sc(ji,jj) 
    18311917                  FLUSH(narea+100) 
    18321918               END IF 
    18331919#endif 
    18341920            ELSE ! conv, stable 
    1835                zdifml_sc(ji,jj) = zvstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( zhol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
    1836                zvisml_sc(ji,jj) = zvstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( zhol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
     1921               pdifml_sc(ji,jj) = zvstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( zhol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
     1922               pvisml_sc(ji,jj) = zvstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( zhol(ji,jj) / 0.6_wp )**2 ), 0.2_wp) 
    18371923#ifdef key_osm_debug 
    18381924               IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 
    1839                   WRITE(narea+100,'(a,g11.3)')'End of 1st major loop of osm_diffusivity_viscositys, lconv=F: zdifml_sc=',zdifml_sc(ji,jj),' zvisml_sc=',zvisml_sc(ji,jj) 
     1925                  WRITE(narea+100,'(a,g11.3)')'End of 1st major loop of osm_diffusivity_viscositys, lconv=F: zdifml_sc=',pdifml_sc(ji,jj),' zvisml_sc=',pvisml_sc(ji,jj) 
    18401926                  FLUSH(narea+100) 
    18411927               END IF 
     
    18501936            IF ( lconv(ji,jj) ) THEN 
    18511937               DO jk = 2, imld(ji,jj)   ! mixed layer diffusivity 
    1852                   zznd_ml = gdepw_n(ji,jj,jk) / zhml(ji,jj) 
     1938                  pznd_ml = gdepw_n(ji,jj,jk) / zhml(ji,jj) 
    18531939                  ! 
    1854                   zdiffut(ji,jj,jk) = zdifml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_d_sc(ji,jj) * zznd_ml )**1.5 
     1940                  zdiffut(ji,jj,jk) = pdifml_sc(ji,jj) * pznd_ml * ( 1.0 - pbeta_d_sc(ji,jj) * pznd_ml )**1.5 
    18551941                  ! 
    1856                   zviscos(ji,jj,jk) = zvisml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_v_sc(ji,jj) * zznd_ml ) & 
    1857                        &            *                                      ( 1.0 - 0.5 * zznd_ml**2 ) 
     1942                  zviscos(ji,jj,jk) = pvisml_sc(ji,jj) * pznd_ml * ( 1.0 - pbeta_v_sc(ji,jj) * pznd_ml ) & 
     1943                       &            *                                      ( 1.0 - 0.5 * pznd_ml**2 ) 
    18581944               END DO 
     1945                
     1946! Coupling to bottom 
     1947             
     1948               IF ( lcoup(ji,jj) ) THEN                                                          ! ag 19/03 
     1949                  DO jk = mbkt(ji,jj), imld(ji,jj), -1                                           ! ag 19/03 
     1950                     pz_b = - ( gdepw_n(ji,jj,jk) - gdepw_n(ji,jj,mbkt(ji,jj) + 1 ) )            ! ag 19/03 
     1951                     zviscos(ji,jj,jk) = pb_coup(ji,jj) * pz_b + pc_coup_vis(ji,jj) * pz_b**2    ! ag 19/03 
     1952                     zdiffut(ji,jj,jk) = pb_coup(ji,jj) * pz_b + pc_coup_dif(ji,jj) * pz_b**2    ! ag 19/03 
     1953                  END DO                                                                         ! ag 19/03 
     1954               ENDIF                                                                             ! ag 19/03 
    18591955               ! pycnocline 
    18601956               IF ( lpyc(ji,jj) ) THEN 
    1861                   ! Diffusivity profile in the pycnocline given by cubic polynomial. 
    1862                   za_cubic = 0.5 
    1863                   zb_cubic = -1.75 * zdifpyc_s_sc(ji,jj) / zdifpyc_n_sc(ji,jj) 
    1864                   zd_cubic = ( zdh(ji,jj) * zdifml_sc(ji,jj) / zhml(ji,jj) * SQRT( 1.0 - zbeta_d_sc(ji,jj) ) * ( 2.5 * zbeta_d_sc(ji,jj) - 1.0 ) & 
    1865                        & - 0.85 * zdifpyc_s_sc(ji,jj) ) / MAX(zdifpyc_n_sc(ji,jj), 1.e-8) 
    1866                   zd_cubic = zd_cubic - zb_cubic - 2.0 * ( 1.0 - za_cubic  - zb_cubic ) 
    1867                   zc_cubic = 1.0 - za_cubic - zb_cubic - zd_cubic 
     1957                  ! Diffusivity profile in the pycnocline given by cubic polynomial. Note, if lpyc TRUE can't be coupled to seabed. 
     1958                  pa_cubic = 0.5 
     1959                  pb_cubic = -1.75 * pdifpyc_s_sc(ji,jj) / pdifpyc_n_sc(ji,jj) 
     1960                  pd_cubic = ( zdh(ji,jj) * pdifml_sc(ji,jj) / zhml(ji,jj) * SQRT( 1.0 - pbeta_d_sc(ji,jj) ) * ( 2.5 * pbeta_d_sc(ji,jj) - 1.0 ) & 
     1961                       & - 0.85 * pdifpyc_s_sc(ji,jj) ) / MAX(pdifpyc_n_sc(ji,jj), 1.e-8) 
     1962                  pd_cubic = pd_cubic - pb_cubic - 2.0 * ( 1.0 - pa_cubic  - pb_cubic ) 
     1963                  pc_cubic = 1.0 - pa_cubic - pb_cubic - pd_cubic 
    18681964                  DO jk = imld(ji,jj) , ibld(ji,jj) 
    1869                      zznd_pyc = -( gdepw_n(ji,jj,jk) - zhbl(ji,jj) ) / MAX(zdh(ji,jj), 1.e-6) 
     1965                     pznd_pyc = -( gdepw_n(ji,jj,jk) - zhbl(ji,jj) ) / MAX(zdh(ji,jj), 1.e-6) 
    18701966                     ! 
    1871                      zdiffut(ji,jj,jk) = zdifpyc_n_sc(ji,jj) * ( za_cubic + zb_cubic * zznd_pyc + zc_cubic * zznd_pyc**2 +   zd_cubic * zznd_pyc**3 ) 
    1872  
    1873                      zdiffut(ji,jj,jk) = zdiffut(ji,jj,jk) + zdifpyc_s_sc(ji,jj) * ( 1.75 * zznd_pyc - 0.15 * zznd_pyc**2 - 0.2 * zznd_pyc**3 ) 
     1967                     zdiffut(ji,jj,jk) = pdifpyc_n_sc(ji,jj) * ( pa_cubic + pb_cubic * pznd_pyc + pc_cubic * pznd_pyc**2 +   pd_cubic * pznd_pyc**3 ) 
     1968 
     1969                     zdiffut(ji,jj,jk) = zdiffut(ji,jj,jk) + pdifpyc_s_sc(ji,jj) * ( 1.75 * pznd_pyc - 0.15 * pznd_pyc**2 - 0.2 * pznd_pyc**3 ) 
    18741970                  END DO 
    18751971                  ! viscosity profiles. 
    1876                   za_cubic = 0.5 
    1877                   zb_cubic = -1.75 * zvispyc_s_sc(ji,jj) / zvispyc_n_sc(ji,jj) 
    1878                   zd_cubic = ( 0.5 * zvisml_sc(ji,jj) * zdh(ji,jj) / zhml(ji,jj) - 0.85 * zvispyc_s_sc(ji,jj)  )  / MAX(zvispyc_n_sc(ji,jj), 1.e-8) 
    1879                   zd_cubic = zd_cubic - zb_cubic - 2.0 * ( 1.0 - za_cubic - zb_cubic ) 
    1880                   zc_cubic = 1.0 - za_cubic - zb_cubic - zd_cubic 
     1972                  pa_cubic = 0.5 
     1973                  pb_cubic = -1.75 * pvispyc_s_sc(ji,jj) / pvispyc_n_sc(ji,jj) 
     1974                  pd_cubic = ( 0.5 * pvisml_sc(ji,jj) * zdh(ji,jj) / zhml(ji,jj) - 0.85 * pvispyc_s_sc(ji,jj)  )  / MAX(pvispyc_n_sc(ji,jj), 1.e-8) 
     1975                  pd_cubic = pd_cubic - pb_cubic - 2.0 * ( 1.0 - pa_cubic - pb_cubic ) 
     1976                  pc_cubic = 1.0 - pa_cubic - pb_cubic - pd_cubic 
    18811977                  DO jk = imld(ji,jj) , ibld(ji,jj) 
    1882                      zznd_pyc = -( gdepw_n(ji,jj,jk) - zhbl(ji,jj) ) / MAX(zdh(ji,jj), 1.e-6) 
    1883                      zviscos(ji,jj,jk) = zvispyc_n_sc(ji,jj) * ( za_cubic + zb_cubic * zznd_pyc + zc_cubic * zznd_pyc**2 + zd_cubic * zznd_pyc**3 ) 
    1884                      zviscos(ji,jj,jk) = zviscos(ji,jj,jk) + zvispyc_s_sc(ji,jj) * ( 1.75 * zznd_pyc - 0.15 * zznd_pyc**2 -0.2 * zznd_pyc**3 ) 
     1978                     pznd_pyc = -( gdepw_n(ji,jj,jk) - zhbl(ji,jj) ) / MAX(zdh(ji,jj), 1.e-6) 
     1979                     zviscos(ji,jj,jk) = pvispyc_n_sc(ji,jj) * ( pa_cubic + pb_cubic * pznd_pyc + pc_cubic * pznd_pyc**2 + pd_cubic * pznd_pyc**3 ) 
     1980                     zviscos(ji,jj,jk) = zviscos(ji,jj,jk) + pvispyc_s_sc(ji,jj) * ( 1.75 * pznd_pyc - 0.15 * pznd_pyc**2 -0.2 * pznd_pyc**3 ) 
    18851981                  END DO 
    1886                   IF ( zdhdt(ji,jj) > 0._wp ) THEN 
    1887                      zdiffut(ji,jj,ibld(ji,jj)+1) = MAX( 0.5 * zdhdt(ji,jj) * e3w_n(ji,jj,ibld(ji,jj)+1), 1.0e-6 ) 
    1888                      zviscos(ji,jj,ibld(ji,jj)+1) = MAX( 0.5 * zdhdt(ji,jj) * e3w_n(ji,jj,ibld(ji,jj)+1), 1.0e-6 ) 
    1889                   ELSE 
    1890                      zdiffut(ji,jj,ibld(ji,jj)) = 0._wp 
    1891                      zviscos(ji,jj,ibld(ji,jj)) = 0._wp 
     1982!                  IF ( zdhdt(ji,jj) > 0._wp ) THEN 
     1983!                     zdiffut(ji,jj,ibld(ji,jj)+1) = MAX( 0.5 * zdhdt(ji,jj) * e3w_n(ji,jj,ibld(ji,jj)+1), 1.0e-6 ) 
     1984!                     zviscos(ji,jj,ibld(ji,jj)+1) = MAX( 0.5 * zdhdt(ji,jj) * e3w_n(ji,jj,ibld(ji,jj)+1), 1.0e-6 ) 
     1985!                  ELSE 
     1986!                     zdiffut(ji,jj,ibld(ji,jj)) = 0._wp 
     1987!                     zviscos(ji,jj,ibld(ji,jj)) = 0._wp 
     1988!                  ENDIF 
     1989               ELSE 
     1990! lpyc set false but not coupled to the bottom. 
     1991                  IF ( .not. lcoup(ji,jj) ) THEN 
     1992                     zdiffut(ji,jj,ibld(ji,jj)) = 0.5 * pdifpyc_n_sc(ji,jj) 
     1993                     zviscos(ji,jj,ibld(ji,jj)) = 0.5 * pvispyc_n_sc(ji,jj) 
    18921994                  ENDIF 
    18931995               ENDIF 
     
    18951997               ! stable conditions 
    18961998               DO jk = 2, ibld(ji,jj) 
    1897                   zznd_ml = gdepw_n(ji,jj,jk) / zhbl(ji,jj) 
    1898                   zdiffut(ji,jj,jk) = 0.75 * zdifml_sc(ji,jj) * zznd_ml * ( 1.0 - zznd_ml )**1.5 
    1899                   zviscos(ji,jj,jk) = 0.375 * zvisml_sc(ji,jj) * zznd_ml * (1.0 - zznd_ml) * ( 1.0 - zznd_ml**2 ) 
     1999                  pznd_ml = gdepw_n(ji,jj,jk) / zhbl(ji,jj) 
     2000                  zdiffut(ji,jj,jk) = 0.75 * pdifml_sc(ji,jj) * pznd_ml * ( 1.0 - pznd_ml )**1.5 
     2001                  zviscos(ji,jj,jk) = 0.375 * pvisml_sc(ji,jj) * pznd_ml * (1.0 - pznd_ml) * ( 1.0 - pznd_ml**2 ) 
    19002002               END DO 
    19012003 
     
    19082010         END DO  ! end of ji loop 
    19092011      END DO     ! end of jj loop 
     2012      IF ( iom_use("pb_coup") ) CALL iom_put( "pb_coup", tmask(:,:,1)*pb_coup(:,:) )         ! BBL-coupling velocity scale 
    19102013 
    19112014    END SUBROUTINE zdf_osm_diffusivity_viscosity 
     
    21782281            zb(ji,jj) = grav * zthermal * zt(ji,jj) - grav * zbeta * zs(ji,jj) 
    21792282            ibld_ext = jnlev_av(ji,jj) + jp_ext(ji,jj) 
    2180             IF ( ibld_ext < mbkt(ji,jj) ) THEN 
     2283            IF ( ibld_ext <= mbkt(ji,jj)-1 ) THEN      ! ag 09/03 
     2284 ! Two external levels are available. 
    21812285               zdt(ji,jj) = zt(ji,jj) - tsn(ji,jj,ibld_ext,jp_tem) 
    21822286               zds(ji,jj) = zs(ji,jj) - tsn(ji,jj,ibld_ext,jp_sal) 
Note: See TracChangeset for help on using the changeset viewer.