Changeset 1885
- Timestamp:
- Oct 4, 2013, 3:35:36 PM (11 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dyn3d/inigrads.F
r1606 r1885 13 13 real xmin,xmax,ymin,ymax 14 14 15 character file*10,titlel*40 15 character(len=*),intent(in) :: file 16 character(len=*),intent(in) :: titlel 16 17 17 18 #include "gradsdef.h" -
LMDZ5/trunk/libf/dyn3dmem/bilan_dyn_loc.F
r1874 r1885 444 444 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 445 445 DO l=1,llm 446 masse_cum(:,jjb:jje, :)=masse_cum(:,jjb:jje,:)+masse(:,jjb:jje,:)447 flux_u_cum(:,jjb:jje, :)=flux_u_cum(:,jjb:jje,:)448 . +flux_u(:,jjb:jje, :)446 masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)+masse(:,jjb:jje,l) 447 flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l) 448 . +flux_u(:,jjb:jje,l) 449 449 ENDDO 450 450 !$OMP END DO NOWAIT … … 454 454 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 455 455 DO l=1,llm 456 flux_v_cum(:,jjb:jje, :)=flux_v_cum(:,jjb:jje,:)457 . +flux_v(:,jjb:jje, :)456 flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l) 457 . +flux_v(:,jjb:jje,l) 458 458 ENDDO 459 459 !$OMP END DO NOWAIT … … 465 465 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 466 466 DO l=1,llm 467 Q_cum(:,jjb:jje, :,iQ)=Q_cum(:,jjb:jje,:,iQ)468 . +Q(:,jjb:jje, :,iQ)*masse(:,jjb:jje,:)467 Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ) 468 . +Q(:,jjb:jje,l,iQ)*masse(:,jjb:jje,l) 469 469 ENDDO 470 470 !$OMP END DO NOWAIT -
LMDZ5/trunk/libf/dyn3dmem/inigrads.F
r1673 r1885 13 13 real xmin,xmax,ymin,ymax 14 14 15 character file*10,titlel*40 15 character(len=*),intent(in) :: file 16 character(len=*),intent(in) :: titlel 16 17 17 18 #include "gradsdef.h" -
LMDZ5/trunk/libf/dyn3dpar/bilan_dyn_p.F
r1823 r1885 16 16 USE mod_hallo 17 17 use misc_mod 18 use write_field 18 use write_field_p 19 19 IMPLICIT NONE 20 20 … … 57 57 c ======= 58 58 59 integer icum,ncum 60 logical first 61 real zz,zqy,zfactv(jjm,llm) 62 63 integer nQ 64 parameter (nQ=7) 59 integer,save :: icum,ncum 60 !$OMP THREADPRIVATE(icum,ncum) 61 logical,SAVE :: first=.true. 62 !$OMP THREADPRIVATE(first) 63 64 real zz,zqy 65 real,save :: zfactv(jjm,llm) 66 67 integer,parameter :: nQ=7 65 68 66 69 67 70 cym character*6 nom(nQ) 68 71 cym character*6 unites(nQ) 69 character *6,save :: nom(nQ)70 character *6,save :: unites(nQ)71 72 character *10file72 character(len=6),save :: nom(nQ) 73 character(len=6),save :: unites(nQ) 74 75 character(len=10) file 73 76 integer ifile 74 77 parameter (ifile=4) 75 78 76 integer itemp,igeop,iecin,iang,iu,iovap,iun 77 integer i_sortie 78 79 save first,icum,ncum 80 save itemp,igeop,iecin,iang,iu,iovap,iun 81 save i_sortie 82 83 real time 84 integer itau 85 save time,itau 86 data time,itau/0.,0/ 87 88 data first/.true./ 89 data itemp,igeop,iecin,iang,iu,iovap,iun/1,2,3,4,5,6,7/ 90 data i_sortie/1/ 79 integer,PARAMETER :: itemp=1,igeop=2,iecin=3,iang=4,iu=5 80 INTEGER,PARAMETER :: iovap=6,iun=7 81 integer,PARAMETER :: i_sortie=1 82 83 real,SAVE :: time=0. 84 integer,SAVE :: itau=0. 85 !$OMP THREADPRIVATE(time,itau) 91 86 92 87 real ww 93 88 94 89 c variables dynamiques intermédiaires 95 REAL vcont(iip1,jjm,llm),ucont(iip1,jjp1,llm) 96 REAL ang(iip1,jjp1,llm),unat(iip1,jjp1,llm) 97 REAL massebx(iip1,jjp1,llm),masseby(iip1,jjm,llm) 98 REAL vorpot(iip1,jjm,llm) 99 REAL w(iip1,jjp1,llm),ecin(iip1,jjp1,llm),convm(iip1,jjp1,llm) 100 REAL bern(iip1,jjp1,llm) 90 REAL,save :: vcont(iip1,jjm,llm),ucont(iip1,jjp1,llm) 91 REAL,save :: ang(iip1,jjp1,llm),unat(iip1,jjp1,llm) 92 REAL,save :: massebx(iip1,jjp1,llm),masseby(iip1,jjm,llm) 93 REAL,save :: vorpot(iip1,jjm,llm) 94 REAL,save :: w(iip1,jjp1,llm),ecin(iip1,jjp1,llm) 95 REAL,save ::convm(iip1,jjp1,llm) 96 REAL,save :: bern(iip1,jjp1,llm) 101 97 102 98 c champ contenant les scalaires advectés. 103 real Q(iip1,jjp1,llm,nQ)99 real,save :: Q(iip1,jjp1,llm,nQ) 104 100 105 101 c champs cumulés 106 real ps_cum(iip1,jjp1) 107 real masse_cum(iip1,jjp1,llm) 108 real flux_u_cum(iip1,jjp1,llm) 109 real flux_v_cum(iip1,jjm,llm) 110 real Q_cum(iip1,jjp1,llm,nQ) 111 real flux_uQ_cum(iip1,jjp1,llm,nQ) 112 real flux_vQ_cum(iip1,jjm,llm,nQ) 113 real flux_wQ_cum(iip1,jjp1,llm,nQ) 114 real dQ(iip1,jjp1,llm,nQ) 115 116 save ps_cum,masse_cum,flux_u_cum,flux_v_cum 117 save Q_cum,flux_uQ_cum,flux_vQ_cum 102 real,save :: ps_cum(iip1,jjp1) 103 real,save :: masse_cum(iip1,jjp1,llm) 104 real,save :: flux_u_cum(iip1,jjp1,llm) 105 real,save :: flux_v_cum(iip1,jjm,llm) 106 real,save :: Q_cum(iip1,jjp1,llm,nQ) 107 real,save :: flux_uQ_cum(iip1,jjp1,llm,nQ) 108 real,save :: flux_vQ_cum(iip1,jjm,llm,nQ) 109 real,save :: flux_wQ_cum(iip1,jjp1,llm,nQ) 110 real,save :: dQ(iip1,jjp1,llm,nQ) 111 118 112 119 113 c champs de tansport en moyenne zonale … … 128 122 character*10,save :: zunites(ntr,nQ) 129 123 130 integer iave,itot,immc,itrs,istn131 data iave,itot,immc,itrs,istn/1,2,3,4,5/ 124 INTEGER,PARAMETER :: iave=1,itot=2,immc=3,itrs=4,istn=5 125 132 126 character*3 ctrs(ntr) 133 127 data ctrs/' ','TOT','MMC','TRS','STN'/ 134 128 135 real zvQ(jjm,llm,ntr,nQ),zvQtmp(jjm,llm)136 real zavQ(jjm,ntr,nQ),psiQ(jjm,llm+1,nQ)137 real zmasse(jjm,llm),zamasse(jjm)138 139 real zv(jjm,llm),psi(jjm,llm+1)129 real,save :: zvQ(jjm,llm,ntr,nQ),zvQtmp(jjm,llm) 130 real,save :: zavQ(jjm,ntr,nQ),psiQ(jjm,llm+1,nQ) 131 real,save :: zmasse(jjm,llm),zamasse(jjm) 132 133 real,save :: zv(jjm,llm),psi(jjm,llm+1) 140 134 141 135 integer i,j,l,iQ … … 151 145 save fileid 152 146 153 integer ndex3d(jjm*llm)147 integer,save :: ndex3d(jjm*llm) 154 148 155 149 C Variables locales … … 162 156 integer zan, dayref 163 157 C 164 real rlong(jjm),rlatg(jjm)158 real,save :: rlong(jjm),rlatg(jjm) 165 159 integer :: jjb,jje,jjn,ijb,ije 166 type(Request) :: Req 160 type(Request),SAVE :: Req 161 !$OMP THREADPRIVATE(Req) 167 162 168 163 ! definition du domaine d'ecriture pour le rebuild … … 182 177 c Initialisation 183 178 c===================================================================== 184 ndex3d=0185 179 if (adjust) return 186 180 … … 190 184 if (first) then 191 185 186 ndex3d=0 192 187 193 188 icum=0 … … 202 197 WRITE(lunout,*)'dt_cum=',dt_cum 203 198 stop 199 else 200 write(lunout,*) "bilan_dyn_p: ncum=",ncum 204 201 endif 205 202 206 if (i_sortie.eq.1) then 207 file='dynzon' 208 if (mpi_rank==0) then 209 call inigrads(ifile,1 210 s ,0.,180./pi,0.,0.,jjm,rlatv,-90.,90.,180./pi 211 s ,llm,presnivs,1. 212 s ,dt_cum,file,'dyn_zon ') 213 endif 214 endif 215 203 ! if (i_sortie.eq.1) then 204 ! file='dynzon' 205 ! if (mpi_rank==0) then 206 ! call inigrads(ifile,1 207 ! s ,0.,180./pi,0.,0.,jjm,rlatv,-90.,90.,180./pi 208 ! s ,llm,presnivs,1. 209 ! s ,dt_cum,file,'dyn_zon ') 210 ! endif 211 ! endif 212 213 !$OMP MASTER 216 214 nom(itemp)='T' 217 215 nom(igeop)='gz' … … 339 337 CALL histend(fileid) 340 338 341 339 !$OMP END MASTER 340 !$OMP BARRIER 342 341 endif 343 342 … … 351 350 352 351 c énergie cinétique 353 ucont(:,jjb:jje,:)=0352 ! ucont(:,jjb:jje,:)=0 354 353 355 354 call Register_Hallo(ucov,ip1jmp1,llm,1,1,1,1,Req) 356 355 call Register_Hallo(vcov,ip1jm,llm,1,1,1,1,Req) 357 356 call SendRequest(Req) 357 c$OMP BARRIER 358 358 call WaitRequest(Req) 359 c$OMP BARRIER 359 360 360 361 CALL covcont_p(llm,ucov,vcov,ucont,vcont) … … 362 363 363 364 c moment cinétique 365 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 364 366 do l=1,llm 365 367 ang(:,jjb:jje,l)=ucov(:,jjb:jje,l)+constang(:,jjb:jje) 366 368 unat(:,jjb:jje,l)=ucont(:,jjb:jje,l)*cu(:,jjb:jje) 367 369 enddo 368 369 Q(:,jjb:jje,:,itemp)=teta(:,jjb:jje,:)*pk(:,jjb:jje,:)/cpp 370 Q(:,jjb:jje,:,igeop)=phi(:,jjb:jje,:) 371 Q(:,jjb:jje,:,iecin)=ecin(:,jjb:jje,:) 372 Q(:,jjb:jje,:,iang)=ang(:,jjb:jje,:) 373 Q(:,jjb:jje,:,iu)=unat(:,jjb:jje,:) 374 Q(:,jjb:jje,:,iovap)=trac(:,jjb:jje,:,1) 375 Q(:,jjb:jje,:,iun)=1. 376 370 !$OMP END DO 371 372 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 373 DO l=1,llm 374 Q(:,jjb:jje,l,itemp)=teta(:,jjb:jje,l)*pk(:,jjb:jje,l)/cpp 375 Q(:,jjb:jje,l,igeop)=phi(:,jjb:jje,l) 376 Q(:,jjb:jje,l,iecin)=ecin(:,jjb:jje,l) 377 Q(:,jjb:jje,l,iang)=ang(:,jjb:jje,l) 378 Q(:,jjb:jje,l,iu)=unat(:,jjb:jje,l) 379 Q(:,jjb:jje,l,iovap)=trac(:,jjb:jje,l,1) 380 Q(:,jjb:jje,l,iun)=1. 381 ENDDO 382 !$OMP END DO NOWAIT 377 383 378 384 c===================================================================== … … 384 390 jje=jj_end 385 391 392 !$OMP MASTER 386 393 ps_cum(:,jjb:jje)=0. 387 masse_cum(:,jjb:jje,:)=0. 388 flux_u_cum(:,jjb:jje,:)=0. 389 Q_cum(:,jjb:jje,:,:)=0. 390 flux_uQ_cum(:,jjb:jje,:,:)=0. 391 if (pole_sud) jje=jj_end-1 392 flux_v_cum(:,jjb:jje,:)=0. 393 flux_vQ_cum(:,jjb:jje,:,:)=0. 394 !$OMP END MASTER 395 !$OMP BARRIER 396 397 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 398 DO l=1,llm 399 masse_cum(:,jjb:jje,l)=0. 400 flux_u_cum(:,jjb:jje,l)=0. 401 Q_cum(:,jjb:jje,l,:)=0. 402 flux_uQ_cum(:,jjb:jje,l,:)=0. 403 if (pole_sud) jje=jj_end-1 404 flux_v_cum(:,jjb:jje,l)=0. 405 flux_vQ_cum(:,jjb:jje,l,:)=0. 406 ENDDO 407 !$OMP END DO NOWAIT 394 408 endif 395 409 … … 402 416 jje=jj_end 403 417 418 !$OMP MASTER 404 419 ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)+ps(:,jjb:jje) 405 masse_cum(:,jjb:jje,:)=masse_cum(:,jjb:jje,:)+masse(:,jjb:jje,:) 406 flux_u_cum(:,jjb:jje,:)=flux_u_cum(:,jjb:jje,:) 407 . +flux_u(:,jjb:jje,:) 420 !$OMP END MASTER 421 !$OMP BARRIER 422 423 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 424 DO l=1,llm 425 masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)+masse(:,jjb:jje,l) 426 flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l) 427 . +flux_u(:,jjb:jje,l) 428 ENDDO 429 !$OMP END DO NOWAIT 430 408 431 if (pole_sud) jje=jj_end-1 409 flux_v_cum(:,jjb:jje,:)=flux_v_cum(:,jjb:jje,:) 410 . +flux_v(:,jjb:jje,:) 411 412 jjb=jj_begin 413 jje=jj_end 414 415 do iQ=1,nQ 416 Q_cum(:,jjb:jje,:,iQ)=Q_cum(:,jjb:jje,:,iQ) 417 . +Q(:,jjb:jje,:,iQ)*masse(:,jjb:jje,:) 432 433 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 434 DO l=1,llm 435 flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l) 436 . +flux_v(:,jjb:jje,l) 437 ENDDO 438 !$OMP END DO NOWAIT 439 440 jjb=jj_begin 441 jje=jj_end 442 443 do iQ=1,nQ 444 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 445 DO l=1,llm 446 Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ) 447 . +Q(:,jjb:jje,l,iQ)*masse(:,jjb:jje,l) 448 ENDDO 449 !$OMP END DO NOWAIT 418 450 enddo 419 451 … … 425 457 c ----------------- 426 458 do iQ=1,nQ 459 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 427 460 do l=1,llm 428 461 do j=jjb,jje … … 434 467 enddo 435 468 enddo 469 !$OMP END DO NOWAIT 436 470 enddo 437 471 … … 442 476 enddo 443 477 call SendRequest(Req) 478 !$OMP BARRIER 444 479 call WaitRequest(Req) 445 480 !$OMP BARRIER 481 446 482 jjb=jj_begin 447 483 jje=jj_end … … 449 485 450 486 do iQ=1,nQ 487 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 451 488 do l=1,llm 452 489 do j=jjb,jje … … 457 494 enddo 458 495 enddo 496 !$OMP END DO NOWAIT 459 497 enddo 460 498 … … 467 505 call Register_Hallo(flux_vQ_cum,ip1jm,llm,2,2,2,2,Req) 468 506 call SendRequest(Req) 507 !$OMP BARRIER 469 508 call WaitRequest(Req) 509 c$OMP BARRIER 470 510 471 511 call convflu_p(flux_uQ_cum,flux_vQ_cum,llm*nQ,dQ) … … 475 515 call Register_Hallo(flux_v_cum,ip1jm,llm,2,2,2,2,Req) 476 516 call SendRequest(Req) 517 !$OMP BARRIER 477 518 call WaitRequest(Req) 519 c$OMP BARRIER 478 520 479 521 call convmas_p(flux_u_cum,flux_v_cum,convm) 480 522 CALL vitvert_p(convm,w) 481 482 jjb=jj_begin 483 jje=jj_end 484 485 do iQ=1,nQ 486 do l=1,llm-1 487 do j=jjb,jje 488 do i=1,iip1 489 ww=-0.5*w(i,j,l+1)*(Q(i,j,l,iQ)+Q(i,j,l+1,iQ)) 490 dQ(i,j,l ,iQ)=dQ(i,j,l ,iQ)-ww 491 dQ(i,j,l+1,iQ)=dQ(i,j,l+1,iQ)+ww 492 enddo 493 enddo 494 enddo 523 !$OMP BARRIER 524 525 jjb=jj_begin 526 jje=jj_end 527 528 do iQ=1,nQ 529 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 530 do l=1,llm 531 IF (l<llm) THEN 532 do j=jjb,jje 533 do i=1,iip1 534 ww=-0.5*w(i,j,l+1)*(Q(i,j,l,iQ)+Q(i,j,l+1,iQ)) 535 dQ(i,j,l ,iQ)=dQ(i,j,l ,iQ)-ww 536 dQ(i,j,l+1,iQ)=dQ(i,j,l+1,iQ)+ww 537 enddo 538 enddo 539 ENDIF 540 IF (l>2) THEN 541 do j=jjb,jje 542 do i=1,iip1 543 ww=-0.5*w(i,j,l)*(Q(i,j,l-1,iQ)+Q(i,j,l,iQ)) 544 dQ(i,j,l,iQ)=dQ(i,j,l,iQ)+ww 545 enddo 546 enddo 547 ENDIF 548 enddo 549 !$OMP ENDDO NOWAIT 495 550 enddo 496 551 IF (prt_level > 5) … … 505 560 . WRITE(lunout,*)'Pas d ecriture' 506 561 562 jjb=jj_begin 563 jje=jj_end 564 507 565 c Normalisation 508 566 do iQ=1,nQ 509 Q_cum(:,jjb:jje,:,iQ)=Q_cum(:,jjb:jje,:,iQ) 510 . /masse_cum(:,jjb:jje,:) 511 enddo 567 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 568 do l=1,llm 569 Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ) 570 . /masse_cum(:,jjb:jje,l) 571 enddo 572 !$OMP ENDDO NOWAIT 573 enddo 574 512 575 zz=1./REAL(ncum) 513 576 514 jjb=jj_begin 515 jje=jj_end 516 577 !$OMP MASTER 517 578 ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)*zz 518 masse_cum(:,jjb:jje,:)=masse_cum(:,jjb:jje,:)*zz 519 flux_u_cum(:,jjb:jje,:)=flux_u_cum(:,jjb:jje,:)*zz 520 flux_uQ_cum(:,jjb:jje,:,:)=flux_uQ_cum(:,jjb:jje,:,:)*zz 521 dQ(:,jjb:jje,:,:)=dQ(:,jjb:jje,:,:)*zz 579 !$OMP END MASTER 580 581 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 582 DO l=1,llm 583 masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)*zz 584 flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)*zz 585 flux_uQ_cum(:,jjb:jje,l,:)=flux_uQ_cum(:,jjb:jje,l,:)*zz 586 dQ(:,jjb:jje,l,:)=dQ(:,jjb:jje,l,:)*zz 587 ENDDO 588 !$OMP ENDDO NOWAIT 589 522 590 523 591 IF (pole_sud) jje=jj_end-1 524 flux_v_cum(:,jjb:jje,:)=flux_v_cum(:,jjb:jje,:)*zz 525 flux_vQ_cum(:,jjb:jje,:,:)=flux_vQ_cum(:,jjb:jje,:,:)*zz 592 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 593 DO l=1,llm 594 flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)*zz 595 flux_vQ_cum(:,jjb:jje,l,:)=flux_vQ_cum(:,jjb:jje,l,:)*zz 596 ENDDO 597 !$OMP ENDDO 526 598 527 599 jjb=jj_begin … … 532 604 c division de dQ par la masse pour revenir aux bonnes grandeurs 533 605 do iQ=1,nQ 534 dQ(:,jjb:jje,:,iQ)=dQ(:,jjb:jje,:,iQ)/masse_cum(:,jjb:jje,:) 606 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 607 DO l=1,llm 608 dQ(:,jjb:jje,l,iQ)=dQ(:,jjb:jje,l,iQ)/masse_cum(:,jjb:jje,l) 609 ENDDO 610 !$OMP ENDDO NOWAIT 535 611 enddo 536 612 … … 545 621 if (pole_sud) jje=jj_end-1 546 622 547 zv(jjb:jje,:)=0. 548 zmasse(jjb:jje,:)=0. 623 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 624 DO l=1,llm 625 zv(jjb:jje,l)=0. 626 zmasse(jjb:jje,l)=0. 627 ENDDO 628 !$OMP ENDDO NOWAIT 549 629 550 630 call Register_Hallo(masse_cum,ip1jmp1,llm,1,1,1,1,Req) … … 554 634 555 635 call SendRequest(Req) 636 !$OMP BARRIER 556 637 call WaitRequest(Req) 638 c$OMP BARRIER 557 639 558 640 call massbar_p(masse_cum,massebx,masseby) … … 562 644 if (pole_sud) jje=jj_end-1 563 645 646 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 564 647 do l=1,llm 565 648 do j=jjb,jje … … 571 654 enddo 572 655 enddo 656 !$OMP ENDDO 573 657 574 658 c print*,'3OK' … … 609 693 psiQ=0. 610 694 do iQ=1,nQ 611 zvQtmp=0. 695 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 612 696 do l=1,llm 697 zvQtmp(:,l)=0. 613 698 do j=jjb,jje 614 699 c print*,'j,l,iQ=',j,l,iQ … … 633 718 enddo 634 719 enddo 720 !$OMP ENDDO NOWAIT 635 721 c fonction de courant meridienne pour la quantite Q 722 !$OMP BARRIER 723 !$OMP MASTER 636 724 do l=llm,1,-1 637 725 do j=jjb,jje … … 639 727 enddo 640 728 enddo 641 enddo 729 !$OMP END MASTER 730 !$OMP BARRIER 731 enddo ! of do iQ=1,nQ 642 732 643 733 c fonction de courant pour la circulation meridienne moyenne 734 !$OMP BARRIER 735 !$OMP MASTER 644 736 psi(jjb:jje,:)=0. 645 737 do l=llm,1,-1 … … 649 741 enddo 650 742 enddo 743 !$OMP END MASTER 744 !$OMP BARRIER 651 745 652 746 c print*,'4OK' 653 747 c sorties proprement dites 748 !$OMP MASTER 654 749 if (i_sortie.eq.1) then 655 750 jjb=jj_begin … … 669 764 s ,jjn*llm,ndex3d) 670 765 enddo 671 672 766 call histwrite(fileid,'masse',itau,zmasse(jjb:jje,1:llm) 673 767 s ,jjn*llm,ndex3d) … … 703 797 enddo 704 798 enddo 705 799 !$OMP END MASTER 800 !$OMP BARRIER 706 801 c on doit pouvoir tracer systematiquement la fonction de courant. 707 802 … … 712 807 c///////////////////////////////////////////////////////////////////// 713 808 c===================================================================== 714 715 809 return 716 810 end -
LMDZ5/trunk/libf/dyn3dpar/inigrads.F
r1606 r1885 13 13 real xmin,xmax,ymin,ymax 14 14 15 character file*10,titlel*40 15 character(len=*),intent(in) :: file 16 character(len=*),intent(in) :: titlel 16 17 17 18 #include "gradsdef.h" -
LMDZ5/trunk/libf/dyn3dpar/leapfrog_p.F
r1852 r1885 1344 1344 c$OMP BARRIER 1345 1345 RETURN 1346 ENDIF 1346 ENDIF ! of IF (itau==itaumax) 1347 1347 1348 1348 IF ( .NOT.purmats ) THEN … … 1396 1396 #ifdef CPP_IOIPSL 1397 1397 IF (ok_dynzon) THEN 1398 call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest)1399 call SendRequest(TestRequest)1400 c$OMP BARRIER1401 call WaitRequest(TestRequest)1402 c$OMP BARRIER1403 c$OMP MASTER1404 ! CALL writedynav_p(histaveid, itau,vcov ,1405 ! , ucov,teta,pk,phi,q,masse,ps,phis)1406 1407 c ATTENTION!!! bilan_dyn_p ne marche probablement pas avec OpenMP1408 1398 CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav, 1409 1399 , ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q) 1410 c$OMP END MASTER1411 1400 ENDIF !ok_dynzon 1412 1401 #endif … … 1602 1591 #ifdef CPP_IOIPSL 1603 1592 IF (ok_dynzon) THEN 1604 c$OMP BARRIER1605 call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest)1606 call SendRequest(TestRequest)1607 c$OMP BARRIER1608 call WaitRequest(TestRequest)1609 c$OMP BARRIER1610 c$OMP MASTER1611 ! CALL writedynav_p(histaveid, itau,vcov ,1612 ! , ucov,teta,pk,phi,q,masse,ps,phis)1613 1593 CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav, 1614 1594 , ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q) 1615 c$OMP END MASTER1616 1595 END IF !ok_dynzon 1617 1596 #endif
Note: See TracChangeset
for help on using the changeset viewer.