Changeset 2641 for LMDZ5/branches/testing/libf/dynphy_lonlat
- Timestamp:
- Sep 29, 2016, 11:26:46 PM (9 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 13 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.F
r2435 r2641 34 34 USE callphysiq_mod, ONLY: call_physiq 35 35 #endif 36 36 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, kappa, pi 37 USE comvert_mod, ONLY: preff, presnivs 38 37 39 IMPLICIT NONE 38 40 c======================================================================= … … 89 91 c ------------------ 90 92 91 #include "dimensions.h" 92 #include "paramet.h" 93 #include "temps.h" 93 include "dimensions.h" 94 include "paramet.h" 94 95 95 96 INTEGER ngridmx 96 97 PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm ) 97 98 98 #include "comconst.h" 99 #include "comvert.h" 100 #include "comgeom2.h" 101 #include "iniprint.h" 99 include "comgeom2.h" 100 include "iniprint.h" 102 101 103 102 c Arguments : … … 142 141 c 143 142 REAL zrot(iip1,jjm,llm) ! AdlC May 2014 144 REAL zufi(ngridmx,llm), zvfi(ngridmx,llm), zrfi(ngridmx,llm) 143 REAL zufi(ngridmx,llm), zvfi(ngridmx,llm) 144 REAL zrfi(ngridmx,llm) ! relative wind vorticity 145 145 REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqtot) 146 REAL zpk(ngridmx,llm) 146 147 c 147 148 REAL pcvgu(ngridmx,llm), pcvgv(ngridmx,llm) … … 212 213 213 214 214 c 42. pression intercouches :215 c 42. pression intercouches et fonction d'Exner: 215 216 c 216 217 c ----------------------------------------------------------------- … … 223 224 unskap = 1./ kappa 224 225 c 225 DO l = 1, llmp1 226 DO l = 1, llm 227 zpk( 1,l ) = ppk(1,1,l) 226 228 zplev( 1,l ) = pp(1,1,l) 227 229 ig0 = 2 228 230 DO j = 2, jjm 229 231 DO i =1, iim 232 zpk( ig0,l ) = ppk(i,j,l) 230 233 zplev( ig0,l ) = pp(i,j,l) 231 234 ig0 = ig0 +1 232 235 ENDDO 233 236 ENDDO 237 zpk( ngridmx,l ) = ppk(1,jjp1,l) 234 238 zplev( ngridmx,l ) = pp(1,jjp1,l) 235 239 ENDDO 240 zplev( 1,llmp1 ) = pp(1,1,llmp1) 241 ig0 = 2 242 DO j = 2, jjm 243 DO i =1, iim 244 zplev( ig0,llmp1 ) = pp(i,j,llmp1) 245 ig0 = ig0 +1 246 ENDDO 247 ENDDO 248 zplev( ngridmx,llmp1 ) = pp(1,jjp1,llmp1) 236 249 c 237 250 c … … 472 485 & jD_cur,jH_cur_split,zdt_split, 473 486 & zplev,zplay, 474 & zp hi,zphis,487 & zpk,zphi,zphis, 475 488 & presnivs, 476 489 & zufi,zvfi,zrfi,ztfi,zqfi, -
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 -
LMDZ5/branches/testing/libf/dynphy_lonlat/calfis_p.F
r2435 r2641 47 47 USE callphysiq_mod, ONLY: call_physiq 48 48 #endif 49 USE comvert_mod, ONLY: preff, presnivs 50 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, kappa, pi 49 51 50 52 IMPLICIT NONE … … 105 107 #include "dimensions.h" 106 108 #include "paramet.h" 107 #include "temps.h"108 109 109 110 INTEGER ngridmx 110 111 PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm ) 111 112 112 #include "comconst.h"113 #include "comvert.h"114 113 #include "comgeom2.h" 115 114 #include "iniprint.h" … … 159 158 REAL,ALLOCATABLE,SAVE :: zphi(:,:),zphis(:) 160 159 c 161 REAL zrot(iip1,jjb_v:jje_v,llm) ! AdlC May 2014 160 ! REAL zrot(iip1,jjb_v:jje_v,llm) ! AdlC May 2014 161 REAL :: zrot(iip1,jjm,llm) 162 162 REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:) 163 163 REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:) 164 REAL,ALLOCATABLE,SAVE :: zpk(:,:) 164 165 c 165 166 REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:) … … 174 175 REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:) 175 176 REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:) 177 REAL,ALLOCATABLE,SAVE :: zpk_omp(:,:) 176 178 REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:) 177 179 REAL,ALLOCATABLE,SAVE :: zphis_omp(:) … … 211 213 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 212 214 213 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, 214 216 c$OMP+ presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp, 215 217 c$OMP+ zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp, … … 275 277 ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm)) 276 278 ALLOCATE(flxwfi(klon,llm)) 279 ALLOCATE(zpk(klon,llm)) 277 280 c$OMP END MASTER 278 c$OMP BARRIER 281 c$OMP BARRIER 279 282 ELSE 280 283 debut = .FALSE. … … 328 331 ENDDO 329 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 330 344 c 331 345 c … … 364 378 enddo 365 379 ENDDO 366 c$OMP END DO NOWAIT 380 c$OMP END DO NOWAIT 367 381 ENDDO 368 382 … … 379 393 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 380 394 DO l=1,llm 381 382 383 395 DO ig=1,klon 396 zphi(ig,l)=zphi(ig,l)-zphis(ig) 397 ENDDO 384 398 ENDDO 385 399 c$OMP END DO NOWAIT … … 509 523 DO i=2,iim 510 524 z1(i) =(rlonu(i)-rlonu(i-1))*pvcov(i,jjm,l)/cv(i,jjm) 511 525 ENDDO 512 526 513 527 DO i=1,iim 514 528 zcos(i) = COS(rlonv(i))*z1(i) 515 529 zsin(i) = SIN(rlonv(i))*z1(i) 516 530 ENDDO 517 531 518 532 zufi(klon,l) = SSUM(iim,zcos,1)/pi … … 537 551 allocate(zplev_omp(klon,llm+1)) 538 552 allocate(zplay_omp(klon,llm)) 553 allocate(zpk_omp(klon,llm)) 539 554 allocate(zphi_omp(klon,llm)) 540 555 allocate(zphis_omp(klon)) … … 555 570 allocate(zdpsrf_omp(klon)) 556 571 allocate(flxwfi_omp(klon,llm)) 557 572 first_omp=.false. 558 573 endif 559 574 560 575 561 576 klon=klon_omp 562 577 offset=klon_omp_begin-1 … … 565 580 do i=1,klon 566 581 zplev_omp(i,l)=zplev(offset+i,l) 567 568 enddo 569 582 enddo 583 enddo 584 570 585 do l=1,llm 571 586 do i=1,klon 572 zplay_omp(i,l)=zplay(offset+i,l) 587 zplay_omp(i,l)=zplay(offset+i,l) 588 enddo 589 enddo 590 591 do l=1,llm 592 do i=1,klon 593 zpk_omp(i,l)=zpk(offset+i,l) 573 594 enddo 574 595 enddo … … 576 597 do l=1,llm 577 598 do i=1,klon 578 579 580 enddo 581 599 zphi_omp(i,l)=zphi(offset+i,l) 600 enddo 601 enddo 602 582 603 do i=1,klon 583 604 zphis_omp(i)=zphis(offset+i) 584 605 enddo 585 606 586 607 587 608 do l=1,llm 588 609 presnivs_omp(l)=presnivs(l) 589 610 enddo 590 591 do l=1,llm 592 do i=1,klon 593 594 595 enddo 596 597 do l=1,llm 598 do i=1,klon 599 600 601 enddo 602 603 do l=1,llm 604 do i=1,klon 605 606 607 enddo 608 609 610 do l=1,llm 611 do i=1,klon 612 613 614 enddo 615 611 612 do l=1,llm 613 do i=1,klon 614 zufi_omp(i,l)=zufi(offset+i,l) 615 enddo 616 enddo 617 618 do l=1,llm 619 do i=1,klon 620 zvfi_omp(i,l)=zvfi(offset+i,l) 621 enddo 622 enddo 623 624 do l=1,llm 625 do i=1,klon 626 zrfi_omp(i,l)=zrfi(offset+i,l) 627 enddo 628 enddo 629 630 631 do l=1,llm 632 do i=1,klon 633 ztfi_omp(i,l)=ztfi(offset+i,l) 634 enddo 635 enddo 636 616 637 do iq=1,nqtot 617 638 do l=1,llm 618 639 do i=1,klon 619 640 zqfi_omp(i,l,iq)=zqfi(offset+i,l,iq) 620 621 622 enddo 623 624 do l=1,llm 625 do i=1,klon 626 627 628 enddo 629 630 do l=1,llm 631 do i=1,klon 632 633 634 enddo 635 641 enddo 642 enddo 643 enddo 644 645 do l=1,llm 646 do i=1,klon 647 zdufi_omp(i,l)=zdufi(offset+i,l) 648 enddo 649 enddo 650 651 do l=1,llm 652 do i=1,klon 653 zdvfi_omp(i,l)=zdvfi(offset+i,l) 654 enddo 655 enddo 656 636 657 do l=1,llm 637 658 do i=1,klon 638 659 zdtfi_omp(i,l)=zdtfi(offset+i,l) 639 640 enddo 641 660 enddo 661 enddo 662 642 663 do iq=1,nqtot 643 664 do l=1,llm 644 665 do i=1,klon 645 646 666 zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq) 667 enddo 647 668 enddo 648 669 enddo 649 670 650 671 do i=1,klon 651 672 zdpsrf_omp(i)=zdpsrf(offset+i) 652 673 enddo 653 674 … … 655 676 do i=1,klon 656 677 flxwfi_omp(i,l)=flxwfi(offset+i,l) 657 678 enddo 658 679 enddo 659 680 … … 680 701 & jD_cur,jH_cur_split,zdt_split, 681 702 & zplev_omp,zplay_omp, 682 & zp hi_omp,zphis_omp,703 & zpk_omp,zphi_omp,zphis_omp, 683 704 & presnivs_omp, 684 705 & zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, … … 712 733 do i=1,klon 713 734 zplev(offset+i,l)=zplev_omp(i,l) 714 715 enddo 716 735 enddo 736 enddo 737 717 738 do l=1,llm 718 739 do i=1,klon 719 720 721 enddo 722 723 do l=1,llm 724 do i=1,klon 725 726 727 enddo 728 740 zplay(offset+i,l)=zplay_omp(i,l) 741 enddo 742 enddo 743 744 do l=1,llm 745 do i=1,klon 746 zphi(offset+i,l)=zphi_omp(i,l) 747 enddo 748 enddo 749 729 750 730 751 do i=1,klon 731 752 zphis(offset+i)=zphis_omp(i) 732 753 enddo 733 754 734 755 735 756 do l=1,llm 736 757 presnivs(l)=presnivs_omp(l) 737 758 enddo 738 739 do l=1,llm 740 do i=1,klon 741 742 743 enddo 744 745 do l=1,llm 746 do i=1,klon 747 748 749 enddo 750 751 do l=1,llm 752 do i=1,klon 753 754 755 enddo 756 759 760 do l=1,llm 761 do i=1,klon 762 zufi(offset+i,l)=zufi_omp(i,l) 763 enddo 764 enddo 765 766 do l=1,llm 767 do i=1,klon 768 zvfi(offset+i,l)=zvfi_omp(i,l) 769 enddo 770 enddo 771 772 do l=1,llm 773 do i=1,klon 774 ztfi(offset+i,l)=ztfi_omp(i,l) 775 enddo 776 enddo 777 757 778 do iq=1,nqtot 758 779 do l=1,llm 759 780 do i=1,klon 760 781 zqfi(offset+i,l,iq)=zqfi_omp(i,l,iq) 761 762 763 enddo 764 765 do l=1,llm 766 do i=1,klon 767 768 769 enddo 770 771 do l=1,llm 772 do i=1,klon 773 774 775 enddo 776 782 enddo 783 enddo 784 enddo 785 786 do l=1,llm 787 do i=1,klon 788 zdufi(offset+i,l)=zdufi_omp(i,l) 789 enddo 790 enddo 791 792 do l=1,llm 793 do i=1,klon 794 zdvfi(offset+i,l)=zdvfi_omp(i,l) 795 enddo 796 enddo 797 777 798 do l=1,llm 778 799 do i=1,klon 779 800 zdtfi(offset+i,l)=zdtfi_omp(i,l) 780 781 enddo 782 801 enddo 802 enddo 803 783 804 do iq=1,nqtot 784 805 do l=1,llm 785 806 do i=1,klon 786 787 807 zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq) 808 enddo 788 809 enddo 789 810 enddo 790 811 791 812 do i=1,klon 792 813 zdpsrf(offset+i)=zdpsrf_omp(i) 793 814 enddo 794 815 … … 891 912 pdpsfi(:,jj_begin)=0 892 913 if (.not. is_south_pole_dyn) then 893 914 pdpsfi(:,jj_end)=0 894 915 endif 895 916 c$OMP END MASTER … … 975 996 pdqfi(:,:,l,:)=0. 976 997 ENDDO 977 c$OMP END DO NOWAIT 998 c$OMP END DO NOWAIT 978 999 979 1000 C … … 986 1007 !CDIR ON_ADB(index_j) 987 1008 !cdir NODEP 988 1009 DO ig0=kstart,kend 989 1010 i=index_i(ig0) 990 1011 j=index_j(ig0) … … 992 1013 if (i==1) pdqfi(iip1,j,l,iiq) = zdqfi(ig0,l,iq) 993 1014 ENDDO 994 995 996 1015 1016 IF (is_north_pole_dyn) then 1017 DO i=1,iip1 997 1018 pdqfi(i,1,l,iiq) = zdqfi(1,l,iq) 998 999 1000 1001 1002 1019 ENDDO 1020 ENDIF 1021 1022 IF (is_south_pole_dyn) then 1023 DO i=1,iip1 1003 1024 pdqfi(i,jjp1,l,iiq) = zdqfi(klon,l,iq) 1004 1005 1006 1025 ENDDO 1026 ENDIF 1027 1007 1028 ENDDO 1008 c$OMP END DO NOWAIT 1029 c$OMP END DO NOWAIT 1009 1030 ENDDO 1010 1031 … … 1066 1087 pdvfi(i,j,l)=0.5*(zdvfi2(ig0,l)+zdvfi2(ig0+iim,l))*cv(i,j) 1067 1088 if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l)+ 1068 $ 1069 $ 1089 $ zdvfi2(ig0+iim,l)) 1090 $ *cv(i,j) 1070 1091 enddo 1071 1092 -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/callphysiq_mod.F90
r2435 r2641 12 12 jD_cur,jH_cur_split,zdt_split, & 13 13 zplev_omp,zplay_omp, & 14 zp hi_omp,zphis_omp,&14 zpk_omp,zphi_omp,zphis_omp, & 15 15 presnivs_omp, & 16 16 zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, & … … 35 35 REAL,INTENT(IN) :: zplev_omp(klon,llm+1) ! interlayer pressure (Pa) 36 36 REAL,INTENT(IN) :: zplay_omp(klon,llm) ! mid-layer pressure (Pa) 37 REAL,INTENT(IN) :: zpk_omp(klon,llm) ! Exner function 37 38 REAL,INTENT(IN) :: zphi_omp(klon,llm) ! geopotential at midlayer 38 39 REAL,INTENT(IN) :: zphis_omp(klon) ! surface geopotential -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/ce0l.F90
r2471 r2641 34 34 USE mod_interface_dyn_phys, ONLY: init_interface_dyn_phys 35 35 #endif 36 USE comconst_mod, ONLY: cpp, daysec, dtphys, dtvr, g, kappa, omeg, r, rad, & 37 pi, jmp1 38 USE logic_mod, ONLY: iflag_phys, ok_etat0, ok_limit 39 USE comvert_mod, ONLY: pa, preff, pressure_exner 40 USE temps_mod, ONLY: calend, day_ini, dt 36 41 37 42 IMPLICIT NONE … … 42 47 include "paramet.h" 43 48 include "comgeom2.h" 44 include "comconst.h"45 include "comvert.h"46 49 include "iniprint.h" 47 include "temps.h"48 include "logic.h"49 50 REAL :: masque(iip1,jjp1) !--- CONTINENTAL MASK 50 51 REAL :: phis (iip1,jjp1) !--- GROUND GEOPOTENTIAL -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/etat0dyn_netcdf.F90
r2435 r2641 36 36 USE ioipsl, ONLY: flininfo, flinopen, flinget, flinclo, histclo 37 37 USE assert_eq_m, ONLY: assert_eq 38 USE comconst_mod, ONLY: pi, cpp, kappa 39 USE comvert_mod, ONLY: ap, bp, preff, pressure_exner 40 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn, itau_phy 41 38 42 IMPLICIT NONE 39 43 … … 45 49 include "paramet.h" 46 50 include "comgeom2.h" 47 include "comvert.h"48 include "comconst.h"49 include "temps.h"50 51 include "comdissnew.h" 51 include "serre.h"52 52 REAL, SAVE :: deg2rad 53 53 INTEGER, SAVE :: iml_dyn, jml_dyn, llm_dyn, ttm_dyn, fid_dyn -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90
r2542 r2641 44 44 zmax0,fevap, rnebcon,falb_dir, wake_fip, agesno, detr_therm, pbl_tke, & 45 45 phys_state_var_init 46 USE comconst_mod, ONLY: pi, dtvr 46 47 47 48 PRIVATE … … 52 53 include "paramet.h" 53 54 include "comgeom2.h" 54 include "comconst.h"55 55 include "dimsoil.h" 56 include "temps.h"57 56 include "clesphys.h" 58 57 REAL, SAVE :: deg2rad -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90
r2594 r2641 12 12 prad,pg,pr,pcpp,iflag_phys) 13 13 USE dimphy, ONLY: init_dimphy 14 USE comvert_mod, ONLY: preff, ap, bp, presnivs, scaleheight, pseudoalt 14 15 USE inigeomphy_mod, ONLY: inigeomphy 15 USE mod_grid_phy_lmdz, ONLY: klon_glo ! number of atmospheric columns (on full grid)16 USE mod_grid_phy_lmdz, ONLY: nbp_lon,nbp_lat,nbp_lev,klon_glo ! number of atmospheric columns (on full grid) 16 17 USE mod_phys_lmdz_para, ONLY: klon_omp ! number of columns (on local omp grid) 17 18 USE vertical_layers_mod, ONLY : init_vertical_layers … … 28 29 USE CHEM_REP, ONLY : Init_chem_rep_phys 29 30 #endif 30 USE control_mod, ONLY: dayref,anneeref,day_step,nday,offline, iphysiq 31 USE control_mod, ONLY: dayref,anneeref,day_step,nday,offline, iphysiq, config_inca 31 32 USE inifis_mod, ONLY: inifis 32 33 USE time_phylmdz_mod, ONLY: init_time 34 USE temps_mod, ONLY: annee_ref, day_ini, day_ref, start_time, calend 33 35 USE infotrac_phy, ONLY: init_infotrac_phy 34 36 USE phystokenc_mod, ONLY: init_phystokenc … … 50 52 51 53 include "dimensions.h" 52 include "comvert.h"53 include "comconst.h"54 54 include "iniprint.h" 55 include "temps.h"56 55 include "tracstoke.h" 57 56 … … 99 98 ! --> now initialize things specific to the phylmd physics package 100 99 101 !$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/) 100 !!$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/) 101 !$OMP PARALLEL DEFAULT(SHARED) & 102 ! Copy all threadprivate variables in temps_mod 103 !$OMP COPYIN(annee_ref, day_ini, day_ref, start_time) 102 104 103 105 ! copy over preff , ap(), bp(), etc … … 139 141 call init_const_lmdz( & 140 142 anneeref,dayref, iphysiq,day_step,nday, & 141 nbsrf, is_oce,is_sic, is_ter,is_lic, calend) 143 nbsrf, is_oce,is_sic, is_ter,is_lic, calend, & 144 config_inca) 142 145 call init_inca_para( & 143 146 nbp_lon,nbp_lat,nbp_lev,klon_glo,mpi_size, & … … 145 148 #endif 146 149 END IF 147 !$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/)148 150 151 !!$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/) 152 !$OMP PARALLEL DEFAULT(SHARED) 149 153 ! Additional initializations for aquaplanets 150 154 IF (iflag_phys>=100) THEN -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/init_ssrf_m.F90
r2435 r2641 9 9 USE grid_atob_m, ONLY: grille_m 10 10 USE ioipsl, ONLY: flininfo, flinopen, flinget, flinclo 11 USE comconst_mod, ONLY: im, pi 11 12 12 13 CHARACTER(LEN=256), PARAMETER :: icefname="landiceref.nc", icevar="landice" … … 17 18 include "paramet.h" 18 19 include "comgeom2.h" 19 include "comconst.h"20 20 21 21 CONTAINS -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/limit_netcdf.F90
r2594 r2641 67 67 NF90_DEF_DIM, NF90_DEF_VAR, NF90_PUT_VAR, NF90_PUT_ATT, & 68 68 NF90_NOERR, NF90_NOWRITE, NF90_DOUBLE, NF90_GLOBAL, & 69 69 NF90_CLOBBER, NF90_ENDDEF, NF90_UNLIMITED, NF90_FLOAT 70 70 USE inter_barxy_m, ONLY: inter_barxy 71 71 USE netcdf95, ONLY: nf95_def_var, nf95_put_att, nf95_put_var 72 USE comconst_mod, ONLY: pi 72 73 IMPLICIT NONE 73 74 !------------------------------------------------------------------------------- … … 81 82 !------------------------------------------------------------------------------- 82 83 ! Local variables: 83 include "logic.h"84 84 include "comgeom2.h" 85 include "comconst.h"86 85 87 86 !--- INPUT NETCDF FILES NAMES -------------------------------------------------- -
LMDZ5/branches/testing/libf/dynphy_lonlat/phylmd/test_disvert_m.F90
r2435 r2641 15 15 use exner_hyb_m, only: exner_hyb 16 16 use vertical_layers_mod, only: ap,bp,preff 17 use comconst_mod, only: kappa, cpp 17 18 18 19 ! For llm: 19 20 include "dimensions.h" 20 21 ! For kappa, cpp:22 include "comconst.h"23 21 24 22 ! Local: -
LMDZ5/branches/testing/libf/dynphy_lonlat/phymar/iniphysiq_mod.F90
r2594 r2641 12 12 prad,pg,pr,pcpp,iflag_phys) 13 13 USE dimphy, ONLY: init_dimphy 14 USE comvert_mod, ONLY: preff, ap, bp, presnivs, scaleheight, pseudoalt 14 15 USE inigeomphy_mod, ONLY: inigeomphy 16 USE vertical_layers_mod, ONLY : init_vertical_layers 15 17 USE infotrac, ONLY: nqtot 16 18 USE comcstphy, ONLY: rradius, & ! planet radius (m) … … 69 71 !$OMP PARALLEL 70 72 73 ! copy over preff , ap(), bp(), etc 74 CALL init_vertical_layers(nlayer,preff,scaleheight, & 75 ap,bp,presnivs,pseudoalt) 76 71 77 ! Initialize tracer names, numbers, etc. for physics 72 78 CALL init_infotrac_phy(nqtot)
Note: See TracChangeset
for help on using the changeset viewer.