Changeset 4671 for trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90
- Timestamp:
- 2014-06-17T17:00:51+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90
r4230 r4671 33 33 34 34 INTEGER, PUBLIC, PARAMETER :: jpmaxngh = 3 35 INTEGER, PUBLIC :: nsndto 35 INTEGER, PUBLIC :: nsndto, nfsloop, nfeloop 36 36 INTEGER, PUBLIC, DIMENSION (jpmaxngh) :: isendto ! processes to which communicate 37 37 … … 412 412 SELECT CASE ( cd_type ) 413 413 CASE ( 'T' , 'W' ) ! T-, W-point 414 IF (n area .ne. (jpnij - jpni + 1)) THEN414 IF (nimpp .ne. 1) THEN 415 415 startloop = 1 416 416 ELSE … … 420 420 DO jk = 1, jpk 421 421 DO ji = startloop, nlci 422 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 4422 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 423 423 pt3dl(ji,ijpj,jk) = psgn * pt3dr(ijt,ijpj-2,jk) 424 424 END DO … … 435 435 DO jk = 1, jpk 436 436 DO ji = startloop, nlci 437 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 4437 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 438 438 jia = ji + nimpp - 1 439 439 ijta = jpiglo - jia + 2 … … 448 448 449 449 450 451 450 CASE ( 'U' ) ! U-point 452 IF ( narea .ne. (jpnij)) THEN451 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 453 452 endloop = nlci 454 453 ELSE … … 457 456 DO jk = 1, jpk 458 457 DO ji = 1, endloop 459 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3458 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 460 459 pt3dl(ji,ijpj,jk) = psgn * pt3dr(iju,ijpj-2,jk) 461 460 END DO 462 461 END DO 463 462 464 IF ( narea .ne. (jpnij)) THEN463 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 465 464 endloop = nlci 466 465 ELSE … … 477 476 DO jk = 1, jpk 478 477 DO ji = startloop, endloop 479 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3478 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 480 479 jia = ji + nimpp - 1 481 480 ijua = jpiglo - jia + 1 … … 490 489 491 490 CASE ( 'V' ) ! V-point 492 IF (n area .ne. (jpnij - jpni + 1)) THEN491 IF (nimpp .ne. 1) THEN 493 492 startloop = 1 494 493 ELSE … … 497 496 DO jk = 1, jpk 498 497 DO ji = startloop, nlci 499 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 4498 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 500 499 pt3dl(ji,ijpj-1,jk) = psgn * pt3dr(ijt,ijpj-2,jk) 501 500 pt3dl(ji,ijpj ,jk) = psgn * pt3dr(ijt,ijpj-3,jk) … … 503 502 END DO 504 503 CASE ( 'F' ) ! F-point 505 IF ( narea .ne. (jpnij)) THEN504 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 506 505 endloop = nlci 507 506 ELSE … … 510 509 DO jk = 1, jpk 511 510 DO ji = 1, endloop 512 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3511 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 513 512 pt3dl(ji,ijpj-1,jk) = psgn * pt3dr(iju,ijpj-2,jk) 514 513 pt3dl(ji,ijpj ,jk) = psgn * pt3dr(iju,ijpj-3,jk) … … 524 523 DO jk = 1, jpk 525 524 DO ji = 1, nlci 526 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3525 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 527 526 pt3dl(ji,ijpj,jk) = psgn * pt3dr(ijt,ijpj-1,jk) 528 527 END DO … … 530 529 531 530 CASE ( 'U' ) ! U-point 532 IF ( narea .ne. (jpnij)) THEN531 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 533 532 endloop = nlci 534 533 ELSE … … 537 536 DO jk = 1, jpk 538 537 DO ji = 1, endloop 539 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 2538 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 540 539 pt3dl(ji,ijpj,jk) = psgn * pt3dr(iju,ijpj-1,jk) 541 540 END DO … … 545 544 DO jk = 1, jpk 546 545 DO ji = 1, nlci 547 ijt = jpiglo - ji- nimpp - n imppt(isendto(1)) + 3546 ijt = jpiglo - ji- nimpp - nfiimpp(isendto(1),jpnj) + 3 548 547 pt3dl(ji,ijpj,jk) = psgn * pt3dr(ijt,ijpj-2,jk) 549 548 END DO … … 560 559 DO jk = 1, jpk 561 560 DO ji = startloop, nlci 562 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3561 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 563 562 pt3dl(ji,ijpjm1,jk) = psgn * pt3dr(ijt,ijpjm1,jk) 564 563 END DO … … 567 566 568 567 CASE ( 'F' ) ! F-point 569 IF ( narea .ne. (jpnij)) THEN568 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 570 569 endloop = nlci 571 570 ELSE … … 574 573 DO jk = 1, jpk 575 574 DO ji = 1, endloop 576 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 2575 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 577 576 pt3dl(ji,ijpj ,jk) = psgn * pt3dr(iju,ijpj-2,jk) 578 577 END DO 579 578 END DO 580 579 581 IF ( narea .ne. (jpnij)) THEN580 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 582 581 endloop = nlci 583 582 ELSE … … 594 593 DO jk = 1, jpk 595 594 DO ji = startloop, endloop 596 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 2595 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 597 596 pt3dl(ji,ijpjm1,jk) = psgn * pt3dr(iju,ijpjm1,jk) 598 597 END DO … … 656 655 ! 657 656 CASE ( 'T' , 'W' ) ! T- , W-points 658 IF (n area .ne. (jpnij - jpni + 1)) THEN657 IF (nimpp .ne. 1) THEN 659 658 startloop = 1 660 659 ELSE … … 662 661 ENDIF 663 662 DO ji = startloop, nlci 664 ijt=jpiglo - ji - nimpp - n imppt(isendto(1)) + 4663 ijt=jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 665 664 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-1) 666 665 END DO … … 674 673 ENDIF 675 674 DO ji = startloop, nlci 676 ijt=jpiglo - ji - nimpp - n imppt(isendto(1)) + 4675 ijt=jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 677 676 jia = ji + nimpp - 1 678 677 ijta = jpiglo - jia + 2 … … 685 684 686 685 CASE ( 'U' ) ! U-point 687 IF ( narea .ne. (jpnij)) THEN686 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 688 687 endloop = nlci 689 688 ELSE … … 691 690 ENDIF 692 691 DO ji = 1, endloop 693 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3692 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 694 693 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-1) 695 694 END DO 696 695 697 IF ( narea .ne. (jpnij)) THEN696 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 698 697 endloop = nlci 699 698 ELSE … … 708 707 ENDIF 709 708 DO ji = startloop, endloop 710 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3709 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 711 710 jia = ji + nimpp - 1 712 711 ijua = jpiglo - jia + 1 … … 719 718 720 719 CASE ( 'V' ) ! V-point 721 IF (n area .ne. (jpnij - jpni + 1)) THEN720 IF (nimpp .ne. 1) THEN 722 721 startloop = 1 723 722 ELSE … … 725 724 ENDIF 726 725 DO ji = startloop, nlci 727 ijt=jpiglo - ji - nimpp - n imppt(isendto(1)) + 4726 ijt=jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 728 727 pt2dl(ji,ijpjm1) = psgn * pt2dr(ijt,ijpjm1-1) 729 728 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-2) … … 731 730 732 731 CASE ( 'F' ) ! F-point 733 IF ( narea .ne. (jpnij)) THEN732 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 734 733 endloop = nlci 735 734 ELSE … … 737 736 ENDIF 738 737 DO ji = 1, endloop 739 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3738 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 740 739 pt2dl(ji,ijpjm1) = psgn * pt2dr(iju,ijpjm1-1) 741 740 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-2) … … 743 742 744 743 CASE ( 'I' ) ! ice U-V point (I-point) 745 IF (n area .ne. (jpnij - jpni + 1)) THEN744 IF (nimpp .ne. 1) THEN 746 745 startloop = 1 747 746 ELSE … … 750 749 ENDIF 751 750 DO ji = startloop, nlci 752 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 5751 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 5 753 752 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 754 753 END DO 755 754 756 755 CASE ( 'J' ) ! first ice U-V point 757 IF (n area .ne. (jpnij - jpni + 1)) THEN756 IF (nimpp .ne. 1) THEN 758 757 startloop = 1 759 758 ELSE … … 762 761 ENDIF 763 762 DO ji = startloop, nlci 764 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 5763 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 5 765 764 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 766 765 END DO 767 766 768 767 CASE ( 'K' ) ! second ice U-V point 769 IF (n area .ne. (jpnij - jpni + 1)) THEN768 IF (nimpp .ne. 1) THEN 770 769 startloop = 1 771 770 ELSE … … 774 773 ENDIF 775 774 DO ji = startloop, nlci 776 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 5775 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 5 777 776 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 778 777 END DO … … 785 784 CASE ( 'T' , 'W' ) ! T-, W-point 786 785 DO ji = 1, nlci 787 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3786 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 788 787 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1) 789 788 END DO 790 789 791 790 CASE ( 'U' ) ! U-point 792 IF ( narea .ne. (jpnij)) THEN791 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 793 792 endloop = nlci 794 793 ELSE … … 796 795 ENDIF 797 796 DO ji = 1, endloop 798 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 2797 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 799 798 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 800 799 END DO … … 802 801 CASE ( 'V' ) ! V-point 803 802 DO ji = 1, nlci 804 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3803 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 805 804 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-1) 806 805 END DO … … 813 812 ENDIF 814 813 DO ji = startloop, nlci 815 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 3814 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 816 815 pt2dl(ji,ijpjm1) = psgn * pt2dr(ijt,ijpjm1) 817 816 END DO 818 817 819 818 CASE ( 'F' ) ! F-point 820 IF ( narea .ne. (jpnij)) THEN819 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 821 820 endloop = nlci 822 821 ELSE … … 824 823 ENDIF 825 824 DO ji = 1, endloop 826 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 2825 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 827 826 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-1) 828 827 END DO 829 828 830 IF ( narea .ne. (jpnij)) THEN829 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 831 830 endloop = nlci 832 831 ELSE … … 842 841 843 842 DO ji = startloop, endloop 844 iju = jpiglo - ji - nimpp - n imppt(isendto(1)) + 2843 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 845 844 pt2dl(ji,ijpjm1) = psgn * pt2dr(iju,ijpjm1) 846 845 END DO 847 846 848 847 CASE ( 'I' ) ! ice U-V point (I-point) 849 IF (n area .ne. (jpnij - jpni + 1)) THEN848 IF (nimpp .ne. 1) THEN 850 849 startloop = 1 851 850 ELSE 852 851 startloop = 2 853 852 ENDIF 854 IF ( narea .ne. jpnij) THEN853 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 855 854 endloop = nlci 856 855 ELSE … … 858 857 ENDIF 859 858 DO ji = startloop , endloop 860 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 4859 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 861 860 pt2dl(ji,ijpj)= 0.5 * (pt2dr(ji,ijpjm1) + psgn * pt2dr(ijt,ijpjm1)) 862 861 END DO 863 862 864 863 CASE ( 'J' ) ! first ice U-V point 865 IF (n area .ne. (jpnij - jpni + 1)) THEN864 IF (nimpp .ne. 1) THEN 866 865 startloop = 1 867 866 ELSE 868 867 startloop = 2 869 868 ENDIF 870 IF ( narea .ne. jpnij) THEN869 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 871 870 endloop = nlci 872 871 ELSE … … 874 873 ENDIF 875 874 DO ji = startloop , endloop 876 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 4875 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 877 876 pt2dl(ji,ijpj) = pt2dr(ji,ijpjm1) 878 877 END DO 879 878 880 879 CASE ( 'K' ) ! second ice U-V point 881 IF (n area .ne. (jpnij - jpni + 1)) THEN880 IF (nimpp .ne. 1) THEN 882 881 startloop = 1 883 882 ELSE 884 883 startloop = 2 885 884 ENDIF 886 IF ( narea .ne. jpnij) THEN885 IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 887 886 endloop = nlci 888 887 ELSE … … 890 889 ENDIF 891 890 DO ji = startloop, endloop 892 ijt = jpiglo - ji - nimpp - n imppt(isendto(1)) + 4891 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 893 892 pt2dl(ji,ijpj) = pt2dr(ijt,ijpjm1) 894 893 END DO
Note: See TracChangeset
for help on using the changeset viewer.