- Timestamp:
- Feb 27, 2008, 4:19:37 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4_V3_patches/libf/dyn3dpar/leapfrog_p.F
r774 r916 6 6 #define IO_DEBUG 7 7 8 !#undef CPP_IOIPSL8 c#undef CPP_IOIPSL 9 9 10 10 SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0, … … 481 481 c$OMP MASTER 482 482 call VTb(VThallo) 483 c$OMP END MASTER 484 483 485 call Register_Hallo(ucov,ip1jmp1,llm,1,1,1,1,TestRequest) 484 486 call Register_Hallo(vcov,ip1jm,llm,1,1,1,1,TestRequest) … … 496 498 497 499 call SendRequest(TestRequest) 500 c$OMP BARRIER 498 501 call WaitRequest(TestRequest) 502 503 c$OMP MASTER 499 504 call VTe(VThallo) 500 505 c$OMP END MASTER 506 c$OMP BARRIER 501 507 502 508 if (debug) then … … 514 520 . reshape(q(:,:,j),(/iip1,jmp1,llm/))) 515 521 enddo 522 c$OMP BARRIER 516 523 endif 517 c$OMP END MASTER 518 c$OMP BARRIER 524 519 525 520 526 True_itau=True_itau+1 … … 531 537 call VTb(VTcaldyn) 532 538 c$OMP END MASTER 533 c$OMP BARRIER534 539 var_time=time+iday-day_ini 535 cc$OMP PARALLEL DEFAULT(SHARED) 536 cc$OMP+ PRIVATE(rdaym_ini,rdayvrai,ijb,ije, 537 cc$OMP+ tppn,tpn,tpps,tps) 538 539 cc$OMP+ SHARED(itau,ucov,vcov,teta,ps,masse,pk,pkf,phis , 540 cc$OMP+ phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, 541 cc$OMP+ time, iday,day_ini,forward,leapf, iapptrac, 542 cc$OMP+ q,dq,p,VTcaldyn,offline,dtvr,itau) 543 540 541 c$OMP BARRIER 542 ! CALL FTRACE_REGION_BEGIN("caldyn") 544 543 CALL caldyn_p 545 544 $ ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis , 546 545 $ phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time+iday-day_ini ) 547 546 548 ccc$OMP END PARALLEL 547 ! CALL FTRACE_REGION_END("caldyn") 549 548 c$OMP MASTER 550 549 call VTe(VTcaldyn) 551 550 c$OMP END MASTER 551 552 cc$OMP BARRIER 553 cc$OMP MASTER 552 554 c call WriteField_p('du',reshape(du,(/iip1,jmp1,llm/))) 553 555 c call WriteField_p('dv',reshape(dv,(/iip1,jjm,llm/))) … … 557 559 c call WriteField_p('pbaru',reshape(pbaru,(/iip1,jmp1,llm/))) 558 560 c call WriteField_p('pbarv',reshape(pbarv,(/iip1,jjm,llm/))) 561 c call WriteField_p('p',reshape(p,(/iip1,jmp1,llmp1/))) 562 c call WriteField_p('masse',reshape(masse,(/iip1,jmp1,llm/))) 563 c call WriteField_p('pk',reshape(pk,(/iip1,jmp1,llm/))) 564 cc$OMP END MASTER 559 565 560 566 c----------------------------------------------------------------------- … … 587 593 IF (offline) THEN 588 594 Cmaf stokage du flux de masse pour traceurs OFF-LINE 589 #undef CPP_IOIPSL 595 590 596 #ifdef CPP_IOIPSL 591 CALL fluxstokenc (pbaru,pbarv,masse,teta,phi,phis,597 CALL fluxstokenc_p(pbaru,pbarv,masse,teta,phi,phis, 592 598 . dtvr, itau) 593 599 #endif … … 662 668 c$OMP END MASTER 663 669 664 c$OMP BARRIER665 670 CALL pression_p ( ip1jmp1, ap, bp, ps, p ) 666 671 672 c$OMP BARRIER 673 667 674 CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta,pks, pk, pkf ) 675 c$OMP BARRIER 668 676 rdaym_ini = itau * dtvr / daysec 669 677 rdayvrai = rdaym_ini + day_ini … … 690 698 c$OMP MASTER 691 699 call VTb(VThallo) 700 c$OMP END MASTER 701 692 702 call SetTag(Request_physic,800) 693 703 … … 726 736 * jj_Nb_physic,2,2,Request_physic) 727 737 #endif 738 739 call SendRequest(Request_Physic) 740 c$OMP BARRIER 741 call WaitRequest(Request_Physic) 742 743 c$OMP BARRIER 744 c$OMP MASTER 728 745 call SetDistrib(jj_nb_Physic) 729 730 call SendRequest(Request_Physic)731 call WaitRequest(Request_Physic)732 733 746 call VTe(VThallo) 734 735 747 call VTb(VTphysiq) 736 748 c$OMP END MASTER … … 773 785 c$OMP MASTER 774 786 call SetDistrib(jj_nb_Physic_bis) 775 776 787 call VTb(VThallo) 788 c$OMP END MASTER 789 c$OMP BARRIER 777 790 778 791 call Register_Hallo(dufi,ip1jmp1,llm, … … 794 807 795 808 call SendRequest(Request_Physic) 809 c$OMP BARRIER 796 810 call WaitRequest(Request_Physic) 797 811 812 c$OMP BARRIER 813 c$OMP MASTER 798 814 call VTe(VThallo) 799 800 815 call SetDistrib(jj_nb_Physic) 801 816 c$OMP END MASTER 802 817 c$OMP BARRIER 803 ijb=ij_begin 818 819 ijb=ij_begin 804 820 if (.not. pole_nord) then 805 821 … … 842 858 c$OMP MASTER 843 859 call VTe(VTphysiq) 844 845 860 call VTb(VThallo) 861 c$OMP END MASTER 846 862 847 863 call SetTag(Request_physic,800) … … 878 894 879 895 call SendRequest(Request_Physic) 896 c$OMP BARRIER 880 897 call WaitRequest(Request_Physic) 881 898 882 call VTe(VThallo) 883 884 call SetDistrib(jj_Nb_caldyn) 899 c$OMP BARRIER 900 c$OMP MASTER 901 call VTe(VThallo) 902 call SetDistrib(jj_Nb_caldyn) 885 903 c$OMP END MASTER 886 904 c$OMP BARRIER … … 931 949 ENDIF 932 950 933 c$OMP BARRIER934 951 CALL pression_p ( ip1jmp1, ap, bp, ps, p ) 952 c$OMP BARRIER 953 954 935 955 CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 936 956 c$OMP BARRIER … … 956 976 957 977 c$OMP BARRIER 958 c$OMP MASTER 978 959 979 call Register_SwapFieldHallo(ucov,ucov,ip1jmp1,llm, 960 980 * jj_Nb_dissip,1,1,Request_dissip) … … 973 993 974 994 call SendRequest(Request_dissip) 995 c$OMP BARRIER 975 996 call WaitRequest(Request_dissip) 997 998 c$OMP BARRIER 999 c$OMP MASTER 976 1000 call SetDistrib(jj_Nb_dissip) 977 978 call VTe(VThallo) 979 1001 call VTe(VThallo) 980 1002 call VTb(VTdissipation) 981 982 1003 call start_timer(timer_dissip) 983 1004 c$OMP END MASTER … … 1016 1037 call suspend_timer(timer_dissip) 1017 1038 call VTb(VThallo) 1018 1039 c$OMP END MASTER 1019 1040 call Register_Hallo(ucov,ip1jmp1,llm,1,1,1,1,Request_Dissip) 1020 1041 call Register_Hallo(vcov,ip1jm,llm,1,1,1,1,Request_Dissip) 1021 1042 call SendRequest(Request_Dissip) 1043 c$OMP BARRIER 1022 1044 call WaitRequest(Request_Dissip) 1045 c$OMP MASTER 1023 1046 call VTe(VThallo) 1024 1047 call resume_timer(timer_dissip) … … 1115 1138 c$OMP MASTER 1116 1139 call VTe(VTdissipation) 1117 1118 1140 call stop_timer(timer_dissip) 1119 1120 1141 call VTb(VThallo) 1121 1142 c$OMP END MASTER 1122 1143 call Register_SwapField(ucov,ucov,ip1jmp1,llm, 1123 1144 * jj_Nb_caldyn,Request_dissip) … … 1136 1157 1137 1158 call SendRequest(Request_dissip) 1159 c$OMP BARRIER 1138 1160 call WaitRequest(Request_dissip) 1161 1162 c$OMP BARRIER 1163 c$OMP MASTER 1139 1164 call SetDistrib(jj_Nb_caldyn) 1140 1165 call VTe(VThallo) … … 1142 1167 print *,'fin dissipation' 1143 1168 c$OMP END MASTER 1169 c$OMP BARRIER 1144 1170 END IF 1145 1171 … … 1211 1237 call finalize_parallel 1212 1238 c$OMP END MASTER 1239 c$OMP BARRIER 1213 1240 RETURN 1214 1241 ENDIF … … 1244 1271 IF(MOD(itau,iperiod).EQ.0 .OR. itau.EQ.itaufin) THEN 1245 1272 c$OMP BARRIER 1246 c$OMP MASTER1247 1273 IF(itau.EQ.itaufin) THEN 1248 1274 iav=1 … … 1250 1276 iav=0 1251 1277 ENDIF 1252 #ifdef CPP_IOIPSL 1253 call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest) 1254 call SendRequest(TestRequest) 1255 call WaitRequest(TestRequest) 1256 1257 CALL writedynav_p(histaveid, nqmx, itau,vcov , 1258 , ucov,teta,pk,phi,q,masse,ps,phis) 1278 c#ifdef CPP_IOIPSL 1279 c call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest) 1280 c call SendRequest(TestRequest) 1281 cc$OMP BARRIER 1282 c call WaitRequest(TestRequest) 1283 cc$OMP MASTER 1284 c CALL writedynav_p(histaveid, nqmx, itau,vcov , 1285 c , ucov,teta,pk,phi,q,masse,ps,phis) 1286 cc$OMP END MASTER 1259 1287 c call bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav, 1260 1288 c , ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q) 1261 #endif 1262 c$OMP END MASTER 1289 c#endif 1263 1290 ENDIF 1264 1291 … … 1302 1329 enddo 1303 1330 1304 #ifdef CPP_IOIPSL1331 c#ifdef CPP_IOIPSL 1305 1332 1306 CALL writehist_p(histid,histvid, nqmx,itau,vcov,1307 s ucov,teta,phi,q,masse,ps,phis)1333 c CALL writehist_p(histid,histvid, nqmx,itau,vcov, 1334 c s ucov,teta,phi,q,masse,ps,phis) 1308 1335 c#else 1309 1336 c call Gather_Field(unat,ip1jmp1,llm,0) … … 1318 1345 c#include "write_grads_dyn.h" 1319 1346 c endif 1320 #endif1347 c#endif 1321 1348 c$OMP END MASTER 1322 1349 ENDIF … … 1402 1429 iav=0 1403 1430 ENDIF 1404 #ifdef CPP_IOIPSL 1405 c$OMP BARRIER 1406 c$OMP MASTER 1407 1408 call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest) 1409 call SendRequest(TestRequest) 1410 call WaitRequest(TestRequest) 1411 1412 CALL writedynav_p(histaveid, nqmx, itau,vcov , 1413 , ucov,teta,pk,phi,q,masse,ps,phis) 1431 c#ifdef CPP_IOIPSL 1432 cc$OMP BARRIER 1433 1434 c call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest) 1435 c call SendRequest(TestRequest) 1436 cc$OMP BARRIER 1437 c call WaitRequest(TestRequest) 1438 1439 cc$OMP MASTER 1440 c CALL writedynav_p(histaveid, nqmx, itau,vcov , 1441 c , ucov,teta,pk,phi,q,masse,ps,phis) 1414 1442 c call bilan_dyn_p (2,dtvr*iperiod,dtvr*day_step*periodav, 1415 1443 c , ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q) 1416 c $OMP END MASTER1417 #endif1444 cc$OMP END MASTER 1445 c#endif 1418 1446 ENDIF 1419 1447 … … 1451 1479 enddo 1452 1480 1453 #ifdef CPP_IOIPSL1454 1455 CALL writehist_p( histid, histvid, nqmx, itau,vcov ,1456 , ucov,teta,phi,q,masse,ps,phis)1481 c#ifdef CPP_IOIPSL 1482 1483 c CALL writehist_p( histid, histvid, nqmx, itau,vcov , 1484 c , ucov,teta,phi,q,masse,ps,phis) 1457 1485 c#else 1458 1486 c call Gather_Field(unat,ip1jmp1,llm,0) … … 1467 1495 c#include "write_grads_dyn.h" 1468 1496 c endif 1469 #endif1497 c#endif 1470 1498 1471 1499 c$OMP END MASTER
Note: See TracChangeset
for help on using the changeset viewer.