Changeset 764 for LMDZ4/trunk/libf/dyn3dpar/vlsplt_p.F
- Timestamp:
- Jun 4, 2007, 4:13:10 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/dyn3dpar/vlsplt_p.F
r630 r764 228 228 REAL u_mq(ip1jmp1,llm) 229 229 230 Logical extremum,first,testcpu 231 SAVE first,testcpu 230 Logical extremum 232 231 233 232 REAL SSUM 234 233 EXTERNAL SSUM 235 REAL temps0,temps1,temps2,temps3,temps4,temps5,second236 SAVE temps0,temps1,temps2,temps3,temps4,temps5237 234 238 235 REAL z1,z2,z3 239 236 240 DATA first,testcpu/.true.,.false./241 237 INTEGER ijb,ije,ijb_x,ije_x 242 238 243 IF(first) THEN244 temps1=0.245 temps2=0.246 temps3=0.247 temps4=0.248 temps5=0.249 first=.false.250 ENDIF251 252 239 c calcul de la pente a droite et a gauche de la maille 253 240 … … 265 252 266 253 c calcul de la pente aux points u 267 254 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 268 255 DO l = 1, llm 269 256 … … 315 302 316 303 ENDDO ! l=1,llm 304 c$OMP END DO NOWAIT 317 305 c print*,'Ok calcul des pentes' 318 306 … … 321 309 c Pentes produits: 322 310 c ---------------- 323 311 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 324 312 DO l = 1, llm 325 313 DO ij=ijb,ije-1 … … 342 330 343 331 ENDDO 344 332 c$OMP END DO NOWAIT 345 333 ENDIF ! (pente_max.lt.-1.e-5) 346 334 347 335 c bouclage de la pente en iip1: 348 336 c ----------------------------- 349 337 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 350 338 DO l=1,llm 351 339 DO ij=ijb+iip1-1,ije,iip1 352 340 dxq(ij-iim,l)=dxq(ij,l) 353 341 ENDDO 354 DO ij= 1,ip1jmp1342 DO ij=ijb,ije 355 343 iadvplus(ij,l)=0 356 344 ENDDO 357 345 358 346 ENDDO 359 347 c$OMP END DO NOWAIT 360 348 c print*,'Bouclage en iip1' 361 349 … … 363 351 364 352 #ifdef CRAY 365 353 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 366 354 DO l=1,llm 367 355 DO ij=ijb,ije-1 … … 377 365 ENDDO 378 366 ENDDO 367 c$OMP END DO NOWAIT 379 368 #else 380 369 c on cumule le flux correspondant a toutes les mailles dont la masse 381 370 c au travers de la paroi pENDant le pas de temps. 382 371 c print*,'Cumule ....' 383 372 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 384 373 DO l=1,llm 385 374 DO ij=ijb,ije-1 … … 394 383 ENDDO 395 384 ENDDO 385 c$OMP END DO NOWAIT 396 386 #endif 397 387 c stop … … 400 390 c detection des points ou on advecte plus que la masse de la 401 391 c maille 392 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 402 393 DO l=1,llm 403 394 DO ij=ijb,ije-1 … … 408 399 ENDDO 409 400 ENDDO 401 c$OMP END DO NOWAIT 410 402 c print*,'Ok test 1' 403 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 411 404 DO l=1,llm 412 405 DO ij=ijb+iip1-1,ije,iip1 … … 414 407 ENDDO 415 408 ENDDO 409 c$OMP END DO NOWAIT 416 410 c print*,'Ok test 2' 417 411 … … 424 418 425 419 n0=0 420 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 426 421 DO l=1,llm 427 422 nl(l)=0 … … 431 426 n0=n0+nl(l) 432 427 ENDDO 433 428 c$OMP END DO NOWAIT 434 429 cym IF(n0.gt.1) THEN 435 IF(n0.gt.0) THEN430 cym IF(n0.gt.0) THEN 436 431 437 432 c PRINT*,'Nombre de points pour lesquels on advect plus que le' 438 433 c & ,'contenu de la maille : ',n0 439 434 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 440 435 DO l=1,llm 441 436 IF(nl(l).gt.0) THEN … … 487 482 ENDIF 488 483 ENDDO 489 ENDIF ! n0.gt.0 484 c$OMP END DO NOWAIT 485 cym ENDIF ! n0.gt.0 490 486 9999 continue 491 487 … … 493 489 c bouclage en latitude 494 490 c print*,'Avant bouclage en latitude' 491 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 495 492 DO l=1,llm 496 493 DO ij=ijb+iip1-1,ije,iip1 … … 498 495 ENDDO 499 496 ENDDO 500 497 c$OMP END DO NOWAIT 501 498 502 499 c calcul des tENDances 503 500 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 504 501 DO l=1,llm 505 502 DO ij=ijb+1,ije … … 516 513 ENDDO 517 514 ENDDO 515 c$OMP END DO NOWAIT 518 516 c CALL SCOPY((jjm-1)*llm,q(iip1+iip1,1),iip1,q(iip2,1),iip1) 519 517 c CALL SCOPY((jjm-1)*llm,masse(iip1+iip1,1),iip1,masse(iip2,1),iip1) … … 568 566 REAL temps0,temps1,temps2,temps3,temps4,temps5,second 569 567 SAVE temps0,temps1,temps2,temps3,temps4,temps5 568 c$OMP THREADPRIVATE(temps0,temps1,temps2,temps3,temps4,temps5) 570 569 SAVE first,testcpu 570 c$OMP THREADPRIVATE(first,testcpu) 571 571 572 572 REAL convpn,convps,convmpn,convmps … … 575 575 REAL coslon(iip1),coslondlon(iip1) 576 576 SAVE sinlon,coslon,sinlondlon,coslondlon 577 c$OMP THREADPRIVATE(sinlon,coslon,sinlondlon,coslondlon) 577 578 SAVE airej2,airejjm 579 c$OMP THREADPRIVATE(airej2,airejjm) 578 580 c 579 581 c … … 605 607 c PRINT*,'CALCUL EN LATITUDE' 606 608 607 609 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 608 610 DO l = 1, llm 609 611 c … … 806 808 807 809 ENDDO 810 c$OMP END DO NOWAIT 808 811 809 812 ijb=ij_begin-iip1 … … 812 815 if (pole_sud) ije=ij_end-iip1 813 816 814 817 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 815 818 DO l=1,llm 816 819 DO ij=ijb,ije … … 825 828 ENDDO 826 829 ENDDO 827 830 c$OMP END DO NOWAIT 828 831 829 832 ijb=ij_begin … … 832 835 if (pole_sud) ije=ij_end-iip1 833 836 837 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 834 838 DO l=1,llm 835 839 DO ij=ijb,ije … … 900 904 c._. fin nouvelle version 901 905 ENDDO 906 c$OMP END DO NOWAIT 902 907 903 908 RETURN … … 939 944 INTEGER i,ij,l,j,ii 940 945 c 941 REAL wq(ip1jmp1,llm+1),newmasse 942 943 REAL dzq(ip1jmp1,llm),dzqw(ip1jmp1,llm),adzqw(ip1jmp1,llm),dzqmax 946 REAL,SAVE :: wq(ip1jmp1,llm+1) 947 REAL newmasse 948 949 REAL,SAVE :: dzq(ip1jmp1,llm),dzqw(ip1jmp1,llm),adzqw(ip1jmp1,llm) 950 REAL dzqmax 944 951 REAL sigw 945 952 946 953 LOGICAL testcpu 947 954 SAVE testcpu 948 955 c$OMP THREADPRIVATE(testcpu) 949 956 REAL temps0,temps1,temps2,temps3,temps4,temps5,second 950 957 SAVE temps0,temps1,temps2,temps3,temps4,temps5 958 c$OMP THREADPRIVATE(temps0,temps1,temps2,temps3,temps4,temps5) 959 951 960 REAL SSUM 952 EXTERNAL SSUM, convflu 953 EXTERNAL filtreg 961 EXTERNAL SSUM 954 962 955 963 DATA testcpu/.false./ … … 967 975 ijb=ijb_x 968 976 ije=ije_x 969 977 978 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 970 979 DO l=2,llm 971 980 DO ij=ijb,ije … … 974 983 ENDDO 975 984 ENDDO 976 985 c$OMP END DO 986 987 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 977 988 DO l=2,llm-1 978 989 DO ij=ijb,ije … … 991 1002 ENDDO 992 1003 ENDDO 993 1004 c$OMP END DO NOWAIT 1005 1006 c$OMP MASTER 994 1007 DO ij=ijb,ije 995 1008 dzq(ij,1)=0. 996 1009 dzq(ij,llm)=0. 997 1010 ENDDO 998 1011 c$OMP END MASTER 1012 c$OMP BARRIER 999 1013 #ifdef BIDON 1000 1014 IF(testcpu) THEN … … 1008 1022 c calcul de - d( q * w )/ d(sigma) qu'on ajoute a dq pour calculer dq 1009 1023 1024 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1010 1025 DO l = 1,llm-1 1011 1026 do ij = ijb,ije … … 1019 1034 ENDDO 1020 1035 ENDDO 1021 1036 c$OMP END DO NOWAIT 1037 1038 c$OMP MASTER 1022 1039 DO ij=ijb,ije 1023 1040 wq(ij,llm+1)=0. 1024 1041 wq(ij,1)=0. 1025 1042 ENDDO 1026 1043 c$OMP END MASTER 1044 c$OMP BARRIER 1045 1046 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1027 1047 DO l=1,llm 1028 1048 DO ij=ijb,ije … … 1033 1053 ENDDO 1034 1054 ENDDO 1055 c$OMP END DO NOWAIT 1035 1056 1036 1057
Note: See TracChangeset
for help on using the changeset viewer.