- Timestamp:
- 2015-12-07T16:11:45+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r5930 r6012 145 145 INTEGER :: ji, jj, jk, jn ! dummy loop indices 146 146 INTEGER :: ikbu, ikbv, noffset ! local integers 147 INTEGER :: iktu, iktv ! local integers 147 148 REAL(wp) :: zraur, z1_2dt_b, z2dt_bf ! local scalars 148 149 REAL(wp) :: zx1, zy1, zx2, zy2 ! - - … … 384 385 DO jj = 2, jpjm1 ! Remove coriolis term (and possibly spg) from barotropic trend 385 386 DO ji = fs_2, fs_jpim1 386 zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * umask(ji,jj,1)387 zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * vmask(ji,jj,1)387 zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * ssumask(ji,jj) 388 zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * ssvmask(ji,jj) 388 389 END DO 389 390 END DO … … 413 414 zu_frc(:,:) = zu_frc(:,:) + hur(:,:) * bfrua(:,:) * zwx(:,:) 414 415 zv_frc(:,:) = zv_frc(:,:) + hvr(:,:) * bfrva(:,:) * zwy(:,:) 416 ! 417 ! ! Add top stress contribution from baroclinic velocities: 418 IF (ln_bt_fw) THEN 419 DO jj = 2, jpjm1 420 DO ji = fs_2, fs_jpim1 ! vector opt. 421 iktu = miku(ji,jj) 422 iktv = mikv(ji,jj) 423 zwx(ji,jj) = un(ji,jj,iktu) - un_b(ji,jj) ! NOW top baroclinic velocities 424 zwy(ji,jj) = vn(ji,jj,iktv) - vn_b(ji,jj) 425 END DO 426 END DO 427 ELSE 428 DO jj = 2, jpjm1 429 DO ji = fs_2, fs_jpim1 ! vector opt. 430 iktu = miku(ji,jj) 431 iktv = mikv(ji,jj) 432 zwx(ji,jj) = ub(ji,jj,iktu) - ub_b(ji,jj) ! BEFORE top baroclinic velocities 433 zwy(ji,jj) = vb(ji,jj,iktv) - vb_b(ji,jj) 434 END DO 435 END DO 436 ENDIF 437 ! 438 ! Note that the "unclipped" top friction parameter is used even with explicit drag 439 zu_frc(:,:) = zu_frc(:,:) + hur(:,:) * tfrua(:,:) * zwx(:,:) 440 zv_frc(:,:) = zv_frc(:,:) + hvr(:,:) * tfrva(:,:) * zwy(:,:) 415 441 ! 416 442 IF (ln_bt_fw) THEN ! Add wind forcing … … 544 570 DO jj = 2, jpjm1 ! Sea Surface Height at u- & v-points 545 571 DO ji = 2, fs_jpim1 ! Vector opt. 546 zwx(ji,jj) = z1_2 * umask(ji,jj,1) * r1_e1e2u(ji,jj) &572 zwx(ji,jj) = z1_2 * ssumask(ji,jj) * r1_e1e2u(ji,jj) & 547 573 & * ( e1e2t(ji ,jj) * zsshp2_e(ji ,jj) & 548 574 & + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj) ) 549 zwy(ji,jj) = z1_2 * vmask(ji,jj,1) * r1_e1e2v(ji,jj) &575 zwy(ji,jj) = z1_2 * ssvmask(ji,jj) * r1_e1e2v(ji,jj) & 550 576 & * ( e1e2t(ji,jj ) * zsshp2_e(ji,jj ) & 551 577 & + e1e2t(ji,jj+1) * zsshp2_e(ji,jj+1) ) … … 607 633 END DO 608 634 END DO 609 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) ) * tmask(:,:,1)635 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) ) * ssmask(:,:) 610 636 CALL lbc_lnk( ssha_e, 'T', 1._wp ) 611 637 … … 622 648 DO jj = 2, jpjm1 623 649 DO ji = 2, jpim1 ! NO Vector Opt. 624 zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1) * r1_e1e2u(ji,jj)&625 & * ( e1e2t(ji ,jj ) * ssha_e(ji ,jj ) &626 & + e1e2t(ji+1,jj ) * ssha_e(ji+1,jj ) )627 zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1) * r1_e1e2v(ji,jj)&628 & * ( e1e2t(ji ,jj ) * ssha_e(ji ,jj ) &629 & + e1e2t(ji ,jj+1) * ssha_e(ji ,jj+1) )650 zsshu_a(ji,jj) = z1_2 * ssumask(ji,jj) * r1_e1e2u(ji,jj) & 651 & * ( e1e2t(ji ,jj ) * ssha_e(ji ,jj ) & 652 & + e1e2t(ji+1,jj ) * ssha_e(ji+1,jj ) ) 653 zsshv_a(ji,jj) = z1_2 * ssvmask(ji,jj) * r1_e1e2v(ji,jj) & 654 & * ( e1e2t(ji ,jj ) * ssha_e(ji ,jj ) & 655 & + e1e2t(ji ,jj+1) * ssha_e(ji ,jj+1) ) 630 656 END DO 631 657 END DO … … 661 687 DO jj = 2, jpjm1 662 688 DO ji = 2, jpim1 663 zx1 = z1_2 * umask(ji ,jj,1) * r1_e1e2u(ji ,jj) &689 zx1 = z1_2 * ssumask(ji ,jj) * r1_e1e2u(ji ,jj) & 664 690 & * ( e1e2t(ji ,jj ) * zsshp2_e(ji ,jj) & 665 691 & + e1e2t(ji+1,jj ) * zsshp2_e(ji+1,jj ) ) 666 zy1 = z1_2 * vmask(ji ,jj,1) * r1_e1e2v(ji ,jj ) &692 zy1 = z1_2 * ssvmask(ji ,jj) * r1_e1e2v(ji ,jj ) & 667 693 & * ( e1e2t(ji ,jj ) * zsshp2_e(ji ,jj ) & 668 694 & + e1e2t(ji ,jj+1) * zsshp2_e(ji ,jj+1) ) … … 736 762 zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 737 763 ! 764 ! Add top stresses: 765 zu_trd(:,:) = zu_trd(:,:) + tfrua(:,:) * un_e(:,:) * hur_e(:,:) 766 zv_trd(:,:) = zv_trd(:,:) + tfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 767 ! 738 768 ! Surface pressure trend: 739 769 DO jj = 2, jpjm1 … … 755 785 & + zu_trd(ji,jj) & 756 786 & + zu_frc(ji,jj) ) & 757 & ) * umask(ji,jj,1)787 & ) * ssumask(ji,jj) 758 788 759 789 va_e(ji,jj) = ( vn_e(ji,jj) & … … 761 791 & + zv_trd(ji,jj) & 762 792 & + zv_frc(ji,jj) ) & 763 & ) * vmask(ji,jj,1)764 END DO 765 END DO 766 767 ELSE 793 & ) * ssvmask(ji,jj) 794 END DO 795 END DO 796 797 ELSE ! Flux form 768 798 DO jj = 2, jpjm1 769 799 DO ji = fs_2, fs_jpim1 ! vector opt. 770 800 771 zhura = umask(ji,jj,1)/(hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - umask(ji,jj,1))772 zhvra = vmask(ji,jj,1)/(hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - vmask(ji,jj,1))801 zhura = ssumask(ji,jj)/(hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj)) 802 zhvra = ssvmask(ji,jj)/(hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj)) 773 803 774 804 ua_e(ji,jj) = ( hu_e(ji,jj) * un_e(ji,jj) & … … 791 821 hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 792 822 hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 793 hur_e(:,:) = umask(:,:,1) / ( hu_e(:,:) + 1._wp - umask(:,:,1) )794 hvr_e(:,:) = vmask(:,:,1) / ( hv_e(:,:) + 1._wp - vmask(:,:,1) )823 hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 824 hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 795 825 ! 796 826 ENDIF … … 827 857 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) 828 858 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) 829 ELSE 859 ELSE ! Sum transports 830 860 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) * hu_e (:,:) 831 861 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) * hv_e (:,:) … … 881 911 END DO 882 912 ! Save barotropic velocities not transport: 883 ua_b (:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - umask(:,:,1) )884 va_b (:,:) = va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - vmask(:,:,1) )913 ua_b (:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 914 va_b (:,:) = va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 885 915 ENDIF 886 916 ! … … 897 927 ! 898 928 IF ( (.NOT.Agrif_Root()).AND.(ln_bt_fw) ) THEN 899 IF ( Agrif_NbStepint() .EQ.0 ) THEN929 IF ( Agrif_NbStepint() == 0 ) THEN 900 930 ub2_i_b(:,:) = 0.e0 901 931 vb2_i_b(:,:) = 0.e0
Note: See TracChangeset
for help on using the changeset viewer.