Water Balance with Ponding
Water Balance with Ponding
I am using HYDRUS1D to evaluate the water balance of a 500 mm thick clayey soil. The top BC is Atmospheric BC with Surface Layer, and the Max h at soil surface is set at 150 mm. The bottom BC is Free Drainage. Root water uptake is on. I force the model with 10 times the recorded rainfall (in Vancouver, Canada) over 4 years, as well as the reference ET which I calculated outside the model and which I know is realistic. The total rainfall is 52022 mm. The model seems to be missing a lot of water (the surface runoff is about half what I get from another model which uses GreenAmpt).
The cumulative results from the T_level.out file are:
sum(VRoot) 522 mm
sum(Evap) 1662 mm
sum(Runoff) 9541 mm
sum(vBot) 24456 (negative value, i.e. outflow)
Therefore the change in storage is: P  sum(VRoot)  sum(Evap)  sum(Runoff)  sum(vBot)
which is:
52022  522  1662  9541  24456 = 15841 mm
The change in storage in the soil over the simulation period is only 23.48 mm, so that does not come even close to accounting for the 15841 mm in storage change that I calculated above. This water balance result does not make sense to me. However, the water balance error reported by HYDRUS1D for the soil alone is very small, so the problem appears to be with the surface runoff. Is there something I am missing here ??
The cumulative results from the T_level.out file are:
sum(VRoot) 522 mm
sum(Evap) 1662 mm
sum(Runoff) 9541 mm
sum(vBot) 24456 (negative value, i.e. outflow)
Therefore the change in storage is: P  sum(VRoot)  sum(Evap)  sum(Runoff)  sum(vBot)
which is:
52022  522  1662  9541  24456 = 15841 mm
The change in storage in the soil over the simulation period is only 23.48 mm, so that does not come even close to accounting for the 15841 mm in storage change that I calculated above. This water balance result does not make sense to me. However, the water balance error reported by HYDRUS1D for the soil alone is very small, so the problem appears to be with the surface runoff. Is there something I am missing here ??
Re: Water Balance with Ponding
Why don’t you post the project so that we can figure out what is going on? J.
Re: Water Balance with Ponding
Jirka,
Thanks for your reply. I tried attaching my model files but I get an error "Invalid File Extension HYDRUS1D.DAT". Do I need to create something different (a packaged project) and send that to you ?
Thanks,
Colin
Thanks for your reply. I tried attaching my model files but I get an error "Invalid File Extension HYDRUS1D.DAT". Do I need to create something different (a packaged project) and send that to you ?
Thanks,
Colin
Re: Water Balance with Ponding
I regularly attach project to my “discussion forum” posts. I usually zip the project folder together with the project.h1D and post the zip file. J.
Re: Water Balance with Ponding
Jirka  the compressed files are attached in .zip format. I could not include the .OUT files because the .ZIP file was 5MB and too large to attach. Let me know if you need those.
Regards, Colin
Regards, Colin
Re: Water Balance with Ponding
I have rerun your project and got the following results, from which I calculate mass balance:
Initial Storage: 27.268 cm
Final Storage: 25.073 cm
Change in Storage: 2.2 cm
Actual Inflow: Sum(vTop)=3247.0 cm (negative for downward flux)
Actual Transpiration: Sum(vRoot)=5.386 cm
Bottom Outflow: Sum(vBot)= 3243.8 cm (negative for downward flux)
Total Outflow=5.4+3243.8 =3249.2
InflowOutflow= Change in Storage
3247.03249.2= 2.2 cm
The mass balance is perfectly closed.
Jirka
Initial Storage: 27.268 cm
Final Storage: 25.073 cm
Change in Storage: 2.2 cm
Actual Inflow: Sum(vTop)=3247.0 cm (negative for downward flux)
Actual Transpiration: Sum(vRoot)=5.386 cm
Bottom Outflow: Sum(vBot)= 3243.8 cm (negative for downward flux)
Total Outflow=5.4+3243.8 =3249.2
InflowOutflow= Change in Storage
3247.03249.2= 2.2 cm
The mass balance is perfectly closed.
Jirka
Re: Water Balance with Ponding
Jirka,
Thanks for your detailed reply. My response is as follows:
1) I agree the water balance for the soil is OK. But there is more to this than just the soil. I am referring to the global water balance, which includes precipitation and surface runoff, as follows:
Change in Storage = P  E  T  R  BOT
(where P = precipitation, E = evaporation, T = transpiration, R = runoff, and BOT = bottom flux). There are no other means by which water can be lost from the model, apart from E, T, R, and BOT, as far as I know. Except some water could be held in surface storage, since my model is setup assuming 150 mm allowable ponding.
2) For some reason we are not getting the same results from the model. For example, I ran the model this morning and I get sum(VBot) = 24456 mm, whereas you are getting 3243.8 cm (32438 mm). I am just curious to know if you ran the model with cm units, or mm ? I ran the model using mm units, and hourly time step. The value you report for sum(VRoot) is 53.85 mm, which is much lower than my value of 522.42 mm. Something is not quite right here.
I appreciate your suggestions, especially about part (1) above.
Colin
Thanks for your detailed reply. My response is as follows:
1) I agree the water balance for the soil is OK. But there is more to this than just the soil. I am referring to the global water balance, which includes precipitation and surface runoff, as follows:
Change in Storage = P  E  T  R  BOT
(where P = precipitation, E = evaporation, T = transpiration, R = runoff, and BOT = bottom flux). There are no other means by which water can be lost from the model, apart from E, T, R, and BOT, as far as I know. Except some water could be held in surface storage, since my model is setup assuming 150 mm allowable ponding.
2) For some reason we are not getting the same results from the model. For example, I ran the model this morning and I get sum(VBot) = 24456 mm, whereas you are getting 3243.8 cm (32438 mm). I am just curious to know if you ran the model with cm units, or mm ? I ran the model using mm units, and hourly time step. The value you report for sum(VRoot) is 53.85 mm, which is much lower than my value of 522.42 mm. Something is not quite right here.
I appreciate your suggestions, especially about part (1) above.
Colin
Re: Water Balance with Ponding
1) The surface water balance is closed as well.
Potential Inflow: Sum(rTop): 4960.7 cm is divided between infiltration, runoff, and evaporation.
Sum(infil)= 3474.1 cm
Sum(evap)= 235.3 cm
Sum(runoff)= 1724.1
==================
3474.1+1724.1235.3=4944.9 cm (which is closed to 4960.7, about 0.3%)
2) Yes, I have converted the project to cm and perhaps made some other modifications (with respect to tolerance criteria, etc; I do not recall). I have noticed that during the conversion, the GUI has mistakenly converted the column with LAI (as if it is rRoot). I have fixed this error now and we will need to update the installation.
J.
Potential Inflow: Sum(rTop): 4960.7 cm is divided between infiltration, runoff, and evaporation.
Sum(infil)= 3474.1 cm
Sum(evap)= 235.3 cm
Sum(runoff)= 1724.1
==================
3474.1+1724.1235.3=4944.9 cm (which is closed to 4960.7, about 0.3%)
2) Yes, I have converted the project to cm and perhaps made some other modifications (with respect to tolerance criteria, etc; I do not recall). I have noticed that during the conversion, the GUI has mistakenly converted the column with LAI (as if it is rRoot). I have fixed this error now and we will need to update the installation.
J.
Re: Water Balance with Ponding
Hi Jirka:
1) OK I see how you checked the surface water balance and you get good closure. But I am confused as to why you subtract the sum(Evap) term. It seems to me you have a potential inflow which is sum(vTop), and three outflows, which are the infiltration, evaporation, and runoff.
2) I tried your water balance approach using the results from my model (clayey soil loaded with 10 times the recorded rainfall). No matter whether I add or subtract the sum(Evap) term, I am nowhere close to getting a surface water balance using the approach you outlined, as you can see in the attached PDF. In short:
sum(vTop) = 24954 (cumulative value of the actual surface flux  this is negative by the way)
sum of outflows adding in the Evap term = 37744 (way more than sum(vTop)
sum of outflows subtracting the Evap term = 36082 (still way more than sum(vTop)
However, when I try your approach with same soil and the recorded rainfall (not times 10), I get surface water balance closure to 0.39%, if I add the Evap term , rather than subtracting it, which I think makes more sense.
Colin
1) OK I see how you checked the surface water balance and you get good closure. But I am confused as to why you subtract the sum(Evap) term. It seems to me you have a potential inflow which is sum(vTop), and three outflows, which are the infiltration, evaporation, and runoff.
2) I tried your water balance approach using the results from my model (clayey soil loaded with 10 times the recorded rainfall). No matter whether I add or subtract the sum(Evap) term, I am nowhere close to getting a surface water balance using the approach you outlined, as you can see in the attached PDF. In short:
sum(vTop) = 24954 (cumulative value of the actual surface flux  this is negative by the way)
sum of outflows adding in the Evap term = 37744 (way more than sum(vTop)
sum of outflows subtracting the Evap term = 36082 (still way more than sum(vTop)
However, when I try your approach with same soil and the recorded rainfall (not times 10), I get surface water balance closure to 0.39%, if I add the Evap term , rather than subtracting it, which I think makes more sense.
Colin
 Attachments

 20181207094448496.pdf
 (746.66 KiB) Downloaded 147 times
Re: Water Balance with Ponding
I have made a spelling error in my email. It was supposed to be Sum(rTop), as I write "Potential inflow. Where else could the incoming water go? Infiltrate, evaporate or runoff. J.
Re: Water Balance with Ponding
I am also confused a bit by reading this example.
1. I downloaded this project file, and ran it on my computer. I got the following values (L=mm):
Soil water balance 
SumvTop: 0.22016E+05 (last element , corresponding to the final time,of SumvTop in T_level.out )
SumvBot: 0.21576E+05 (last element of SumvBot in T_level.out )
SumvRoot:0.43801E+03 (last element of SumvRoot in T_level.out )
final Storage:0.27500E+03 ( last element of Volume in T_level.out)
initial Storage:0.27268E+03 (read from balance.out)
Final Time=30181 hrs;
final Storageinitial Storage=SumvTopSumvRoot+SumvBot
2.33=1.99> error=0.33.
fisrtly, I was wondering if I am reading the values correctly.
secondly, I just took the files by running the input files with Hydrus1D; therefore, I was wondering why my values are different from both of you.
Surface water balance 
SumrTop: 0.44463E+05 (last element of SumrTop in T_level.out )
SumEvap:0.14036E+04 (last element of SumEvap in T_level.out )
SumInfil:0.23353E+05 (last element of SumInfil in T_level.out )
SumRunoff:0.89101E+04 (last element of SumRunoff in T_level.out )
SumrTop=SumEvap+SumInfil+SumRunoff
44463=33667> error=10796;
Fistly, my mass balance is also not closed for the surface so I was wondering what could give rise to this.
Secondly, I was wondering if the existence of allowable limitted ponding would change the aforementioned equation.
Thirdly, I was wondering how sumEvap is calculatable from the rest of fluxes.
Fourthly, I was wondering how sumInfil is (Actual Evap.Actual Prec.) even in presence of ponding.

2. I was wondering if the 1st node corresponds also to the soil column or purely to the surface balance, and that the equations are written for center or vertex of the nodes we see in the graphical interface.
Thanks for your response.
1. I downloaded this project file, and ran it on my computer. I got the following values (L=mm):
Soil water balance 
SumvTop: 0.22016E+05 (last element , corresponding to the final time,of SumvTop in T_level.out )
SumvBot: 0.21576E+05 (last element of SumvBot in T_level.out )
SumvRoot:0.43801E+03 (last element of SumvRoot in T_level.out )
final Storage:0.27500E+03 ( last element of Volume in T_level.out)
initial Storage:0.27268E+03 (read from balance.out)
Final Time=30181 hrs;
final Storageinitial Storage=SumvTopSumvRoot+SumvBot
2.33=1.99> error=0.33.
fisrtly, I was wondering if I am reading the values correctly.
secondly, I just took the files by running the input files with Hydrus1D; therefore, I was wondering why my values are different from both of you.
Surface water balance 
SumrTop: 0.44463E+05 (last element of SumrTop in T_level.out )
SumEvap:0.14036E+04 (last element of SumEvap in T_level.out )
SumInfil:0.23353E+05 (last element of SumInfil in T_level.out )
SumRunoff:0.89101E+04 (last element of SumRunoff in T_level.out )
SumrTop=SumEvap+SumInfil+SumRunoff
44463=33667> error=10796;
Fistly, my mass balance is also not closed for the surface so I was wondering what could give rise to this.
Secondly, I was wondering if the existence of allowable limitted ponding would change the aforementioned equation.
Thirdly, I was wondering how sumEvap is calculatable from the rest of fluxes.
Fourthly, I was wondering how sumInfil is (Actual Evap.Actual Prec.) even in presence of ponding.

2. I was wondering if the 1st node corresponds also to the soil column or purely to the surface balance, and that the equations are written for center or vertex of the nodes we see in the graphical interface.
Thanks for your response.
Re: Water Balance with Ponding
Hi Mitra:
My apologies for this very late reply to your post.
Thanks for running my model and sharing your results. I am not sure why your results do not match mine. Perhaps it is related to the specification of the initial conditions, allowable number of iterations, or something else in the model that is not transferred to you when I share the HYDRUS files. In any case, I will try to answer a few of your questions. I am still not to the bottom of the water balance issue.
1) I don't know why the surface water mass balance you calculate does not close, however I would say we should not use a potential value such as sum(rTop) when calculating the mass balance, and that only actual (not potential) values should be used, which means we should be using sum(vTop) rather than sum(rTop). What I find a bit tough is that the HYDRUS T_level output file does not report the cumulative precipitation, and that's always what I want to consider when I quantify the mass balance. In other words I want to know "Where did all the rainfall go ?" It seems to me that the rainfall can only go the following:
 evaporation
 infiltration
 runoff
Should not the sum of these 3 values equal the total rainfall amount (specified in the ATMOSPH.IN file), apart of course from any change in the soil water volume ? In the model I am running as of today with 1 year of P/PET data, zero ponding, clay soil 500 mm thick, and hourly time step I am getting the following:
P = 1349 mm
sum(Evap) = 222 mm
sum(Infil) = 957 mm
sum(Runoff) = 417 mm
222+ 957 + 417 = 1596 mm >> P = 1349 mm. This result does not make sense to me. One of the three of Evap or Infil or Runoff seems to be too large. Maybe Jirka would care to comment.
2) The existence of allowable ponding depth should not alter the fundamentals of the mass balance, if the model is setup properly. This is what I want to explore further, because the stormwater bioretention facilities I am investigating normally allow 100  200 mm of ponding.
3) Yes, I think you should be able to calculate sum(Evap) from the rest of the water balance data reported by the model, as in my Part 1 above, or considering the soil as a storage unit and determining inflows  outflows = change in storage.
I welcome any comments you might have.
Regards,
Colin
My apologies for this very late reply to your post.
Thanks for running my model and sharing your results. I am not sure why your results do not match mine. Perhaps it is related to the specification of the initial conditions, allowable number of iterations, or something else in the model that is not transferred to you when I share the HYDRUS files. In any case, I will try to answer a few of your questions. I am still not to the bottom of the water balance issue.
1) I don't know why the surface water mass balance you calculate does not close, however I would say we should not use a potential value such as sum(rTop) when calculating the mass balance, and that only actual (not potential) values should be used, which means we should be using sum(vTop) rather than sum(rTop). What I find a bit tough is that the HYDRUS T_level output file does not report the cumulative precipitation, and that's always what I want to consider when I quantify the mass balance. In other words I want to know "Where did all the rainfall go ?" It seems to me that the rainfall can only go the following:
 evaporation
 infiltration
 runoff
Should not the sum of these 3 values equal the total rainfall amount (specified in the ATMOSPH.IN file), apart of course from any change in the soil water volume ? In the model I am running as of today with 1 year of P/PET data, zero ponding, clay soil 500 mm thick, and hourly time step I am getting the following:
P = 1349 mm
sum(Evap) = 222 mm
sum(Infil) = 957 mm
sum(Runoff) = 417 mm
222+ 957 + 417 = 1596 mm >> P = 1349 mm. This result does not make sense to me. One of the three of Evap or Infil or Runoff seems to be too large. Maybe Jirka would care to comment.
2) The existence of allowable ponding depth should not alter the fundamentals of the mass balance, if the model is setup properly. This is what I want to explore further, because the stormwater bioretention facilities I am investigating normally allow 100  200 mm of ponding.
3) Yes, I think you should be able to calculate sum(Evap) from the rest of the water balance data reported by the model, as in my Part 1 above, or considering the soil as a storage unit and determining inflows  outflows = change in storage.
I welcome any comments you might have.
Regards,
Colin