c
C.... FILE NAME GXEVAP.FTN--------------------------------121124 SUBROUTINE GXEVAP include 'farray' INCLUDE 'satear' INCLUDE 'grdloc' INCLUDE 'satgrd' INCLUDE 'grdear' INCLUDE 'grdbfc' INCLUDE 'parear' LOGICAL INPARDOM, SLD , BLKSLD, LSOLID COMMON/GENI/NXNY,IGFIL1(8),NFM,IGF(21),IPRL,IBTAU,ILTLS,IGFIL(15), 1 ITEM1,ITEM2,ISPH1,ISPH2,ICON1,ICON2,IPRPS,IRADX,IRADY,IRADZ,IVFOL COMMON/DRHODP/ITEMP,IDEN/DVMOD/IDVCGR COMMON/HBASE/IH01,IH02,KH01,KH01H,KH01L,KH02,KH02H,KH02L,L0H012 COMMON /GEODMN0/ I3DAEX,I3DANY,I3DAHZ,I3DVOL,I3DDXG,I3DDYG, 1 I3DDZG,I3DDX,I3DDY,I3DDZ,I2DAWB,I2DASB,I2DALB COMMON /VOFI1/ L0SURT0 LOGICAL LPAR SAVE LPAR SAVE L0WORK9,ISURN,ISURT,IMEVA,IFRN2 SAVE RHOL,RHOV,CPGAS,CPLIQ,CPDIF CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX USER SECTION STARTS: C C 1 Set dimensions of data-for-GROUND arrays here. WARNING: the C corresponding arrays in the MAIN program of the satellite C and EARTH must have the same dimensions. PARAMETER (NLG=100, NIG=200, NRG=200, NCG=100) C COMMON/LGRND/LG(NLG)/IGRND/IG(NIG)/RGRND/RG(NRG)/CGRND/CG(NCG) LOGICAL LG, DBSURFT CHARACTER*4 CG C c*********************************************************************** c IXL=IABS(IXL) C***************************************************************** C C--- GROUP 1. Run title and other preliminaries C IF(IGR==1) THEN C * -----------GROUP 1 SECTION 3 --------------------------- C---- Use this group to create storage via GXMAKE0 which it is not C necessary to dump to PHI (or PHIDA) for restarts C IF(ISC==3) THEN IF(.NOT.NULLPR.AND.IDVCGR.EQ.0) 1 CALL WRYT40('GROUND file is GXEVAP.F of: 041124 ') CALL GXMAKE0(L0WORK9,NXNY*NZ,'WOK9') ISURN=LBNAME('SURN') IMEVA=LBNAME('MEVA') ISURT=LBNAME('SURT') IFRN2 = LBNAME('FRN2') RHOL=F(INDPRTB(IPRPSA,0)+1) RHOV=F(INDPRTB(IPRPSB,0)+1) CPLIQ= F(INDPRTB(IPRPSA,0)+3) CPGAS= F(INDPRTB(IPRPSB,0)+3) CPDIF=(CPLIQ-CPGAS) LPAR=MIMD.AND.NPROC>1 ENDIF ELSEIF(IGR==8) THEN IF(ISC==7) THEN C * ------------------- SECTION 7 ---- Volumetric source for gala ACOEF=(1.0/RHOL-1.0/RHOV) CALL FN53(LSU,IMEVA,VOL,ACOEF) ! VAL=val + ACOEF*IMEVP*VOL ENDIF ELSEIF(IGR==13) THEN IF(ISC==16) THEN C------------------- SECTION 16 ------------------- value = GRND4 IF(NPATCH=='EVAPO') THEN IF(INDVAR==ISURN.OR.INDVAR==IFRN2) THEN IF(NONCON)THEN ACOEFS=1.0/(RHOL*RHOV) CALL FN21(VAL,IMEVA,DEN1,0.0,ACOEFS) ! VAL=0.0+ACOEFS*MEVA*DEN1 ELSE ACOEFS=1.0/RHOL CALL FN2(VAL,IMEVA,0.0,ACOEFS) ! VAL=0.0+ACOEFS*MEVA ENDIF ELSEIF(INDVAR==ITEM1) THEN CALL FN2(VAL,IMEVA,0.0,LATH) ! VAL=0.0+SLATH*MEVA ACOEF=-CPDIF CALL FN53(VAL,IMEVA,ITEM1,ACOEF) !val=val+Acoef*IMEVA*ITEM1 ENDIF ENDIF ENDIF ELSEIF(IGR==19) THEN IF(ISC==2) THEN C * ------------------- SECTION 2 ---- Start of sweep. !!! If IEVAP ==1 then Lee method elseif IEVAP==2 Lee based on rho*Cp and latent heat !!**** Evaporation rate !!! Fill the property MEVA IF(IEVAP==1) THEN ! Lee method DO IZZ=1,NZ L0TEM1=L0F(ANYZ(ITEM1,IZZ)) L0SURN=L0F(ANYZ(ISURN,IZZ)) L0MEVA=L0F(ANYZ(IMEVA,IZZ)) DO I=1,NXNY F(L0MEVA+I)=0.0 COEFSURN=F(L0SURN+I) TEMPIN=F(L0TEM1+I) + TEMP0 COEFVAP=0.0 IF(TEMPIN>TSAT)THEN COEFVAP=-EVAPCO*RHOL*COEFSURN ELSEIF(TEMPIN0) THEN L0SURT=L0F(ANYZ(ISURT,IZZ)) ELSE L0SURT=L0SURT0+(IZZ-1)*NXNY ENDIF DO I=1,NXNY TEMPIN=F(L0TEM1+I) + TEMP0 RCPMIX=RHOL*CPLIQ*F(L0SURT+I)+RHOV*CPGAS* 1 (1.0-F(L0SURT+I)) IF(TEMPIN>TSAT.AND.F(L0SURT+I)>0.0)THEN COEFVAP=RCPMIX/DT/LATH ELSEIF(TEMPIN 0.0)THEN RATIO=SUM1/SUM2 ELSE RATIO=1.0 ENDIF DO IZZ=1,NZ L0MEVA=L0F(ANYZ(IMEVA,IZZ)) DO I=1,NXNY F(L0MEVA+I)=F(L0MEVA+I)*RATIO ENDDO ENDDO ELSEIF(ISC==7) THEN C * ------------------- SECTION 7 ---- Finish of sweep. ENDIF ENDIF END C*************************************************************** SUBROUTINE NORMD(FDOUT,F1Y,F2Y,F3Y,F4Y,F5Y,F6Y,F7Y,F8Y,F9Y, & DYGM,DYGP,A1,A2L,A2H,A3) FD1M=(F2Y-F1Y)/DYGM FD2M=(F5Y-F4Y)/DYGM FD3M=(F8Y-F7Y)/DYGM FD1P=(F3Y-F2Y)/DYGP FD1P=(F6Y-F5Y)/DYGP FD1P=(F9Y-F8Y)/DYGP FC1L=A2L*FD1M+A1*FD2M FC1H=A3*FD2M+A2H*FD3M FC2L=A2L*FD1P+A1*FD2P FC2H=A3*FD2P+A2H*FD3P FDOUT=0.25*(FC1L+FC1H+FC2L+FC2H) RETURN END C*************************************************************** SUBROUTINE NORMDP(F1Y,F2Y,F3Y,F4Y,F5Y,F6Y,F7Y,F8Y,F9Y, & DYGM,DYGP,A1,A2L,A2H,A3,FC1L,FC1H,FC2L,FC2H) FD1M=(F2Y-F1Y)/DYGM FD2M=(F5Y-F4Y)/DYGM FD3M=(F8Y-F7Y)/DYGM FD1P=(F3Y-F2Y)/DYGP FD1P=(F6Y-F5Y)/DYGP FD1P=(F9Y-F8Y)/DYGP FC1L=A2L*FD1M+A1*FD2M FC1H=A3*FD2M+A2H*FD3M FC2L=A2L*FD1P+A1*FD2P FC2H=A3*FD2P+A2H*FD3P RETURN END C*************************************************************** c