Changeset 709 for LMDZ4/branches/V3_test/libf/dyn3dpar/calfis_p.F
- Timestamp:
- Sep 20, 2006, 12:12:39 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/V3_test/libf/dyn3dpar/calfis_p.F
r630 r709 23 23 $ pdq, 24 24 $ pw, 25 #ifdef INCA _CH425 #ifdef INCA 26 26 $ flxw, 27 27 #endif … … 40 40 Use Write_field_p 41 41 USE Times 42 USE IOPHY 42 43 IMPLICIT NONE 43 44 c======================================================================= … … 148 149 149 150 INTEGER i,j,l,ig0,ig,iq,iiq 150 REAL zpsrf(klon) 151 REAL zplev(klon,llm+1),zplay(klon,llm) 152 REAL zphi(klon,llm),zphis(klon) 153 c 154 REAL zufi(klon,llm), zvfi(klon,llm) 155 REAL ztfi(klon,llm),zqfi(klon,llm,nqmx) 156 c 157 REAL pcvgu(klon,llm), pcvgv(klon,llm) 158 REAL pcvgt(klon,llm), pcvgq(klon,llm,2) 159 c 160 REAL pvervel(klon,llm) 161 c 162 REAL zdufi(klon,llm),zdvfi(klon,llm) 163 REAL zdtfi(klon,llm),zdqfi(klon,llm,nqmx) 164 REAL zdpsrf(klon) 165 c 151 REAL,ALLOCATABLE,SAVE :: zpsrf(:) 152 REAL,ALLOCATABLE,SAVE :: zplev(:,:),zplay(:,:) 153 REAL,ALLOCATABLE,SAVE :: zphi(:,:),zphis(:) 154 c 155 REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:) 156 REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:) 157 c 158 REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:) 159 REAL,ALLOCATABLE,SAVE :: pcvgt(:,:), pcvgq(:,:,:) 160 c 161 REAL,ALLOCATABLE,SAVE :: pvervel(:,:) 162 c 163 REAL,ALLOCATABLE,SAVE :: zdufi(:,:),zdvfi(:,:) 164 REAL,ALLOCATABLE,SAVE :: zdtfi(:,:),zdqfi(:,:,:) 165 REAL,ALLOCATABLE,SAVE :: zdpsrf(:) 166 c 167 REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:) 168 REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:) 169 REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:) 170 REAL,ALLOCATABLE,SAVE :: zphis_omp(:) 171 REAL,ALLOCATABLE,SAVE :: presnivs_omp(:) 172 REAL,ALLOCATABLE,SAVE :: zufi_omp(:,:) 173 REAL,ALLOCATABLE,SAVE :: zvfi_omp(:,:) 174 REAL,ALLOCATABLE,SAVE :: ztfi_omp(:,:) 175 REAL,ALLOCATABLE,SAVE :: zqfi_omp(:,:,:) 176 REAL,ALLOCATABLE,SAVE :: pvervel_omp(:,:) 177 REAL,ALLOCATABLE,SAVE :: zdufi_omp(:,:) 178 REAL,ALLOCATABLE,SAVE :: zdvfi_omp(:,:) 179 REAL,ALLOCATABLE,SAVE :: zdtfi_omp(:,:) 180 REAL,ALLOCATABLE,SAVE :: zdqfi_omp(:,:,:) 181 REAL,ALLOCATABLE,SAVE :: zdpsrf_omp(:) 182 183 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp, 184 c$OMP+ presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp, 185 c$OMP+ zqfi_omp,pvervel_omp,zdufi_omp,zdvfi_omp, 186 c$OMP+ zdtfi_omp,zdqfi_omp,zdpsrf_omp) 187 188 LOGICAL,SAVE :: first_omp=.true. 189 c$OMP THREADPRIVATE(first_omp) 190 166 191 REAL zsin(iim),zcos(iim),z1(iim) 167 192 REAL zsinbis(iim),zcosbis(iim),z1bis(iim) 168 193 REAL unskap, pksurcp 169 170 #ifdef INCA_CH4 194 c 195 cIM diagnostique PVteta, Amip2 196 INTEGER ntetaSTD 197 PARAMETER(ntetaSTD=3) 198 REAL rtetaSTD(ntetaSTD) 199 DATA rtetaSTD/350., 380., 405./ 200 REAL PVteta(klon,ntetaSTD) 201 202 #ifdef INCA 171 203 REAL flxw(iip1,jjp1,llm) 172 204 REAL flxwfi(klon,llm) … … 179 211 DATA firstcal/.true./ 180 212 SAVE firstcal,debut 213 c$OMP THREADPRIVATE(firstcal,debut) 181 214 REAL rdayvrai 182 215 183 REAL, dimension(1:iim,1:llm):: du_send,du_recv,dv_send,dv_recv216 REAL,SAVE,dimension(1:iim,1:llm):: du_send,du_recv,dv_send,dv_recv 184 217 INTEGER :: ierr 185 218 INTEGER,dimension(MPI_STATUS_SIZE,4) :: Status 186 219 INTEGER, dimension(4) :: Req 187 REAL zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm) 188 integer :: k,kstart,kend 220 REAL,ALLOCATABLE,SAVE:: zdufi2(:,:),zdvfi2(:,:) 221 integer :: k,kstart,kend 222 INTEGER :: offset 189 223 c 190 224 c----------------------------------------------------------------------- … … 194 228 c 195 229 230 klon=klon_mpi 231 232 PVteta(:,:)=0. 233 196 234 IF (ngridmx.NE.2+(jjm-1)*iim) THEN 197 235 PRINT*,'STOP dans calfis' … … 209 247 IF ( firstcal ) THEN 210 248 debut = .TRUE. 249 c$OMP MASTER 250 ALLOCATE(zpsrf(klon)) 251 ALLOCATE(zplev(klon,llm+1),zplay(klon,llm)) 252 ALLOCATE(zphi(klon,llm),zphis(klon)) 253 ALLOCATE(zufi(klon,llm), zvfi(klon,llm)) 254 ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqmx)) 255 ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm)) 256 ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2)) 257 ALLOCATE(pvervel(klon,llm)) 258 ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm)) 259 ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqmx)) 260 ALLOCATE(zdpsrf(klon)) 261 ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm)) 262 c$OMP END MASTER 263 c$OMP BARRIER 211 264 ELSE 212 265 debut = .FALSE. … … 222 275 c ---------------------------------- 223 276 277 c$OMP MASTER 224 278 call start_timer(timer_physic) 225 279 c$OMP END MASTER 280 281 c$OMP MASTER 226 282 do ig0=1,klon 227 283 i=Liste_i(ig0) … … 229 285 zpsrf(ig0)=pps(i,j) 230 286 enddo 231 287 c$OMP END MASTER 232 288 233 289 … … 243 299 unskap = 1./ kappa 244 300 c 301 print *,omp_rank,'klon--->',klon 302 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 245 303 DO l = 1, llmp1 246 304 do ig0=1,klon … … 250 308 enddo 251 309 ENDDO 310 c$OMP END DO NOWAIT 252 311 c 253 312 c … … 255 314 c 43. temperature naturelle (en K) et pressions milieux couches . 256 315 c --------------------------------------------------------------- 257 316 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 258 317 DO l=1,llm 259 318 … … 268 327 269 328 ENDDO 329 c$OMP END DO NOWAIT 270 330 271 331 c 43.bis traceurs … … 275 335 DO iq=1,nq 276 336 iiq=niadv(iq) 337 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 277 338 DO l=1,llm 278 339 do ig0=1,klon … … 282 343 enddo 283 344 ENDDO 345 c$OMP END DO NOWAIT 284 346 ENDDO 285 347 … … 287 349 288 350 DO iq=1,2 351 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 289 352 DO l=1,llm 290 353 do ig0=1,klon … … 294 357 enddo 295 358 ENDDO 359 c$OMP END DO NOWAIT 296 360 ENDDO 297 361 … … 302 366 303 367 CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,pphi,zphi) 368 369 c$OMP MASTER 304 370 CALL gr_dyn_fi_p(1,iip1,jjp1,klon,pphis,zphis) 305 371 c$OMP END MASTER 372 c$OMP BARRIER 373 374 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 306 375 DO l=1,llm 307 376 DO ig=1,klon … … 309 378 ENDDO 310 379 ENDDO 311 380 c$OMP END DO NOWAIT 312 381 c .... Calcul de la vitesse verticale ( en Pa*m*s ou Kg/s ) .... 313 382 c 314 383 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 315 384 DO l=1,llm 316 385 do ig0=1,klon … … 322 391 if (pole_sud) pvervel(klon,l)=pw(1,jjp1,l)*g/apols 323 392 ENDDO 324 393 c$OMP END DO NOWAIT 325 394 326 395 c … … 334 403 if (pole_sud) kend=klon-1 335 404 405 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 336 406 DO l=1,llm 337 407 do ig0=kstart,kend … … 351 421 enddo 352 422 ENDDO 353 423 c$OMP END DO NOWAIT 354 424 c 46.champ v: 355 425 c ----------- 356 426 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 357 427 DO l=1,llm 358 428 DO ig0=kstart,kend … … 366 436 ENDDO 367 437 ENDDO 368 438 c$OMP END DO NOWAIT 369 439 370 440 c 47. champs de vents aux pole nord … … 374 444 375 445 if (pole_nord) then 376 446 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 377 447 DO l=1,llm 378 448 … … 397 467 398 468 ENDDO 399 469 c$OMP END DO NOWAIT 400 470 endif 401 471 … … 407 477 408 478 if (pole_sud) then 409 479 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 410 480 DO l=1,llm 411 481 … … 430 500 431 501 ENDDO 432 502 c$OMP END DO NOWAIT 433 503 endif 434 504 435 505 436 #ifdef INCA_CH4 506 IF (monocpu) THEN 507 c 508 cIM calcul PV a teta=350, 380, 405K 509 CALL PVtheta(ngridmx,llm,pucov,pvcov,pteta, 510 $ ztfi,zplay,zplev, 511 $ ntetaSTD,rtetaSTD,PVteta) 512 c 513 ENDIF 514 #ifdef INCA 437 515 CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,flxw,flxwfi) 438 516 #endif … … 443 521 c --------------------- 444 522 445 523 cc$OMP PARALLEL DEFAULT(NONE) 524 cc$OMP+ PRIVATE(i,l,offset,iq) 525 cc$OMP+ SHARED(klon_omp_nb,nq,klon_omp_begin, 526 cc$OMP+ debut,lafin,rdayvrai,heure,dtphys,zplev,zplay, 527 cc$OMP+ zphi,zphis,presnivs,clesphy0,zufi,zvfi,ztfi, 528 cc$OMP+ zqfi,pvervel,zdufi,zdvfi,zdtfi,zdqfi,zdpsrf) 529 530 c PRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp, 531 c c$OMP+ presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp, 532 c c$OMP+ zqfi_omp,pvervel_omp,zdufi_omp,zdvfi_omp, 533 c c$OMP+ zdtfi_omp,zdqfi_omp,zdpsrf_omp) 534 535 c$OMP BARRIER 536 if (first_omp) then 537 klon=klon_omp_nb(omp_rank) 538 539 allocate(zplev_omp(klon,llm+1)) 540 allocate(zplay_omp(klon,llm)) 541 allocate(zphi_omp(klon,llm)) 542 allocate(zphis_omp(klon)) 543 allocate(presnivs_omp(llm)) 544 allocate(zufi_omp(klon,llm)) 545 allocate(zvfi_omp(klon,llm)) 546 allocate(ztfi_omp(klon,llm)) 547 allocate(zqfi_omp(klon,llm,nq)) 548 allocate(pvervel_omp(klon,llm)) 549 allocate(zdufi_omp(klon,llm)) 550 allocate(zdvfi_omp(klon,llm)) 551 allocate(zdtfi_omp(klon,llm)) 552 allocate(zdqfi_omp(klon,llm,nq)) 553 allocate(zdpsrf_omp(klon)) 554 first_omp=.false. 555 endif 556 557 558 klon=klon_omp_nb(omp_rank) 559 offset=klon_omp_begin(omp_rank)-1 560 561 do l=1,llm+1 562 do i=1,klon 563 zplev_omp(i,l)=zplev(offset+i,l) 564 enddo 565 enddo 566 567 do l=1,llm 568 do i=1,klon 569 zplay_omp(i,l)=zplay(offset+i,l) 570 enddo 571 enddo 572 573 do l=1,llm 574 do i=1,klon 575 zphi_omp(i,l)=zphi(offset+i,l) 576 enddo 577 enddo 578 579 580 do i=1,klon 581 zphis_omp(i)=zphis(offset+i) 582 enddo 583 584 585 do l=1,llm 586 presnivs_omp(l)=presnivs(l) 587 enddo 588 589 do l=1,llm 590 do i=1,klon 591 zufi_omp(i,l)=zufi(offset+i,l) 592 enddo 593 enddo 594 595 do l=1,llm 596 do i=1,klon 597 zvfi_omp(i,l)=zvfi(offset+i,l) 598 enddo 599 enddo 600 601 do l=1,llm 602 do i=1,klon 603 ztfi_omp(i,l)=ztfi(offset+i,l) 604 enddo 605 enddo 606 607 do iq=1,nq 608 do l=1,llm 609 do i=1,klon 610 zqfi_omp(i,l,iq)=zqfi(offset+i,l,iq) 611 enddo 612 enddo 613 enddo 614 615 do l=1,llm 616 do i=1,klon 617 pvervel_omp(i,l)=pvervel(offset+i,l) 618 enddo 619 enddo 620 621 do l=1,llm 622 do i=1,klon 623 zdufi_omp(i,l)=zdufi(offset+i,l) 624 enddo 625 enddo 626 627 do l=1,llm 628 do i=1,klon 629 zdvfi_omp(i,l)=zdvfi(offset+i,l) 630 enddo 631 enddo 632 633 do l=1,llm 634 do i=1,klon 635 zdtfi_omp(i,l)=zdtfi(offset+i,l) 636 enddo 637 enddo 638 639 do iq=1,nq 640 do l=1,llm 641 do i=1,klon 642 zdqfi_omp(i,l,iq)=zdqfi(offset+i,l,iq) 643 enddo 644 enddo 645 enddo 646 647 do i=1,klon 648 zdpsrf_omp(i)=zdpsrf(offset+i) 649 enddo 650 651 c$OMP BARRIER 652 cym call WriteField_phy_p('zdtfi_omp',zdtfi_omp(:,:),llm) 653 446 654 CALL physiq (klon, 447 655 . llm, … … 452 660 . heure, 453 661 . dtphys, 454 . zplev ,455 . zplay ,456 . zphi ,457 . zphis ,458 . presnivs ,662 . zplev_omp, 663 . zplay_omp, 664 . zphi_omp, 665 . zphis_omp, 666 . presnivs_omp, 459 667 . clesphy0, 460 . zufi ,461 . zvfi ,462 . ztfi ,463 . zqfi ,464 . pvervel ,465 #ifdef INCA _CH4668 . zufi_omp, 669 . zvfi_omp, 670 . ztfi_omp, 671 . zqfi_omp, 672 . pvervel_omp, 673 #ifdef INCA 466 674 . flxwfi, 467 675 #endif 468 . zdufi, 469 . zdvfi, 470 . zdtfi, 471 . zdqfi, 472 . zdpsrf) 473 676 . zdufi_omp, 677 . zdvfi_omp, 678 . zdtfi_omp, 679 . zdqfi_omp, 680 . zdpsrf_omp, 681 cIM diagnostique PVteta, Amip2 682 . pducov, 683 . PVteta) 684 685 cym call WriteField_phy_p('zdtfi_omp',zdtfi_omp(:,:),llm) 686 687 c$OMP BARRIER 688 689 do l=1,llm+1 690 do i=1,klon 691 zplev(offset+i,l)=zplev_omp(i,l) 692 enddo 693 enddo 694 695 do l=1,llm 696 do i=1,klon 697 zplay(offset+i,l)=zplay_omp(i,l) 698 enddo 699 enddo 700 701 do l=1,llm 702 do i=1,klon 703 zphi(offset+i,l)=zphi_omp(i,l) 704 enddo 705 enddo 706 707 708 do i=1,klon 709 zphis(offset+i)=zphis_omp(i) 710 enddo 711 712 713 do l=1,llm 714 presnivs(l)=presnivs_omp(l) 715 enddo 716 717 do l=1,llm 718 do i=1,klon 719 zufi(offset+i,l)=zufi_omp(i,l) 720 enddo 721 enddo 722 723 do l=1,llm 724 do i=1,klon 725 zvfi(offset+i,l)=zvfi_omp(i,l) 726 enddo 727 enddo 728 729 do l=1,llm 730 do i=1,klon 731 ztfi(offset+i,l)=ztfi_omp(i,l) 732 enddo 733 enddo 734 735 do iq=1,nq 736 do l=1,llm 737 do i=1,klon 738 zqfi(offset+i,l,iq)=zqfi_omp(i,l,iq) 739 enddo 740 enddo 741 enddo 742 743 do l=1,llm 744 do i=1,klon 745 pvervel(offset+i,l)=pvervel_omp(i,l) 746 enddo 747 enddo 748 749 do l=1,llm 750 do i=1,klon 751 zdufi(offset+i,l)=zdufi_omp(i,l) 752 enddo 753 enddo 754 755 do l=1,llm 756 do i=1,klon 757 zdvfi(offset+i,l)=zdvfi_omp(i,l) 758 enddo 759 enddo 760 761 do l=1,llm 762 do i=1,klon 763 zdtfi(offset+i,l)=zdtfi_omp(i,l) 764 enddo 765 enddo 766 767 do iq=1,nq 768 do l=1,llm 769 do i=1,klon 770 zdqfi(offset+i,l,iq)=zdqfi_omp(i,l,iq) 771 enddo 772 enddo 773 enddo 774 775 do i=1,klon 776 zdpsrf(offset+i)=zdpsrf_omp(i) 777 enddo 778 779 780 cc$OMP END PARALLEL 781 klon=klon_mpi 474 782 500 CONTINUE 475 783 c$OMP BARRIER 784 785 c$OMP MASTER 786 cym call WriteField_phy('zdtfi',zdtfi(:,:),llm) 476 787 call stop_timer(timer_physic) 788 c$OMP END MASTER 477 789 478 790 if (MPI_rank>0) then 479 480 du_send(1:iim,1:llm)=zdufi(1:iim,1:llm) 481 dv_send(1:iim,1:llm)=zdvfi(1:iim,1:llm) 482 791 792 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 793 DO l=1,llm 794 du_send(1:iim,l)=zdufi(1:iim,l) 795 dv_send(1:iim,l)=zdvfi(1:iim,l) 796 ENDDO 797 c$OMP END DO NOWAIT 798 799 c$OMP BARRIER 800 c$OMP MASTER 483 801 call MPI_ISSEND(du_send,iim*llm,MPI_REAL8,MPI_Rank-1,401, 484 & MPI_COMM_WORLD,Req(1),ierr)802 & COMM_LMDZ,Req(1),ierr) 485 803 call MPI_ISSEND(dv_send,iim*llm,MPI_REAL8,MPI_Rank-1,402, 486 & MPI_COMM_WORLD,Req(2),ierr) 804 & COMM_LMDZ,Req(2),ierr) 805 c$OMP END MASTER 806 c$OMP BARRIER 487 807 488 808 endif 489 809 490 810 if (MPI_rank<MPI_Size-1) then 491 811 c$OMP BARRIER 812 c$OMP MASTER 492 813 call MPI_IRECV(du_recv,iim*llm,MPI_REAL8,MPI_Rank+1,401, 493 & MPI_COMM_WORLD,Req(3),ierr)814 & COMM_LMDZ,Req(3),ierr) 494 815 call MPI_IRECV(dv_recv,iim*llm,MPI_REAL8,MPI_Rank+1,402, 495 & MPI_COMM_WORLD,Req(4),ierr) 496 816 & COMM_LMDZ,Req(4),ierr) 817 c$OMP END MASTER 818 c$OMP BARRIER 497 819 endif 498 820 821 c$OMP BARRIER 822 c$OMP MASTER 499 823 if (MPI_rank>0 .and. MPI_rank< MPI_Size-1) then 500 824 call MPI_WAITALL(4,Req(1),Status,ierr) … … 504 828 call MPI_WAITALL(2,Req(3),Status,ierr) 505 829 endif 506 507 zdufi2(1:klon,:)=zdufi(1:klon,:) 508 zdufi2(klon+1:klon+iim,:)=du_recv(1:iim,:) 509 510 zdvfi2(1:klon,:)=zdvfi(1:klon,:) 511 zdvfi2(klon+1:klon+iim,:)=dv_recv(1:iim,:) 512 513 pdhfi(:,jjphy_begin,:)=0 514 pdqfi(:,jjphy_begin,:,:)=0 515 pdufi(:,jjphy_begin,:)=0 516 pdvfi(:,jjphy_begin,:)=0 517 pdpsfi(:,jjphy_begin)=0 518 830 c$OMP END MASTER 831 c$OMP BARRIER 832 833 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 834 DO l=1,llm 835 836 zdufi2(1:klon,l)=zdufi(1:klon,l) 837 zdufi2(klon+1:klon+iim,l)=du_recv(1:iim,l) 838 839 zdvfi2(1:klon,l)=zdvfi(1:klon,l) 840 zdvfi2(klon+1:klon+iim,l)=dv_recv(1:iim,l) 841 842 pdhfi(:,jjphy_begin,l)=0 843 pdqfi(:,jjphy_begin,l,:)=0 844 pdufi(:,jjphy_begin,l)=0 845 pdvfi(:,jjphy_begin,l)=0 846 847 if (.not. pole_sud) then 848 pdhfi(:,jjphy_end,l)=0 849 pdqfi(:,jjphy_end,l,:)=0 850 pdufi(:,jjphy_end,l)=0 851 pdvfi(:,jjphy_end,l)=0 852 endif 853 854 ENDDO 855 c$OMP END DO NOWAIT 856 857 c$OMP MASTER 858 pdpsfi(:,jjphy_begin)=0 519 859 if (.not. pole_sud) then 520 pdhfi(:,jjphy_end,:)=0521 pdqfi(:,jjphy_end,:,:)=0522 pdufi(:,jjphy_end,:)=0523 pdvfi(:,jjphy_end,:)=0524 860 pdpsfi(:,jjphy_end)=0 525 861 endif 526 862 c$OMP END MASTER 527 863 c----------------------------------------------------------------------- 528 864 c transformation des tendances physiques en tendances dynamiques: … … 531 867 c tendance sur la pression : 532 868 c ----------------------------------- 533 869 c$OMP MASTER 534 870 CALL gr_fi_dyn_p(1,klon,iip1,jjp1,zdpsrf,pdpsfi) 871 c$OMP END MASTER 535 872 c 536 873 c 62. enthalpie potentielle … … 543 880 if (pole_sud) kend=klon-1 544 881 882 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 545 883 DO l=1,llm 546 884 547 ! cdir NODEP885 !!cdir NODEP 548 886 do ig0=kstart,kend 549 887 i=Liste_i(ig0) … … 565 903 endif 566 904 ENDDO 905 c$OMP END DO NOWAIT 567 906 568 907 c 62. humidite specifique … … 570 909 571 910 DO iq=1,nqmx 911 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 572 912 DO l=1,llm 573 ! cdir NODEP913 !!cdir NODEP 574 914 do ig0=kstart,kend 575 915 i=Liste_i(ig0) … … 592 932 593 933 ENDDO 934 c$OMP END DO NOWAIT 594 935 ENDDO 595 936 … … 597 938 c ------------ 598 939 C initialisation des tendances 599 pdqfi=0. 940 941 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 942 DO l=1,llm 943 pdqfi(:,:,l,:)=0. 944 ENDDO 945 c$OMP END DO NOWAIT 946 600 947 C 601 948 602 949 DO iq=1,nq 603 950 iiq=niadv(iq) 951 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 604 952 DO l=1,llm 605 953 606 ! cdir NODEP954 !!cdir NODEP 607 955 DO ig0=kstart,kend 608 956 i=Liste_i(ig0) … … 625 973 626 974 ENDDO 975 c$OMP END DO NOWAIT 627 976 ENDDO 628 977 629 978 c 65. champ u: 630 979 c ------------ 631 980 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 632 981 DO l=1,llm 633 ! cdir NODEP982 !!cdir NODEP 634 983 do ig0=kstart,kend 635 984 i=Liste_i(ig0) … … 643 992 pdufi(iim,j,l)=0.5*( zdufi2(ig0,l) 644 993 $ + zdufi2(ig0+iim-1,l))*cu(iim,j) 645 994 pdufi(iip1,j,l)=0.5*(zdufi2(ig0,l)+zdufi2(ig0+1,l))*cu(i,j) 646 995 endif 647 996 … … 661 1010 662 1011 ENDDO 663 1012 c$OMP END DO NOWAIT 664 1013 665 1014 c 67. champ v: … … 672 1021 if (pole_sud) kend=klon-1-iim 673 1022 1023 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 674 1024 DO l=1,llm 675 ! cdir NODEP1025 !!cdir NODEP 676 1026 do ig0=kstart,kend 677 1027 i=Liste_i(ig0) … … 684 1034 685 1035 ENDDO 1036 c$OMP END DO NOWAIT 686 1037 687 1038 … … 691 1042 692 1043 if (pole_nord) then 693 1044 1045 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 694 1046 DO l=1,llm 695 1047 … … 705 1057 706 1058 ENDDO 1059 c$OMP END DO NOWAIT 707 1060 708 1061 endif 709 1062 710 1063 if (pole_sud) then 711 712 DO l=1,llm 1064 1065 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1066 DO l=1,llm 713 1067 714 1068 DO i=1,iim … … 723 1077 724 1078 ENDDO 1079 c$OMP END DO NOWAIT 725 1080 726 1081 endif
Note: See TracChangeset
for help on using the changeset viewer.