Changeset 4450
- Timestamp:
- 2014-02-04T13:16:16+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r4449 r4450 628 628 DO jj = 1, jpjm1 629 629 DO ji = 1, jpim1 630 DO jk = 1, jpk630 DO jk = 1, mbkmax(ji,jj) ! jpk 631 631 #else 632 632 DO jk = 1, jpk … … 646 646 647 647 #if defined key_z_first 648 ! DO jk = 1, jpkm1649 648 650 651 652 653 654 655 656 DO jk = 1,jpkm1657 658 659 660 661 662 663 664 DO jk = 1,jpkm1665 666 667 668 669 670 671 672 DO jk = 1,jpkm1673 649 ! Potential vorticity and horizontal fluxes 650 ! ----------------------------------------- 651 SELECT CASE( kvor ) ! vorticity considered 652 CASE ( 1 ) ! planetary vorticity (Coriolis) 653 DO jj = 1, jpj, 1 654 DO ji = 1, jpi, 1 655 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 656 zwz(ji,jj,jk) = ff(ji,jj) * ze3f(ji,jj,jk) 657 END DO 658 END DO 659 END DO 660 CASE ( 2 ) ! relative vorticity 661 DO jj = 1, jpj, 1 662 DO ji = 1, jpi, 1 663 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 664 zwz(ji,jj,jk) = rotn(ji,jj,jk) * ze3f(ji,jj,jk) 665 END DO 666 END DO 667 END DO 668 CASE ( 3 ) ! metric term 669 DO jj = 1, jpjm1 670 DO ji = 1, jpim1 671 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 672 zwz(ji,jj,jk) = ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 674 673 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 675 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) * ze3f(ji,jj,jk)676 677 678 679 680 681 682 683 DO jk = 1,jpkm1684 685 686 687 688 689 690 691 DO jk = 1,jpkm1692 674 & * 0.5_wp / ( e1f(ji,jj) * e2f(ji,jj) ) * ze3f(ji,jj,jk) 675 END DO 676 END DO 677 END DO 678 CALL lbc_lnk( zwz, 'F', 1. ) 679 CASE ( 4 ) ! total (relative + planetary vorticity) 680 DO jj = 1, jpj, 1 681 DO ji = 1, jpi, 1 682 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 683 zwz(ji,jj,jk) = ( rotn(ji,jj,jk) + ff(ji,jj) ) * ze3f(ji,jj,jk) 684 END DO 685 END DO 686 END DO 687 CASE ( 5 ) ! total (coriolis + metric) 688 DO jj = 1, jpjm1 689 DO ji = 1, fs_jpim1 ! vector opt. 690 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 691 zwz(ji,jj,jk) = ( ff (ji,jj) & 693 692 & + ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 694 693 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & 695 694 & * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) & 696 695 & ) * ze3f(ji,jj,jk) 697 END DO 698 END DO 699 END DO 700 CALL lbc_lnk( zwz, 'F', 1. ) 701 END SELECT 702 703 DO jj = 1, jpj, 1 704 DO ji = 1, jpi, 1 705 DO jk = 1, jpkm1 706 zwx(ji,jj,jk) = e2u(ji,jj) * fse3u(ji,jj,jk) * un(ji,jj,jk) 707 zwy(ji,jj,jk) = e1v(ji,jj) * fse3v(ji,jj,jk) * vn(ji,jj,jk) 708 END DO 709 END DO 710 END DO 711 712 ! Compute and add the vorticity term trend 713 ! ---------------------------------------- 714 DO jj = 1,jpj,1 715 DO jk = 1,jpk,1 716 ztne(1,jj,jk) = 0.0_wp ; ztnw(1,jj,jk) = 0.0_wp 717 ztse(1,jj,jk) = 0.0_wp ; ztsw(1,jj,jk) = 0.0_wp 718 END DO 719 END DO 720 721 DO jj = 2, jpj 722 DO ji = 2, jpi 723 DO jk = 1, jpkm1 724 ztne(ji,jj,jk) = zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) 725 ztnw(ji,jj,jk) = zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) 726 ztse(ji,jj,jk) = zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) + zwz(ji-1,jj-1,jk) 727 ztsw(ji,jj,jk) = zwz(ji ,jj-1,jk) + zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) 728 END DO 729 END DO 730 END DO 731 DO jj = 2, jpjm1 732 DO ji = fs_2, jpim1 733 DO jk = 1, jpkm1 734 zua = + zfac12 / e1u(ji,jj) * ( ztne(ji,jj ,jk) * zwy(ji ,jj ,jk) + & 735 ztnw(ji+1,jj,jk) * zwy(ji+1,jj ,jk) & 736 & + ztse(ji,jj ,jk) * zwy(ji ,jj-1,jk) + ztsw(ji+1,jj,jk) * zwy(ji+1,jj-1,jk) ) 737 738 zva = - zfac12 / e2v(ji,jj) * ( ztsw(ji,jj+1,jk) * zwx(ji-1,jj+1,jk) + & 739 ztse(ji,jj+1,jk) * zwx(ji ,jj+1,jk) & 740 & + ztnw(ji,jj ,jk) * zwx(ji-1,jj ,jk) + ztne(ji,jj ,jk) * zwx(ji ,jj ,jk) ) 741 742 pua(ji,jj,jk) = pua(ji,jj,jk) + zua 743 pva(ji,jj,jk) = pva(ji,jj,jk) + zva 744 END DO 745 END DO 746 END DO 747 748 ! END DO 696 END DO 697 END DO 698 END DO 699 CALL lbc_lnk( zwz, 'F', 1. ) 700 END SELECT 701 702 DO jj = 1, jpj, 1 703 DO ji = 1, jpi, 1 704 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 705 zwx(ji,jj,jk) = e2u(ji,jj) * fse3u(ji,jj,jk) * un(ji,jj,jk) 706 zwy(ji,jj,jk) = e1v(ji,jj) * fse3v(ji,jj,jk) * vn(ji,jj,jk) 707 END DO 708 END DO 709 END DO 710 711 ! Compute and add the vorticity term trend 712 ! ---------------------------------------- 713 DO jj = 1,jpj,1 714 DO jk = 1,mbkmax(1,jj) ! jpk,1 715 ztne(1,jj,jk) = 0.0_wp ; ztnw(1,jj,jk) = 0.0_wp 716 ztse(1,jj,jk) = 0.0_wp ; ztsw(1,jj,jk) = 0.0_wp 717 END DO 718 END DO 719 720 DO jj = 2, jpj 721 DO ji = 2, jpi 722 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 723 ztne(ji,jj,jk) = zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) 724 ztnw(ji,jj,jk) = zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) 725 ztse(ji,jj,jk) = zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) + zwz(ji-1,jj-1,jk) 726 ztsw(ji,jj,jk) = zwz(ji ,jj-1,jk) + zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) 727 END DO 728 END DO 729 END DO 730 DO jj = 2, jpjm1 731 DO ji = fs_2, jpim1 732 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 733 zua = + zfac12 / e1u(ji,jj) * ( ztne(ji,jj ,jk) * zwy(ji ,jj ,jk) + & 734 ztnw(ji+1,jj,jk) * zwy(ji+1,jj ,jk) & 735 & + ztse(ji,jj ,jk) * zwy(ji ,jj-1,jk) + ztsw(ji+1,jj,jk) * zwy(ji+1,jj-1,jk) ) 736 737 zva = - zfac12 / e2v(ji,jj) * ( ztsw(ji,jj+1,jk) * zwx(ji-1,jj+1,jk) + & 738 ztse(ji,jj+1,jk) * zwx(ji ,jj+1,jk) & 739 & + ztnw(ji,jj ,jk) * zwx(ji-1,jj ,jk) + ztne(ji,jj ,jk) * zwx(ji ,jj ,jk) ) 740 741 pua(ji,jj,jk) = pua(ji,jj,jk) + zua 742 pva(ji,jj,jk) = pva(ji,jj,jk) + zva 743 END DO 744 END DO 745 END DO 749 746 750 747 #else
Note: See TracChangeset
for help on using the changeset viewer.