SUBROUTINE ALLOCATE_ARRAYS() ! UW Land Surface Hydrology Group implementation of SAC/SNOW17 model ! modified from NLDAS implementation ! author: Ted Bohn, tbohn@hydro.washington.edu ! ALLOCATES ALMOST ALL GLOBAL DRIVER ARRAYS ! (LANDMASK, LAND, Y, and X are all allocated in READ_MASK) ! driverMod contains definitions for all global driver variables USE driverMod IMPLICIT NONE ! Set parameters MAXNSOIL = N_gndtmp MAXNSNOW = N_snow NBANDS = 1 ! Grid cell geometry ALLOCATE(COL(xlen,ylen)) ALLOCATE(ROW(xlen,ylen)) ALLOCATE(CELLID(xlen,ylen)) ! Catchment Model parameters ALLOCATE(CP(landlen)) ALLOCATE(CGREEN(landlen,12)) ALLOCATE(CLAI(landlen,12)) ALLOCATE(CAT_PROGN(landlen)) ALLOCATE(CAT_DIAGN(landlen)) ALLOCATE(MODIS_PARAM(landlen,12)) ALLOCATE(MET_FORCE(landlen)) ALLOCATE(GREEN(landlen)) ALLOCATE(LAI(landlen)) ! Land surface characteristics ! SAC !!$ ALLOCATE(UZTWM_2d(landlen)) !!$ ALLOCATE(UZFWM_2d(landlen)) !!$ ALLOCATE(UZK_2d(landlen)) !!$ ALLOCATE(PCTIM_2d(landlen)) !!$ ALLOCATE(ADIMP_2d(landlen)) !!$ ALLOCATE(RIVA_2d(landlen)) !!$ ALLOCATE(ZPERC_2d(landlen)) !!$ ALLOCATE(REXP_2d(landlen)) !!$ ALLOCATE(LZTWM_2d(landlen)) !!$ ALLOCATE(LZFSM_2d(landlen)) !!$ ALLOCATE(LZFPM_2d(landlen)) !!$ ALLOCATE(LZSK_2d(landlen)) !!$ ALLOCATE(LZPK_2d(landlen)) !!$ ALLOCATE(PFREE_2d(landlen)) !!$ ALLOCATE(SIDE_2d(landlen)) !!$ ALLOCATE(RSERV_2d(landlen)) ! SNOW17 !!$ ALLOCATE(SCF_2d(landlen)) !!$ ALLOCATE(MFMAX_2d(landlen)) !!$ ALLOCATE(MFMIN_2d(landlen)) !!$ ALLOCATE(UADJ_2d(landlen)) !!$ ALLOCATE(SI_2d(landlen)) !!$ ALLOCATE(NMF_2d(landlen)) !!$ ALLOCATE(TIPM_2d(landlen)) !!$ ALLOCATE(MBASE_2d(landlen)) !!$ ALLOCATE(PXTEMP_2d(landlen)) !!$ ALLOCATE(PLWHC_2d(landlen)) !!$ ALLOCATE(DAYGM_2d(landlen)) !!$ ALLOCATE(ELEV_2d(landlen)) !!$ ALLOCATE(ADC_2d(NADC,landlen)) ! PE scale/adjustment factors !!$ ALLOCATE(PESCALE_2d(landlen)) !!$ ALLOCATE(PEADJ_2d(NMONTHS,landlen)) ! Snow elevation band parameters !!$ ALLOCATE(band_elev(landlen,NBANDS)) !!$ ALLOCATE(band_area(landlen,NBANDS)) !!$ ALLOCATE(band_prec(landlen,NBANDS)) !!$ ALLOCATE(Tfactor(landlen,NBANDS)) !!$ ALLOCATE(Pfactor(landlen,NBANDS)) ! Grid cell state variables ! SAC !!$ ALLOCATE(UZTWC_2d(landlen,NBANDS)) !!$ ALLOCATE(UZFWC_2d(landlen,NBANDS)) !!$ ALLOCATE(LZTWC_2d(landlen,NBANDS)) !!$ ALLOCATE(LZFSC_2d(landlen,NBANDS)) !!$ ALLOCATE(LZFPC_2d(landlen,NBANDS)) !!$ ALLOCATE(ADIMC_2d(landlen,NBANDS)) ! SNOW17 !!$ ALLOCATE(SNOWH(landlen,NBANDS)) !!$ ALLOCATE(SNEQV(landlen,NBANDS)) !!$ ALLOCATE(SNOWCO(NSNOWCO,landlen,NBANDS)) ! Forcing variables ALLOCATE(SWdownminus(landlen)) ALLOCATE(LWdownminus(landlen)) ALLOCATE(Tairminus(landlen)) ALLOCATE(Qairminus(landlen)) ALLOCATE(Rainfminus(landlen)) ALLOCATE(Snowfminus(landlen)) ALLOCATE(PSurfminus(landlen)) ALLOCATE(Windminus(landlen)) ALLOCATE(PotEvapminus(landlen,NBANDS)) ALLOCATE(SWdownnow(landlen)) ALLOCATE(LWdownnow(landlen)) ALLOCATE(Tairnow(landlen)) ALLOCATE(Qairnow(landlen)) ALLOCATE(Rainfnow(landlen)) ALLOCATE(Snowfnow(landlen)) ALLOCATE(PSurfnow(landlen)) ALLOCATE(Windnow(landlen)) ALLOCATE(PotEvapnow(landlen,NBANDS)) ALLOCATE(SWdownplus(landlen)) ALLOCATE(LWdownplus(landlen)) ALLOCATE(Tairplus(landlen)) ALLOCATE(Qairplus(landlen)) ALLOCATE(Rainfplus(landlen)) ALLOCATE(Snowfplus(landlen)) ALLOCATE(PSurfplus(landlen)) ALLOCATE(Windplus(landlen)) ALLOCATE(PotEvapplus(landlen,NBANDS)) ALLOCATE(DT_TAIR(landlen)) ALLOCATE(DT_SPFH(landlen)) ALLOCATE(DT_PSFC(landlen)) ALLOCATE(DT_WIND(landlen)) ALLOCATE(DT_LWDN(landlen)) ALLOCATE(DT_SOLDN(landlen)) ALLOCATE(DT_SOLDNB(landlen)) ALLOCATE(DT_PRCP(landlen)) ALLOCATE(DT_RAIN(landlen)) ALLOCATE(DT_SNOW(landlen)) ALLOCATE(DT_EDMND(landlen,NBANDS)) ALLOCATE(TPREV(landlen)) ALLOCATE(Z(landlen)) ! Output variables ! ALLOCATE(SWnet(landlen)) ! ALLOCATE(LWnet(landlen)) ! ALLOCATE(Qle(landlen)) ! ALLOCATE(Qh(landlen)) ! ALLOCATE(Qg(landlen)) ! ALLOCATE(Qf(landlen)) ! ALLOCATE(Qv(landlen)) ! ALLOCATE(Qa(landlen)) ! ALLOCATE(DelSurfHeat(landlen)) ! ALLOCATE(DelColdCont(landlen)) ALLOCATE(Snowf(landlen)) ALLOCATE(Rainf(landlen)) ALLOCATE(Evap(landlen)) ALLOCATE(Qs(landlen)) ALLOCATE(Qsb(landlen)) ALLOCATE(Qsm(landlen)) ALLOCATE(Qfz(landlen)) ALLOCATE(Qst(landlen)) ALLOCATE(DelSoilMoist(landlen)) ALLOCATE(DelSWE(landlen)) ALLOCATE(DelSurfStor(landlen)) ALLOCATE(DelIntercept(landlen)) ! ALLOCATE(SnowT(landlen)) ! ALLOCATE(VegT(landlen)) ! ALLOCATE(BaresoilT(landlen)) ALLOCATE(AvgSurfT(landlen)) ALLOCATE(RadT(landlen)) ! ALLOCATE(Albedo(landlen)) ALLOCATE(SWE(landlen)) ALLOCATE(SWE_old(landlen)) ALLOCATE(SWEVeg(landlen)) ALLOCATE(SurfStor(landlen)) ALLOCATE(SoilMoist(landlen,MAXNSOIL)) ALLOCATE(SoilMoistTotal(landlen)) ALLOCATE(SoilMoistTotal_old(landlen)) ! ALLOCATE(SoilTemp(landlen,MAXNSOIL)) ! ALLOCATE(SMLiqFrac(landlen,MAXNSOIL)) ! ALLOCATE(SMFrozFrac(landlen,MAXNSOIL)) ALLOCATE(SoilWet(landlen)) ALLOCATE(PotEvap(landlen)) ALLOCATE(CanEvap(landlen)) ALLOCATE(Transp(landlen)) ALLOCATE(BareEvap(landlen)) ! ALLOCATE(TVeg(landlen)) ! ALLOCATE(ESoil(landlen)) ! ALLOCATE(EWater(landlen)) ! ALLOCATE(RootMoist(landlen)) ALLOCATE(CanopInt(landlen)) ! ALLOCATE(EvapSnow(landlen)) ! ALLOCATE(SubSnow(landlen)) ! ALLOCATE(SubSurf(landlen)) ! ALLOCATE(ACond(landlen)) ! ALLOCATE(SnowFrac(landlen)) ! ALLOCATE(Fdepth(landlen)) ! ALLOCATE(Tdepth(landlen)) ! ALLOCATE(SAlbedo(landlen)) ALLOCATE(SnowDepth(landlen)) ALLOCATE(CZMODEL(landlen)) END SUBROUTINE ALLOCATE_ARRAYS