Changeset 14679
- Timestamp:
- 2021-04-07T17:52:57+02:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.1_FKOSM_m11715
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.1_FKOSM_m11715/cfgs/SHARED/field_def_nemo-oce.xml
r14413 r14679 240 240 <field id="zds_ml" long_name="salinity jump at base of ML" unit="10^-3" /> 241 241 <field id="zdb_ml" long_name="buoyancy jump at base of ML" unit="m/s^2" /> 242 <field id="pb_coup" long_name="bottom coupling velocity" unit="m/s" /> 242 243 <!-- extra OSMOSIS diagnostics for debugging --> 243 244 <field id="zsc_uw_1_0" long_name="zsc u-momentum flux on T after Stokes" unit="m^2/s^2" /> -
NEMO/branches/UKMO/NEMO_4.0.1_FKOSM_m11715/src/OCE/ZDF/zdfosm.F90
r14543 r14679 57 57 USE eosbn2 ! equation of state 58 58 USE traqsr ! details of solar radiation absorption 59 USE zdfdrg, ONLY : rCdU_bot ! bottom friction velocity 59 60 USE zdfddm ! double diffusion mixing (avs array) 60 61 ! USE zdfmxl ! mixed layer depth … … 273 274 LOGICAL, DIMENSION(jpi,jpj) :: lconv ! unstable/stable bl 274 275 LOGICAL, DIMENSION(jpi,jpj) :: lshear ! Shear layers 276 LOGICAL, DIMENSION(jpi,jpj) :: lcoup ! Coupling to bottom 275 277 LOGICAL, DIMENSION(jpi,jpj) :: lpyc ! OSBL pycnocline present 276 278 LOGICAL, DIMENSION(jpi,jpj) :: lflux ! surface flux extends below OSBL into MLE layer. … … 354 356 ! For debugging 355 357 INTEGER :: ikt 358 REAL(wp) :: zlarge = -1.e10_wp, zero = 0._wp 356 359 !!-------------------------------------------------------------------- 357 360 ! 358 361 ibld(:,:) = 0 ; imld(:,:) = 0 359 zrad0(:,:) = 0._wp ; zradh(:,:) = 0._wp ; zradav(:,:) = 0._wp ; zustar(:,:) = 0._wp360 zwstrl(:,:) = 0._wp ; zvstr(:,:) = 0._wp ; zwstrc(:,:) = 0._wp ; zuw0(:,:) = 0._wp361 zvw0(:,:) = 0._wp ; zwth0(:,:) = 0._wp ; zws0(:,:) = 0._wp ; zwb0(:,:) = 0._wp362 zwthav(:,:) = 0._wp ; zwsav(:,:) = 0._wp ; zwbav(:,:) = 0._wp ; zwb_ent(:,:) = 0._wp363 zustke(:,:) = 0._wp ; zla(:,:) = 0._wp ; zcos_wind(:,:) = 0._wp ; zsin_wind(:,:) = 0._wp364 zhol(:,:) = 0._wp ; zwb0tot(:,:) = 0._wp362 zrad0(:,:) = zlarge ; zradh(:,:) = zlarge ; zradav(:,:) = zlarge ; zustar(:,:) = zlarge 363 zwstrl(:,:) = zlarge ; zvstr(:,:) = zlarge ; zwstrc(:,:) = zlarge ; zuw0(:,:) = zlarge 364 zvw0(:,:) = zlarge ; zwth0(:,:) = zlarge ; zws0(:,:) = zlarge ; zwb0(:,:) = zlarge 365 zwthav(:,:) = zlarge ; zwsav(:,:) = zlarge ; zwbav(:,:) = zlarge ; zwb_ent(:,:) = zlarge 366 zustke(:,:) = zlarge ; zla(:,:) = zlarge ; zcos_wind(:,:) = zlarge ; zsin_wind(:,:) = zlarge 367 zhol(:,:) = zlarge ; zwb0tot(:,:) = zlarge; zalpha_pyc(:,:) = zlarge 365 368 lconv(:,:) = .FALSE.; lpyc(:,:) = .FALSE. ; lflux(:,:) = .FALSE. ; lmle(:,:) = .FALSE. 366 369 ! mixed layer 367 370 ! no initialization of zhbl or zhml (or zdh?) 368 zhbl(:,:) = 1._wp ; zhml(:,:) = 1._wp ; zdh(:,:) = 1._wp ; zdhdt(:,:) = 0._wp369 zt_bl(:,:) = 0._wp ; zs_bl(:,:) = 0._wp ; zu_bl(:,:) = 0._wp370 zv_bl(:,:) = 0._wp ; zb_bl(:,:) = 0._wp371 zt_ml(:,:) = 0._wp ; zs_ml(:,:) = 0._wp ; zu_ml(:,:) = 0._wp372 zt_mle(:,:) = 0._wp ; zs_mle(:,:) = 0._wp ; zu_mle(:,:) = 0._wp373 zb_mle(:,:) = 0._wp374 zv_ml(:,:) = 0._wp ; zdt_bl(:,:) = 0._wp ; zds_bl(:,:) = 0._wp375 zdu_bl(:,:) = 0._wp ; zdv_bl(:,:) = 0._wp ; zdb_bl(:,:) = 0._wp376 zdt_ml(:,:) = 0._wp ; zds_ml(:,:) = 0._wp ; zdu_ml(:,:) = 0._wp ; zdv_ml(:,:) = 0._wp377 zdb_ml(:,:) = 0._wp378 zdt_mle(:,:) = 0._wp ; zds_mle(:,:) = 0._wp ; zdu_mle(:,:) = 0._wp379 zdv_mle(:,:) = 0._wp ; zdb_mle(:,:) = 0._wp380 zwth_ent = 0._wp ; zws_ent = 0._wp371 zhbl(:,:) = zlarge ; zhml(:,:) = zlarge ; zdh(:,:) = zlarge ; zdhdt(:,:) = zlarge 372 zt_bl(:,:) = zlarge ; zs_bl(:,:) = zlarge ; zu_bl(:,:) = zlarge 373 zv_bl(:,:) = zlarge ; zb_bl(:,:) = zlarge 374 zt_ml(:,:) = zlarge ; zs_ml(:,:) = zlarge ; zu_ml(:,:) = zlarge 375 zt_mle(:,:) = zlarge ; zs_mle(:,:) = zlarge ; zu_mle(:,:) = zlarge 376 zb_mle(:,:) = zlarge 377 zv_ml(:,:) = zlarge ; zdt_bl(:,:) = zlarge ; zds_bl(:,:) = zlarge 378 zdu_bl(:,:) = zlarge ; zdv_bl(:,:) = zlarge ; zdb_bl(:,:) = zlarge 379 zdt_ml(:,:) = zlarge ; zds_ml(:,:) = zlarge ; zdu_ml(:,:) = zlarge ; zdv_ml(:,:) = zlarge 380 zdb_ml(:,:) = zlarge 381 zdt_mle(:,:) = zlarge ; zds_mle(:,:) = zlarge ; zdu_mle(:,:) = zlarge 382 zdv_mle(:,:) = zlarge ; zdb_mle(:,:) = zlarge 383 zwth_ent = zlarge ; zws_ent = zlarge 381 384 ! 382 zdtdz_pyc(:,:,:) = 0._wp ; zdsdz_pyc(:,:,:) = 0._wp ; zdbdz_pyc(:,:,:) = 0._wp 383 zdudz_pyc(:,:,:) = 0._wp ; zdvdz_pyc(:,:,:) = 0._wp 385 zdtdz_pyc(:,:,:) = zlarge ; zdsdz_pyc(:,:,:) = zlarge ; zdbdz_pyc(:,:,:) = zlarge 386 zdudz_pyc(:,:,:) = zlarge ; zdvdz_pyc(:,:,:) = zlarge 387 zdtdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp ; zdsdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp ; zdbdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp 388 zdudz_pyc(2:jpim1,2:jpjm1,:) = 0._wp ; zdvdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp 384 389 ! 385 zdtdz_bl_ext(:,:) = 0._wp ; zdsdz_bl_ext(:,:) = 0._wp ; zdbdz_bl_ext(:,:) = 0._wp390 zdtdz_bl_ext(:,:) = zlarge ; zdsdz_bl_ext(:,:) = zlarge ; zdbdz_bl_ext(:,:) = zlarge 386 391 387 392 IF ( ln_osm_mle ) THEN ! only initialise arrays if needed 388 zdtdx(:,:) = 0._wp ; zdtdy(:,:) = 0._wp ; zdsdx(:,:) = 0._wp389 zdsdy(:,:) = 0._wp ; dbdx_mle(:,:) = 0._wp ; dbdy_mle(:,:) = 0._wp390 zwb_fk(:,:) = 0._wp ; zvel_mle(:,:) = 0._wp; zdiff_mle(:,:) = 0._wp391 zhmle(:,:) = 0._wp ; zmld(:,:) = 0._wp393 zdtdx(:,:) = zlarge ; zdtdy(:,:) = zlarge ; zdsdx(:,:) = zlarge 394 zdsdy(:,:) = zlarge ; dbdx_mle(:,:) = zlarge ; dbdy_mle(:,:) = zlarge 395 zwb_fk(:,:) = zlarge ; zvel_mle(:,:) = zlarge; zdiff_mle(:,:) = zlarge 396 zhmle(:,:) = zlarge ; zmld(:,:) = zlarge 392 397 ENDIF 393 zwb_fk_b(:,:) = 0._wp! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt398 zwb_fk_b(:,:) = zlarge ! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt 394 399 395 400 ! Flux-Gradient arrays. 396 zsc_wth_1(:,:) = 0._wp ; zsc_ws_1(:,:) = 0._wp ; zsc_uw_1(:,:) = 0._wp 397 zsc_uw_2(:,:) = 0._wp ; zsc_vw_1(:,:) = 0._wp ; zsc_vw_2(:,:) = 0._wp 398 zhbl_t(:,:) = 0._wp ; zdhdt(:,:) = 0._wp 399 400 zdiffut(:,:,:) = 0._wp ; zviscos(:,:,:) = 0._wp ; ghamt(:,:,:) = 0._wp 401 ghams(:,:,:) = 0._wp ; ghamu(:,:,:) = 0._wp ; ghamv(:,:,:) = 0._wp 401 zsc_wth_1(:,:) = zlarge ; zsc_ws_1(:,:) = zlarge ; zsc_uw_1(:,:) = zlarge 402 zsc_uw_2(:,:) = zlarge ; zsc_vw_1(:,:) = zlarge ; zsc_vw_2(:,:) = zlarge 403 zhbl_t(:,:) = zlarge ; zdhdt(:,:) = zlarge 404 405 zdiffut(:,:,:) = zlarge ; zviscos(:,:,:) = zlarge 406 zdiffut(2:jpim1,2:jpjm1,:) = 0._wp ; zviscos(2:jpim1,2:jpjm1,:) = 0._wp 407 ghamt(:,:,:) = zlarge; ghams(:,:,:) = zlarge 408 ghamt(2:jpim1,2:jpjm1,:) = 0._wp; ghams(2:jpim1,2:jpjm1,:) = 0._wp 409 ghamu(:,:,:) = zlarge ; ghamv(:,:,:) = zlarge 410 ghamu(2:jpim1,2:jpjm1,:) = 0._wp ; ghamv(2:jpim1,2:jpjm1,:) = 0._wp 411 zdiff_mle(2:jpim1,2:jpjm1) = 0._wp 402 412 403 413 … … 614 624 zhol(ji,jj) = -0.9 * hbl(ji,jj) * 2.0 * zwbav(ji,jj) / (zvstr(ji,jj)**3 + epsln ) 615 625 ELSE 626 zwstrc(ji,jj) = 0.0_wp 616 627 zhol(ji,jj) = -hbl(ji,jj) * 2.0 * zwbav(ji,jj)/ (zvstr(ji,jj)**3 + epsln ) 617 628 ENDIF 618 629 #ifdef key_osm_debug 619 630 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 620 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),/)') & 621 632 & 'After reduction: zustke=', zustke(ji,jj), ' dstokes=', dstokes(ji,jj), & 622 633 & ' zustar =', zustar(ji,jj), ' zwstrl=', zwstrl(ji,jj), ' zwstrc=', zwstrc(ji,jj),& 623 & ' zhol=', zhol(ji,jj), ' zla=', zla(ji,jj) 634 & ' zhol=', zhol(ji,jj), ' zla=', zla(ji,jj), ' zvstr=', zvstr(ji,jj) 624 635 FLUSH(narea+100) 625 636 END IF … … 644 655 DO ji = 1, jpi 645 656 IF ( hbl(ji,jj) >= gdepw_n(ji,jj,jk) ) THEN 646 ibld(ji,jj) = MIN(mbkt(ji,jj) , jk)657 ibld(ji,jj) = MIN(mbkt(ji,jj)-2, jk) 647 658 ENDIF 648 659 END DO … … 682 693 683 694 ! Averages over well-mixed and boundary layer, note BL averages use jp_ext=2 everywhere 684 jp_ext(:,:) = 2695 jp_ext(:,:) = 1 ! ag 19/03 685 696 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) 686 ! jp_ext(:,:) = ibld(:,:) - imld(:,:) + 1687 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) 688 699 #ifdef key_osm_debug 689 700 IF(narea==nn_narea_db) THEN … … 793 804 794 805 !! External gradient below BL needed both with and w/o FK 795 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 796 807 797 808 ! Test if pycnocline well resolved 798 DO jj = 2, jpjm1 799 DO ji = 2,jpim1 800 IF (lconv(ji,jj) ) THEN801 ztmp = 0.2 * zhbl(ji,jj) / e3w_n(ji,jj,ibld(ji,jj))802 IF ( ztmp > 6 ) THEN 803 ! pycnocline well resolved804 805 ELSE806 ! pycnocline poorly resolved807 jp_ext(ji,jj) = 0808 ENDIF809 ELSE810 ! Stable conditions811 jp_ext(ji,jj) = 0812 ENDIF813 END DO814 END DO809 ! 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 815 826 #ifdef key_osm_debug 816 827 IF(narea==nn_narea_db) THEN … … 825 836 826 837 ! Recalculate bl averages using jp_ext & ml averages .... note no rotation of u & v here.. 838 jp_ext(:,:) = 1 ! ag 19/03 827 839 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 ) 828 ! jp_ext = ibld-imld+1829 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 830 842 #ifdef key_osm_debug 831 843 IF(narea==nn_narea_db) THEN … … 850 862 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 851 863 ! adjustment to represent limiting by ocean bottom 852 IF ( zhbl_t(ji,jj) >= gdepw_n(ji, jj, mbkt(ji,jj) + 1 ) ) THEN 853 zhbl_t(ji,jj) = MIN(zhbl_t(ji,jj), gdepw_n(ji,jj, mbkt(ji,jj) + 1) - depth_tol)! ht_n(:,:)) 854 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 855 869 ENDIF 856 870 #ifdef key_osm_debug … … 877 891 END DO 878 892 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 879 907 ! 880 908 ! Step through model levels taking account of buoyancy change to determine the effect on dhdt … … 884 912 885 913 ! Recalculate BL averages and differences using new BL depth 914 jp_ext(:,:) = 1 ! ag 19/03 886 915 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 ) 887 916 ! 888 ! 889 ! Check to see if lpyc needs to be changed 890 917 891 918 CALL zdf_osm_pycnocline_thickness( dh, zdh ) 919 920 ! reset l_pyc before calculating terms in the flux-gradient relationships 892 921 893 922 DO jj = 2, jpjm1 894 923 DO ji = 2, jpim1 895 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 896 942 END DO 897 943 END DO … … 902 948 ! jp_ext = ibld - imld +1 903 949 ! Recalculate ML averages and differences using new ML depth 904 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 ) 905 ! rotate mean currents and changes onto wind align co-ordinates 906 ! 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 ) 907 954 #ifdef key_osm_debug 908 955 IF(narea==nn_narea_db) THEN … … 919 966 END IF 920 967 #endif 968 969 ! rotate mean currents and changes onto wind align co-ordinates 970 921 971 CALL zdf_osm_velocity_rotation( zcos_wind, zsin_wind, zu_ml, zv_ml, zdu_ml, zdv_ml ) 922 972 CALL zdf_osm_velocity_rotation( zcos_wind, zsin_wind, zu_bl, zv_bl, zdu_bl, zdv_bl ) … … 935 985 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 936 986 937 CALL zdf_osm_external_gradients( ibld+2, zdtdz_bl_ext, zdsdz_bl_ext, zdbdz_bl_ext )987 jp_ext(:,:) = 1 ! ag 19/03 938 988 CALL zdf_osm_pycnocline_scalar_profiles( zdtdz_pyc, zdsdz_pyc, zdbdz_pyc, zalpha_pyc ) 939 989 CALL zdf_osm_pycnocline_shear_profiles( zdudz_pyc, zdvdz_pyc ) … … 974 1024 ! 975 1025 ! Stokes term in scalar flux, flux-gradient relationship 976 WHERE ( lconv ) 977 zsc_wth_1 = zwstrl**3 * zwth0 / ( zvstr**3 + 0.5 * zwstrc**3 + epsln) 1026 WHERE ( lconv(2:jpim1,2:jpjm1) ) 1027 zsc_wth_1(2:jpim1,2:jpjm1) = zwstrl(2:jpim1,2:jpjm1)**3 * zwth0(2:jpim1,2:jpjm1) / & 1028 &( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln) 978 1029 ! 979 zsc_ws_1 = zwstrl**3 * zws0 / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 1030 zsc_ws_1(2:jpim1,2:jpjm1) = zwstrl(2:jpim1,2:jpjm1)**3 * zws0(2:jpim1,2:jpjm1) / & 1031 &( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 980 1032 ELSEWHERE 981 zsc_wth_1 = 2.0 * zwthav1033 zsc_wth_1(2:jpim1,2:jpjm1) = 2.0 * zwthav(2:jpim1,2:jpjm1) 982 1034 ! 983 zsc_ws_1 = 2.0 * zwsav1035 zsc_ws_1(2:jpim1,2:jpjm1) = 2.0 * zwsav(2:jpim1,2:jpjm1) 984 1036 ENDWHERE 985 1037 … … 1009 1061 1010 1062 ! Stokes term in flux-gradient relationship (note in zsc_uw_n don't use zvstr since term needs to go to zero as zwstrl goes to zero) 1011 WHERE ( lconv ) 1012 zsc_uw_1 = ( zwstrl**3 + 0.5 * zwstrc**3 )**pthird * zustke / MAX( ( 1.0 - 1.0 * 6.5 * zla**(8.0/3.0) ), 0.2 ) 1013 zsc_uw_2 = ( zwstrl**3 + 0.5 * zwstrc**3 )**pthird * zustke / MIN( zla**(8.0/3.0) + epsln, 0.12 ) 1014 zsc_vw_1 = ff_t * zhml * zustke**3 * MIN( zla**(8.0/3.0), 0.12 ) / ( ( zvstr**3 + 0.5 * zwstrc**3 )**(2.0/3.0) + epsln ) 1063 WHERE ( lconv(2:jpim1,2:jpjm1) ) 1064 zsc_uw_1(2:jpim1,2:jpjm1) = ( zwstrl(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 )**pthird * zustke(2:jpim1,2:jpjm1) / & 1065 & MAX( ( 1.0 - 1.0 * 6.5 * zla(2:jpim1,2:jpjm1)**(8.0/3.0) ), 0.2 ) 1066 zsc_uw_2(2:jpim1,2:jpjm1) = ( zwstrl(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 )**pthird * zustke(2:jpim1,2:jpjm1) / & 1067 & MIN( zla(2:jpim1,2:jpjm1)**(8.0/3.0) + epsln, 0.12 ) 1068 zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zhml(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1)**3 * MIN( zla(2:jpim1,2:jpjm1)**(8.0/3.0), 0.12 ) / & 1069 & ( ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 )**(2.0/3.0) + epsln ) 1015 1070 ELSEWHERE 1016 zsc_uw_1 = zustar**2 1017 zsc_vw_1 = ff_t * zhbl * zustke**3 * MIN( zla**(8.0/3.0), 0.12 ) / (zvstr**2 + epsln) 1071 zsc_uw_1(2:jpim1,2:jpjm1) = zustar(2:jpim1,2:jpjm1)**2 1072 zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zhbl(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1)**3 * & 1073 & MIN( zla(2:jpim1,2:jpjm1)**(8.0/3.0), 0.12 ) / (zvstr(2:jpim1,2:jpjm1)**2 + epsln) 1018 1074 ENDWHERE 1019 1075 IF(ln_dia_osm) THEN … … 1066 1122 ! Buoyancy term in flux-gradient relationship [note : includes ROI ratio (X0.3) and pressure (X0.5)] 1067 1123 1068 WHERE ( lconv ) 1069 zsc_wth_1 = zwbav * zwth0 * ( 1.0 + EXP ( 0.2 * zhol ) ) * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 1070 zsc_ws_1 = zwbav * zws0 * ( 1.0 + EXP ( 0.2 * zhol ) ) * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 1124 WHERE ( lconv(2:jpim1,2:jpjm1) ) 1125 zsc_wth_1(2:jpim1,2:jpjm1) = zwbav(2:jpim1,2:jpjm1) * zwth0(2:jpim1,2:jpjm1) * ( 1.0 + EXP ( 0.2 * zhol(2:jpim1,2:jpjm1) ) ) * & 1126 & zhml(2:jpim1,2:jpjm1) / ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 1127 zsc_ws_1(2:jpim1,2:jpjm1) = zwbav(2:jpim1,2:jpjm1) * zws0(2:jpim1,2:jpjm1) * ( 1.0 + EXP ( 0.2 * zhol(2:jpim1,2:jpjm1) ) ) * & 1128 & zhml(2:jpim1,2:jpjm1) / ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 1071 1129 ELSEWHERE 1072 zsc_wth_1 = 0._wp1073 zsc_ws_1 = 0._wp1130 zsc_wth_1(2:jpim1,2:jpjm1) = 0._wp 1131 zsc_ws_1(2:jpim1,2:jpjm1) = 0._wp 1074 1132 ENDWHERE 1075 1133 … … 1089 1147 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 0.3 * 0.4 * zsc_ws_1(ji,jj) * zl_eps / ( 0.15 + zznd_ml ) 1090 1148 END DO 1091 1092 1149 IF ( lpyc(ji,jj) ) THEN 1093 1150 ztau_sc_u(ji,jj) = zhml(ji,jj) / ( zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 )**pthird … … 1102 1159 ghams(ji,jj,jk) = ghams(ji,jj,jk) - 0.045 * ( ( zws_ent * zdbdz_pyc(ji,jj,jk) ) * ztau_sc_u(ji,jj)**2 ) * MAX( ( 1.75 * zznd_pyc -0.15 * zznd_pyc**2 - 0.2 * zznd_pyc**3 ), 0.0 ) 1103 1160 END DO 1104 ! 1105 IF ( dh(ji,jj) < 0.2*hbl(ji,jj) ) THEN 1161 #ifdef key_osm_debug 1162 jl = imld(ji,jj) - 1; jm = MIN(ibld(ji,jj) + 2, mbkt(ji,jj) ) 1163 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1164 WRITE(narea+100,'(3(a,g11.3))')'lpyc= lconv=T: ztau_sc_u=',ztau_sc_u(ji,jj),' zwth_ent=',zwth_ent,' zws_ent=',zws_ent 1165 WRITE(narea+100,'(a,*(g11.3))') ' ghamt[imld-1..ibld+2] =', ( ghamt(ji,jj,jk), jk=jl,jm ) 1166 WRITE(narea+100,'(a,*(g11.3))') ' ghams[imld-1..ibld+2] =', ( ghams(ji,jj,jk), jk=jl,jm ) 1167 WRITE(narea+100,*) 1168 FLUSH(narea+100) 1169 END IF 1170 #endif 1171 ! 1172 IF ( dh(ji,jj) < 0.2*hbl(ji,jj) .AND. ibld(ji,jj) - imld(ji,jj) > 3 ) THEN 1106 1173 zbuoy_pyc_sc = 2.0_wp * MAX(zdb_ml(ji,jj), 0._wp) / zdh(ji,jj) 1107 1174 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 ) ) … … 1118 1185 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 0.05 * zws_pyc_sc_1 * EXP( -0.25 * ( zznd_pyc / zzeta_pyc )**2 ) * zdh(ji,jj) / ( zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 )**pthird 1119 1186 END DO 1187 #ifdef key_osm_debug 1188 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1189 WRITE(narea+100,'(2(a,g11.3))')'lpyc= lconv=T,dh<0.2*hbl: zbuoy_pyc_sc=',zbuoy_pyc_sc,' zdelta_pyc=',zdelta_pyc 1190 WRITE(narea+100,'(3(a,g11.3))')'zwt_pyc_sc_1=',zwt_pyc_sc_1,' zws_pyc_sc_1=',zws_pyc_sc_1,' zzeta_pyc=',zzeta_pyc 1191 FLUSH(narea+100) 1192 END IF 1193 #endif 1194 1120 1195 END IF 1121 1196 ENDIF ! End of pycnocline … … 1129 1204 END DO ! jj loop 1130 1205 1131 WHERE ( lconv ) 1132 zsc_uw_1 = -zwb0 * zustar**2 * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 1133 zsc_uw_2 = zwb0 * zustke * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln )**(2.0/3.0) 1134 zsc_vw_1 = 0._wp 1206 WHERE ( lconv(2:jpim1,2:jpjm1) ) 1207 zsc_uw_1(2:jpim1,2:jpjm1) = -zwb0(2:jpim1,2:jpjm1) * zustar(2:jpim1,2:jpjm1)**2 * zhml(2:jpim1,2:jpjm1) / & 1208 & ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 1209 zsc_uw_2(2:jpim1,2:jpjm1) = zwb0(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1) * zhml(2:jpim1,2:jpjm1) / & 1210 & ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln )**(2.0/3.0) 1211 zsc_vw_1(2:jpim1,2:jpjm1) = 0._wp 1135 1212 ELSEWHERE 1136 zsc_uw_1 = 0._wp1137 zsc_vw_1 = 0._wp1213 zsc_uw_1(2:jpim1,2:jpjm1) = 0._wp 1214 zsc_vw_1(2:jpim1,2:jpjm1) = 0._wp 1138 1215 ENDWHERE 1139 1216 … … 1277 1354 END DO ! jj loop 1278 1355 1279 WHERE ( lconv )1280 zsc_uw_1 = zustar**21281 zsc_vw_1 = ff_t * zustke * zhml1356 WHERE ( lconv(2:jpim1,2:jpjm1) ) 1357 zsc_uw_1(2:jpim1,2:jpjm1) = zustar(2:jpim1,2:jpjm1)**2 1358 zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1) * zhml(2:jpim1,2:jpjm1) 1282 1359 ELSEWHERE 1283 zsc_uw_1 = zustar**21284 zsc_uw_2 = (2.25 - 3.0 * ( 1.0 - EXP( -1.25 * 2.0 ) ) ) * ( 1.0 - EXP( -4.0 * 2.0 ) ) * zsc_uw_11285 zsc_vw_1 = ff_t * zustke * zhbl1286 zsc_vw_2 = -0.11 * SIN( 3.14159 * ( 2.0 + 0.4 ) ) * EXP(-( 1.5 + 2.0 )**2 ) * zsc_vw_11360 zsc_uw_1(2:jpim1,2:jpjm1) = zustar(2:jpim1,2:jpjm1)**2 1361 zsc_uw_2(2:jpim1,2:jpjm1) = (2.25 - 3.0 * ( 1.0 - EXP( -1.25 * 2.0 ) ) ) * ( 1.0 - EXP( -4.0 * 2.0 ) ) * zsc_uw_1(2:jpim1,2:jpjm1) 1362 zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1) * zhbl(2:jpim1,2:jpjm1) 1363 zsc_vw_2(2:jpim1,2:jpjm1) = -0.11 * SIN( 3.14159 * ( 2.0 + 0.4 ) ) * EXP(-( 1.5 + 2.0 )**2 ) * zsc_vw_1(2:jpim1,2:jpjm1) 1287 1364 ENDWHERE 1288 1365 … … 1326 1403 ji=iloc_db; jj=jloc_db 1327 1404 jl = imld(ji,jj) - 1; jm = MIN(ibld(ji,jj) + 2, mbkt(ji,jj) ) 1328 WRITE(narea+100,'(2(a,g11.3))')'Stokes + buoy + pyc + transport contribs to ghamt/ contrib to ghamt/s: zsc_wth_1=',zsc_wth_1(ji,jj), ' zsc_ws_1=',zsc_ws_1(ji,jj)1405 WRITE(narea+100,'(2(a,g11.3))')'Stokes + buoy + pyc + transport contribs to ghamt/s: zsc_wth_1=',zsc_wth_1(ji,jj), ' zsc_ws_1=',zsc_ws_1(ji,jj) 1329 1406 IF (lpyc(ji,jj)) WRITE(narea+100,'(2(a,g11.3))') 'zsc_wth_pyc=', zsc_wth_pyc(ji,jj), ' zsc_wth_pyc=',zsc_wth_pyc(ji,jj) 1330 1407 WRITE(narea+100,'(a,*(g11.3))') ' ghamt[imld-1..ibld+2] =', ( ghamt(ji,jj,jk), jk=jl,jm ) … … 1711 1788 1712 1789 ! Scales used to calculate eddy diffusivity and viscosity profiles 1713 REAL(wp), DIMENSION(jpi,jpj) :: zdifml_sc, zvisml_sc 1714 REAL(wp), DIMENSION(jpi,jpj) :: zdifpyc_n_sc, zdifpyc_s_sc, zdifpyc_shr 1715 REAL(wp), DIMENSION(jpi,jpj) :: zvispyc_n_sc, zvispyc_s_sc,zvispyc_shr 1716 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 1717 1795 ! 1718 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 1719 1800 1720 1801 REAL(wp), PARAMETER :: rn_dif_ml = 0.8, rn_vis_ml = 0.375 … … 1724 1805 DO jj = 2, jpjm1 1725 1806 DO ji = 2, jpim1 1807 pb_coup(ji,jj) = 0._wp 1726 1808 IF ( lconv(ji,jj) ) THEN 1727 1809 1728 zvel_sc_pyc = ( 0.15 * zvstr(ji,jj)**3 + zwstrc(ji,jj)**3 + 4.25 * zshear(ji,jj) * zhbl(ji,jj) )**pthird1729 zvel_sc_ml = ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird1730 zstab_fac = ( zhml(ji,jj) / zvel_sc_ml * ( 1.4 - 0.4 / ( 1.0 + EXP(-3.5 * LOG10(-zhol(ji,jj) ) ) )**1.25 ) )**21731 1732 zdifml_sc(ji,jj) = rn_dif_ml * zhml(ji,jj) * zvel_sc_ml1733 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) 1734 1816 #ifdef key_osm_debug 1735 1817 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1736 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)1737 WRITE(narea+100,'(3(a,g11.3))')'zvel_sc_pyc=', zvel_sc_pyc,' zvel_sc_ml=',zvel_sc_ml,' zstab_fac=',zstab_fac1818 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 1738 1820 FLUSH(narea+100) 1739 1821 END IF 1740 1822 #endif 1741 1823 IF ( lpyc(ji,jj) ) THEN 1742 zdifpyc_n_sc(ji,jj) = rn_dif_pyc * zvel_sc_ml * zdh(ji,jj)1743 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)1744 zvispyc_n_sc(ji,jj) = rn_vis_pyc * zvel_sc_ml * zdh(ji,jj) + zvispyc_n_sc(ji,jj) * zstab_fac1824 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 1745 1827 #ifdef key_osm_debug 1746 1828 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1747 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) 1748 1830 FLUSH(narea+100) 1749 1831 END IF 1750 1832 #endif 1751 1833 IF ( lshear(ji,jj) .AND. j_ddh(ji,jj) /= 2 ) THEN 1752 zdifpyc_n_sc(ji,jj) = zdifpyc_n_sc(ji,jj) + rn_vispyc_shr * ( zshear(ji,jj) * zhbl(ji,jj) )**pthird * zhbl(ji,jj)1753 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) 1754 1836 ENDIF 1755 1837 #ifdef key_osm_debug 1756 1838 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1757 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) 1758 1840 FLUSH(narea+100) 1759 1841 END IF 1760 1842 #endif 1761 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) )1762 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) ) ) 1763 1845 #ifdef key_osm_debug 1764 1846 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1765 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) 1766 1848 FLUSH(narea+100) 1767 1849 END IF 1768 1850 #endif 1769 zdifpyc_s_sc(ji,jj) = 0.09 * zdifpyc_s_sc(ji,jj) * zstab_fac1770 zvispyc_s_sc(ji,jj) = zvispyc_s_sc(ji,jj) * zstab_fac1851 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 1771 1853 #ifdef key_osm_debug 1772 1854 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1773 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) 1774 1856 FLUSH(narea+100) 1775 1857 END IF 1776 1858 #endif 1777 1859 1778 zdifpyc_s_sc(ji,jj) = MAX( zdifpyc_s_sc(ji,jj), -0.5 * zdifpyc_n_sc(ji,jj) ) 1779 zvispyc_s_sc(ji,jj) = MAX( zvispyc_s_sc(ji,jj), -0.5 * zvispyc_n_sc(ji,jj) ) 1780 #ifdef key_osm_debug 1781 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1782 WRITE(narea+100,'(2(a,g11.3))')' Final zdifpyc_s_sc',zdifpyc_s_sc(ji,jj) ,' zvispyc_s_sc=',zvispyc_s_sc(ji,jj) 1783 FLUSH(narea+100) 1784 END IF 1785 #endif 1786 1787 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 1788 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 ) 1789 1865 ELSE 1790 zbeta_d_sc(ji,jj) = 1.0 1791 zbeta_v_sc(ji,jj) = 1.0 1792 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 1793 1912 #ifdef key_osm_debug 1794 1913 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1795 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) 1796 1917 FLUSH(narea+100) 1797 1918 END IF 1798 1919 #endif 1799 1920 ELSE ! conv, stable 1800 zdifml_sc(ji,jj) = zvstr(ji,jj) * zhbl(ji,jj) * MAX( EXP ( -( zhol(ji,jj) / 0.6_wp )**2 ), 0.2_wp)1801 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) 1802 1923 #ifdef key_osm_debug 1803 1924 IF(narea==nn_narea_db.and.ji==iloc_db.and.jj==jloc_db)THEN 1804 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) 1805 1926 FLUSH(narea+100) 1806 1927 END IF … … 1815 1936 IF ( lconv(ji,jj) ) THEN 1816 1937 DO jk = 2, imld(ji,jj) ! mixed layer diffusivity 1817 zznd_ml = gdepw_n(ji,jj,jk) / zhml(ji,jj)1938 pznd_ml = gdepw_n(ji,jj,jk) / zhml(ji,jj) 1818 1939 ! 1819 zdiffut(ji,jj,jk) = zdifml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_d_sc(ji,jj) * zznd_ml )**1.51940 zdiffut(ji,jj,jk) = pdifml_sc(ji,jj) * pznd_ml * ( 1.0 - pbeta_d_sc(ji,jj) * pznd_ml )**1.5 1820 1941 ! 1821 zviscos(ji,jj,jk) = zvisml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_v_sc(ji,jj) * zznd_ml ) &1822 & * ( 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 ) 1823 1944 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 1824 1955 ! pycnocline 1825 1956 IF ( lpyc(ji,jj) ) THEN 1826 ! Diffusivity profile in the pycnocline given by cubic polynomial. 1827 za_cubic = 0.51828 zb_cubic = -1.75 * zdifpyc_s_sc(ji,jj) / zdifpyc_n_sc(ji,jj)1829 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 ) &1830 & - 0.85 * zdifpyc_s_sc(ji,jj) ) / MAX(zdifpyc_n_sc(ji,jj), 1.e-8)1831 zd_cubic = zd_cubic - zb_cubic - 2.0 * ( 1.0 - za_cubic - zb_cubic )1832 zc_cubic = 1.0 - za_cubic - zb_cubic - zd_cubic1957 ! 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 1833 1964 DO jk = imld(ji,jj) , ibld(ji,jj) 1834 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) 1835 1966 ! 1836 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 )1837 1838 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 ) 1839 1970 END DO 1840 1971 ! viscosity profiles. 1841 za_cubic = 0.51842 zb_cubic = -1.75 * zvispyc_s_sc(ji,jj) / zvispyc_n_sc(ji,jj)1843 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)1844 zd_cubic = zd_cubic - zb_cubic - 2.0 * ( 1.0 - za_cubic - zb_cubic )1845 zc_cubic = 1.0 - za_cubic - zb_cubic - zd_cubic1972 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 1846 1977 DO jk = imld(ji,jj) , ibld(ji,jj) 1847 zznd_pyc = -( gdepw_n(ji,jj,jk) - zhbl(ji,jj) ) / MAX(zdh(ji,jj), 1.e-6)1848 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 )1849 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 ) 1850 1981 END DO 1851 IF ( zdhdt(ji,jj) > 0._wp ) THEN 1852 zdiffut(ji,jj,ibld(ji,jj)+1) = MAX( 0.5 * zdhdt(ji,jj) * e3w_n(ji,jj,ibld(ji,jj)+1), 1.0e-6 ) 1853 zviscos(ji,jj,ibld(ji,jj)+1) = MAX( 0.5 * zdhdt(ji,jj) * e3w_n(ji,jj,ibld(ji,jj)+1), 1.0e-6 ) 1854 ELSE 1855 zdiffut(ji,jj,ibld(ji,jj)) = 0._wp 1856 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) 1857 1994 ENDIF 1858 1995 ENDIF … … 1860 1997 ! stable conditions 1861 1998 DO jk = 2, ibld(ji,jj) 1862 zznd_ml = gdepw_n(ji,jj,jk) / zhbl(ji,jj)1863 zdiffut(ji,jj,jk) = 0.75 * zdifml_sc(ji,jj) * zznd_ml * ( 1.0 - zznd_ml )**1.51864 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 ) 1865 2002 END DO 1866 2003 … … 1873 2010 END DO ! end of ji loop 1874 2011 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 1875 2013 1876 2014 END SUBROUTINE zdf_osm_diffusivity_viscosity … … 1922 2060 END DO 1923 2061 1924 zekman( :,:) = EXP( - zek * ABS( ff_t(:,:) ) * zhbl(:,:) / MAX(zustar(:,:), 1.e-8 ) )1925 1926 zshear( :,:) = 0._wp2062 zekman(2:jpim1,2:jpjm1) = EXP( - zek * ABS( ff_t(2:jpim1,2:jpjm1) ) * zhbl(2:jpim1,2:jpjm1) / MAX(zustar(2:jpim1,2:jpjm1), 1.e-8 ) ) 2063 2064 zshear(2:jpim1,2:jpjm1) = 0._wp 1927 2065 #ifdef key_osm_debug 1928 2066 IF(narea==nn_narea_db) THEN … … 1933 2071 END IF 1934 2072 #endif 1935 j_ddh( :,:) = 12073 j_ddh(2:jpim1,2:jpjm1) = 1 1936 2074 1937 2075 DO jj = 2, jpjm1 … … 2037 2175 END DO ! jj loop 2038 2176 2039 zwb_min(:,:) = 0._wp2177 zwb_min(:,:) = zlarge 2040 2178 2041 2179 DO jj = 2, jpjm1 … … 2116 2254 2117 2255 2118 zt 2119 zs 2120 zu 2121 zv 2256 zt(2:jpim1,2:jpjm1) = 0._wp 2257 zs(2:jpim1,2:jpjm1) = 0._wp 2258 zu(2:jpim1,2:jpjm1) = 0._wp 2259 zv(2:jpim1,2:jpjm1) = 0._wp 2122 2260 DO jj = 2, jpjm1 ! Vertical slab 2123 2261 DO ji = 2, jpim1 … … 2143 2281 zb(ji,jj) = grav * zthermal * zt(ji,jj) - grav * zbeta * zs(ji,jj) 2144 2282 ibld_ext = jnlev_av(ji,jj) + jp_ext(ji,jj) 2145 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. 2146 2285 zdt(ji,jj) = zt(ji,jj) - tsn(ji,jj,ibld_ext,jp_tem) 2147 2286 zds(ji,jj) = zs(ji,jj) - tsn(ji,jj,ibld_ext,jp_sal) … … 2213 2352 REAL(wp) :: zpe_mle_ref, zdbdz_mle_int 2214 2353 2215 znd_param( :,:) = 0._wp2354 znd_param(2:jpim1,2:jpjm1) = 0._wp 2216 2355 2217 2356 DO jj = 2, jpjm1
Note: See TracChangeset
for help on using the changeset viewer.