# Tutorial 6: Comparison of different solutions¶

In the following we compare a set of different solutions of the groundwater flow equation.

## 1. extended Thiem 2D vs. steady solution for coarse graining transmissivity¶

The extended Thiem 2D solutions is the analytical solution of the groundwater flow equation for the coarse graining transmissivity for pumping tests. Therefore the results should coincide.

References:

import numpy as np
from matplotlib import pyplot as plt
from anaflow.tools.coarse_graining import T_CG

rad = np.geomspace(0.05, 4)  # radius from the pumping well in [0, 4]
r_ref = 2.0                  # reference radius
var = 0.5                    # variance of the log-transmissivity
len_scale = 10.0             # correlation length of the log-transmissivity
TG = 1e-4                    # the geometric mean of the transmissivity
rate = -1e-4                 # pumping rate

plt.xlabel("r in [m]")
plt.ylabel("h in [m]")
plt.legend()
plt.tight_layout()
plt.show()


## 2. extended Thiem 3D vs. steady solution for coarse graining conductivity¶

The extended Thiem 3D solutions is the analytical solution of the groundwater flow equation for the coarse graining conductivity for pumping tests. Therefore the results should coincide.

Reference: Zech et. al. 2012

import numpy as np
from matplotlib import pyplot as plt
from anaflow.tools.coarse_graining import K_CG

rad = np.geomspace(0.05, 4)  # radius from the pumping well in [0, 4]
r_ref = 2.0                  # reference radius
var = 0.5                    # variance of the log-transmissivity
len_scale = 10.0             # correlation length of the log-transmissivity
KG = 1e-4                    # the geometric mean of the transmissivity
anis = 0.7                   # aniso ratio
rate = -1e-4                 # pumping rate

plt.xlabel("r in [m]")
plt.ylabel("h in [m]")
plt.legend()
plt.tight_layout()
plt.show()


## 3. extended Thiem 2D vs. steady solution for apparent transmissivity from Neuman¶

Both, the extended Thiem and the Neuman solution, represent an effective steady drawdown in a heterogeneous aquifer. In both cases the heterogeneity is represented by two point statistics, characterized by mean, variance and length scale of the log transmissivity field. Therefore these approaches should lead to similar results.

References:

import numpy as np
from matplotlib import pyplot as plt

rad = np.geomspace(0.05, 4)  # radius from the pumping well in [0, 4]
r_ref = 30.0                 # reference radius
var = 0.5                    # variance of the log-transmissivity
len_scale = 10.0             # correlation length of the log-transmissivity
TG = 1e-4                    # the geometric mean of the transmissivity
rate = -1e-4                 # pumping rate

plt.xlabel("r in [m]")
plt.ylabel("h in [m]")
plt.legend()
plt.tight_layout()
plt.show()


## 4. extended Theis 2D vs. transient solution for apparent transmissivity from Neuman¶

Both, the extended Theis and the Neuman solution, represent an effective transient drawdown in a heterogeneous aquifer. In both cases the heterogeneity is represented by two point statistics, characterized by mean, variance and length scale of the log transmissivity field. Therefore these approaches should lead to similar results.

References:

import numpy as np
from matplotlib import pyplot as plt
from anaflow import ext_theis_2d, neuman2004

time_labels = ["10 s", "10 min", "10 h"]
time = [10, 600, 36000]      # 10s, 10min, 10h
rad = np.geomspace(0.05, 4)  # radius from the pumping well in [0, 4]
TG = 1e-4                    # the geometric mean of the transmissivity
var = 0.5                    # correlation length of the log-transmissivity
len_scale = 10.0             # variance of the log-transmissivity
S = 1e-4                     # storativity
rate = -1e-4                 # pumping rate

time_ticks=[]
for i, step in enumerate(time):
label1 = "extended Theis 2D" if i == 0 else None
label2 = "Transient Neuman 2004" if i == 0 else None

plt.title("$T_G={}$, $\sigma^2={}$, $\ell={}$, $S={}$".format(TG, var, len_scale, S))
plt.xlabel("r in [m]")
plt.ylabel("h in [m]")
plt.legend()
ylim = plt.gca().get_ylim()