SUBROUTINE SURFCE2(IMOUT,JMOUT) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . C SUBPROGRAM: SURFCE2 POST SURFACE BASED FIELDS C PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-21 C C ABSTRACT: C THIS ROUTINE POSTS SURFACE BASED FIELDS. C . C C PROGRAM HISTORY LOG: C 92-12-21 RUSS TREADON C 94-08-04 MICHAEL BALDWIN - ADDED OUTPUT OF SFC FLUXES OF C SENS AND LATENT HEAT AND THETA AT Z0 C 94-11-04 MICHAEL BALDWIN - ADDED INSTANTANEOUS PRECIP TYPE C 96-03-19 MICHAEL BALDWIN - CHANGE SOIL PARAMETERS C 96-09-25 MICHAEL BALDWIN - ADDED SNOW RATIO FROM EXPLICIT SCHEME C 96-10-17 MICHAEL BALDWIN - CHANGED SFCEVP,POTEVP TO ACCUM. TOOK C OUT -PTRACE FOR ACSNOW,SSROFF,BGROFF. C 97-04-23 MICHAEL BALDWIN - TOOK OUT -PTRACE FOR ALL PRECIP FIELDS C 98-06-12 T BLACK - CONVERSION FROM 1-D TO 2-D C 98-07-17 MIKE BALDWIN - REMOVED LABL84 C 98-08-18 MIKE BALDWIN - COMPUTE RH OVER ICE C 98-12-22 MIKE BALDWIN - BACK OUT RH OVER ICE C 00-01-04 JIM TUCCILLO - MPI VERSION C 03-01-15 H CHUANG - ADDED VEG AND SOIL TYPES C 03-01-17 CHUANG AND EK- ADDED CANOPY CONDUCTANCE, SNOW COVER AND DEPTH, C AND OTHER LAND SURFACE VARIABLES C 03-02-20 DUSAN JOVIC - ADDED 30m T,Q,WIND AND INTEGRATED MOISTURE FLUXES C C USAGE: CALL SURFCE2(IMOUT,JMOUT) C INPUT ARGUMENT LIST: C IMOUT - FIRST DIMENSION OF OUTPUT GRID. C JMOUT - SECOND DIMENSION OF OUTPUT GRID. C C OUTPUT ARGUMENT LIST: C C OUTPUT FILES: C NONE C C SUBPROGRAMS CALLED: C UTILITIES: C E2OUT - INTERPOLATION/SMOOTHING ROUTINE. C OUTPUT - DRIVER FOR OUTPUT ROUTINES. C BOUND - ENFORCE LOWER AND UPPER LIMITS ON ARRAY ELEMENTS. C SCLFLD - SCALE ARRAY ELEMENTS BY CONSTANT. C SHELTR2 - COMPUTE 2M TEMPERATURE AND SPECIFIC HUMIDITY. C ANEMLV6 - COMPUTE 10M U AND V WINDS. C DEWPOINT - COMPUTE DEWPOINT TEMPERATURE. C CALDRG - COMPUTE SURFACE LAYER DRAG COEFFICENT C CALTAU - COMPUTE SURFACE LAYER U AND V WIND STRESSES. C C LIBRARY: C COMMON - CTLBLK C RQSTFLD C EXTRA C VRBLS C MAPOT C MASKS C PVRBLS C CLDWTR C LOOPS C PHYS2 C SRFDSP C CNVCLD C LLGRDS C SOIL C ACMSFC C ACMPRE C IOUNIT C C ATTRIBUTES: C LANGUAGE: FORTRAN C MACHINE : CRAY C-90 C$$$ C C C INCLUDE GRID DIMENSIONS. SET/DERIVE OTHER PARAMETERS. C INCLUDE "parmeta" INCLUDE "parmout" INCLUDE "params" INCLUDE "parm.tbl" INCLUDE "parmsoil" C C IN NGM SUBROUTINE OUTPUT WE FIND THE FOLLOWING COMMENT. C "IF THE FOLLOWING THRESHOLD VALUES ARE CHANGED, CONTACT C TDL/SYNOPTIC-SCALE TECHNIQUES BRANCH (PAUL DALLAVALLE C AND JOHN JENSENIUS). THEY MAY BE USING IT IN ONE OF C THEIR PACKING CODES." THE THRESHOLD VALUE IS 0.01 INCH C OR 2.54E-4 METER. PRECIPITATION VALUES LESS THAN THIS C THRESHOLD ARE SET TO MINUS ONE TIMES THIS THRESHOLD. PARAMETER (PTRACE = 0.000254E0) C C SET CELCIUS TO KELVIN AND SECOND TO HOUR CONVERSION. PARAMETER (C2K = 273.15) PARAMETER (SEC2HR = 1./3600.) C C DECLARE VARIABLES. C LOGICAL RUN,FIRST,RESTRT,SIGMA,OLDRD,STDRD INTEGER IWX1(IM,JM),NROOTS(IM,JM) REAL PSFC(IM,JM),TSFC(IM,JM),QSFC(IM,JM),RHSFC(IM,JM) REAL ZSFC(IM,JM),THSFC(IM,JM),DWPSFC(IM,JM),EVP(IM,JM) REAL ANCPRC(IM,JM),P1D(IM,JM),T1D(IM,JM),Q1D(IM,JM) REAL EGRID1(IM,JM),EGRID2(IM,JM),UA(IM,JM),VA(IM,JM) REAL GC(IM,JM) REAL GRID1(IMOUT,JMOUT),GRID2(IMOUT,JMOUT),IW(IM,JM),IWM1 REAL SLEET(IM,JM),RAIN(IM,JM),FREEZR(IM,JM),SNOW(IM,JM) REAL ECAN(IM,JM),EDIR(IM,JM),ETRANS(IM,JM),ESNOW(IM,JM) &,SMCDRY(IM,JM),SMCMAX(IM,JM) REAL RSMIN(IM,JM),SMCWLT(IM,JM),SMCREF(IM,JM) & ,RCS(IM,JM),RCQ(IM,JM),RCT(IM,JM),RCSOIL(IM,JM) REAL P10(IM,JM),P30(IM,JM),T10(IM,JM),T30(IM,JM) C C INCLUDE COMMON BLOCKS. INCLUDE "CTLBLK.comm" INCLUDE "RQSTFLD.comm" INCLUDE "EXTRA.comm" INCLUDE "VRBLS.comm" INCLUDE "MAPOT.comm" INCLUDE "MASKS.comm" INCLUDE "PVRBLS.comm" INCLUDE "CLDWTR.comm" INCLUDE "LOOPS.comm" INCLUDE "PHYS2.comm" INCLUDE "SRFDSP.comm" INCLUDE "CNVCLD.comm" INCLUDE "LLGRDS.comm" INCLUDE "SOIL.comm" INCLUDE "ACMSFC.comm" INCLUDE "ACMPRE.comm" INCLUDE "IOUNIT.comm" INCLUDE "ACMRDS.comm" INCLUDE "QFLX.comm" INCLUDE "PPTASM.comm" C C**************************************************************************** C C START SURFCE. C C COMPUTE IW AT SFC FOR SFC AND 2M RH C IF ( (IGET(076).GT.0).OR.(IGET(114).GT.0) ) THEN CLIMIT =1.0E-20 IW=0. C DO L=2,LM DO J=JSTA,JEND DO I=1,IM IF (L.LE.LMH(I,J)) THEN IWM1=IW(I,J) IF(CWM(I,J,L).GT.CLIMIT) THEN IF(T(I,J,L).LT.258.15)THEN IW(I,J)=1. ELSEIF(T(I,J,L).GE.273.15)THEN IW(I,J)=0. ELSE IF(IWM1.EQ.1.0)IW(I,J)=1. ENDIF ELSE IW(I,J)=0. ENDIF ENDIF ENDDO ENDDO ENDDO C ENDIF C C*** BLOCK 1. SURFACE BASED FIELDS. C C IF ANY OF THE FOLLOWING "SURFACE" FIELDS ARE REQUESTED, C WE NEED TO COMPUTE THE FIELDS FIRST. C IF ( (IGET(024).GT.0).OR.(IGET(025).GT.0).OR. X (IGET(026).GT.0).OR.(IGET(027).GT.0).OR. X (IGET(028).GT.0).OR.(IGET(029).GT.0).OR. X (IGET(154).GT.0).OR. X (IGET(034).GT.0).OR.(IGET(076).GT.0) ) THEN C DO 40 J=JSTA,JEND DO 40 I=1,IM C C PRESSURE AND TEMPERATURE AT 10 AND 30 M. LMHK=LMH(I,J) P10(I,J)=(PD(I,J)+PT)*EXP(-10.0*G/(287.04*T(I,J,LMHK))) P30(I,J)=(PD(I,J)+PT)*EXP(-30.0*G/(287.04*T(I,J,LMHK))) T10(I,J)=TH10(I,J)*(P10(I,J)/P1000)**CAPA T30(I,J)=TH30(I,J)*(P30(I,J)/P1000)**CAPA C C SCALE ARRAY FIS BY GI TO GET SURFACE HEIGHT. ZSFC(I,J)=FIS(I,J)*GI C C SURFACE PRESSURE. PSFC(I,J)=PD(I,J)+PT C C SURFACE (SKIN) POTENTIAL TEMPERATURE AND TEMPERATURE. THSFC(I,J)=THS(I,J) TSFC(I,J) =THSFC(I,J)*(PSFC(I,J)/P1000)**CAPA C C SURFACE SPECIFIC HUMIDITY, RELATIVE HUMIDITY, C AND DEWPOINT. ADJUST SPECIFIC HUMIDITY IF C RELATIVE HUMIDITY EXCEEDS 0.1 OR 1.0. C QSFC(I,J)=QS(I,J) QSFC(I,J)=AMAX1(H1M12,QSFC(I,J)) TSFCK =TSFC(I,J) C TMT0=TSFCK-273.16 TMT15=AMIN1(TMT0,-15.) AI=0.008855 BI=1. IF(TMT0.LT.-20.)THEN AI=0.007225 BI=0.9674 ENDIF QW=PQ0/PSFC(I,J) 1 *EXP(A2*(TSFCK-A3)/(TSFCK-A4)) QI=QW*(BI+AI*AMIN1(TMT0,0.)) QINT=QW*(1.-0.00032*TMT15*(TMT15+15.)) IF(TMT0.LT.-15.)THEN QSAT=QI ELSEIF(TMT0.GE.0.)THEN QSAT=QINT ELSE IF(IW(I,J).GT.0.0) THEN QSAT=QI ELSE QSAT=QINT ENDIF ENDIF CMEB 12/22/98 SWITCH TO RH VS WATER NO MATTER WHAT C DELETE THIS LINE TO SWITCH BACK TO RH VS ICE QSAT=QW CMEB 12/22/98 SWITCH TO RH VS WATER NO MATTER WHAT C RHSFC(I,J)=QSFC(I,J)/QSAT IF (RHSFC(I,J).GT.H1 ) RHSFC(I,J) = H1 IF (RHSFC(I,J).LT.D00) RHSFC(I,J) = D01 QSFC(I,J) = RHSFC(I,J)*QSAT EVP(I,J) = PSFC(I,J)*QSFC(I,J)/(EPS+ONEPS*QSFC(I,J)) EVP(I,J) = EVP(I,J)*D001 C C ACCUMULATED NON-CONVECTIVE PRECIP. IF(IGET(034).GT.0)THEN IF(LVLS(1,IGET(034)).GT.0)THEN ANCPRC(I,J)=ACPREC(I,J)-CUPREC(I,J) ENDIF ENDIF 40 CONTINUE C C INTERPOLATE/OUTPUT REQUESTED SURFACE FIELDS. C C SURFACE PRESSURE. IF (IGET(024).GT.0) THEN CALL E2OUT(024,000,PSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(024),LVLS(1,IGET(024)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE PRESSURE NN. IF (IGET(247).GT.0) THEN CALL E2OUT(247,000,PSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(247),LVLS(1,IGET(247)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE HEIGHT. IF (IGET(025).GT.0) THEN CALL E2OUT(025,000,ZSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL BOUND(GRID1,D00,H99999,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(025),LVLS(1,IGET(025)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE HEIGHT NN. IF (IGET(245).GT.0) THEN CALL E2OUT(245,000,ZSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL BOUND(GRID1,D00,H99999,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(245),LVLS(1,IGET(245)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE (SKIN) TEMPERATURE. IF (IGET(026).GT.0) THEN CALL E2OUT(026,000,TSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(026),LVLS(1,IGET(026)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE (SKIN) POTENTIAL TEMPERATURE. IF (IGET(027).GT.0) THEN CALL E2OUT(027,000,THSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(027),LVLS(1,IGET(027)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE SPECIFIC HUMIDITY. IF (IGET(028).GT.0) THEN CALL E2OUT(028,000,QSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL BOUND(GRID1,H1M12,H99999,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(028),LVLS(1,IGET(028)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE DEWPOINT TEMPERATURE. IF (IGET(029).GT.0) THEN CALL DEWPOINT(EVP,DWPSFC,IM,JM) CALL E2OUT(029,000,DWPSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(029),LVLS(1,IGET(029)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE RELATIVE HUMIDITY. IF (IGET(076).GT.0) THEN CALL E2OUT(076,000,RHSFC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL SCLFLD(GRID1,H100,IMOUT,JMOUT) CALL BOUND(GRID1,H1,H100,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(076),LVLS(1,IGET(076)), X GRID1,IMOUT,JMOUT) ENDIF C ENDIF C C ADDITIONAL SURFACE-SOIL LEVEL FIELDS. C DO L=1,NSOIL C SOIL TEMPERATURE. IF (IGET(116).GT.0) THEN IF (LVLS(L,IGET(116)).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=STC(I,J,L) ENDDO ENDDO CALL E2OUT(116,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 DTOP=0. DO LS=1,L-1 DTOP=DTOP+SLDPTH(LS) ENDDO DBOT=DTOP+SLDPTH(L) ID(10) = NINT(DTOP*100.) ID(11) = NINT(DBOT*100.) CALL OUTPUT(IOUTYP,IGET(116),L,GRID1,IMOUT,JMOUT) ENDIF ENDIF C C SOIL MOISTURE. IF (IGET(117).GT.0) THEN IF (LVLS(L,IGET(117)).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=SMC(I,J,L) ENDDO ENDDO CALL E2OUT(117,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 DTOP=0. DO LS=1,L-1 DTOP=DTOP+SLDPTH(LS) ENDDO DBOT=DTOP+SLDPTH(L) ID(10) = NINT(DTOP*100.) ID(11) = NINT(DBOT*100.) CALL OUTPUT(IOUTYP,IGET(117),L,GRID1,IMOUT,JMOUT) ENDIF ENDIF ! ADD LIQUID SOIL MOISTURE IF (IGET(225).GT.0) THEN IF (LVLS(L,IGET(225)).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=SH2O(I,J,L) ENDDO ENDDO CALL E2OUT(225,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 DTOP=0. DO LS=1,L-1 DTOP=DTOP+SLDPTH(LS) ENDDO DBOT=DTOP+SLDPTH(L) ID(10) = NINT(DTOP*100.) ID(11) = NINT(DBOT*100.) ID(02) = 130 CALL OUTPUT(IOUTYP,IGET(225),L,GRID1,IMOUT,JMOUT) ENDIF ENDIF ! END OF NSOIL LOOP ENDDO C C BOTTOM SOIL TEMPERATURE. IF (IGET(115).GT.0) THEN CALL E2OUT(115,000,SOILTB,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ISVALUE = 800 ID(11) = ISVALUE CALL OUTPUT(IOUTYP,IGET(115),LVLS(1,IGET(115)), X GRID1,IMOUT,JMOUT) ENDIF C C SOIL MOISTURE AVAILABILITY IF (IGET(171).GT.0) THEN CALL E2OUT(171,000,SMSTAV,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(10) = 0 ID(11) = 100 CALL SCLFLD(GRID1,100.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(171),LVLS(1,IGET(171)), X GRID1,IMOUT,JMOUT) ENDIF C C TOTAL SOIL MOISTURE IF (IGET(036).GT.0) THEN CALL E2OUT(036,000,SMSTOT,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(10) = 0 ID(11) = 200 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(036),LVLS(1,IGET(036)), X GRID1,IMOUT,JMOUT) ENDIF C C PLANT CANOPY SURFACE WATER. IF ( IGET(118).GT.0 ) THEN CALL E2OUT(118,000,CMC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(118),LVLS(1,IGET(118)), X GRID1,IMOUT,JMOUT) ENDIF C C SNOW WATER EQUIVALENT. IF ( IGET(119).GT.0 ) THEN CALL E2OUT(119,000,SNO,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(119),LVLS(1,IGET(119)), X GRID1,IMOUT,JMOUT) ENDIF C C PERCENT SNOW COVER. IF ( IGET(120).GT.0 ) THEN DO J=JSTA,JEND DO I=1,IM SNEQV=SNO(I,J) IVEG=IVGTYP(I,J) CALL SNFRAC (SNEQV,IVEG,SNCOVR) PCTSNO(I,J)=SNCOVR END DO END DO CALL E2OUT(120,000,PCTSNO,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL BOUND(GRID1,D00,H1,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(120),LVLS(1,IGET(120)), X GRID1,IMOUT,JMOUT) ENDIF ! ADD SNOW DEPTH IF ( IGET(224).GT.0 ) THEN CALL E2OUT(224,000,SI,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(224),LVLS(1,IGET(224)), X GRID1,IMOUT,JMOUT) ENDIF ! ADD POTENTIAL EVAPORATION C IF ( IGET(242).GT.0 ) THEN C CALL E2OUT(242,000,POTEVP,EGRID2,GRID1,GRID2,IMOUT,JMOUT) C ID(1:25) = 0 C CALL OUTPUT(IOUTYP,IGET(242),LVLS(1,IGET(242)), C X GRID1,IMOUT,JMOUT) C END IF ! ADD EC,EDIR,ETRANS,ESNOW,SMCDRY,SMCMAX IF ( IGET(228).GT.0 .OR. IGET(229).GT.0 + .OR.IGET(230).GT.0 .OR. IGET(231).GT.0 + .OR.IGET(232).GT.0 .OR. IGET(233).GT.0) THEN DO J=JSTA,JEND DO I=1,IM C ---------------------------------------------------------------------- ! IF(QWBS(I,J).gt.0.001)print*,'NONZERO QWBS',i,j,QWBS(I,J) ! IF(abs(SM(I,J)-0.).lt.1.0E-5)THEN IF( (abs(SM(I,J)-0.) .lt. 1.0E-5) .AND. & (abs(SICE(I,J)-0.) .lt. 1.0E-5) ) THEN CALL ETCALC(QWBS(I,J),POTEVP(I,J),SNO(I,J),VEGFRC(I,J) & , ISLTYP(I,J),SH2O(I,J,1:1),CMC(I,J) & , ECAN(I,J),EDIR(I,J),ETRANS(I,J),ESNOW(I,J),SMCDRY(I,J) & , SMCMAX(I,J) ) ELSE ECAN(I,J)=0. EDIR(I,J)=0. ETRANS(I,J)=0. ESNOW(I,J)=0. SMCDRY(I,J)=0. SMCMAX(I,J)=0. END IF END DO END DO IF ( IGET(228).GT.0 )THEN CALL E2OUT(228,000,ECAN,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(228),LVLS(1,IGET(228)), X GRID1,IMOUT,JMOUT) END IF ! IF ( IGET(229).GT.0 )THEN CALL E2OUT(229,000,EDIR,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(229),LVLS(1,IGET(229)), X GRID1,IMOUT,JMOUT) END IF ! IF ( IGET(230).GT.0 )THEN CALL E2OUT(230,000,ETRANS,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(230),LVLS(1,IGET(230)), X GRID1,IMOUT,JMOUT) END IF ! IF ( IGET(231).GT.0 )THEN CALL E2OUT(231,000,ESNOW,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(231),LVLS(1,IGET(231)), X GRID1,IMOUT,JMOUT) END IF ! IF ( IGET(232).GT.0 )THEN CALL E2OUT(232,000,SMCDRY,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(232),LVLS(1,IGET(232)), X GRID1,IMOUT,JMOUT) END IF ! IF ( IGET(233).GT.0 )THEN CALL E2OUT(233,000,SMCMAX,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(233),LVLS(1,IGET(233)), X GRID1,IMOUT,JMOUT) END IF ! ENDIF C C C C*** BLOCK 2. SHELTER (2M) LEVEL FIELDS. C C COMPUTE/POST SHELTER LEVEL FIELDS. C IF ( (IGET(106).GT.0).OR.(IGET(112).GT.0).OR. X (IGET(113).GT.0).OR.(IGET(114).GT.0).OR. X (IGET(138).GT.0) ) THEN C C CALL SHELTR2(PSHLTR,QSHLTR,TSHLTR) C C SHELTER LEVEL TEMPERATURE IF (IGET(106).GT.0) THEN CALL E2OUT(106,000,TSHLTR,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ISVALUE = 2 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL OUTPUT(IOUTYP,IGET(106),LVLS(1,IGET(106)), X GRID1,IMOUT,JMOUT) ENDIF C C SHELTER LEVEL SPECIFIC HUMIDITY. IF (IGET(112).GT.0) THEN CALL E2OUT(112,000,QSHLTR,EGRID1,GRID1,GRID2,IMOUT,JMOUT) CALL BOUND (GRID1,H1M12,H99999,IMOUT,JMOUT) ID(1:25) = 0 ISVALUE = 2 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL OUTPUT(IOUTYP,IGET(112),LVLS(1,IGET(112)), X GRID1,IMOUT,JMOUT) ENDIF C C SHELTER LEVEL DEWPOINT. IF (IGET(113).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EVP(I,J)=PSHLTR(I,J)*QSHLTR(I,J)/(EPS+ONEPS*QSHLTR(I,J)) EVP(I,J)=EVP(I,J)*D001 ENDDO ENDDO CALL DEWPOINT(EVP,EGRID1,IM,JM) CALL E2OUT(113,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ISVALUE = 2 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL OUTPUT(IOUTYP,IGET(113),LVLS(1,IGET(113)), X GRID1,IMOUT,JMOUT) ENDIF C C SHELTER LEVEL RELATIVE HUMIDITY. IF (IGET(114).GT.0) THEN CALL CALRH2(PSHLTR,TSHLTR,QSHLTR,IW,EGRID1,IM,JM) CALL E2OUT(114,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL SCLFLD(GRID1,H100,IMOUT,JMOUT) CALL BOUND(GRID1,H1,H100,IMOUT,JMOUT) ID(1:25) = 0 ISVALUE = 2 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL OUTPUT(IOUTYP,IGET(114),LVLS(1,IGET(114)), X GRID1,IMOUT,JMOUT) ENDIF C C SHELTER LEVEL PRESSURE. IF (IGET(138).GT.0) THEN CALL E2OUT(138,000,PSHLTR,EGRID1,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ISVALUE = 2 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL OUTPUT(IOUTYP,IGET(138),LVLS(1,IGET(138)), X GRID1,IMOUT,JMOUT) ENDIF C ENDIF C C C BLOCK 3. ANEMOMETER LEVEL (10M) WINDS, THETA, AND Q. C IF ( (IGET(064).GT.0).OR.(IGET(065).GT.0) ) THEN C CALL ANEMLV6(UA,VA) ID(1:25) = 0 ISVALUE = 10 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) C C ANEMOMETER LEVEL U WIND AND/OR V WIND. IF ((IGET(064).GT.0).OR.(IGET(065).GT.0)) THEN CALL E2OUT(064,065,U10,V10,GRID1,GRID2,IMOUT,JMOUT) IF (IGET(064).GT.0) CALL OUTPUT(IOUTYP,IGET(064), X LVLS(1,IGET(064)),GRID1,IMOUT,JMOUT) IF (IGET(065).GT.0) CALL OUTPUT(IOUTYP,IGET(065), X LVLS(1,IGET(065)),GRID2,IMOUT,JMOUT) ENDIF ENDIF C C ANEMOMETER LEVEL (10 M) POTENTIAL TEMPERATURE. C IF (IGET(158).GT.0) THEN ID(1:25) = 0 ISVALUE = 10 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(158,000,TH10,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(158), X LVLS(1,IGET(158)),GRID1,IMOUT,JMOUT) ENDIF C C ANEMOMETER LEVEL (10 M) TEMPERATURE. C IF (IGET(185).GT.0) THEN ID(1:25) = 0 ISVALUE = 10 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(185,000,T10,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(185), X LVLS(1,IGET(185)),GRID1,IMOUT,JMOUT) ENDIF C C ANEMOMETER LEVEL (10 M) PRESSURE. C IF (IGET(186).GT.0) THEN ID(1:25) = 0 ISVALUE = 10 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(186,000,P10,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(186), X LVLS(1,IGET(186)),GRID1,IMOUT,JMOUT) ENDIF C C ANEMOMETER LEVEL (10 M) SPECIFIC HUMIDITY. C IF (IGET(159).GT.0) THEN ID(1:25) = 0 ISVALUE = 10 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(159,000,Q10,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(159), X LVLS(1,IGET(159)),GRID1,IMOUT,JMOUT) ENDIF C C C BLOCK 3.1 30M WINDS, THETA, AND Q. C IF ( (IGET(193).GT.0).OR.(IGET(194).GT.0) ) THEN C CALL ANEMLV6(UA,VA) ID(1:25) = 0 ISVALUE = 30 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) C C ANEMOMETER LEVEL U WIND AND/OR V WIND. IF ((IGET(193).GT.0).OR.(IGET(194).GT.0)) THEN CALL E2OUT(193,194,U30,V30,GRID1,GRID2,IMOUT,JMOUT) IF (IGET(193).GT.0) CALL OUTPUT(IOUTYP,IGET(193), X LVLS(1,IGET(193)),GRID1,IMOUT,JMOUT) IF (IGET(194).GT.0) CALL OUTPUT(IOUTYP,IGET(194), X LVLS(1,IGET(194)),GRID2,IMOUT,JMOUT) ENDIF ENDIF C C 30 M POTENTIAL TEMPERATURE. C IF (IGET(191).GT.0) THEN ID(1:25) = 0 ISVALUE = 30 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(191,000,TH30,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(191), X LVLS(1,IGET(191)),GRID1,IMOUT,JMOUT) ENDIF C C 30 M TEMPERATURE. C IF (IGET(189).GT.0) THEN ID(1:25) = 0 ISVALUE = 30 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(189,000,T30,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(189), X LVLS(1,IGET(189)),GRID1,IMOUT,JMOUT) ENDIF C C 30 M PRESSURE. C IF (IGET(190).GT.0) THEN ID(1:25) = 0 ISVALUE = 30 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(190,000,P30,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(190), X LVLS(1,IGET(190)),GRID1,IMOUT,JMOUT) ENDIF C C 30 M SPECIFIC HUMIDITY. C IF (IGET(192).GT.0) THEN ID(1:25) = 0 ISVALUE = 30 ID(10) = MOD(ISVALUE/256,256) ID(11) = MOD(ISVALUE,256) CALL E2OUT(192,000,Q30,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(192), X LVLS(1,IGET(192)),GRID1,IMOUT,JMOUT) ENDIF C C C C*** BLOCK 4. PRECIPITATION RELATED FIELDS. C C SNOW FRACTION FROM EXPLICIT CLOUD SCHEME. LABELLED AS C 'PROB OF FROZEN PRECIP' IN GRIB, C DIDN'T KNOW WHAT ELSE TO CALL IT IF (IGET(172).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=SR(I,J)*100. ENDDO ENDDO CALL E2OUT(172,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(172),LVLS(1,IGET(172)), X GRID1,IMOUT,JMOUT) ENDIF C INSTANTANEOUS PRECIPITATION RATE. IF (IGET(167).GT.0) THEN RDTPHS=1./DTQ2 write(*,*) 'prdgen surface2 prate' DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=PREC(I,J)*RDTPHS if (egrid1(i,j).lt.0.0) write(*,*) 'neg prate ij=',i,j,egrid1(i,j) ENDDO ENDDO write(*,*) '>>e2out' CALL E2OUT(167,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(167),LVLS(1,IGET(167)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED TOTAL PRECIPITATION. IF (IGET(087).GT.0) THEN CALL E2OUT(087,000,ACPREC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(087),LVLS(1,IGET(087)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED TOTAL PRECIPITATION NN - NEAREST NEIGHBOR. IF (IGET(246).GT.0) THEN CALL E2OUT(246,000,ACPREC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(246),LVLS(1,IGET(246)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED CONVECTIVE PRECIPITATION. IF (IGET(033).GT.0) THEN CALL E2OUT(033,000,CUPREC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(033),LVLS(1,IGET(033)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED GRID-SCALE PRECIPITATION. IF (IGET(034).GT.0) THEN CALL E2OUT(034,000,ANCPRC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(034),LVLS(1,IGET(034)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED SNOWFALL. IF (IGET(035).GT.0) THEN CALL E2OUT(035,000,ACSNOW,EGRID2, x GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(035),LVLS(1,IGET(035)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED SNOW MELT. IF (IGET(121).GT.0) THEN CALL E2OUT(121,000,ACSNOM,EGRID2, x GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(121),LVLS(1,IGET(121)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED STORM SURFACE RUNOFF. IF (IGET(122).GT.0) THEN CALL E2OUT(122,000,SSROFF,EGRID2, x GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(122),LVLS(1,IGET(122)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED BASEFLOW-GROUNDWATER RUNOFF. IF (IGET(123).GT.0) THEN CALL E2OUT(123,000,BGROFF,EGRID2, x GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(123),LVLS(1,IGET(123)), X GRID1,IMOUT,JMOUT) ENDIF C C INSTANTANEOUS PRECIPITATION TYPE. IF (IGET(160).GT.0) THEN CALL CALWXT(T,Q,RES,PD,HTM,LMH,PREC,PT,AETA,ETA,IWX1) ID(1:25) = 0 C C DECOMPOSE IWX1 ARRAY C DO J=JSTA,JEND DO I=1,IM IWX=IWX1(I,J) ISNO=MOD(IWX,2) IIP=MOD(IWX,4)/2 IZR=MOD(IWX,8)/4 IRAIN=IWX/8 SNOW(I,J) = ISNO*1.0 SLEET(I,J) = IIP*1.0 FREEZR(I,J) = IZR*1.0 RAIN(I,J) = IRAIN*1.0 ENDDO ENDDO C C INTERPOLATE/OUTPUT REQUESTED SURFACE FIELDS. C C SNOW. ID(8) = 143 CALL E2OUT(160,000,SNOW,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(160),LVLS(1,IGET(160)), X GRID1,IMOUT,JMOUT) C ICE PELLETS. ID(8) = 142 CALL E2OUT(160,000,SLEET,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(160),LVLS(1,IGET(160)), X GRID1,IMOUT,JMOUT) C FREEZING RAIN. ID(8) = 141 CALL E2OUT(160,000,FREEZR,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(160),LVLS(1,IGET(160)), X GRID1,IMOUT,JMOUT) C RAIN. ID(8) = 140 CALL E2OUT(160,000,RAIN,EGRID2,GRID1,GRID2,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(160),LVLS(1,IGET(160)), X GRID1,IMOUT,JMOUT) ENDIF C C C C*** BLOCK 5. SURFACE EXCHANGE FIELDS. C C TIME AVERAGED SURFACE LATENT HEAT FLUX. IF (IGET(042).GT.0) THEN IF(ASRFC.GT.0.)THEN RRNUM=1./ASRFC ELSE RRNUM=0. ENDIF DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = SFCLHX(I,J)*RRNUM ENDDO ENDDO CALL E2OUT(042,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITSRFC = INT(TSRFC) IFINCR = MOD(IFHR,ITSRFC) ID(19) = IFHR ID(20) = 3 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITSRFC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(042),LVLS(1,IGET(042)), X GRID1,IMOUT,JMOUT) ENDIF C C TIME AVERAGED SURFACE SENSIBLE HEAT FLUX. IF (IGET(043).GT.0) THEN IF(ASRFC.GT.0.)THEN RRNUM=1./ASRFC ELSE RRNUM=0. ENDIF DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = SFCSHX(I,J)*RRNUM ENDDO ENDDO CALL E2OUT(043,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITSRFC = INT(TSRFC) IFINCR = MOD(IFHR,ITSRFC) ID(19) = IFHR ID(20) = 3 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITSRFC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(043),LVLS(1,IGET(043)), X GRID1,IMOUT,JMOUT) ENDIF C C TIME AVERAGED SUB-SURFACE SENSIBLE HEAT FLUX. IF (IGET(135).GT.0) THEN IF(ASRFC.GT.0.)THEN RRNUM=1./ASRFC ELSE RRNUM=0. ENDIF DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = SUBSHX(I,J)*RRNUM ENDDO ENDDO CALL E2OUT(135,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITSRFC = INT(TSRFC) IFINCR = MOD(IFHR,ITSRFC) ID(19) = IFHR ID(20) = 3 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITSRFC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(135),LVLS(1,IGET(135)), X GRID1,IMOUT,JMOUT) ENDIF C C TIME AVERAGED SNOW PHASE CHANGE HEAT FLUX. IF (IGET(136).GT.0) THEN IF(ASRFC.GT.0.)THEN RRNUM=1./ASRFC ELSE RRNUM=0. ENDIF DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = SNOPCX(I,J)*RRNUM ENDDO ENDDO CALL E2OUT(136,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITSRFC = INT(TSRFC) IFINCR = MOD(IFHR,ITSRFC) ID(19) = IFHR ID(20) = 3 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITSRFC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(136),LVLS(1,IGET(136)), X GRID1,IMOUT,JMOUT) ENDIF C C TIME AVERAGED SURFACE MOMENTUM FLUX. IF (IGET(046).GT.0) THEN IF(ASRFC.GT.0.)THEN RRNUM=1./ASRFC ELSE RRNUM=0. ENDIF DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = SFCUVX(I,J)*RRNUM ENDDO ENDDO CALL E2OUT(046,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITSRFC = INT(TSRFC) IFINCR = MOD(IFHR,ITSRFC) ID(19) = IFHR ID(20) = 3 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITSRFC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(046),LVLS(1,IGET(046)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED SURFACE EVAPORATION IF (IGET(047).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = SFCEVP(I,J) ENDDO ENDDO CALL E2OUT(047,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(047),LVLS(1,IGET(047)), X GRID1,IMOUT,JMOUT) ENDIF C C ACCUMULATED POTENTIAL EVAPORATION IF (IGET(137).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = POTEVP(I,J) ENDDO ENDDO CALL E2OUT(137,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL SCLFLD(GRID1,1000.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(137),LVLS(1,IGET(137)), X GRID1,IMOUT,JMOUT) ENDIF C C ROUGHNESS LENGTH. IF (IGET(044).GT.0) THEN CALL E2OUT(044,000,Z0,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(044),LVLS(1,IGET(044)), X GRID1,IMOUT,JMOUT) ENDIF C C FRICTION VELOCITY. IF (IGET(045).GT.0) THEN CALL E2OUT(045,000,USTAR,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(045),LVLS(1,IGET(045)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE DRAG COEFFICIENT. IF (IGET(132).GT.0) THEN CALL CALDRG(EGRID1) CALL E2OUT(132,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(132),LVLS(1,IGET(132)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE U AND/OR V COMPONENT WIND STRESS IF ( (IGET(133).GT.0) .OR. (IGET(134).GT.0) ) THEN CALL CALTAU(EGRID1,EGRID2) C C SURFACE U COMPONENT WIND STRESS. IF (IGET(133).GT.0) THEN CALL E2OUT(133,000,EGRID1,EGRID2, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(133),LVLS(1,IGET(133)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE V COMPONENT WIND STRESS IF (IGET(134).GT.0) THEN CALL E2OUT(134,000,EGRID2,EGRID1, X GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(134),LVLS(1,IGET(134)), X GRID1,IMOUT,JMOUT) ENDIF ENDIF C C INSTANTANEOUS SENSIBLE HEAT FLUX IF (IGET(154).GT.0) THEN CALL E2OUT(154,000,TWBS,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(154),LVLS(1,IGET(154)), X GRID1,IMOUT,JMOUT) ENDIF C C INSTANTANEOUS LATENT HEAT FLUX IF (IGET(155).GT.0) THEN CALL E2OUT(155,000,QWBS,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(155),LVLS(1,IGET(155)), X GRID1,IMOUT,JMOUT) ENDIF C C SURFACE EXCHANGE COEFF IF (IGET(169).GT.0) THEN CALL E2OUT(169,000,SFCEXC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(169),LVLS(1,IGET(169)), X GRID1,IMOUT,JMOUT) ENDIF C C GREEN VEG FRACTION IF (IGET(170).GT.0) THEN CALL E2OUT(170,000,VEGFRC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL SCLFLD(GRID1,100.,IMOUT,JMOUT) CALL OUTPUT(IOUTYP,IGET(170),LVLS(1,IGET(170)), X GRID1,IMOUT,JMOUT) ENDIF C C INSTANTANEOUS GROUND HEAT FLUX IF (IGET(152).GT.0) THEN CALL E2OUT(152,000,GRNFLX,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(152),LVLS(1,IGET(152)), X GRID1,IMOUT,JMOUT) ENDIF ! ! VEGETATION TYPE IF (IGET(218).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = FLOAT(IVGTYP(I,J)) ENDDO ENDDO CALL E2OUT(218,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(218),LVLS(1,IGET(218)), X GRID1,IMOUT,JMOUT) ENDIF ! ! SOIL TYPE IF (IGET(219).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = FLOAT(ISLTYP(I,J)) ENDDO ENDDO CALL E2OUT(219,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(219),LVLS(1,IGET(219)), X GRID1,IMOUT,JMOUT) ENDIF ! ! SLOPE TYPE IF (IGET(223).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = FLOAT(ISLOPE(I,J)) ENDDO ENDDO CALL E2OUT(223,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(223),LVLS(1,IGET(223)), X GRID1,IMOUT,JMOUT) ENDIF ! ! CANOPY CONDUCTANCE IF (IGET(220).GT.0 .OR. IGET(234).GT.0 & .OR. IGET(235).GT.0 .OR. IGET(236).GT.0 & .OR. IGET(237).GT.0 .OR. IGET(238).GT.0 & .OR. IGET(239).GT.0 .OR. IGET(240).GT.0 & .OR. IGET(241).GT.0) THEN DO J=JSTA,JEND DO I=1,IM ! IF(abs(SM(I,J)-0.).lt.1.0E-5)THEN IF( (abs(SM(I,J)-0.) .lt. 1.0E-5) .AND. & (abs(SICE(I,J)-0.) .lt. 1.0E-5) ) THEN IF(CZMEAN(I,J).GT.1.E-6) THEN FACTRS=CZEN(I,J)/CZMEAN(I,J) ELSE FACTRS=0.0 ENDIF SOLAR=HBM2(I,J)*RSWIN(I,J)*FACTRS SFCTMP=T(I,J,LMH(I,J)) SFCQ=Q(I,J,LMH(I,J)) SFCPRS=PT+PDSL(I,J)*AETA(LMH(I,J)) ! IF(IVGTYP(I,J).EQ.0)PRINT*,'IVGTYP ZERO AT ',I,J ! & ,SM(I,J) IVG=IVGTYP(I,J) ! IF(IVGTYP(I,J).EQ.0)IVG=7 ! CALL CANRES(SOLAR,SFCTMP,SFCQ,SFCPRS ! & ,SMC(I,J,1:NSOIL),GC(I,J),RC,IVG,ISLTYP(I,J)) ! CALL CANRES(SOLAR,SFCTMP,SFCQ,SFCPRS & ,SH2O(I,J,1:NSOIL),GC(I,J),RC,IVG,ISLTYP(I,J) & ,RSMIN(I,J),NROOTS(I,J),SMCWLT(I,J),SMCREF(I,J) & ,RCS(I,J),RCQ(I,J),RCT(I,J),RCSOIL(I,J)) IF(abs(SMCWLT(I,J)-0.5).lt.1.e-5)print*, & 'LARGE SMCWLT',i,j,SM(I,J),ISLTYP(I,J),SMCWLT(I,J) ELSE GC(I,J)=0. RSMIN(I,J)=0. NROOTS(I,J)=0 SMCWLT(I,J)=0. SMCREF(I,J)=0. RCS(I,J)=0. RCQ(I,J)=0. RCT(I,J)=0. RCSOIL(I,J)=0. END IF ENDDO ENDDO IF (IGET(220).GT.0 )THEN CALL E2OUT(220,000,GC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(220),LVLS(1,IGET(220)), X GRID1,IMOUT,JMOUT) END IF ! IF (IGET(234).GT.0 )THEN CALL E2OUT(234,000,RSMIN,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(234),LVLS(1,IGET(234)), X GRID1,IMOUT,JMOUT) END IF ! ! NO OF ROOT LAYERS IF (IGET(235).GT.0) THEN DO J=JSTA,JEND DO I=1,IM EGRID1(I,J) = FLOAT(NROOTS(I,J)) ENDDO ENDDO CALL E2OUT(235,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(235),LVLS(1,IGET(235)), X GRID1,IMOUT,JMOUT) ENDIF ! IF (IGET(236).GT.0 )THEN CALL E2OUT(236,000,SMCWLT,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(236),LVLS(1,IGET(236)), X GRID1,IMOUT,JMOUT) END IF ! IF (IGET(237).GT.0 )THEN CALL E2OUT(237,000,SMCREF,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(237),LVLS(1,IGET(237)), X GRID1,IMOUT,JMOUT) END IF ! IF (IGET(238).GT.0 )THEN CALL E2OUT(238,000,RCS,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(238),LVLS(1,IGET(238)), X GRID1,IMOUT,JMOUT) END IF ! IF (IGET(239).GT.0 )THEN CALL E2OUT(239,000,RCT,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(239),LVLS(1,IGET(239)), X GRID1,IMOUT,JMOUT) END IF ! IF (IGET(240).GT.0 )THEN CALL E2OUT(240,000,RCQ,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(240),LVLS(1,IGET(240)), X GRID1,IMOUT,JMOUT) END IF ! IF (IGET(241).GT.0 )THEN CALL E2OUT(241,000,RCSOIL,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 ID(02)= 130 CALL OUTPUT(IOUTYP,IGET(241),LVLS(1,IGET(241)), X GRID1,IMOUT,JMOUT) END IF ! ENDIF C C DQADV IF (IGET(200).GT.0) THEN CALL E2OUT(200,000,DQADV,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 CALL OUTPUT(IOUTYP,IGET(200),LVLS(1,IGET(200)), X GRID1,IMOUT,JMOUT) ENDIF C C DQFLX / WVCONV IF (IGET(201).GT.0) THEN CALL E2OUT(201,000,DQFLX,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(201),LVLS(1,IGET(201)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=DQFLX(I,J)-DQFLX7(I,J) ENDDO ENDDO CALL E2OUT(201,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(201),LVLS(1,IGET(201)), X GRID1,IMOUT,JMOUT) ENDIF C C DCFLX / WCCONV IF (IGET(202).GT.0) THEN CALL E2OUT(202,000,DCFLX,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(202),LVLS(1,IGET(202)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=DCFLX(I,J)-DCFLX7(I,J) ENDDO ENDDO CALL E2OUT(202,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(202),LVLS(1,IGET(202)), X GRID1,IMOUT,JMOUT) ENDIF C C FQU / WVUFLX IF (IGET(203).GT.0) THEN CALL E2OUT(203,000,FQU,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(203),LVLS(1,IGET(203)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=FQU(I,J)-FQU7(I,J) ENDDO ENDDO CALL E2OUT(203,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(203),LVLS(1,IGET(203)), X GRID1,IMOUT,JMOUT) ENDIF C C FQV / WVVFLX IF (IGET(204).GT.0) THEN CALL E2OUT(204,000,FQV,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(204),LVLS(1,IGET(204)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=FQV(I,J)-FQV7(I,J) ENDDO ENDDO CALL E2OUT(204,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(204),LVLS(1,IGET(204)), X GRID1,IMOUT,JMOUT) ENDIF C C FCU / WCUFLX IF (IGET(205).GT.0) THEN CALL E2OUT(205,000,FCU,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(205),LVLS(1,IGET(205)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=FCU(I,J)-FCU7(I,J) ENDDO ENDDO CALL E2OUT(205,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(205),LVLS(1,IGET(205)), X GRID1,IMOUT,JMOUT) ENDIF C C FCV / WCVFLX IF (IGET(206).GT.0) THEN CALL E2OUT(206,000,FCV,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(206),LVLS(1,IGET(206)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=FCV(I,J)-FCV7(I,J) ENDDO ENDDO CALL E2OUT(206,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(206),LVLS(1,IGET(206)), X GRID1,IMOUT,JMOUT) ENDIF C C VAPINC / WVINC IF (IGET(207).GT.0) THEN CALL E2OUT(207,000,VAPINC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(207),LVLS(1,IGET(207)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=VAPINC(I,J)-VAPINC7(I,J) ENDDO ENDDO CALL E2OUT(207,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(207),LVLS(1,IGET(207)), X GRID1,IMOUT,JMOUT) ENDIF C C CLDINC / WCINC IF (IGET(208).GT.0) THEN CALL E2OUT(208,000,CLDINC,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 CALL OUTPUT(IOUTYP,IGET(208),LVLS(1,IGET(208)), X GRID1,IMOUT,JMOUT) DO J=JSTA,JEND DO I=1,IM EGRID1(I,J)=CLDINC(I,J)-CLDINC7(I,J) ENDDO ENDDO CALL E2OUT(208,000,EGRID1,EGRID2,GRID1,GRID2,IMOUT,JMOUT) ID(1:25) = 0 IFHR = NTSD/TSPH + 0.5 ITPREC = INT(TPREC) IFINCR = MOD(IFHR,ITPREC) ID(19) = IFHR ID(20) = 4 IF (IFINCR.EQ.0) THEN ID(18) = IFHR-ITPREC ELSE ID(18) = IFHR-IFINCR ENDIF IF (ID(18).LT.0) ID(18) = 0 ID(9) = 101 ID(10) = 0 ID(11) = 70 CALL OUTPUT(IOUTYP,IGET(208),LVLS(1,IGET(208)), X GRID1,IMOUT,JMOUT) ENDIF C END OF ROUTINE print*,'End of SURFCE2' C RETURN END