Changeset 2641 for LMDZ5/branches/testing/libf/dynphy_lonlat/calfis_loc.F
- Timestamp:
- Sep 29, 2016, 11:26:46 PM (8 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2596-2640
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/dynphy_lonlat/calfis_loc.F
r2435 r2641 50 50 USE callphysiq_mod, ONLY: call_physiq 51 51 #endif 52 USE comvert_mod, ONLY: preff, presnivs 53 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, kappa, pi 52 54 53 55 #ifdef CPP_PARA … … 107 109 c ------------------ 108 110 109 #include "dimensions.h" 110 #include "paramet.h" 111 #include "temps.h" 111 include "dimensions.h" 112 include "paramet.h" 112 113 113 114 INTEGER ngridmx 114 115 PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm ) 115 116 116 #include "comconst.h" 117 #include "comvert.h" 118 #include "comgeom2.h" 119 #include "iniprint.h" 117 include "comgeom2.h" 118 include "iniprint.h" 120 119 #ifdef CPP_MPI 121 120 include 'mpif.h' … … 163 162 REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:) 164 163 REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:) 164 REAL,ALLOCATABLE,SAVE :: zpk(:,:) 165 165 c 166 166 REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:) … … 175 175 REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:) 176 176 REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:) 177 REAL,ALLOCATABLE,SAVE :: zpk_omp(:,:) 177 178 REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:) 178 179 REAL,ALLOCATABLE,SAVE :: zphis_omp(:) … … 212 213 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 213 214 214 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zp hi_omp,zphis_omp,215 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zpk_omp,zphi_omp,zphis_omp, 215 216 c$OMP+ presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp, 216 217 c$OMP+ zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp, … … 276 277 ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm)) 277 278 ALLOCATE(flxwfi(klon,llm)) 279 ALLOCATE(zpk(klon,llm)) 278 280 c$OMP END MASTER 279 c$OMP BARRIER 281 c$OMP BARRIER 280 282 ELSE 281 283 debut = .FALSE. … … 329 331 ENDDO 330 332 c$OMP END DO NOWAIT 333 334 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 335 DO l=1,llm 336 do ig0=1,klon 337 i=index_i(ig0) 338 j=index_j(ig0) 339 zpk(ig0,l)=ppk(i,j,l) 340 enddo 341 ENDDO 342 c$OMP END DO NOWAIT 343 331 344 c 332 345 c … … 365 378 enddo 366 379 ENDDO 367 c$OMP END DO NOWAIT 380 c$OMP END DO NOWAIT 368 381 ENDDO 369 382 … … 382 395 enddo 383 396 ENDDO 384 c$OMP END DO NOWAIT 397 c$OMP END DO NOWAIT 385 398 386 399 c CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,pphi,zphi) … … 403 416 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 404 417 DO l=1,llm 405 406 407 418 DO ig=1,klon 419 zphi(ig,l)=zphi(ig,l)-zphis(ig) 420 ENDDO 408 421 ENDDO 409 422 c$OMP END DO NOWAIT … … 532 545 DO i=2,iim 533 546 z1(i) =(rlonu(i)-rlonu(i-1))*pvcov(i,jjm,l)/cv(i,jjm) 534 547 ENDDO 535 548 536 549 DO i=1,iim 537 550 zcos(i) = COS(rlonv(i))*z1(i) 538 551 zsin(i) = SIN(rlonv(i))*z1(i) 539 552 ENDDO 540 553 541 554 zufi(klon,l) = SSUM(iim,zcos,1)/pi … … 572 585 allocate(zplev_omp(klon,llm+1)) 573 586 allocate(zplay_omp(klon,llm)) 587 allocate(zpk_omp(klon,llm)) 574 588 allocate(zphi_omp(klon,llm)) 575 589 allocate(zphis_omp(klon)) … … 590 604 allocate(zdpsrf_omp(klon)) 591 605 allocate(flxwfi_omp(klon,llm)) 592 606 first_omp=.false. 593 607 endif 594 608 595 609 596 610 klon=klon_omp 597 611 offset=klon_omp_begin-1 … … 600 614 do i=1,klon 601 615 zplev_omp(i,l)=zplev(offset+i,l) 602 603 enddo 604 616 enddo 617 enddo 618 605 619 do l=1,llm 606 620 do i=1,klon 607 zplay_omp(i,l)=zplay(offset+i,l) 621 zplay_omp(i,l)=zplay(offset+i,l) 622 enddo 623 enddo 624 625 do l=1,llm 626 do i=1,klon 627 zpk_omp(i,l)=zpk(offset+i,l) 608 628 enddo 609 629 enddo … … 611 631 do l=1,llm 612 632 do i=1,klon 613 614 615 enddo 616 633 zphi_omp(i,l)=zphi(offset+i,l) 634 enddo 635 enddo 636 617 637 do i=1,klon 618 638 zphis_omp(i)=zphis(offset+i) 619 639 enddo 620 640 621 641 622 642 do l=1,llm 623 643 presnivs_omp(l)=presnivs(l) 624 644 enddo 625 626 do l=1,llm 627 do i=1,klon 628 629 630 enddo 631 632 do l=1,llm 633 do i=1,klon 634 635 636 enddo 637 638 do l=1,llm 639 do i=1,klon 640 641 642 enddo 643 644 do l=1,llm 645 do i=1,klon 646 647 648 enddo 649 645 646 do l=1,llm 647 do i=1,klon 648 zufi_omp(i,l)=zufi(offset+i,l) 649 enddo 650 enddo 651 652 do l=1,llm 653 do i=1,klon 654 zvfi_omp(i,l)=zvfi(offset+i,l) 655 enddo 656 enddo 657 658 do l=1,llm 659 do i=1,klon 660 zrfi_omp(i,l)=zrfi(offset+i,l) 661 enddo 662 enddo 663 664 do l=1,llm 665 do i=1,klon 666 ztfi_omp(i,l)=ztfi(offset+i,l) 667 enddo 668 enddo 669 650 670 do iq=1,nqtot 651 671 do l=1,llm 652 672 do i=1,klon 653 673 zqfi_omp(i,l,iq)=zqfi(offset+i,l,iq) 654 655 656 enddo 657 658 do l=1,llm 659 do i=1,klon 660 661 662 enddo 663 664 do l=1,llm 665 do i=1,klon 666 667 668 enddo 669 674 enddo 675 enddo 676 enddo 677 678 do l=1,llm 679 do i=1,klon 680 zdufi_omp(i,l)=zdufi(offset+i,l) 681 enddo 682 enddo 683 684 do l=1,llm 685 do i=1,klon 686 zdvfi_omp(i,l)=zdvfi(offset+i,l) 687 enddo 688 enddo 689 670 690 do l=1,llm 671 691 do i=1,klon 672 692 zdtfi_omp(i,l)=zdtfi(offset+i,l) 673 674 enddo 675 693 enddo 694 enddo 695 676 696 do iq=1,nqtot 677 697 do l=1,llm 678 698 do i=1,klon 679 680 699 zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq) 700 enddo 681 701 enddo 682 702 enddo 683 703 684 704 do i=1,klon 685 705 zdpsrf_omp(i)=zdpsrf(offset+i) 686 706 enddo 687 707 … … 689 709 do i=1,klon 690 710 flxwfi_omp(i,l)=flxwfi(offset+i,l) 691 711 enddo 692 712 enddo 693 713 … … 715 735 & jD_cur,jH_cur_split,zdt_split, 716 736 & zplev_omp,zplay_omp, 717 & zp hi_omp,zphis_omp,737 & zpk_omp,zphi_omp,zphis_omp, 718 738 & presnivs_omp, 719 739 & zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, … … 749 769 do i=1,klon 750 770 zplev(offset+i,l)=zplev_omp(i,l) 751 752 enddo 753 771 enddo 772 enddo 773 754 774 do l=1,llm 755 775 do i=1,klon 756 757 758 enddo 759 760 do l=1,llm 761 do i=1,klon 762 763 764 enddo 765 776 zplay(offset+i,l)=zplay_omp(i,l) 777 enddo 778 enddo 779 780 do l=1,llm 781 do i=1,klon 782 zphi(offset+i,l)=zphi_omp(i,l) 783 enddo 784 enddo 785 766 786 767 787 do i=1,klon 768 788 zphis(offset+i)=zphis_omp(i) 769 789 enddo 770 790 771 791 772 792 do l=1,llm 773 793 presnivs(l)=presnivs_omp(l) 774 794 enddo 775 776 do l=1,llm 777 do i=1,klon 778 779 780 enddo 781 782 do l=1,llm 783 do i=1,klon 784 785 786 enddo 787 788 do l=1,llm 789 do i=1,klon 790 791 792 enddo 793 795 796 do l=1,llm 797 do i=1,klon 798 zufi(offset+i,l)=zufi_omp(i,l) 799 enddo 800 enddo 801 802 do l=1,llm 803 do i=1,klon 804 zvfi(offset+i,l)=zvfi_omp(i,l) 805 enddo 806 enddo 807 808 do l=1,llm 809 do i=1,klon 810 ztfi(offset+i,l)=ztfi_omp(i,l) 811 enddo 812 enddo 813 794 814 do iq=1,nqtot 795 815 do l=1,llm 796 816 do i=1,klon 797 817 zqfi(offset+i,l,iq)=zqfi_omp(i,l,iq) 798 799 800 enddo 801 802 do l=1,llm 803 do i=1,klon 804 805 806 enddo 807 808 do l=1,llm 809 do i=1,klon 810 811 812 enddo 813 818 enddo 819 enddo 820 enddo 821 822 do l=1,llm 823 do i=1,klon 824 zdufi(offset+i,l)=zdufi_omp(i,l) 825 enddo 826 enddo 827 828 do l=1,llm 829 do i=1,klon 830 zdvfi(offset+i,l)=zdvfi_omp(i,l) 831 enddo 832 enddo 833 814 834 do l=1,llm 815 835 do i=1,klon 816 836 zdtfi(offset+i,l)=zdtfi_omp(i,l) 817 818 enddo 819 837 enddo 838 enddo 839 820 840 do iq=1,nqtot 821 841 do l=1,llm 822 842 do i=1,klon 823 824 843 zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq) 844 enddo 825 845 enddo 826 846 enddo 827 847 828 848 do i=1,klon 829 849 zdpsrf(offset+i)=zdpsrf_omp(i) 830 850 enddo 831 851 … … 929 949 930 950 if (.not. is_south_pole_dyn) then 931 951 pdpsfi(:,jj_end:jj_end+1)=0 932 952 endif 933 953 c$OMP END MASTER … … 1045 1065 pdqfi(:,jj_begin:jj_end,l,:)=0. 1046 1066 ENDDO 1047 c$OMP END DO NOWAIT 1067 c$OMP END DO NOWAIT 1048 1068 1049 1069 C … … 1056 1076 !CDIR ON_ADB(index_j) 1057 1077 !cdir NODEP 1058 1078 DO ig0=kstart,kend 1059 1079 i=index_i(ig0) 1060 1080 j=index_j(ig0) … … 1062 1082 if (i==1) pdqfi(iip1,j,l,iiq) = zdqfi(ig0,l,iq) 1063 1083 ENDDO 1064 1065 1066 1084 1085 IF (is_north_pole_dyn) then 1086 DO i=1,iip1 1067 1087 pdqfi(i,1,l,iiq) = zdqfi(1,l,iq) 1068 1069 1070 1071 1072 1088 ENDDO 1089 ENDIF 1090 1091 IF (is_south_pole_dyn) then 1092 DO i=1,iip1 1073 1093 pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq) 1074 1075 1076 1094 ENDDO 1095 ENDIF 1096 1077 1097 ENDDO 1078 c$OMP END DO NOWAIT 1098 c$OMP END DO NOWAIT 1079 1099 ENDDO 1080 1100 … … 1136 1156 pdvfi(i,j,l)=0.5*(zdvfi2(ig0,l)+zdvfi2(ig0+iim,l))*cv(i,j) 1137 1157 if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l)+ 1138 $ 1139 $ 1158 $ zdvfi2(ig0+iim,l)) 1159 $ *cv(i,j) 1140 1160 enddo 1141 1161
Note: See TracChangeset
for help on using the changeset viewer.