• Tidak ada hasil yang ditemukan

5.3 Water Potential–Water Content Relations

5.3.4 Hydrostatic Equilibrium of Soil Water in a Gravitational Field

If water is in hydrostatic equilibrium with the gravitational field, all the water contained in the soil profile must have a total potential equal to zero. If the reference level for the gravitational potential is taken as the surface of the water table, the gravitational potential increases on going towards the surface. To have a total potential equal to zero, the matric potential must decrease by the same amount; therefore the amount of water contained in the soil must decrease from the water table towards the surface (according to the soil water retention curve of that specific soil type).

Figure 5.9 shows the profile of hydrostatic equilibrium of soil water in a gravitational field. The gravitational potential is zero at the surface of the water table and the total potential is zero across the whole profile.

It is possible to compute the total amount of water contained in a soil column in hydrostatic equilibrium with a gravitational field by numerical integration of the water retention curve for a matric potential decreasing from 0 (water table) to the depth of the soil column.

In this example, two water retention curve models (Campbell’s and van Genuchten’s) were used for a loamy sand to perform the numerical integration over a two-dimensional profile of width 1 m and depth 2 m. The numerical integration is performed with the codeExtended methods presented in Appendix B, where the theory for numerical integration is described in detail. The project for computing the amount of water in the soil profile is calledPSP_columnWaterContent.py and comprises three files:

1. main.py 2. PSP_soil.py

3. PSP_integration.py

122 Soil Liquid Phase and Soil–Water Interactions Soil surface

ψm ψg

water table +

Water potential 0

Figure 5.9 Gravitational (ψg) and matric (ψm) potential profiles in hydrostatic equilibrium with the water table.

The filemain.py(shown below) includes the module needed for the computation and plotting as described in previous chapters. Here we are also importing the module Imagefrom thePython Imaging Librarythat we used in Chapter 2, since we are plotting the results of the integration over a picture of a soil profile. The first lines of the mainfunction are used to select the water retention model, the depth of the soil profile is defined and the variableintegralis defined by assigning it the functionqsimp. Since the integration is performed over the soil column, the units of soil water potential are con- verted from m to J kg–1(by multiplying by the gravitational constant) when the function qsimp(soil.waterContent, -waterTableDepth*9.81, 0)is called. Indeed, the first argument of the functionqsimpis the type of function to be used for integration and the upper and lower limits of the integral. The integration is therefore performed over matric potential values ranging from 0 to –2 m, but with matric potential in J kg–1.

In the last section of this function, an image calledsoilProfile.pngis imported and then a plot is performed over the image itself.

#PSP_columnWaterContent

from _ _future_ _ import print_function, division import matplotlib.pyplot as plt

import matplotlib.cm as cm import Image

import numpy as np import PSP_soil as soil

from PSP_integration import qsimp def main():

choice = 0

print (soil.CAMPBELL,’ Campbell’)

Water Potential–Water Content Relations 123 print (soil.VAN_GENUCHTEN,’ van Genuchten’)

while (choice < soil.CAMPBELL) or (choice > soil.VAN_GENUCHTEN):

choice = float(input("Choose water retention curve: ")) if (choice < soil.CAMPBELL) or (choice > soil.VAN_GENUCHTEN):

print(’wrong choice.’) soil.waterRetentionCurve = choice waterTableDepth = 2.0

nrValues = 100

step = waterTableDepth/nrValues

integral = qsimp(soil.waterContent, -waterTableDepth*9.81, 0) totalWaterContent = integral / 9.81

print ("\nTotal water content [m^3]:", totalWaterContent) x = np.zeros(nrValues+1, float)

y = np.zeros(nrValues+1, float) for i in range(nrValues+1):

y[i] = step*i

psi = y[i] - waterTableDepth psi *= 9.81

x[i] = soil.waterContent(psi)

img = Image.open(’soil_column.png’).convert("L") mgplot = plt.imshow(img, cmap = cm.Greys_r,

extent=[0,1,waterTableDepth,0]) plt.plot(x, y, ’k’, linewidth=’3’) plt.xlim(0, 1)

plt.ylim(waterTableDepth, 0)

plt.title(’water content in soil column’) plt.xlabel(’water content [m^3/m^3]’) plt.ylabel(’depth [m]’)

plt.show() main()

The following is the filePSP_soil.py,in which Campbell’s and van Genuchten’s water retention models are implemented:

#PSP_soil.py CAMPBELL = 1 VAN_GENUCHTEN = 2 waterRetentionCurve = 0 thetaS = 0.46 thetaR = 0.01 Campbell_he = -4.2

124 Soil Liquid Phase and Soil–Water Interactions Campbell_b = 3.58

VG_alpha = 0.18

VG_n = 2.86

VG_m = 0.11

def waterContent(signPsi):

if (waterRetentionCurve == CAMPBELL):

if (signPsi >= Campbell_he):

return thetaS else:

Se = (signPsi / Campbell_he)**(-1. / Campbell_b) return Se*thetaS

elif(waterRetentionCurve == VAN_GENUCHTEN):

if (signPsi >= 0.):

return thetaS else:

Se = 1. / (1. + (VG_alpha * abs(signPsi))**VG_n)**VG_m return Se*(thetaS - thetaR) + thetaR

The file PSP_integration.py implements an algorithm for numerical integra- tion. It is a numerical code that combines the trapezoidal and the Simpson equations, with the idea of increasing the number of evaluated values until a certain precision is fulfilled. A detailed description of this code is provided in Appendix B, where examples of numerical integration are provided.

#PSP_integration.py

from _ _future_ _ import division def trapzd(func, a, b, n):

if (n == 1):

trapzd.s = 0.5*(b-a)*(func(a) + func(b)) return trapzd.s

else:

it = 1

for j in range(1, n-1):

it <<= 1 tnm = float(it) del_ = (b-a)/tnm x = a+0.5*del_

sum = 0.0

for j in range(1, it+1):

sum += func(x) x += del_

trapzd.s = 0.5*(trapzd.s + (b-a)*sum/tnm) return trapzd.s

Water Potential–Water Content Relations 125 def qsimp(func, a, b):

EPS = 1.0e-6 JMAX = 20 ost=0.0 os=0.0

for j in range(1, JMAX+1):

st = trapzd(func,a,b,j) s = (4.0*st-ost)/3.0 if (j > 5):

if (abs(s-os) < EPS*abs(os) or (s == 0.0 and os == 0.0)):

return s os=s

ost=st

The result of the program is shown in Fig. 5.10, where the variation of the soil wa- ter content across the profile is plotted. The area under the left side of the line is the computed integral. The zero value of the water potential corresponds to the water table surface, as depicted in Fig. 5.9, where the matric potential decreases further above the

0.0

0.5

1.0

1.5

2.0

0.0 0.2 0.4 0.6 0.8 1.0

Depth [m]

Water content [m2 m–2] Figure 5.10 Variation of soil water content in a soil profile as a function of height above a water table. The water is in hydrostatic equilibrium with the gravitational field; therefore all the water in the soil profile has total potential equal to zero.

126 Soil Liquid Phase and Soil–Water Interactions

water table, while the gravitational potential increases. The solution of the integral is about 750 kg of water in the soil profile (1 m×2 m×

θ(z)dz≈0.75 m3).