C&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SUBROUTINE READ_RESTRT C ****************************************************************** C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . C SUBPROGRAM: READ_RESTRT READ AND DISTRIBUTE RESTRT FILE C PRGRMMR: BLACK ORG: W/NP2 DATE: 98-10-22 C C ABSTRACT: C READ_RESTRT READS IN QUANTITIES FROM THE NFC FILE OR THE C RESTRT FILE AND DISTRIBUTES THEM TO THE OTHER NODES/PEs C C PROGRAM HISTORY LOG: C 97-??-?? MEYS - ORIGINATOR C 97-08-?? BLACK - REWROTE FOR BENCHMARK C 98-??-?? TUCCILLO - MODIFIED FOR SINGLE OR DOUBLE PRECISION C 98-10-23 BLACK - MODIFIED FOR NEWEST RESTART FILE C C USAGE: CALL READ_RESTRT FROM SUBROUTINE INIT C INPUT ARGUMENT LIST: C NONE C C OUTPUT ARGUMENT LIST: C NONE C C OUTPUT FILES: C NONE C C SUBPROGRAMS CALLED: C UNIQUE: DSTRB C IDSTRB C C LIBRARY: NONE C C COMMON BLOCKS: CTLBLK C LOOPS C MASKS C DYNAM C PHYS2 C MAPOT1 C VRBLS C CONTIN C PVRBLS C BOCO C ACMCLH C ACMCLD C ACMPRE C ACMRDL C ACMRDS C ACMSFC C CLDWTR C CNVCLD C SOIL C INDX C C ATTRIBUTES: C LANGUAGE: FORTRAN 90 C MACHINE : IBM SP C$$$ C----------------------------------------------------------------------- C INCLUDE/SET PARAMETERS. C----------------------------------------------------------------------- INCLUDE "PARMETA.comm" INCLUDE "PARMTBL.comm" INCLUDE "parmsoil" C----------------------------------------------------------------------- P A R A M E T E R & (D00=0.0,D50=.50,H1=1.0,G=9.8 &, CM1=2937.4,CM2=4.9283,CM3=23.5518,EPS=0.622 C CVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV C &, Q2INI=.01E0,EPSQ2=1.E-4,EPSQ=2.E-12,EPSWET=1.E-4 C &, Q2INI=1.0E0,EPSQ2=1.E-4,EPSQ=2.E-12,EPSWET=1.E-4 C &, Q2INI=.50E0,EPSQ2=1.E-4,EPSQ=2.E-12,EPSWET=1.E-4 C &, Q2INI=.01E0,EPSQ2=1.E-4,EPSQ=2.E-12,EPSWET=0.0E0 &, Q2INI=.50,EPSQ2=2.E-2,EPSQ=2.E-12,EPSWET=0.0 CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA &, Z0LAND=.10,Z0SEA=.001,FCM=.00001 &, DTR=0.1745329E-1,H360=360.0 &, H1905=190.5,H105=105.0) C C----------------------------------------------------------------------- ! P A R A M E T E R ! & (IMJM=IM*JM-JM/2,JMP1=JM+1,JAM=6+2*(JM-10),LB=2*IM+JM-3 ! &, LM1=LM-1,LP1=LM+1,IMT=2*IM-1) C C----------------------------------------------------------------------- C C DECLARE VARIABLES C C----------------------------------------------------------------------- L O G I C A L & RUN,RUNB,FIRST,RESTRT,SIGMA C----------------------------------------------------------------------- C H A R A C T E R *32 & LABEL C H A R A C T E R *40 & CONTRL,FILALL,FILMST,FILTMP,FILTKE,FILUNV &,FILCLD,FILRAD,FILSFC C----------------------------------------------------------------------- R E A L & PSLP(IDIM1:IDIM2,JDIM1:JDIM2) R E A L & TEMPSOIL(IM,JM,NSOIL) C----------------------------------------------------------------------- I N T E G E R & IDATB(3) C----------------------------------------------------------------------- C C INCLUDE COMMON BLOCKS. C INCLUDE "CTLBLK.comm" INCLUDE "LOOPS.comm" INCLUDE "MASKS.comm" INCLUDE "DYNAM.comm" INCLUDE "PHYS2.comm" INCLUDE "MAPOT1.comm" INCLUDE "VRBLS.comm" INCLUDE "CONTIN.comm" INCLUDE "PVRBLS.comm" INCLUDE "BOCO.comm" INCLUDE "ACMCLH.comm" INCLUDE "ACMCLD.comm" INCLUDE "ACMPRE.comm" INCLUDE "ACMRDL.comm" INCLUDE "ACMRDS.comm" INCLUDE "ACMSFC.comm" INCLUDE "CLDWTR.comm" INCLUDE "CNVCLD.comm" INCLUDE "SOIL.comm" INCLUDE "INDX.comm" INCLUDE "QFLX.comm" INCLUDE "PPTASM.comm" C C----------------------------------------------------------------------- INCLUDE "mpif.h" include "my_comm.h" INCLUDE "mpp.h" !#include "sp.h" C----------------------------------------------------------------------- INTEGER ISTAT(MPI_STATUS_SIZE) C !#ifdef DP_REAL ! LOGICAL*8 RUNX,FIRSTX ! INTEGER*8 IDATX(3),IHRSTX,NTSDX ! INTEGER*8 IOUTX,NSHDEX ! INTEGER*8 ITEMPX(IM,JM),ITEMP2X(IM,JM) !#endif C C*********************************************************************** C*********************************************************************** C C READ INITIAL CONDITIONS OR RESTART FILE. C FIRST, THE .NOT. RESTART FILE CASE. C IF(.NOT.RESTRT)THEN IF(MYPE.EQ.0)THEN !#ifdef DP_REAL ! READ(NFCST)RUNX,IDATX,IHRSTX,NTSDX ! RUN=RUNX ! IDAT=IDATX ! IHRST=IHRSTX ! NTSD=NTSDX !#else READ(NFCST)RUN,IDAT,IHRST,NTSD !#endif ELSE READ(NFCST)DUMMY ENDIF C CALL MPI_BCAST(RUN,1,MPI_LOGICAL,0,my_comm,IRTN) CALL MPI_BCAST(IDAT(1),3,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(IHRST,1,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(NTSD,1,MPI_INTEGER,0,my_comm,IRTN) C CALL MPI_BARRIER(my_comm,IRTN) C---------------------------------------------------------------------- C*** C*** DISTRIBUTE PD C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ PD' ENDIF C CALL DSTRB(TEMP1,PD,1,1,1) C C2345678901234567890123456789012345678901234567890123456789012345678901 C---------------------------------------------------------------------- C*** C*** DISTRIBUTE RES C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ RES' ENDIF C CALL DSTRB(TEMP1,RES,1,1,1) C---------------------------------------------------------------------- C*** C*** DISTRIBUTE FIS C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ FIS' ENDIF C CALL DSTRB(TEMP1,FIS,1,1,1) C---------------------------------------------------------------------- C*** C*** DISTRIBUTE U C*** DO L=1,LM IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ U' ENDIF CALL DSTRB(TEMP1,U,1,LM,L) ENDDO C---------------------------------------------------------------------- C*** C*** DISTRIBUTE V C*** DO L=1,LM IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ V' ENDIF CALL DSTRB(TEMP1,V,1,LM,L) ENDDO C---------------------------------------------------------------------- C*** C*** DISTRIBUTE T C*** DO L=1,LM IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ T' ENDIF CALL DSTRB(TEMP1,T,1,LM,L) ENDDO C---------------------------------------------------------------------- C*** C*** DISTRIBUTE Q C*** DO L=1,LM IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ Q' ENDIF CALL DSTRB(TEMP1,Q,1,LM,L) ENDDO C---------------------------------------------------------------------- C*** C*** DISTRIBUTE SI C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ SI' ENDIF C CALL DSTRB(TEMP1,SI,1,1,1) C---------------------------------------------------------------------- C*** C*** DISTRIBUTE SNO C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ SNO' ENDIF C CALL DSTRB(TEMP1,SNO,1,1,1) C---------------------------------------------------------------------- C*** C*** DISTRIBUTE SMC C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMPSOIL c WRITE(0,*)'READ SMC' ENDIF C CALL DSTRB(TEMPSOIL,SMC,NSOIL,NSOIL,NSOIL) C---------------------------------------------------------------------- C*** C*** C*** DISTRIBUTE CMC C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ CMC' ENDIF C CALL DSTRB(TEMP1,CMC,1,1,1) C---------------------------------------------------------------------- C*** C*** DISTRIBUTE STC C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMPSOIL c WRITE(0,*)'READ STC' ENDIF C CALL DSTRB(TEMPSOIL,STC,NSOIL,NSOIL,NSOIL) C------------------------------------------------------------------- C*** C*** DISTRIBUTE SH2O C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMPSOIL c WRITE(0,*)'READ SH2O' ENDIF C CALL DSTRB(TEMPSOIL,SH2O,NSOIL,NSOIL,NSOIL) C------------------------------------------------------------------- C*** C*** DISTRIBUTE ALBEDO C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ ALBEDO' ENDIF C CALL DSTRB(TEMP1,ALBEDO,1,1,1) C------------------------------------------------------------------- C IYR =IDAT(3)-1900 IMNTH=IDAT(1) IDAY =IDAT(2) IF(MYPE.EQ.0)WRITE(LIST,*)'INIT: READ INITIAL CONDITION FILE' C------------------------------------------------------------------- C------------------------------------------------------------------- C C SECOND, THE RESTART FILE CASE. C C------------------------------------------------------------------- C------------------------------------------------------------------- ELSE IF(MYPE.EQ.0)WRITE(LIST,*)'INIT: READ RESTART FILE' if(mype.eq.0)write(0,*)' at 1' IF(MYPE.EQ.0)THEN !#ifdef DP_REAL ! READ(NFCST)RUNX,IDATX,IHRSTX,NTSDX,LABEL ! RUN=RUNX ! IDAT=IDATX ! IHRST=IHRSTX ! NTSD=NTSDX !#else READ(NFCST)RUN,IDAT,IHRST,NTSD,LABEL !#endif READ(NFCST)PDOMG,RESOMG ENDIF if(mype.eq.0)write(0,*)' at 2' C CALL MPI_BCAST(RUN,1,MPI_LOGICAL,0,my_comm,IRTN) CALL MPI_BCAST(IDAT(1),3,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(IHRST,1,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(NTSD,1,MPI_INTEGER,0,my_comm,IRTN) c CALL MPI_BCAST(LABEL,1,MPI_CHARACTER,0,my_comm,IRTN) c CALL MPI_BCAST(PDOMG,1,MPI_REAL,0,my_comm,IRTN) c CALL MPI_BCAST(RESOMG,1,MPI_REAL,0,my_comm,IRTN) C C------------------------------------------------------------------- C*** C*** DISTRIBUTE OMGALF C*** if(mype.eq.0)write(0,*)' at 3' DO L=1,LM IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 c WRITE(0,*)'READ OMGALF' ENDIF CALL DSTRB(TEMP1,OMGALF,1,LM,L) ENDDO if(mype.eq.0)write(0,*)' at 4' C------------------------------------------------------------------- C IF(MYPE.EQ.0)WRITE(LIST,*)' READ ',LABEL C IF(MYPE.EQ.0)THEN !#ifdef DP_REAL ! READ(NFCST)RUNX,IDATX,IHRSTX,NTSDX,LABEL,FIRSTX,IOUTX,NSHDEX ! RUN=RUNX ! IDAT=IDATX ! IHRST=IHRSTX ! NTSD=NTSDX ! FIRST=FIRSTX ! IOUT=IOUTX ! NSHDE=NSHDEX !#else READ(NFCST)RUN,IDAT,IHRST,NTSD,LABEL,FIRST,IOUT,NSHDE !#endif ENDIF if(mype.eq.0)write(0,*)' at 5' C FIRST=.TRUE. C CALL MPI_BCAST(RUN,1,MPI_LOGICAL,0,my_comm,IRTN) CALL MPI_BCAST(IDAT(1),3,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(IHRST,1,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(NTSD,1,MPI_INTEGER,0,my_comm,IRTN) c CALL MPI_BCAST(LABEL,1,MPI_CHARACTER,0,my_comm,IRTN) CALL MPI_BCAST(FIRST,1,MPI_LOGICAL,0,my_comm,IRTN) CALL MPI_BCAST(IOUT,1,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(NSHDE,1,MPI_INTEGER,0,my_comm,IRTN) if(mype.eq.0)write(0,*)' at 6' C------------------------------------------------------------------- IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3 c WRITE(0,*)'READ PD' ENDIF C CALL DSTRB(TEMP1,PD,1,1,1) CALL DSTRB(TEMP2,RES,1,1,1) CALL DSTRB(TEMP3,FIS,1,1,1) if(mype.eq.0)write(0,*)' at 7' C------------------------------------------------------------------- C*** LBM2=LB*LM*2 IF(MYPE.EQ.0)THEN READ(NFCST)PDB,TB,QB,UB,VB ENDIF if(mype.eq.0)write(0,*)' at 8' C CALL MPI_BCAST(PDB(1,1),LB,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(PDB(1,2),LB,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(TB(1,1,1),LBM2,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(QB(1,1,1),LBM2,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(UB(1,1,1),LBM2,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(VB(1,1,1),LBM2,MPI_REAL,0,my_comm,IRTN) C------------------------------------------------------------------- C*** C*** PRIMARY 3-D VARIABLES C*** DO 300 L=1,LM if(mype.eq.0)write(0,*)' at 8.1,l=',l IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 ! T(I,J,L) READ(NFCST)TEMP2 ! Q(I,J,L) READ(NFCST)TEMP3 ! U(I,J,L) READ(NFCST)TEMP4 ! V(I,J,L) READ(NFCST)TEMP5 ! Q2(I,J,L) ENDIF C CALL DSTRB(TEMP1,T,1,LM,L) CALL DSTRB(TEMP2,Q,1,LM,L) CALL DSTRB(TEMP3,U,1,LM,L) CALL DSTRB(TEMP4,V,1,LM,L) CALL DSTRB(TEMP5,Q2,1,LM,L) C C DUMMY READ OF THE TOTAL RADIATIVE TEMPERATURE TENDENCIES C WHICH ARE NOT USED EXPLICITLY IN THE INTEGRATION C IF(MYPE.EQ.0)THEN READ(NFCST) C READ(NFCST)((TEMP6(I,J),I=1,IM),J=1,JM) ! CWM(I,J,L) READ(NFCST)((TEMP7(I,J),I=1,IM),J=1,JM) ! TRAIN(I,J,L) READ(NFCST)((TEMP8(I,J),I=1,IM),J=1,JM) ! TCUCN(I,J,L) C ENDIF C CALL DSTRB(TEMP6,CWM,1,LM,L) CALL DSTRB(TEMP7,TRAIN,1,LM,L) CALL DSTRB(TEMP8,TCUCN,1,LM,L) C 300 CONTINUE if(mype.eq.0)write(0,*)' at 9' C------------------------------------------------------------------- C IF(MYPE.EQ.0)WRITE(LIST,*)' READ ',LABEL C IF(MYPE.EQ.0)THEN !#ifdef DP_REAL ! READ(NFCST)RUNX,IDATX,IHRSTX,NTSDX,LABEL ! 1, TEMP1,TEMP2,TEMP3 ! 2, TEMP4,((TEMP5(I,J),I=1,IM),J=1,JM),TEMP6 ! RUN=RUNX ! IDAT=IDATX ! IHRST=IHRSTX ! NTSD=NTSDX !#else READ(NFCST)RUN,IDAT,IHRST,NTSD,LABEL 1, TEMP1,TEMP2,TEMP3 2, TEMP4,((TEMP5(I,J),I=1,IM),J=1,JM),TEMP6 !#endif ENDIF C CALL DSTRB(TEMP1,RSWIN,1,1,1) CALL DSTRB(TEMP2,RSWOUT,1,1,1) CALL DSTRB(TEMP3,TG,1,1,1) CALL DSTRB(TEMP4,Z0,1,1,1) CALL DSTRB(TEMP5,AKMS,1,1,1) CALL DSTRB(TEMP6,CZEN,1,1,1) C CALL MPI_BCAST(RUN,1,MPI_LOGICAL,0,my_comm,IRTN) CALL MPI_BCAST(IDAT(1),3,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(IHRST,1,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(NTSD,1,MPI_INTEGER,0,my_comm,IRTN) c CALL MPI_BCAST(LABEL,1,MPI_CHARACTER,0,my_comm,IRTN) C C------------------------------------------------------------------- IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,TEMP7 ENDIF if(mype.eq.0)write(0,*)' at 10' C CALL DSTRB(TEMP1,AKHS,1,1,1) CALL DSTRB(TEMP2,THS,1,1,1) CALL DSTRB(TEMP3,QS,1,1,1) CALL DSTRB(TEMP4,TWBS,1,1,1) CALL DSTRB(TEMP5,QWBS,1,1,1) CALL DSTRB(TEMP6,HBOT,1,1,1) CALL DSTRB(TEMP7,CFRACL,1,1,1) if(mype.eq.0)write(0,*)' at 11' C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2 1, ((TEMP3(I,J),I=1,IM),J=1,JM) 2, ((TEMP4(I,J),I=1,IM),J=1,JM) 3, TEMP5,TEMP6,TEMP7 ENDIF C CALL DSTRB(TEMP1,THZ0,1,1,1) CALL DSTRB(TEMP2,QZ0,1,1,1) CALL DSTRB(TEMP3,UZ0,1,1,1) CALL DSTRB(TEMP4,VZ0,1,1,1) CALL DSTRB(TEMP5,USTAR,1,1,1) CALL DSTRB(TEMP6,HTOP,1,1,1) CALL DSTRB(TEMP7,CFRACM,1,1,1) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,TEMP7 ENDIF if(mype.eq.0)write(0,*)' at 12' C CALL DSTRB(TEMP1,SNO,1,1,1) CALL DSTRB(TEMP2,SI,1,1,1) CALL DSTRB(TEMP3,CLDEFI,1,1,1) CALL DSTRB(TEMP4,RF,1,1,1) CALL DSTRB(TEMP5,PSLP,1,1,1) CALL DSTRB(TEMP6,CUPPT,1,1,1) CALL DSTRB(TEMP7,CFRACH,1,1,1) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6 ENDIF if(mype.eq.0)write(0,*)' at 13' C CALL DSTRB(TEMP1,SOILTB,1,1,1) CALL DSTRB(TEMP2,SFCEXC,1,1,1) CALL DSTRB(TEMP3,SMSTAV,1,1,1) CALL DSTRB(TEMP4,SMSTOT,1,1,1) CALL DSTRB(TEMP5,GRNFLX,1,1,1) CALL DSTRB(TEMP6,PCTSNO,1,1,1) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 1, ((TEMP2(I,J),I=1,IM),J=1,JM) 2, TEMP3,TEMP4 ENDIF C CALL DSTRB(TEMP1,RLWIN,1,1,1) CALL DSTRB(TEMP2,RADOT,1,1,1) CALL DSTRB(TEMP3,CZMEAN,1,1,1) CALL DSTRB(TEMP4,SIGT4,1,1,1) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN !#ifdef DP_REAL ! READ(NFCST)TEMP1,UL,ITEMPX,TEMP3 ! ITEMP=ITEMPX !#else READ(NFCST)TEMP1,UL,ITEMP,TEMP3 !#endif ENDIF C CALL DSTRB(TEMP1,U00,1,1,1) CALL IDSTRB(ITEMP,LC) CALL DSTRB(TEMP3,SR,1,1,1) CALL MPI_BCAST(UL(1),2*LM,MPI_REAL,0,my_comm,IRTN) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN !#ifdef DP_REAL ! READ(NFCST)RUNX,IDATX,IHRSTX,NTSDX,LABEL ! 1, TEMP1,TEMP2,TEMP3,TEMP4 ! RUN=RUNX ! IDAT=IDATX ! IHRST=IHRSTX ! NTSD=NTSDX !#else READ(NFCST)RUN,IDAT,IHRST,NTSD,LABEL 1, TEMP1,TEMP2,TEMP3,TEMP4 !#endif ENDIF if(mype.eq.0)write(0,*)' at 14' C CALL DSTRB(TEMP1,PREC,1,1,1) CALL DSTRB(TEMP2,ACPREC,1,1,1) CALL DSTRB(TEMP3,ACCLIQ,1,1,1) CALL DSTRB(TEMP4,CUPREC,1,1,1) CALL MPI_BCAST(RUN,1,MPI_LOGICAL,0,my_comm,IRTN) CALL MPI_BCAST(IDAT(1),3,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(IHRST,1,MPI_INTEGER,0,my_comm,IRTN) CALL MPI_BCAST(NTSD,1,MPI_INTEGER,0,my_comm,IRTN) c CALL MPI_BCAST(LABEL,1,MPI_CHARACTER,0,my_comm,IRTN) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN !#ifdef DP_REAL ! READ(NFCST)TEMP1,ITEMPX,TEMP3,ITEMP2X ! ITEMP=ITEMPX ! ITEMP2=ITEMP2X !#else READ(NFCST)TEMP1,ITEMP,TEMP3,ITEMP2 !#endif ENDIF C CALL DSTRB(TEMP1,ACFRCV,1,1,1) CALL IDSTRB(ITEMP,NCFRCV) CALL DSTRB(TEMP3,ACFRST,1,1,1) CALL IDSTRB(ITEMP2,NCFRST) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4 ENDIF C CALL DSTRB(TEMP1,ACSNOW,1,1,1) CALL DSTRB(TEMP2,ACSNOM,1,1,1) CALL DSTRB(TEMP3,SSROFF,1,1,1) CALL DSTRB(TEMP4,BGROFF,1,1,1) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6 1, TEMP7 ENDIF if(mype.eq.0)write(0,*)' at 15' C CALL DSTRB(TEMP1,SFCSHX,1,1,1) CALL DSTRB(TEMP2,SFCLHX,1,1,1) CALL DSTRB(TEMP3,SUBSHX,1,1,1) CALL DSTRB(TEMP4,SNOPCX,1,1,1) CALL DSTRB(TEMP5,SFCUVX,1,1,1) CALL DSTRB(TEMP6,SFCEVP,1,1,1) CALL DSTRB(TEMP7,POTEVP,1,1,1) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6 ENDIF C CALL DSTRB(TEMP1,ASWIN,1,1,1) CALL DSTRB(TEMP2,ASWOUT,1,1,1) CALL DSTRB(TEMP3,ASWTOA,1,1,1) CALL DSTRB(TEMP4,ALWIN,1,1,1) CALL DSTRB(TEMP5,ALWOUT,1,1,1) CALL DSTRB(TEMP6,ALWTOA,1,1,1) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)ARDSW,ARDLW,ASRFC,AVRAIN,AVCNVC ENDIF C CALL MPI_BCAST(ARDSW,1,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(ARDLW,1,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(ASRFC,1,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(AVRAIN,1,MPI_REAL,0,my_comm,IRTN) CALL MPI_BCAST(AVCNVC,1,MPI_REAL,0,my_comm,IRTN) C CALL MPI_BARRIER(my_comm,IRTN) C------------------------------------------------------------------- C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,TEMP7 1, TEMP8,TEMP9,TEMP10,TEMP11 ENDIF if(mype.eq.0)write(0,*)' at 16' C CALL DSTRB(TEMP1,TH10,1,1,1) CALL DSTRB(TEMP2,Q10,1,1,1) CALL DSTRB(TEMP3,U10,1,1,1) CALL DSTRB(TEMP4,V10,1,1,1) CALL DSTRB(TEMP5,TSHLTR,1,1,1) CALL DSTRB(TEMP6,QSHLTR,1,1,1) CALL DSTRB(TEMP7,PSHLTR,1,1,1) CALL DSTRB(TEMP8,TH30,1,1,1) CALL DSTRB(TEMP9,Q30,1,1,1) CALL DSTRB(TEMP10,U30,1,1,1) CALL DSTRB(TEMP11,V30,1,1,1) C------------------------------------------------------------------- C*** C*** DISTRIBUTE SMC C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMPSOIL ENDIF C CALL DSTRB(TEMPSOIL,SMC,NSOIL,NSOIL,NSOIL) C------------------------------------------------------------------- C*** C*** DISTRIBUTE CMC C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 ENDIF C CALL DSTRB(TEMP1,CMC,1,1,1) C------------------------------------------------------------------- C*** C*** DISTRIBUTE STC C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMPSOIL ENDIF C CALL DSTRB(TEMPSOIL,STC,NSOIL,NSOIL,NSOIL) C------------------------------------------------------------------- C*** C*** DISTRIBUTE SH2O C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMPSOIL ENDIF C CALL DSTRB(TEMPSOIL,SH2O,NSOIL,NSOIL,NSOIL) C------------------------------------------------------------------- C*** C*** DISTRIBUTE ALBEDO C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1 ENDIF C CALL DSTRB(TEMP1,ALBEDO,1,1,1) C---------------------------------------------------------------------- C*** C*** C*** DISTRIBUTE VERT. INT. FLX C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,TEMP7 1, TEMP8,TEMP9,TEMP10,TEMP11,TEMP12,TEMP13 2, TEMP14,TEMP15 c WRITE(0,*)'READ VERT. INT. FLX.' ENDIF C CALL DSTRB(TEMP1,FQU,1,1,1) CALL DSTRB(TEMP2,FQV,1,1,1) CALL DSTRB(TEMP3,DQFLX,1,1,1) CALL DSTRB(TEMP4,FCU,1,1,1) CALL DSTRB(TEMP5,FCV,1,1,1) CALL DSTRB(TEMP6,DCFLX,1,1,1) CALL DSTRB(TEMP7,FQU7,1,1,1) CALL DSTRB(TEMP8,FQV7,1,1,1) CALL DSTRB(TEMP9,DQFLX7,1,1,1) CALL DSTRB(TEMP10,FCU7,1,1,1) CALL DSTRB(TEMP11,FCV7,1,1,1) CALL DSTRB(TEMP12,DCFLX7,1,1,1) CALL DSTRB(TEMP13,DQADV,1,1,1) CALL DSTRB(TEMP14,FQNEV1,1,1,1) CALL DSTRB(TEMP15,FQSEV1,1,1,1) C---------------------------------------------------------------------- C*** C*** C*** DISTRIBUTE VERT. INT. MOISTURE INCREMENT DUE TO PREC. ASSIM. C*** IF(MYPE.EQ.0)THEN READ(NFCST)TEMP1,TEMP2,TEMP3,TEMP4 c WRITE(0,*)'READ VERT. INT. FLX.' ENDIF C CALL DSTRB(TEMP1,VAPINC,1,1,1) CALL DSTRB(TEMP2,CLDINC,1,1,1) CALL DSTRB(TEMP3,VAPINC7,1,1,1) CALL DSTRB(TEMP4,CLDINC7,1,1,1) C------------------------------------------------------------------- C c IF(MYPE.EQ.0)WRITE(LIST,*)' READ ',LABEL C C------------------------------------------------------------------- C*** CALL RADIATION TO OBTAIN THE SHORT AND LONGWAVE C*** TEMPERATURE TENDENCIES C*** C c CALL RADTN C ENDIF if(mype.eq.0)write(0,*)' at 17' C C DONE READING INITIAL CONDITIONS OR A RESTART FILE. C C C END OF SUBROUTINE READ_RESTRT C ! IF(MYPE.EQ.0)THEN ! WRITE(LIST,*)'INIT: EXIT READ_RESTRT' ! WRITE(LIST,*)' ' ! ENDIF C RETURN END