PROGRAM watbaltest implicit none include 'constants.inc' integer :: nowcrp,iflag,nsl,cntflg,i integer :: iflget, idrain, sdate, lanuse, imngmt(mxcrop), year integer :: itype(mxcrop), iresd(mxres), iroot(mxres) integer :: iwind, mon, j1, j2, drseq(mxnsl) real :: elevm real :: por(mxnsl), thetdr(mxnsl), dg(mxnsl) real :: thetfc(mxnsl), solthk(mxnsl), rain, wmelt real :: irdept, iraplo, roffon(0:mxelem), fwidth, slplen, efflen real :: tillay(2), coca(mxnsl) real :: radinc, ddrain, ytn, inrcov, rilcov real :: smrm(mxres), tmnavg, ks, sm, rrc real :: kiadjf, tcadjf, prcp real :: tave, salb, radly, obmaxt(12), obmint(12), eo, tdpt real :: radpot, vwind, tu, su, tv, et real :: tmax, tmin, kcb(mxcrop), kcbcon, rawp(mxcrop) real:: sdrain, drdiam, drainc, pltol, ul4 integer :: norun real :: s1, s2, surdra, resint, plaint, sbrunf real :: ul(mxnsl), hk(mxnsl), soilw(mxnsl), sep, fin, pintlv real :: st(mxnsl), cv, ep, es, unsdep, drawat(mxnsl), satdep real :: drainq, runoff, daylen, watstr, fc(mxnsl) real :: canhgt, vdmt, lai, cancov,rmagt, rtd real :: rtm(mxres), rmogt(mxres),ssc(mxnsl+1) real :: fwidthPrev, slplenPrev, runoffPrev,efflenPrev, sbrunfPrev ! ! Load sets of input data that were saved from running WEPP. Each time wepp ran the water balance ! it dumped variables to a file called vars.txt. This a special version of wepp 2004.7 that includes ! this debugging snapshot. ! call loadopen('weppvars.txt') ! After calling watbal the variables are dumped to the file post.txt. This file can be used to compare the ! results of running this version with the regular wepp. call dumpopen('weppout.txt') ! ! This will simulate 1 year running the watbal code for each day. ! do i=1,365 call loadInt(nowcrp,'nowcrp') call loadInt(iflag,'iflag') call loadInt(idrain,'idrain') call loadInt(nsl,'nsl') call loadInt(cntflg,'cntflg') call loadInt(iflget,'iflget') call loadInt(sdate,'sdate') call loadInt(lanuse,'lanuse')! lanuse - flag for land use (1 - cropland; 2 - rangeland; 3 - forest ), not used, deleted from call call loadIntAr(imngmt,mxcrop,'imngmt')! imngmt - cropping system 1) annual 2) perennial 3) fallow, not used, deleted from call call loadInt(year,'year')! year - year of simulation, not used, deleted from call call loadIntAr(itype,mxcrop,'itype') call loadIntAr(iresd,mxres,'iresd')! iresd - residue type, not used, deleted from call call loadIntAr(iroot,mxres,'iroot')! iroot - ?, not used, deleted from call call loadInt(iwind,'iwind') call loadInt(mon,'mon') call loadInt(j1,'j1') call loadInt(j2,'j2') call loadIntAr(drseq,mxnsl,'drseq') call loadInt(norun,'norun') call loadFloat(elevm,'elevm') call loadFloatAr(por,mxnsl,'por') call loadFloatAr(thetdr,mxnsl,'thetdr') call loadFloatAr(dg,mxnsl,'dg') call loadFloatAr(thetfc,mxnsl,'thetfc') call loadFloatAr(solthk,mxnsl,'solthk') call loadFloat(rain,'rain') call loadFloat(wmelt,'wmelt') call loadFloat(irdept,'irdept') call loadFloat(iraplo,'iraplo') call loadFloatAr(roffon,mxelem,'roffon') call loadFloat(fwidth,'fwidth') call loadFloat(slplen,'slplen') call loadFloat(efflen,'efflen') call loadFloatAr(tillay,2,'tillay') call loadFloatAr(coca,mxnsl,'coca') call loadFloat(radinc,'radinc') call loadFloat(ddrain,'ddrain') call loadFloat(ytn,'ytn') call loadFloat(inrcov,'inrcov')! inrcov - interrill cover (0-1, unitless) call loadFloat(rilcov,'rilcov') call loadFloatAr(smrm,mxres,'smrm')! smrm - submerged residue mass today (kg/m^2) call loadFloat(tmnavg,'tmnavg')! tmnavg - five day minimum temperature average (deg C) call loadFloat(ks,'ks')! ks - saturated hydraulic conductivity (m/s), not used, deleted from call call loadFloat(sm,'sm')! sm - effective matric potential (m) for Green-Ampt, not used, deleted from call call loadFloat(rrc,'rrc') ! rrc - random roughness coefficient, not used, deleted from call call loadFloat(kiadjf,'kiadjf')! kiadjf - ki adjustment factor, not used, deleted from call call loadFloat(tcadjf,'tcadjf')! tcadjf - consolidation adjustment factor for critical shear stress call loadFloat(prcp,'prcp')! prcp - daily precipitation amount (m) call loadFloat(tave,'tave') call loadFloat(salb,'salb') call loadFloat(radly,'radly'); call loadFloatAr(obmaxt,12,'obmaxt') call loadFloatAr(obmint,12,'obmint') call loadFloat(eo,'eo') call loadFloat(tdpt,'tdpt') call loadFloat(radpot,'radpot') call loadFloat(vwind,'vwind') call loadFloat(tu,'tu') call loadFloat(su,'su') call loadFloat(tv,'tv') call loadFloat(et,'et') call loadFloat(tmax,'tmax') call loadFloat(tmin,'tmin') call loadFloat(kcbcon,'kcbcon') call loadFloatAr(kcb,mxcrop,'kcb') call loadFloatAr(rawp,mxcrop,'rawp') call loadFloat(sdrain,'sdrain') call loadFloat(drdiam,'drdiam') call loadFloat(drainc,'drainc') call loadFloat(pltol,'pltol') call loadFloat(ul4,'ul4') call loadFloat(s1,'s1') call loadFloat(s2,'s2') call loadFloat(surdra,'surdra') call loadFloat(resint,'resint') call loadFloat(plaint,'plaint') call loadFloat(sbrunf,'sbrunf') call loadFloatAr(ul,mxnsl,'ul') call loadFloatAr(hk,mxnsl,'hk') call loadFloatAr(soilw,mxnsl,'soilw') call loadFloat(sep,'sep') call loadFloat(fin,'fin') call loadFloat(pintlv,'pintlv') call loadFloatAr(st,mxnsl,'st') call loadFloat(cv,'cv') call loadFloat(ep,'ep') call loadFloat(es,'es') call loadFloat(unsdep,'unsdep') call loadFloatAr(drawat,mxnsl,'drawat') call loadFloat(satdep,'satdep') call loadFloat(drainq,'drainq') call loadFloat(runoff,'runoff') call loadFloat(daylen,'daylen') call loadFloat(watstr,'watstr') call loadFloatAr(fc,mxnsl,'fc') call loadFloat(canhgt,'canhgt') call loadFloat(vdmt,'vdmt')! vdmt - vegetative dry matter (kg/m^2) call loadFloat(lai,'lai') call loadFloat(cancov,'cancov')! cancov - canopy cover (0-1, unitless) call loadFloat(rmagt,'rmagt') call loadFloat(rtd,'rtd') call loadFloatAr(rtm,mxres,'rtm')! rtm - non living root mass (kg/m^2), not used, deleted from call call loadFloatAr(rmogt,mxres,'rmogt') call loadFloatAr(ssc,mxnsl+1,'ssc') call loadFloat(fwidthPrev,'fwidthPrev') call loadFloat(slplenPrev,'slplenPrev') call loadFloat(runoffPrev,'runoffPrev') call loadFloat(efflenPrev,'efflenPrev') call loadFloat(sbrunfPrev,'sbrunfPrev') call watbal(fwidthPrev, slplenPrev, runoffPrev,efflenPrev, sbrunfPrev, & & nowcrp,norun,iflag,nsl,cntflg, & & iflget, idrain, sdate, & & itype, & & elevm, s1, s2, surdra, resint, & & plaint, sbrunf,ul,fc,hk, & & soilw,sep,pintlv, st, ep, & & unsdep, watstr, satdep, drainq, runoff, & & drawat, es, por, thetdr, dg, & & thetfc, solthk, rtd, lai, fin, & & rain, wmelt, irdept, iraplo, roffon, & & fwidth, slplen, efflen, tillay, cv, & & rmagt, rmogt,coca, ssc, radinc, & & ddrain, ytn, daylen,canhgt, & & iwind, mon, & & j1, j2, tave, salb, radly, & & obmaxt, obmint, eo, tdpt, radpot, & & vwind, tu, su, tv, et, & & tmax, tmin, kcb, kcbcon, rawp, & & drseq, sdrain, drdiam, drainc, pltol, & & ul4) ! write out the varaibles after calling watbal call dumpInt(nowcrp,'nowcrp') call dumpInt(iflag,'iflag') call dumpInt(idrain,'idrain') call dumpInt(nsl,'nsl') call dumpInt(cntflg,'cntflg') call dumpInt(iflget,'iflget') call dumpInt(sdate,'sdate') call dumpInt(lanuse,'lanuse') call dumpIntAr(imngmt,mxcrop,'imngmt') call dumpInt(year,'year'); call dumpIntAr(itype,mxcrop,'itype') call dumpIntAr(iresd,mxres,'iresd') call dumpIntAr(iroot,mxres,'iroot') call dumpInt(iwind,'iwind') call dumpInt(mon,'mon') call dumpInt(j1,'j1') call dumpInt(j2,'j2') call dumpIntAr(drseq,mxnsl,'drseq') call dumpInt(norun,'norun') call dumpFloat(elevm,'elevm') call dumpFloatAr(por,mxnsl,'por') call dumpFloatAr(thetdr,mxnsl,'thetdr') call dumpFloatAr(dg,mxnsl,'dg') call dumpFloatAr(thetfc,mxnsl,'thetfc') call dumpFloatAr(solthk,mxnsl,'solthk') call dumpFloat(rain,'rain') call dumpFloat(wmelt,'wmelt') call dumpFloat(irdept,'irdept') call dumpFloat(iraplo,'iraplo') call dumpFloatAr(roffon,mxelem,'roffon') call dumpFloat(fwidth,'fwidth') call dumpFloat(slplen,'slplen') call dumpFloat(efflen,'efflen') call dumpFloatAr(tillay,2,'tillay') call dumpFloatAr(coca,mxnsl,'coca') call dumpFloat(radinc,'radinc') call dumpFloat(ddrain,'ddrain') call dumpFloat(ytn,'ytn') call dumpFloat(inrcov,'inrcov') call dumpFloat(rilcov,'rilcov') call dumpFloatAr(smrm,mxres,'smrm') call dumpFloat(tmnavg,'tmnavg') call dumpFloat(ks,'ks') call dumpFloat(sm,'sm') call dumpFloat(rrc,'rrc') call dumpFloat(kiadjf,'kiadjf') call dumpFloat(tcadjf,'tcadjf') call dumpFloat(prcp,'prcp') call dumpFloat(tave,'tave') call dumpFloat(salb,'salb') call dumpFloat(radly,'radly'); call dumpFloatAr(obmaxt,12,'obmaxt') call dumpFloatAr(obmint,12,'obmint') call dumpFloat(eo,'eo') call dumpFloat(tdpt,'tdpt') call dumpFloat(radpot,'radpot') call dumpFloat(vwind,'vwind') call dumpFloat(tu,'tu') call dumpFloat(su,'su') call dumpFloat(tv,'tv') call dumpFloat(et,'et') call dumpFloat(tmax,'tmax') call dumpFloat(tmin,'tmin') call dumpFloat(kcbcon,'kcbcon') call dumpFloatAr(kcb,mxcrop,'kcb') call dumpFloatAr(rawp,mxcrop,'rawp') call dumpFloat(sdrain,'sdrain') call dumpFloat(drdiam,'drdiam') call dumpFloat(drainc,'drainc') call dumpFloat(pltol,'pltol') call dumpFloat(ul4,'ul4') call dumpFloat(s1,'s1') call dumpFloat(s2,'s2') call dumpFloat(surdra,'surdra') call dumpFloat(resint,'resint') call dumpFloat(plaint,'plaint') call dumpFloat(sbrunf,'sbrunf') call dumpFloatAr(ul,mxnsl,'ul') call dumpFloatAr(hk,mxnsl,'hk') call dumpFloatAr(soilw,mxnsl,'soilw') call dumpFloat(sep,'sep') call dumpFloat(fin,'fin') call dumpFloat(pintlv,'pintlv') call dumpFloatAr(st,mxnsl,'st') call dumpFloat(cv,'cv') call dumpFloat(ep,'ep') call dumpFloat(es,'es') call dumpFloat(unsdep,'unsdep') call dumpFloatAr(drawat,mxnsl,'drawat') call dumpFloat(satdep,'satdep') call dumpFloat(drainq,'drainq') call dumpFloat(runoff,'runoff') call dumpFloat(daylen,'daylen') call dumpFloat(watstr,'watstr') call dumpFloatAr(fc,mxnsl,'fc') call dumpFloat(canhgt,'canhgt') call dumpFloat(vdmt,'vdmt') call dumpFloat(lai,'lai') call dumpFloat(cancov,'cancov') call dumpFloat(rmagt,'rmagt') call dumpFloat(rtd,'rtd') call dumpFloatAr(rtm,mxres,'rtm') call dumpFloatAr(rmogt,mxres,'rmogt') call dumpFloatAr(ssc,mxnsl+1,'ssc') call dumpFloat(fwidthPrev,'fwidthPrev') call dumpFloat(slplenPrev,'slplenPrev') call dumpFloat(runoffPrev,'runoffPrev') call dumpFloat(efflenPrev,'efflenPrev') call dumpFloat(sbrunfPrev,'sbrunfPrev') ! ! this advances the file to the next set of variables in the file. It loads them into memory but does not assign ! them to the fortran variables. That is done in the load* steps above. ! call loadnewseq() ! this just writes out a #### string to the file to seperate the days in the simulation call dumpnewseq() ! This might take awhile, indicate that simulation is working write (*,*) i, ' ' end do ! close the files for reading and writing call dumpclose() call loadclose() write (*,*) 'Done...' END PROGRAM