subroutine out_restart_pieces_newijpe(inpes_out,jnpes_out) ! starting from CHKOUT, modify extensively so that a restart file in pieces can be ! generated efficiently for arbitrary partitioning (so analysis can be ! run with different number of processes relative to the model, without the ! requirement to run expensive quilt jobs to always recover a monolithic restart file. INCLUDE "PARMETA.comm" INCLUDE "PARMTBL.comm" INCLUDE "parmsoil" INCLUDE "mpp.h" INCLUDE "mpif.h" include "my_comm.h" include "old_2_new_type.h" !#include "sp.h" !-------------------------------------------------------------------- ! P A R A M E T E R ! & (IMJM=IM*JM-JM/2,IMT=2*IM-1,JMT=JM/2+1,LB=2*IM+JM-3) !-------------------------------------------------------------------- ! P A R A M E T E R ! & (LM1=LM-1,LP1=LM+1,JAM=6+2*(JM-10) ! &, NRLX1=250,NRLX2=100) !-------------------------------------------------------------------- PARAMETER & (CAPA=0.285896) !-------------------------------------------------------------------- ! ! DECLARE VARIABLES. ! !-------------------------------------------------------------------- LOGICAL & RUN,FIRST,RESTRT,SIGMA,STDRD,MESO,ONHOUR,EXBC,NEST !-------------------------------------------------------------------- CHARACTER*2 FHR CHARACTER*8 OUTJOB CHARACTER*13 ASSIGN CHARACTER*4 ASTMRK,TMYY CHARACTER*15 SUBMIT CHARACTER*32 LABEL CHARACTER*80 LINE CHARACTER*1 LINE1(80) CHARACTER*4 RESTHR character(2) restihr EQUIVALENCE (LINE,LINE1) !-------------------------------------------------------------------- REAL & PSLP (IDIM1:IDIM2,JDIM1:JDIM2) & ,PDS (IDIM1:IDIM2,JDIM1:JDIM2) & ,FACTR (IDIM1:IDIM2,JDIM1:JDIM2) & ! ,SWTTC (IDIM1:IDIM2,JDIM1:JDIM2,LM) & ,TTND (IDIM1:IDIM2,JDIM1:JDIM2,LM) ! INTEGER & IKNTS(0:INPES*JNPES-1),IDISP(0:INPES*JNPES-1) ! REAL & ,ALLOCATABLE,DIMENSION(:,:,:) :: TEMPSOIL ! !-------------------------------------------------------------------- CHARACTER FINFIL*50,DONE*10 !-------------------------------------------------------------------- ! ! INCLUDE COMMON BLOCKS. ! !-------------------------------------------------------------------- INCLUDE "OUTFIL.comm" INCLUDE "CTLBLK.comm" INCLUDE "LOOPS.comm" INCLUDE "MASKS.comm" INCLUDE "MAPOT.comm" INCLUDE "VRBLS.comm" INCLUDE "PVRBLS.comm" INCLUDE "DYNAMD.comm" INCLUDE "PHYS2.comm" INCLUDE "BOCO.comm" INCLUDE "CNVCLD.comm" INCLUDE "ACMCLD.comm" INCLUDE "ACMCLH.comm" INCLUDE "ACMPRE.comm" INCLUDE "ACMRDL.comm" INCLUDE "ACMRDS.comm" INCLUDE "ACMSFC.comm" INCLUDE "SOIL.comm" INCLUDE "PRFHLD.comm" INCLUDE "CLDWTR.comm" INCLUDE "INDX.comm" INCLUDE "CONTIN.comm" INCLUDE "QFLX.comm" INCLUDE "PPTASM.comm" !-------------------------------------------------------------------- ! ! DECLARE EQUIVALENCES. ! !-------------------------------------------------------------------- ! E Q U I V A L E N C E ! & (TTND (1,1,1),SWTTC(1,1,1)) !-------------------------------------------------------------------- INTEGER & JSTAT(MPI_STATUS_SIZE) !-------------------------------------------------------------------- REAL(8) SUMT(LM), & SUMT_0(LM), & SUMT2(LM), & SUMT2_0(LM) REAL(8) STDEV,RMS,TMEAN REAL TMAX(LM), TMAX_0(LM), TMIN(LM), TMIN_0(LM) !-------------------------------------------------------------------- !*** !*** THE FOLLOWING ARE USED FOR TIMIMG PURPOSES ONLY !*** real*8 timef real nhb_tim,mpp_tim,init_tim common/timing/surfce_tim,nhb_tim,res_tim,exch_tim common/timchk/slp_tim,gath_tim,wrt_tim,prof_tim & , bcex_tim,stat_tim ! stuff for conversion to new partition (inpes_out,jnpes_out) type(old_2_new_cons) o_2_n integer(4) ips_out(0:inpes_out*jnpes_out-1),ipe_out(0:inpes_out*jnpes_out-1) integer(4) jps_out(0:inpes_out*jnpes_out-1),jpe_out(0:inpes_out*jnpes_out-1) real(4),allocatable::out_f1(:,:),out_f2(:,:),out_f3(:,:),out_f4(:,:),out_f5(:,:),out_f6(:,:),out_f7(:,:) real(4),allocatable::out_f8(:,:),out_f9(:,:),out_f10(:,:),out_f11(:,:) real(4),allocatable::out_f12(:,:),out_f13(:,:),out_f14(:,:),out_f15(:,:) real(4),allocatable::out_fsoil(:,:,:) integer(4),allocatable::iout_f1(:,:),iout_f2(:,:) !*********************************************************************** ! START CHKOUT HERE. !*********************************************************************** if(mype.eq.0) write(0,*)' at 1 in out_restart_pieces_newijpe' allocate(o_2_n%nsend(0:NPES-1)) allocate(o_2_n%ndsend(0:NPES)) allocate(o_2_n%nrecv(0:NPES-1)) allocate(o_2_n%ndrecv(0:NPES)) allocate(o_2_n%pe_of_injn_new(inpes_out,jnpes_out)) allocate(o_2_n%in_of_i_new(IM)) allocate(o_2_n%jn_of_j_new(JM)) ! compute new partition information if(mype.eq.0) write(0,*)' at 2 in out_restart_pieces_newijpe' call mppinit_new(inpes_out,jnpes_out,IM,JM, & o_2_n%ids, o_2_n%ide, o_2_n%jds, o_2_n%jde, & ips_out, ipe_out, jps_out, jpe_out, & o_2_n%pe_of_injn_new, o_2_n%in_of_i_new, o_2_n%jn_of_j_new ) o_2_n%npes_old=NPES o_2_n%mype=MYPE o_2_n%inpes_old=INPES o_2_n%jnpes_old=JNPES !rite(0,*)' after mppinit_new, mype,inpes_out,jnpes_out,im,jm=',mype,inpes_out,jnpes_out,im,jm !rite(0,*)' after mppinit_new, mype,o_2_n%ids,ide,jds,jde=',mype,o_2_n%ids,o_2_n%ide,o_2_n%jds,o_2_n%jde !rite(0,*)' after mppinit_new, mype,ips_out=',mype,ips_out !rite(0,*)' after mppinit_new, mype,ipe_out=',mype,ipe_out !rite(0,*)' after mppinit_new, mype,jps_out=',mype,jps_out !rite(0,*)' after mppinit_new, mype,jpe_out=',mype,jpe_out !rite(0,*)' after mppinit_new, mype,o_2_n%pe_of_injn_new=',mype,o_2_n%pe_of_injn_new ! do i=1,im ! write(0,*)' after mppinit_new, mype,o_2_n%in_of_i_new(',i,')=',mype,o_2_n%in_of_i_new(i) ! end do ! do j=1,jm ! write(0,*)' after mppinit_new, mype,o_2_n%jn_of_j_new(',j,')=',mype,o_2_n%jn_of_j_new(j) ! end do npes_out=inpes_out*jnpes_out loop_out_max=1+(npes_out-1)/npes idone_pes=-NPES do loop_out=1,loop_out_max ! begin big loop--generate NPES pieces at a time, until finished idone_pes=idone_pes+NPES mype_out=idone_pes+MYPE ! compute send and recv info for alltoallv commands if(mype.eq.0) write(0,*)' at 3 in out_restart_pieces_newijpe, loop_out,idone_pes=', & loop_out,idone_pes call get_sendrecv(o_2_n,MY_IS_GLB,MY_IE_GLB,MY_JS_GLB,MY_JE_GLB,NPES, & inpes_out,jnpes_out,idone_pes, & o_2_n%ids, o_2_n%ide, o_2_n%jds, o_2_n%jde, & o_2_n%pe_of_injn_new, o_2_n%in_of_i_new, o_2_n%jn_of_j_new , & o_2_n%nsend,o_2_n%ndsend,o_2_n%nrecv,o_2_n%ndrecv) !rite(0,*)' at 4 in out_restart_pieces_newijpe, mype,loop_out,idone_pes=', & ! mype,loop_out,idone_pes !rite(0,*)' after get_sendrecv, mype,loop_out,my_is,ie,js,je_glb,npes=', & ! mype,loop_out,my_is_glb,my_ie_glb,my_js_glb,my_je_glb,npes !rite(0,*)' after get_sendrecv, mype,inpes_out,jnpes_out,idone_pes=', & ! mype,inpes_out,jnpes_out,idone_pes !rite(0,*)' after get_sendrecv, mype,o_2_n%nsend=',mype,o_2_n%nsend !rite(0,*)' after get_sendrecv, mype,o_2_n%ndsend=',mype,o_2_n%ndsend !rite(0,*)' after get_sendrecv, mype,o_2_n%nrecv=',mype,o_2_n%nrecv !rite(0,*)' after get_sendrecv, mype,o_2_n%ndrecv=',mype,o_2_n%ndrecv ips_old=MY_IS_GLB ipe_old=MY_IE_GLB jps_old=MY_JS_GLB jpe_old=MY_JE_GLB ims_old=IDIM1-MY_IS_LOC+MY_IS_GLB ime_old=IDIM2-MY_IS_LOC+MY_IS_GLB jms_old=JDIM1-MY_JS_LOC+MY_JS_GLB jme_old=JDIM2-MY_JS_LOC+MY_JS_GLB ips_new=ips_out(min(mype_out,npes_out-1)) ipe_new=ipe_out(min(mype_out,npes_out-1)) jps_new=jps_out(min(mype_out,npes_out-1)) jpe_new=jpe_out(min(mype_out,npes_out-1)) allocate(out_f1(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f2(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f3(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f4(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f5(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f6(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f7(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f8(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f9(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f10(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f11(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f12(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f13(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f14(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_f15(ips_new:ipe_new,jps_new:jpe_new)) allocate(out_fsoil(ips_new:ipe_new,jps_new:jpe_new,nsoil)) allocate(iout_f1(ips_new:ipe_new,jps_new:jpe_new)) allocate(iout_f2(ips_new:ipe_new,jps_new:jpe_new)) !!!!!!!!!! eliminated everything before writing of restart file !*** !*** CREATE NAME FOR RESTART FILE. !*** ITAG=NTSD/TSPH+0.5 if(itag.eq.0) then !-------------- this is write of analysis restart file call get_environment_variable("restrtahr",restihr) ! call get_environment_variable("tmmarka",resthr) call get_environment_variable("tmmark",resthr) write(rstfil,1150)restihr,mype_out,resthr 1150 FORMAT('restrt',a2, & '.',I3.3,'.',a4) ELSE !--------------- guess file was only available in monolithic form, and !--------------- so is being written out as mini-files for re-reading !--------------- at end of analysis ! call get_environment_variable("tmmarkb",resthr) call get_environment_variable("tmmark",resthr) WRITE(RSTFIL,1155)ITAG,MYPE_out,RESTHR 1155 FORMAT('restrt',I2.2 & , '.',I3.3,'.',a4) ENDIF print*,'rstfil=',rstfil !*** !*** OPEN UNIT TO RESTART FILE. !*** LRSTRT=8 ! wrt_tim=0. btimw=timef() btim0=timef() ! if(mype_out.le.npes_out-1) then CLOSE(LRSTRT) OPEN(UNIT=LRSTRT,FILE=RSTFIL,FORM='UNFORMATTED',IOSTAT=IER) IF(IER.NE.0)WRITE(LIST,*)' LRSTRT OPEN UNIT ERROR IER=',IER end if !*** !*** WRITE DATE AND TIMESTEP INFORMATION TO RESTART FILE. !*** LABEL='OMEGA-ALPHA*DT/CP' if(mype_out.le.npes_out-1) WRITE(LRSTRT)RUN,IDAT,IHRST,NTSD,LABEL ! ENDIF !---------------------------------------------------------------------- !*** !*** BEGIN WRITING THE RESTRT FILE !*** !---------------------------------------------------------------------- ! if(mype.eq.0) write(0,*)' at 6 in out_restart_pieces_newijpe, loop_out,idone_pes=', & loop_out,idone_pes ! if(mype.eq.0) write(0,*)' before 1st old_to_new, mype,ims_old,ime_old,jms_old,jme_old=', & ! mype,ims_old,ime_old,jms_old,jme_old ! if(mype.eq.0) write(0,*)' before 1st old_to_new, mype,ips_new,ipe_new,jps_new,jpe_new=', & ! mype,ips_new,ipe_new,jps_new,jpe_new ! if(mype.eq.0) write(0,*)' before 1st old_to_new, pd(1,1),pd(1,myje),pd(myie,1),pd(myie,myje)=', & ! pd(1,1),pd(1,myje),pd(myie,1),pd(myie,myje) call old_to_new(PD,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(RES,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2 !---------------------------------------------------------------------- ! DO L=1,LM call old_to_new(OMGALF(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ENDDO ! rec46 ! LABEL = 'BND,PD,RES,T,Q,U,V,Q2,TTND,CWM,TRAIN,TCUCN' if(mype_out.le.npes_out-1) WRITE(LRSTRT)RUN,IDAT,IHRST,NTSD,LABEL & , FIRST,IOUT,NSHDE ! rec47 !---------------------------------------------------------------------- ! call old_to_new(FIS,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3 !CCCC !CCCC !CCCC BOUNDARY CONDITION WRITE CHANGED TO BLANK RECORD !CCCC !CCCC if(mype_out.le.npes_out-1) WRITE(LRSTRT) ! rec48 !---------------------------------------------------------------------- ! ttnd=0. DO L = 1,LM call old_to_new(T(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(Q(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(U(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(V(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(Q2(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(TTND(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(CWM(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(TRAIN(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(TCUCN(idim1,jdim1,L),o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ENDDO ! rec453 !---------------------------------------------------------------------- ! LABEL = 'MISC VARIABLES' !?????????????????????????????????/checked to here if(mype.eq.0) write(0,*)' at 7 in out_restart_pieces_newijpe, loop_out,idone_pes=', & loop_out,idone_pes call old_to_new(RSWIN,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(RSWOUT,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(TG,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(Z0,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(AKMS,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CZEN,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)RUN,IDAT,IHRST,NTSD,LABEL, & out_f1,out_f2,out_f3,out_f4,out_f5,out_f6 ! rec454 !---------------------------------------------------------------------- ! call old_to_new(AKHS,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(THS,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(QS,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(TWBS,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(QWBS,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(HBOT,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CFRACL,o_2_n,out_f7, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6,out_f7 ! rec455 !---------------------------------------------------------------------- ! call old_to_new(THZ0,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(QZ0,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(UZ0,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(VZ0,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(USTAR,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(HTOP,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CFRACM,o_2_n,out_f7, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6,out_f7 ! rec456 !---------------------------------------------------------------------- ! call old_to_new(SNO,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SI,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CLDEFI,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(RF,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) pslp=0. call old_to_new(PSLP,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CUPPT,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CFRACH,o_2_n,out_f7, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6,out_f7 ! rec457 !---------------------------------------------------------------------- ! if(mype.eq.0) write(0,*)' at 8 in out_restart_pieces_newijpe, loop_out,idone_pes=', & loop_out,idone_pes call old_to_new(SOILTB,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SFCEXC,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SMSTAV,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SMSTOT,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(GRNFLX,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(PCTSNO,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6 ! rec458 !---------------------------------------------------------------------- ! call old_to_new(RLWIN,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(RADOT,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CZMEAN,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SIGT4,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4 ! rec459 !---------------------------------------------------------------------- ! call old_to_new(U00,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call iold_to_new(LC,o_2_n,iout_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SR,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,ul,iout_f1,out_f2 ! rec460 !---------------------------------------------------------------------- ! LABEL = 'ACCUMULATED VARIABLES' call old_to_new(PREC,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ACPREC,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ACCLIQ,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CUPREC,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)RUN,IDAT,IHRST,NTSD,LABEL,out_f1,out_f2,out_f3,out_f4 ! rec461 !---------------------------------------------------------------------- ! if(mype.eq.0) write(0,*)' at 9 in out_restart_pieces_newijpe, loop_out,idone_pes=', & loop_out,idone_pes call old_to_new(ACFRCV,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call iold_to_new(NCFRCV,o_2_n,iout_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ACFRST,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call iold_to_new(NCFRST,o_2_n,iout_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,iout_f1,out_f2,iout_f2 ! rec462 !---------------------------------------------------------------------- ! call old_to_new(ACSNOW,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ACSNOM,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SSROFF,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(BGROFF,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4 ! rec463 !---------------------------------------------------------------------- ! call old_to_new(SFCSHX,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SFCLHX,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SUBSHX,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SNOPCX,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SFCUVX,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(SFCEVP,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(POTEVP,o_2_n,out_f7, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6,out_f7 ! rec464 !---------------------------------------------------------------------- ! call old_to_new(ASWIN,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ASWOUT,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ASWTOA,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ALWIN,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ALWOUT,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(ALWTOA,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6 ! if(mype_out.le.npes_out-1) WRITE(LRSTRT)ARDSW,ARDLW,ASRFC,AVRAIN,AVCNVC ! rec465 ! call old_to_new(TH10,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(Q10,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(U10,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(V10,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(TSHLTR,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(QSHLTR,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(PSHLTR,o_2_n,out_f7, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(TH30,o_2_n,out_f8, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(Q30,o_2_n,out_f9, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(U30,o_2_n,out_f10, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(V30,o_2_n,out_f11, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6,out_f7,out_f8,out_f9,out_f10,out_f11 ! rec466 !---------------------------------------------------------------------- ! if(mype.eq.0) write(0,*)' at 10 in out_restart_pieces_newijpe, loop_out,idone_pes=', & loop_out,idone_pes do N=1,NSOIL call old_to_new(SMC(idim1,jdim1,N),o_2_n,out_fsoil(ips_new:ipe_new,jps_new:jpe_new,N), & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) end do if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_fsoil ! rec467 !---------------------------------------------------------------------- ! call old_to_new(CMC,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1 ! rec468 !---------------------------------------------------------------------- ! do N=1,NSOIL call old_to_new(STC(idim1,jdim1,N),o_2_n,out_fsoil(ips_new:ipe_new,jps_new:jpe_new,N), & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) end do if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_fsoil ! do N=1,NSOIL call old_to_new(SH2O(idim1,jdim1,N),o_2_n,out_fsoil(ips_new:ipe_new,jps_new:jpe_new,N), & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) end do if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_fsoil call old_to_new(ALBEDO,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1 ! rec??? !---------------------------------------------------------------------- call old_to_new(FQU,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FQV,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(DQFLX,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FCU,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FCV,o_2_n,out_f5, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(DCFLX,o_2_n,out_f6, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FQU7,o_2_n,out_f7, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FQV7,o_2_n,out_f8, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(DQFLX7,o_2_n,out_f9, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FCU7,o_2_n,out_f10, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FCV7,o_2_n,out_f11, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(DCFLX7,o_2_n,out_f12, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(DQADV,o_2_n,out_f13, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FQNEV1,o_2_n,out_f14, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(FQSEV1,o_2_n,out_f15, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4,out_f5,out_f6, & out_f7,out_f8,out_f9,out_f10,out_f11,out_f12, & out_f13,out_f14,out_f15 ! rec??? !---------------------------------------------------------------------- call old_to_new(VAPINC,o_2_n,out_f1, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CLDINC,o_2_n,out_f2, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(VAPINC7,o_2_n,out_f3, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) call old_to_new(CLDINC7,o_2_n,out_f4, & ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3,out_f4 ! rec469 !---------------------------------------------------------------------- ! call old_to_new(POTFLX,o_2_n,out_f1, & ! ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) ! call old_to_new(TLMIN,o_2_n,out_f2, & ! ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) ! call old_to_new(TLMAX,o_2_n,out_f3, & ! ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) ! if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f1,out_f2,out_f3 & ! , ACUTIM,ARATIM,APHTIM & ! , NHEAT,NPHS,NCNVC,NPREC,NRDSW,NRDLW,NSRFC & ! , TPH0D,TLM0D,RESTRT ! rec470 !---------------------------------------------------------------------- ! if(mype.eq.0) write(0,*)' at 11 in out_restart_pieces_newijpe, loop_out,idone_pes=', & ! loop_out,idone_pes ! DO L=1,LM ! call old_to_new(RSWTT(idim1,jdim1,L),o_2_n,out_f4, & ! ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) ! if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! call old_to_new(RLWTT(idim1,jdim1,L),o_2_n,out_f4, & ! ims_old,ime_old,jms_old,jme_old,ips_new,ipe_new,jps_new,jpe_new) ! if(mype_out.le.npes_out-1) WRITE(LRSTRT)out_f4 ! ENDDO ! rec560 !---------------------------------------------------------------------- !*** !*** CLOSE THE RESTART FILE. !*** CLOSE(LRSTRT) deallocate(out_f1) deallocate(out_f2) deallocate(out_f3) deallocate(out_f4) deallocate(out_f5) deallocate(out_f6) deallocate(out_f7) deallocate(out_f8) deallocate(out_f9) deallocate(out_f10) deallocate(out_f11) deallocate(out_f12) deallocate(out_f13) deallocate(out_f14) deallocate(out_f15) deallocate(out_fsoil) deallocate(iout_f1) deallocate(iout_f2) deallocate(o_2_n%isend) deallocate(o_2_n%jsend) deallocate(o_2_n%irecv) deallocate(o_2_n%jrecv) end do ! end big loop , loop variable loop_max ! dif_tim=timef()-btim0 wrt_tim=wrt_tim+dif_tim call mpi_reduce(wrt_tim,wrt_tim_0,1,MPI_REAL,MPI_MAX,0, & my_comm,ierr) if(mype.eq.0)then write(6,*)' WROTE RESTRT FILE, time = ', wrt_tim_0*1.e-03 endif CALL MPI_BARRIER(my_comm,ISTAT) !*** !*** SEND SIGNAL THAT ALL TASKS HAVE FINISHED WRITING !*** IF(MYPE.EQ.0)THEN DONE='DONE' WRITE(FINFIL,1190)ITAG,RESTHR 1190 FORMAT('3dvrdone',I2.2,'.',A4) LFINFIL=91 CLOSE(LFINFIL) OPEN(UNIT=LFINFIL,FILE=FINFIL,FORM='UNFORMATTED',IOSTAT=IER) WRITE(LFINFIL)DONE CLOSE(LFINFIL) IF(IER.NE.0)WRITE(LIST,*)' SIGNAL SENT TO FINFIL: DONE' ENDIF !---------------------------------------------------------------------- !!!!!!!!!!!!!!!! eliminated everything from here to end of CHKOUT RETURN END