Changeset 709 for LMDZ4/branches/V3_test/libf/dyn3dpar/vlspltqs_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/vlspltqs_p.F
r630 r709 260 260 REAL u_mq(ip1jmp1,llm) 261 261 262 Logical first,testcpu263 SAVE first,testcpu264 265 262 REAL SSUM 266 REAL temps0,temps1,temps2,temps3,temps4,temps5 267 SAVE temps0,temps1,temps2,temps3,temps4,temps5 268 269 270 DATA first,testcpu/.true.,.false./ 263 271 264 272 265 INTEGER ijb,ije,ijb_x,ije_x 273 266 274 IF(first) THEN275 temps1=0.276 temps2=0.277 temps3=0.278 temps4=0.279 temps5=0.280 first=.false.281 ENDIF282 267 283 268 c calcul de la pente a droite et a gauche de la maille … … 299 284 300 285 c calcul de la pente aux points u 286 287 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 301 288 DO l = 1, llm 302 289 DO ij=ijb,ije-1 … … 347 334 348 335 ENDDO ! l=1,llm 336 c$OMP END DO NOWAIT 349 337 350 338 ELSE ! (pente_max.lt.-1.e-5) … … 352 340 c Pentes produits: 353 341 c ---------------- 354 342 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 355 343 DO l = 1, llm 356 344 DO ij=ijb,ije-1 … … 373 361 374 362 ENDDO 375 363 c$OMP END DO NOWAIT 376 364 ENDIF ! (pente_max.lt.-1.e-5) 377 365 378 366 c bouclage de la pente en iip1: 379 367 c ----------------------------- 380 368 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 381 369 DO l=1,llm 382 370 DO ij=ijb+iip1-1,ije,iip1 … … 389 377 390 378 ENDDO 391 392 if (pole_nord) iadvplus(1:iip1,1:llm)=0 393 if (pole_sud) iadvplus(ip1jm+1:ip1jmp1,1:llm)=0 394 379 c$OMP END DO NOWAIT 380 381 if (pole_nord) THEN 382 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 383 DO l=1,llm 384 iadvplus(1:iip1,l)=0 385 ENDDO 386 c$OMP END DO NOWAIT 387 endif 388 389 if (pole_sud) THEN 390 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 391 DO l=1,llm 392 iadvplus(ip1jm+1:ip1jmp1,l)=0 393 ENDDO 394 c$OMP END DO NOWAIT 395 endif 396 395 397 c calcul des flux a gauche et a droite 396 398 397 399 #ifdef CRAY 398 400 c--pas encore modification sur Qsat 401 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 399 402 DO l=1,llm 400 403 DO ij=ijb,ije-1 … … 410 413 ENDDO 411 414 ENDDO 415 c$OMP END DO NOWAIT 416 412 417 #else 413 418 c on cumule le flux correspondant a toutes les mailles dont la masse 414 419 c au travers de la paroi pENDant le pas de temps. 415 420 c le rapport de melange de l'air advecte est min(q_vanleer, Qsat_downwind) 421 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 416 422 DO l=1,llm 417 423 DO ij=ijb,ije-1 … … 427 433 ENDDO 428 434 ENDDO 435 c$OMP END DO NOWAIT 429 436 #endif 430 437 … … 432 439 c detection des points ou on advecte plus que la masse de la 433 440 c maille 441 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 434 442 DO l=1,llm 435 443 DO ij=ijb,ije-1 … … 440 448 ENDDO 441 449 ENDDO 450 c$OMP END DO NOWAIT 451 452 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 442 453 DO l=1,llm 443 454 DO ij=ijb+iip1-1,ije,iip1 … … 445 456 ENDDO 446 457 ENDDO 458 c$OMP END DO NOWAIT 447 459 448 460 … … 457 469 458 470 n0=0 471 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 459 472 DO l=1,llm 460 473 nl(l)=0 … … 464 477 n0=n0+nl(l) 465 478 ENDDO 466 479 c$OMP END DO NOWAIT 480 481 cym ATTENTION ICI en OpenMP reduction pas forcement nécessaire 467 482 cym IF(n0.gt.1) THEN 468 IF(n0.gt.0) THEN483 cym IF(n0.gt.0) THEN 469 484 ccc PRINT*,'Nombre de points pour lesquels on advect plus que le' 470 485 ccc & ,'contenu de la maille : ',n0 471 486 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 472 487 DO l=1,llm 473 488 IF(nl(l).gt.0) THEN … … 519 534 ENDIF 520 535 ENDDO 521 ENDIF ! n0.gt.0 536 c$OMP END DO NOWAIT 537 cym ENDIF ! n0.gt.0 522 538 523 539 524 540 525 541 c bouclage en latitude 526 542 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 527 543 DO l=1,llm 528 544 DO ij=ijb+iip1-1,ije,iip1 … … 530 546 ENDDO 531 547 ENDDO 532 548 c$OMP END DO NOWAIT 533 549 534 550 c calcul des tendances 535 551 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 536 552 DO l=1,llm 537 553 DO ij=ijb+1,ije … … 548 564 ENDDO 549 565 ENDDO 550 566 c$OMP END DO NOWAIT 551 567 c CALL SCOPY((jjm-1)*llm,q(iip1+iip1,1),iip1,q(iip2,1),iip1) 552 568 c CALL SCOPY((jjm-1)*llm,masse(iip1+iip1,1),iip1,masse(iip2,1),iip1) … … 597 613 REAL qpns,qpsn,dyn1,dys1,dyn2,dys2,newmasse,fn,fs 598 614 c REAL newq,oldmasse 599 Logical first,testcpu 600 REAL temps0,temps1,temps2,temps3,temps4,temps5 601 SAVE temps0,temps1,temps2,temps3,temps4,temps5 602 SAVE first,testcpu 603 615 Logical first 616 SAVE first 617 c$OMP THREADPRIVATE(first) 604 618 REAL convpn,convps,convmpn,convmps 605 619 REAL sinlon(iip1),sinlondlon(iip1) … … 607 621 SAVE sinlon,coslon,sinlondlon,coslondlon 608 622 SAVE airej2,airejjm 623 c$OMP THREADPRIVATE(sinlon,coslon,sinlondlon,coslondlon) 624 c$OMP THREADPRIVATE(airej2,airejjm) 609 625 c 610 626 c 611 627 REAL SSUM 612 628 613 DATA first,testcpu/.true.,.false./ 614 DATA temps0,temps1,temps2,temps3,temps4,temps5/0.,0.,0.,0.,0.,0./ 629 DATA first/.true./ 615 630 INTEGER ijb,ije 616 631 … … 634 649 c 635 650 636 651 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 637 652 DO l = 1, llm 638 653 c … … 833 848 834 849 ENDDO 850 c$OMP END DO NOWAIT 835 851 836 852 ijb=ij_begin-iip1 … … 839 855 if (pole_sud) ije=ij_end-iip1 840 856 857 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 841 858 DO l=1,llm 842 859 DO ij=ijb,ije … … 851 868 ENDDO 852 869 ENDDO 870 c$OMP END DO NOWAIT 853 871 854 872 ijb=ij_begin … … 856 874 if (pole_nord) ijb=ij_begin+iip1 857 875 if (pole_sud) ije=ij_end-iip1 858 876 877 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 859 878 DO l=1,llm 860 879 DO ij=ijb,ije … … 917 936 c._. fin nouvelle version 918 937 ENDDO 919 938 c$OMP END DO NOWAIT 920 939 RETURN 921 940 END
Note: See TracChangeset
for help on using the changeset viewer.