- Timestamp:
- 2021-11-28T18:59:49+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/ticket2632_r14588_theta_sbcblk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/ticket2632_r14588_theta_sbcblk
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette@14244 sette 11 ^/utils/CI/sette@HEAD sette 12
-
- Property svn:externals
-
NEMO/branches/2021/ticket2632_r14588_theta_sbcblk/src/OCE/DOM/domvvl.F90
r14433 r15548 204 204 gdept(:,:,1,Kbb) = 0.5_wp * e3w(:,:,1,Kbb) 205 205 gdepw(:,:,1,Kbb) = 0.0_wp 206 DO_3D( 1, 1, 1, 1, 2, jpk ) ! vertical sum206 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpk ) ! vertical sum 207 207 ! zcoef = tmask - wmask ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 208 208 ! ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) … … 404 404 zwu(:,:) = 0._wp 405 405 zwv(:,:) = 0._wp 406 DO_3D( 1, 0, 1, 0, 1, jpkm1 )! a - first derivative: diffusive fluxes406 DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 ) ! a - first derivative: diffusive fluxes 407 407 un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_e1u(ji,jj) & 408 408 & * ( tilde_e3t_b(ji,jj,jk) - tilde_e3t_b(ji+1,jj ,jk) ) … … 412 412 zwv(ji,jj) = zwv(ji,jj) + vn_td(ji,jj,jk) 413 413 END_3D 414 DO_2D( 1, 1, 1, 1 )! b - correction for last oceanic u-v points414 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) ! b - correction for last oceanic u-v points 415 415 un_td(ji,jj,mbku(ji,jj)) = un_td(ji,jj,mbku(ji,jj)) - zwu(ji,jj) 416 416 vn_td(ji,jj,mbkv(ji,jj)) = vn_td(ji,jj,mbkv(ji,jj)) - zwv(ji,jj) … … 423 423 ! ! d - thickness diffusion transport: boundary conditions 424 424 ! (stored for tracer advction and continuity equation) 425 CALL lbc_lnk( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp)425 IF( nn_hls == 1 ) CALL lbc_lnk( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 426 426 ! 4 - Time stepping of baroclinic scale factors 427 427 ! --------------------------------------------- … … 640 640 gdepw(:,:,1,Kmm) = 0.0_wp 641 641 gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) 642 DO_3D( 1, 1, 1, 1, 2, jpk )642 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpk ) 643 643 ! zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 644 644 ! 1 for jk = mikt … … 683 683 ! 684 684 INTEGER :: ji, jj, jk ! dummy loop indices 685 INTEGER :: iku, ikum1, ikv, ikvm1, ikf, ikfm1 685 686 REAL(wp) :: zlnwd ! =1./0. when ln_wd_il = T/F 686 687 !!---------------------------------------------------------------------- … … 700 701 & + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 701 702 END_3D 703 ! 704 ! Bottom correction: 705 DO_2D( 1, 0, 1, 0 ) 706 iku = mbku(ji ,jj) 707 ikum1 = iku - 1 708 pe3_out(ji,jj,iku) = ( umask(ji,jj,iku) * (1.0_wp - zlnwd) + zlnwd ) & 709 & * ( 0.5_wp * r1_e1e2u(ji,jj) & 710 & * ( e1e2t(ji ,jj) * ( SUM(tmask(ji ,jj,:)*(pe3_in(ji ,jj,:) - e3t_0(ji ,jj,:))) ) & 711 & + e1e2t(ji+1,jj) * ( SUM(tmask(ji+1,jj,:)*(pe3_in(ji+1,jj,:) - e3t_0(ji+1,jj,:))) ) ) & 712 & - SUM(pe3_out(ji,jj,1:ikum1))) 713 END_2D 714 702 715 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 703 716 pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) … … 709 722 & + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 710 723 END_3D 724 ! 725 ! Bottom correction: 726 DO_2D( 1, 0, 1, 0 ) 727 ikv = mbkv(ji ,jj) 728 ikvm1 = ikv - 1 729 pe3_out(ji,jj,ikv) = ( vmask(ji,jj,ikv) * (1.0_wp - zlnwd) + zlnwd ) & 730 & * ( 0.5_wp * r1_e1e2v(ji,jj) & 731 & * ( e1e2t(ji,jj ) * ( SUM(tmask(ji,jj ,:)*(pe3_in(ji,jj ,:) - e3t_0(ji,jj ,:))) ) & 732 & + e1e2t(ji,jj+1) * ( SUM(tmask(ji,jj+1,:)*(pe3_in(ji,jj+1,:) - e3t_0(ji,jj+1,:))) ) ) & 733 & - SUM(pe3_out(ji,jj,1:ikvm1))) 734 END_2D 711 735 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 712 736 pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 713 737 ! 714 738 CASE( 'F' ) !* from U-point to F-point : hor. surface weighted mean 715 DO_3D( 1, 0, 1, 0, 1, jpk )739 DO_3D( 0, 0, 0, 0, 1, jpk ) 716 740 pe3_out(ji,jj,jk) = 0.5_wp * ( umask(ji,jj,jk) * umask(ji,jj+1,jk) * (1.0_wp - zlnwd) + zlnwd ) & 717 741 & * r1_e1e2f(ji,jj) & … … 719 743 & + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 720 744 END_3D 745 ! 746 ! Bottom correction: 747 DO_2D( 0, 0, 0, 0 ) 748 ikf = MIN(mbku(ji ,jj),mbku(ji,jj+1)) 749 ikfm1 = ikf - 1 750 pe3_out(ji,jj,ikf) = ( umask(ji,jj,ikf) * umask(ji,jj+1,ikf) * (1.0_wp - zlnwd) + zlnwd ) & 751 & * ( 0.5_wp * r1_e1e2f(ji,jj) & 752 & * ( e1e2u(ji,jj ) * ( SUM(umask(ji,jj ,:)*(pe3_in(ji,jj ,:) - e3u_0(ji,jj ,:))) ) & 753 & + e1e2u(ji,jj+1) * ( SUM(umask(ji,jj+1,:)*(pe3_in(ji,jj+1,:) - e3u_0(ji,jj+1,:))) ) ) & 754 & - SUM(pe3_out(ji,jj,1:ikfm1))) 755 END_2D 721 756 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 722 757 pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:)
Note: See TracChangeset
for help on using the changeset viewer.