Changeset 764 for LMDZ4/trunk/libf/dyn3dpar/leapfrog_p.F
- Timestamp:
- Jun 4, 2007, 4:13:10 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/dyn3dpar/leapfrog_p.F
r630 r764 1 ! 1 ! 2 2 ! $Header$ 3 3 ! … … 6 6 #define IO_DEBUG 7 7 8 #undef CPP_IOIPSL8 !#undef CPP_IOIPSL 9 9 10 10 SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0, … … 19 19 USE Write_Field_p 20 20 USE vampir 21 22 #ifdef INCA23 USE transport_controls, ONLY : hadv_flg, mmt_adj24 #endif25 21 26 22 IMPLICIT NONE … … 75 71 76 72 #include "academic.h" 73 #include "clesphys.h" 74 #include "advtrac.h" 77 75 78 76 include 'mpif.h' … … 146 144 147 145 REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm) 148 #ifdef INCA _CH4146 #ifdef INCA 149 147 REAL :: flxw(ip1jmp1,llm) 150 148 #endif … … 160 158 REAL d_h_vcol, d_qt, d_qw, d_ql, d_ec 161 159 CHARACTER*15 ztit 162 INTEGER ip_ebil_dyn ! PRINT level for energy conserv. diag.163 SAVE ip_ebil_dyn164 DATA ip_ebil_dyn/0/160 ! INTEGER ip_ebil_dyn ! PRINT level for energy conserv. diag. 161 ! SAVE ip_ebil_dyn 162 ! DATA ip_ebil_dyn/0/ 165 163 c-jld 166 164 … … 183 181 PARAMETER (testita = 9) 184 182 185 c declaration li ées au parallelisme183 c declaration liees au parallelisme 186 184 INTEGER :: ierr 187 185 LOGICAL :: FirstCaldyn=.TRUE. … … 198 196 INTEGER :: iapptrac = 0 199 197 INTEGER :: AdjustCount = 0 200 198 INTEGER :: var_time 201 199 ItCount=0 202 200 … … 225 223 c Debut de l'integration temporelle: 226 224 c ---------------------------------- 227 c et du parall élisme !!225 c et du parallelisme !! 228 226 229 227 1 CONTINUE 230 228 231 call MPI_BARRIER( MPI_COMM_WORLD,ierr)229 call MPI_BARRIER(COMM_LMDZ,ierr) 232 230 233 231 #ifdef CPP_IOIPSL 234 232 if (ok_guide.and.(itaufin-itau-1)*dtvr.gt.21600) then 235 call guide (itau,ucov,vcov,teta,q,masse,ps)233 call guide_pp(itau,ucov,vcov,teta,q,masse,ps) 236 234 else 237 235 IF(prt_level>9)WRITE(*,*)'attention on ne guide pas les ', … … 289 287 cym CALL filtreg ( finvmaold ,jjp1, llm, -2,2, .TRUE., 1 ) 290 288 291 cym ne sert àrien289 cym ne sert a rien 292 290 cym call minmax(ijp1llm,q(:,:,3),zqmin,zqmax) 293 291 … … 295 293 296 294 ItCount=ItCount+1 297 if (MOD(ItCount,1 0000)==0) then295 if (MOD(ItCount,1)==1) then 298 296 debug=.true. 299 297 else … … 315 313 conser = .FALSE. 316 314 apdiss = .FALSE. 317 315 c idissip=1 318 316 IF( purmats ) THEN 319 317 IF( MOD(itau,iconser) .EQ.0.AND. forward ) conser = .TRUE. … … 420 418 & jj_Nb_caldyn,0,0,TestRequest) 421 419 420 do j=1,nqmx 421 call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm, 422 & jj_nb_caldyn,0,0,TestRequest) 423 enddo 424 422 425 call SetDistrib(jj_nb_caldyn) 423 426 call SendRequest(TestRequest) … … 469 472 call VTe(VThallo) 470 473 474 471 475 if (debug) then 472 473 476 call WriteField_p('ucov',reshape(ucov,(/iip1,jmp1,llm/))) 474 477 call WriteField_p('vcov',reshape(vcov,(/iip1,jjm,llm/))) … … 476 479 call WriteField_p('ps',reshape(ps,(/iip1,jmp1/))) 477 480 call WriteField_p('masse',reshape(masse,(/iip1,jmp1,llm/))) 481 call WriteField_p('pk',reshape(pk,(/iip1,jmp1,llm/))) 478 482 call WriteField_p('pks',reshape(pks,(/iip1,jmp1/))) 479 483 call WriteField_p('pkf',reshape(pkf,(/iip1,jmp1,llm/))) 480 484 call WriteField_p('phis',reshape(phis,(/iip1,jmp1/))) 481 cdo j=1,nqmx482 ccall WriteField_p('q'//trim(int2str(j)),483 c. reshape(q(:,:,j),(/iip1,jmp1,llm/)))484 cenddo485 do j=1,nqmx 486 call WriteField_p('q'//trim(int2str(j)), 487 . reshape(q(:,:,j),(/iip1,jmp1,llm/))) 488 enddo 485 489 endif 486 490 487 491 488 492 … … 497 501 498 502 call VTb(VTcaldyn) 499 503 504 var_time=time+iday-day_ini 505 OMP_CHUNK=5 506 c$OMP PARALLEL DEFAULT(SHARED) 507 cc$OMP+ SHARED(itau,ucov,vcov,teta,ps,masse,pk,pkf,phis , 508 cc$OMP+ phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, 509 cc$OMP+ var_time) 510 500 511 CALL caldyn_p 501 512 $ ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis , 502 513 $ phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time+iday-day_ini ) 503 514 515 c$OMP END PARALLEL 504 516 call VTe(VTcaldyn) 505 517 c call WriteField_p('du',reshape(du,(/iip1,jmp1,llm/))) … … 516 528 517 529 IF( forward. OR . leapf ) THEN 518 519 c 520 #ifdef INCA _CH4530 c$OMP PARALLEL DEFAULT(SHARED) 531 c 532 #ifdef INCA 521 533 CALL caladvtrac_p(q,pbaru,pbarv, 522 534 * p, masse, dq, teta, 523 535 . flxw, 524 . pk, 525 . mmt_adj, 526 . hadv_flg,iapptrac) 536 . pk, 537 . iapptrac) 527 538 #else 528 539 CALL caladvtrac_p(q,pbaru,pbarv, … … 530 541 . pk,iapptrac) 531 542 #endif 543 544 c$OMP END PARALLEL 545 532 546 c do j=1,nqmx 533 547 c call WriteField_p('q'//trim(int2str(j)), 534 c . reshape(q(:,:,j),(/iip1,jmp1,llm/)))548 c . reshape(q(:,:,j),(/iip1,jmp1,llm/))) 535 549 c call WriteField_p('dq'//trim(int2str(j)), 536 550 c . reshape(dq(:,:,j),(/iip1,jmp1,llm/))) 537 551 c enddo 538 539 IF (offline) THEN 552 IF (offline) THEN 540 553 Cmaf stokage du flux de masse pour traceurs OFF-LINE 541 554 #undef CPP_IOIPSL 542 555 #ifdef CPP_IOIPSL 543 556 CALL fluxstokenc(pbaru,pbarv,masse,teta,phi,phis, … … 556 569 557 570 call VTb(VTintegre) 571 c call WriteField_p('ucovm1',reshape(ucovm1,(/iip1,jmp1,llm/))) 572 c call WriteField_p('vcovm1',reshape(vcovm1,(/iip1,jjm,llm/))) 573 c call WriteField_p('tetam1',reshape(tetam1,(/iip1,jmp1,llm/))) 574 c call WriteField_p('psm1',reshape(psm1,(/iip1,jmp1/))) 575 c call WriteField_p('ucov',reshape(ucov,(/iip1,jmp1,llm/))) 576 c call WriteField_p('vcov',reshape(vcov,(/iip1,jjm,llm/))) 577 c call WriteField_p('teta',reshape(teta,(/iip1,jmp1,llm/))) 578 c call WriteField_p('ps',reshape(ps,(/iip1,jmp1/))) 579 c$OMP PARALLEL DEFAULT(SHARED) 558 580 CALL integrd_p ( 2,vcovm1,ucovm1,tetam1,psm1,massem1 , 559 581 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis , 560 582 $ finvmaold ) 561 583 584 c$OMP END PARALLEL 585 c call WriteField_p('ucovm1',reshape(ucovm1,(/iip1,jmp1,llm/))) 586 c call WriteField_p('vcovm1',reshape(vcovm1,(/iip1,jjm,llm/))) 587 c call WriteField_p('tetam1',reshape(tetam1,(/iip1,jmp1,llm/))) 588 c call WriteField_p('psm1',reshape(psm1,(/iip1,jmp1/))) 589 c call WriteField_p('ucov',reshape(ucov,(/iip1,jmp1,llm/))) 590 c call WriteField_p('vcov',reshape(vcov,(/iip1,jjm,llm/))) 591 c call WriteField_p('teta',reshape(teta,(/iip1,jmp1,llm/))) 592 c call WriteField_p('dteta',reshape(dteta,(/iip1,jmp1,llm/))) 593 594 c call WriteField_p('ps',reshape(ps,(/iip1,jmp1/))) 595 562 596 call VTe(VTintegre) 597 563 598 c .P.Le Van (26/04/94 ajout de finvpold dans l'appel d'integrd) 564 599 c … … 579 614 c ....... Ajout P.Le Van ( 17/04/96 ) ........... 580 615 c 616 c$OMP PARALLEL DEFAULT(SHARED) 617 c$OMP+ PRIVATE(rdaym_ini,rdayvrai,ijb,ije) 618 619 c$OMP MASTER 581 620 call suspend_timer(timer_caldyn) 582 621 print*,'Entree dans la physique : Iteration No ',true_itau 622 c$OMP END MASTER 623 583 624 CALL pression_p ( ip1jmp1, ap, bp, ps, p ) 625 c$OMP BARRIER 626 627 c$OMP MASTER 584 628 CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta,pks, pk, pkf ) 585 629 c$OMP END MASTER 630 c$OMP BARRIER 586 631 rdaym_ini = itau * dtvr / daysec 587 632 rdayvrai = rdaym_ini + day_ini … … 598 643 c+jld 599 644 600 c Diagnostique de conservation de l' énergie : initialisation645 c Diagnostique de conservation de l'energie : initialisation 601 646 IF (ip_ebil_dyn.ge.1 ) THEN 602 647 ztit='bil dyn' … … 605 650 ENDIF 606 651 c-jld 652 c$OMP BARRIER 653 c$OMP MASTER 607 654 call VTb(VThallo) 608 655 call SetTag(Request_physic,800) … … 638 685 * jj_Nb_physic,2,2,Request_physic) 639 686 enddo 640 #ifdef INCA _CH4687 #ifdef INCA 641 688 call Register_SwapFieldHallo(flxw,flxw,ip1jmp1,llm, 642 689 * jj_Nb_physic,2,2,Request_physic) … … 650 697 651 698 call VTb(VTphysiq) 699 c$OMP END MASTER 700 c$OMP BARRIER 701 702 cc$OMP MASTER 703 c call WriteField_p('ucovfi',reshape(ucov,(/iip1,jmp1,llm/))) 704 c call WriteField_p('vcovfi',reshape(vcov,(/iip1,jjm,llm/))) 705 c call WriteField_p('tetafi',reshape(teta,(/iip1,jmp1,llm/))) 706 c call WriteField_p('pfi',reshape(p,(/iip1,jmp1,llmp1/))) 707 c call WriteField_p('pkfi',reshape(pk,(/iip1,jmp1,llm/))) 708 cc$OMP END MASTER 709 cc$OMP BARRIER 710 652 711 CALL calfis_p( nq, lafin ,rdayvrai,time , 653 712 $ ucov,vcov,teta,q,masse,ps,p,pk,phis,phi , 654 713 $ du,dv,dteta,dq,w, 655 #ifdef INCA _CH4714 #ifdef INCA 656 715 $ flxw, 657 716 #endif 658 717 $ clesphy0, dufi,dvfi,dtetafi,dqfi,dpfi ) 659 660 718 ijb=ij_begin 661 719 ije=ij_end 662 720 if ( .not. pole_nord) then 663 dufi_tmp(1:iip1,:) = dufi(ijb:ijb+iim,:) 664 dvfi_tmp(1:iip1,:) = dvfi(ijb:ijb+iim,:) 665 dtetafi_tmp(1:iip1,:)= dtetafi(ijb:ijb+iim,:) 721 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 722 DO l=1,llm 723 dufi_tmp(1:iip1,l) = dufi(ijb:ijb+iim,l) 724 dvfi_tmp(1:iip1,l) = dvfi(ijb:ijb+iim,l) 725 dtetafi_tmp(1:iip1,l)= dtetafi(ijb:ijb+iim,l) 726 dqfi_tmp(1:iip1,l,:) = dqfi(ijb:ijb+iim,l,:) 727 ENDDO 728 c$OMP END DO NOWAIT 729 730 c$OMP MASTER 666 731 dpfi_tmp(1:iip1) = dpfi(ijb:ijb+iim) 667 dqfi_tmp(1:iip1,:,:) = dqfi(ijb:ijb+iim,:,:) 668 endif 669 732 c$OMP END MASTER 733 endif 734 735 c$OMP BARRIER 736 c$OMP MASTER 670 737 call SetDistrib(jj_nb_Physic_bis) 671 738 … … 695 762 696 763 call SetDistrib(jj_nb_Physic) 697 764 c$OMP END MASTER 765 c$OMP BARRIER 698 766 ijb=ij_begin 699 767 if (.not. pole_nord) then 700 dufi(ijb:ijb+iim,:) = dufi(ijb:ijb+iim,:)+dufi_tmp(1:iip1,:) 701 dvfi(ijb:ijb+iim,:) = dvfi(ijb:ijb+iim,:)+dvfi_tmp(1:iip1,:) 702 dtetafi(ijb:ijb+iim,:) = dtetafi(ijb:ijb+iim,:) 703 & +dtetafi_tmp(1:iip1,:) 768 769 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 770 DO l=1,llm 771 dufi(ijb:ijb+iim,l) = dufi(ijb:ijb+iim,l)+dufi_tmp(1:iip1,l) 772 dvfi(ijb:ijb+iim,l) = dvfi(ijb:ijb+iim,l)+dvfi_tmp(1:iip1,l) 773 dtetafi(ijb:ijb+iim,l) = dtetafi(ijb:ijb+iim,l) 774 & +dtetafi_tmp(1:iip1,l) 775 dqfi(ijb:ijb+iim,l,:) = dqfi(ijb:ijb+iim,l,:) 776 & + dqfi_tmp(1:iip1,l,:) 777 ENDDO 778 c$OMP END DO NOWAIT 779 780 c$OMP MASTER 704 781 dpfi(ijb:ijb+iim) = dpfi(ijb:ijb+iim)+ dpfi_tmp(1:iip1) 705 dqfi(ijb:ijb+iim,:,:) = dqfi(ijb:ijb+iim,:,:) 706 & + dqfi_tmp(1:iip1,:,:) 782 c$OMP END MASTER 783 707 784 endif 708 785 c$OMP BARRIER 786 cc$OMP MASTER 709 787 c call WriteField_p('dufi',reshape(dufi,(/iip1,jmp1,llm/))) 710 788 c call WriteField_p('dvfi',reshape(dvfi,(/iip1,jjm,llm/))) 711 789 c call WriteField_p('dtetafi',reshape(dtetafi,(/iip1,jmp1,llm/))) 712 790 c call WriteField_p('dpfi',reshape(dpfi,(/iip1,jmp1/))) 791 cc$OMP END MASTER 713 792 c 714 793 c do j=1,nqmx … … 723 802 $ dufi, dvfi, dtetafi , dqfi ,dpfi ) 724 803 804 c$OMP BARRIER 805 c$OMP MASTER 725 806 call VTe(VTphysiq) 726 807 … … 765 846 766 847 call SetDistrib(jj_Nb_caldyn) 767 c 768 c Diagnostique de conservation de l'énergie : difference 848 c$OMP END MASTER 849 c$OMP BARRIER 850 c 851 c Diagnostique de conservation de l'energie : difference 769 852 IF (ip_ebil_dyn.ge.1 ) THEN 770 853 ztit='bil phys' … … 772 855 e , ucov , vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2)) 773 856 ENDIF 774 775 if (debug) then 776 call WriteField_p('ucovfi',reshape(ucov,(/iip1,jmp1,llm/))) 777 call WriteField_p('vcovfi',reshape(vcov,(/iip1,jjm,llm/))) 778 call WriteField_p('tetafi',reshape(teta,(/iip1,jmp1,llm/))) 779 endif 857 858 cc$OMP MASTER 859 c if (debug) then 860 c call WriteField_p('ucovfi',reshape(ucov,(/iip1,jmp1,llm/))) 861 c call WriteField_p('vcovfi',reshape(vcov,(/iip1,jjm,llm/))) 862 c call WriteField_p('tetafi',reshape(teta,(/iip1,jmp1,llm/))) 863 c endif 864 cc$OMP END MASTER 865 780 866 #else 781 867 … … 799 885 800 886 c-jld 887 c$OMP MASTER 801 888 call resume_timer(timer_caldyn) 802 889 if (FirstPhysic) then … … 804 891 FirstPhysic=.false. 805 892 endif 893 c$OMP END MASTER 894 c$OMP END PARALLEL 806 895 ENDIF 807 896 … … 815 904 816 905 IF(apdiss) THEN 906 c$OMP PARALLEL DEFAULT(SHARED) 907 c$OMP+ PRIVATE(ijb,ije,tppn,tpn,tpps,tps) 908 c$OMP MASTER 817 909 call suspend_timer(timer_caldyn) 818 910 … … 822 914 823 915 call VTb(VThallo) 824 916 c$OMP END MASTER 917 918 c$OMP BARRIER 919 c$OMP MASTER 825 920 call Register_SwapFieldHallo(ucov,ucov,ip1jmp1,llm, 826 921 * jj_Nb_dissip,1,1,Request_dissip) … … 847 942 848 943 call start_timer(timer_dissip) 944 c$OMP END MASTER 945 c$OMP BARRIER 946 849 947 call covcont_p(llm,ucov,vcov,ucont,vcont) 850 948 call enercin_p(vcov,ucov,vcont,ucont,ecin0) … … 853 951 854 952 CALL dissip_p(vcov,ucov,teta,p,dvdis,dudis,dtetadis) 855 953 856 954 ijb=ij_begin 857 955 ije=ij_end 858 859 ucov(ijb:ije,1:llm)=ucov(ijb:ije,1:llm)+dudis(ijb:ije,1:llm) 860 956 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 957 DO l=1,llm 958 ucov(ijb:ije,l)=ucov(ijb:ije,l)+dudis(ijb:ije,l) 959 ENDDO 960 c$OMP END DO NOWAIT 861 961 if (pole_sud) ije=ije-iip1 862 vcov(ijb:ije,1:llm)=vcov(ijb:ije,1:llm)+dvdis(ijb:ije,1:llm) 962 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 963 DO l=1,llm 964 vcov(ijb:ije,l)=vcov(ijb:ije,l)+dvdis(ijb:ije,l) 965 ENDDO 966 c$OMP END DO NOWAIT 967 863 968 c teta=teta+dtetadis 864 969 … … 868 973 C On rajoute la tendance due a la transform. Ec -> E therm. cree 869 974 C lors de la dissipation 975 c$OMP BARRIER 976 c$OMP MASTER 870 977 call suspend_timer(timer_dissip) 871 978 call VTb(VThallo) … … 877 984 call VTe(VThallo) 878 985 call resume_timer(timer_dissip) 879 986 c$OMP END MASTER 987 c$OMP BARRIER 880 988 call covcont_p(llm,ucov,vcov,ucont,vcont) 881 989 call enercin_p(vcov,ucov,vcont,ucont,ecin) … … 883 991 ijb=ij_begin 884 992 ije=ij_end 885 993 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 886 994 do l=1,llm 887 995 do ij=ijb,ije … … 890 998 enddo 891 999 enddo 892 1000 c$OMP END DO NOWAIT 893 1001 endif 894 1002 895 1003 ijb=ij_begin 896 1004 ije=ij_end 897 1005 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 898 1006 do l=1,llm 899 1007 do ij=ijb,ije … … 901 1009 enddo 902 1010 enddo 903 1011 c$OMP END DO NOWAIT 904 1012 c------------------------------------------------------------------------ 905 1013 … … 913 1021 914 1022 if (pole_nord) then 1023 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 915 1024 DO l = 1, llm 916 1025 DO ij = 1,iim … … 923 1032 ENDDO 924 1033 ENDDO 925 1034 c$OMP END DO NOWAIT 1035 1036 c$OMP MASTER 926 1037 DO ij = 1,iim 927 1038 tppn(ij) = aire( ij ) * ps ( ij ) … … 932 1043 ps( ij ) = tpn 933 1044 ENDDO 1045 c$OMP END MASTER 934 1046 endif 935 1047 936 1048 if (pole_sud) then 1049 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 937 1050 DO l = 1, llm 938 1051 DO ij = 1,iim … … 945 1058 ENDDO 946 1059 ENDDO 947 1060 c$OMP END DO NOWAIT 1061 1062 c$OMP MASTER 948 1063 DO ij = 1,iim 949 1064 tpps(ij) = aire(ij+ip1jm) * ps (ij+ip1jm) … … 954 1069 ps(ij+ip1jm) = tps 955 1070 ENDDO 1071 c$OMP END MASTER 956 1072 endif 957 1073 1074 1075 c$OMP BARRIER 1076 c$OMP MASTER 958 1077 call VTe(VTdissipation) 959 1078 … … 983 1102 call resume_timer(timer_caldyn) 984 1103 print *,'fin dissipation' 1104 c$OMP END MASTER 1105 c$OMP END PARALLEL 985 1106 END IF 986 1107 … … 1066 1187 1067 1188 IF( itau. EQ. itaufinp1 ) then 1068 c$$$ write(79,*) 'ucov',ucov 1069 c$$$ write(80,*) 'vcov',vcov 1070 c$$$ write(81,*) 'teta',teta 1071 c$$$ write(82,*) 'ps',ps 1072 c$$$ write(83,*) 'q',q 1073 c$$$ WRITE(85,*) 'q1 = ',q(:,:,1) 1074 c$$$ WRITE(86,*) 'q3 = ',q(:,:,3) 1075 1189 1190 call finalize_parallel 1076 1191 abort_message = 'Simulation finished' 1077 1078 1192 call abort_gcm(modname,abort_message,0) 1079 1193 ENDIF … … 1161 1275 1162 1276 1163 #ifdef CPP_IOIPSL1277 c#ifdef CPP_IOIPSL 1164 1278 CALL dynredem1_p("restart.nc",0.0, 1165 1279 , vcov,ucov,teta,q,nqmx,masse,ps) 1166 #endif1280 c#endif 1167 1281 1168 1282 CLOSE(99) … … 1218 1332 forward = .FALSE. 1219 1333 IF( itau. EQ. itaufinp1 ) then 1334 call finalize_parallel 1220 1335 abort_message = 'Simulation finished' 1221 1336 call abort_gcm(modname,abort_message,0) … … 1296 1411 ENDIF 1297 1412 1298 #ifdef CPP_IOIPSL1413 c#ifdef CPP_IOIPSL 1299 1414 IF(itau.EQ.itaufin) 1300 1415 . CALL dynredem1_p("restart.nc",0.0, 1301 1416 . vcov,ucov,teta,q,nqmx,masse,ps) 1302 #endif1417 c#endif 1303 1418 1304 1419 forward = .TRUE. … … 1309 1424 END IF 1310 1425 1311 STOP 1426 call finalize_parallel 1427 STOP 1312 1428 END
Note: See TracChangeset
for help on using the changeset viewer.