![MathJax Logo](/templates/jsp/_style2/_tandf/pb2/images/math-jax.gif)
Abstract
In this paper, we present a method for determining the sorption isotherm from experimental measurements. The sorption isotherm is not assumed to be a member of any specific finite dimensional class (e.g. Freundlich isotherm, Langmuir isotherm). Instead, an infinite-dimensional space of functions is considered with limited a priori assumptions (e.g. smoothness, monotonicity). Consequently, we face a more challenging problem compared to the finite-dimensional case, in which only few tuning parameters need to be determined. We consider the case of flow of the contaminated water into the unsaturated porous media sample; we assume that the data are collected at the outflow. The sorption isotherm is determined in an iterative way. We minimize the cost functional reflecting the discrepancy between measured and computed data. In doing so, we use the Gateaux differential to obtain the direction of descent.
1. Introduction
The protection of clean underground water in reservoirs is of great environmental importance and has received much attention also in the mathematical modelling community. In last decades, a significant progress has been achieved (see e.g. [Citation1, Citation2]). Precise mathematical models can describe realistically the flow, the transport diffusion and the adsorption of the contaminated water in terms of non-linear systems of PDEs. These mathematical models require a set of model data (hydrological, geochemical) in order to be applied in practice. Model data can be obtained by additional measurements on the site. Under certain assumptions, some of the model data can also be obtained in laboratory conditions. There are many methods and results on how to obtain them. Most of them focus on unsaturated flow models (hydraulic permeability, soil parameters in capillary pressure and hydraulic permeability vs. saturation models, dispersion, etc.) – see, e.g. [Citation3, Citation4]; we have also contributed in [Citation5]. Soil parameters represent tuning parameters in capillary pressure, hydraulic permeability vs. saturation empirical models. For the determination of some geochemical model data (sorption isotherms, adsorption kinetics), methods have been developed too (see e.g. [Citation6–Citation8]; we have also contributed in [Citation5]). In these publications, the sorption isotherm is assumed to belong to some class of parametrized functions (Langmuir, Freundlich, Henrych, etc.) with few tuning parameters. To determine the sorption isotherm and the adsorption kinetic in laboratory conditions, we have to consider the complex system of flow, transport, dispersion and adsorption which requires much effort in its numerical realization even in one dimension. Few results are available in this direction. The determination of model data based on some measurements is an ill-posed problem. It is therefore a difficult numerical problem, which requires a precise and efficient solution of the direct problem for given model parameters. An exact analytical solution for this non-linear system does not exist (only in some very special cases).
Our main goal in this paper is the determination of sorption isotherm without any structural assumptions (e.g. Langmuir, Freundlich, etc.). We assume only natural requirements on qualitative properties (nonnegativity, smoothness and monotonicity). We note that this setting represents an infinite-dimensional space instead of a finite-dimensional case when it suffices to determine only a few tuning parameters. For this purpose, we propose an efficient numerical procedure, which is a good candidate for the solution of this inverse problem. Our numerical experiments support it.
We propose a method to obtain an acceptable approximation of the sorption isotherm. Let us have a vertically positioned sample of a homogeneous porous media. Above the sample, there is a contaminated liquid that infiltrates the sample. Below the sample, we have an initially empty outflow chamber, where the expelled liquid will be gathered (see Figure ).
During the experiment, we refill the tube of the contaminated liquid at certain time points. We measure the outflow contaminant flux during the whole experiment; this is the only measurement used to determine the sorption isotherm.
There are some advantages of using a form free parametrization compared to modelling using a priori chosen isotherm. Obviously, the form free modelling is universal and therefore it can fit the measurements better. When we consider the solution of the inverse problem for different priori chosen isotherms, we can observe that the computation time usually grows significantly with the number of free parameters in the model. This is, however, not the case for the free form optimization projected to the M-dimensional space using localized splines. Here, when we increase M, the computational time remains almost identical, which allows us to use big value M. It is the advantage of using Gateaux differential, which computes all derivatives at once. We note that once we find the sorption isotherm using free form modelling, we can expect that it will be valid also for other input data.
In Section 2, we present a mathematical model of the coupled system. The numerical approximation of PDEs for transport, dispersion and adsorption leads to a corresponding system of ODEs, which is described in Section 3. In Section 4, we define the inverse problem and discuss our strategy for its solution. We introduce the numerical modelling of the dual system in Section 5. In Section 6, we describe in detail the finite-dimensional approximation mentioned before in Section 4. In Section 7, we present and discuss some numerical experiments.
2. Mathematical model
2.1. Equations of flow
We assume that the contaminant, the porous medium and the liquid have such properties that the flow of the liquid does not depend on the contaminant concentration and adsorption. The flow in porous media is modelled by Richards equation (see [Citation9]), which in 1D has the form(1)
(1)
Here, denotes the saturation,
denotes the liquid flux and
is the length of the sample. The flux of the liquid is governed by
(2)
(2)
where is the saturated hydraulic conductivity,
is the pressure head and
is the permeability-saturation function. We have used van Genuchten–Mualem model to parametrize functions
and
(see [Citation10]). If the top liquid reservoir is not empty, we assume that
(3)
(3)
(4)
(4)
where denotes the amount of the liquid in the top liquid reservoir.
Otherwise, if the reservoir is empty, we have the no-flux boundary. At the bottom of the sample, the Neumann boundary condition is taken. We assume experiments with initially dry porous media, therefore we have regularized initial condition(5)
(5)
When we refill the top liquid reservoir to cm of the liquid at a certain time
, we simply change the pressure head at the boundary to the following value:
(6)
(6)
2.2. Equations of the contaminant concentration and the adsorption
The mass-balance equation for contaminant concentration in the water is(7)
(7)
where product is the mass of contaminant dissolved in the water per unit volume of porous media,
is the mass of contaminant adsorbed in the porous media per unit mass of porous media,
is the contaminant flux and
is bulk density of the solid matrix of the porous medium. The contaminant flux is the superposition of advection and diffusion. As for the advection part, the corresponding contaminant flux is given by the expression
(8)
(8)
where is the contaminant concentration in the liquid. The diffusion–dispersion part of the contaminant flux is, assuming isotropy of the porous medium, given by the expression
(9)
(9)
where is the molecular diffusion constant and
is the longitudinal dispersion. The total flux is the sum of the advection flux and the diffusion–dispersion flux, and is therefore given by the equation
(10)
(10)
We will assume that the contaminant is present in the infiltrating water at maximal possible concentration and that at the bottom of the sample, the contaminant flux consists only of the advection part. Therefore, we have the following boundary conditions:(11)
(11)
(12)
(12)
We choose the non-equilibrium model with kinetics coefficient to model the contaminant adsorption. The equation is
(13)
(13)
where is the sorption isotherm. We suppose that at the beginning of the experiment, the sample is contaminant free and therefore the initial conditions are
(14)
(14)
3. Numerical model
3.1. Numerical model of the flow
There are several numerical schemes available for numerical solution of the saturation, see e.g. [Citation8] or [Citation11]. We have used the same numerical model as in [Citation8], specifically(15)
(15)
(16)
(16)
(17)
(17)
(18)
(18)
The indices correspond to the space and time discretization, respectively.
3.2. Numerical model of the contaminant concentration and the adsorption
We use the mass-preserving finite volumes method to obtain the semidiscretization of our problem. After setting , we obtain the semidiscretization of coupled system (Equation7
(7)
(7) ), (Equation13
(13)
(13) ) with boundary conditions (Equation11
(11)
(11) ), (Equation12
(12)
(12) ):
(19)
(19)
(20)
(20)
(21)
(21)
(22)
(22)
This system of ODEs can be solved using MATLAB’s built-in ode15s solver. We note that . Values
,
,
and
are available in discrete time points from simulation of flow and we have taken
. We have extended the values of flux and saturation to any time point using cubic spline interpolation.
4. Inverse problem
In our proposed scenario, the outflow liquid flux together with its concentration are measured; therefore, we assume that we have a measurement of the outflow contaminant flux. Further, we assume that the only unknown in the model is the sorption isotherm, which we want to determine. The main idea of our method is as follows: we construct the cost functional
(23)
(23)
where is a sorption isotherm (dependent on contaminant concentration in the water
) used in our coupled system,
is the contaminant concentration at time
at the sample outflow computed from our system using
and
is the time of the end of the experiment. We search for
in the set of all functions satisfying the required qualitative properties, for which the functional value
is minimal. These required properties are:
(24)
(24)
where denotes the class of continuously differentiable functions. The main tool for finding the solution is to construct the differential of Gateaux,
(25)
(25)
We then improve, in an iterative way, in the direction of
(
is the order of the iteration), where
. Since we have constrains on the function
and the current iteration
can be on the boundary of the admissible set, we cannot use the direction of the steepest descent, as this may lead us outside the admissible region, no matter how small a step we take. We use the projected gradient method to overcome this problem.
The construction of the differential follows Lagrange’s idea – the construction of the dual system for dual variables (also known as Lagrange multiplicators). We assume the unknown function
in the form
, where
are scalar coefficients and
are
smooth locally supported splines corresponding to a discretization of the interval
localized to small subintervals of
. Thus,
represents finite-dimensional approximation of
; it is a good approximation for
large enough. Our finite-dimensional optimization problem reads as
(26)
(26)
where is the subset in
for admissible
, so that qualitative properties for
are met. To solve the finite-dimensional problem (Equation26
(26)
(26) ) in an iterative way, we use the form of Gateaux differential (Equation25
(25)
(25) ), which gives us simultaneously all partial derivatives
. This procedure allows us to avoid the common numerical computation of
, which, for large M, would be very inefficient.
5. Computation of the variation in a direction ![](//:0)
![](//:0)
We use the following notation of variation along a given direction :
(27)
(27)
Theorem 1
The variation of the function in the direction
has the following form:
(28)
(28)
where and
are the adjoint functions (Lagrange multiplicators) to
and
defined by following ‘adjoint’ PDEs:
(29)
(29)
(30)
(30)
(31)
(31)
(32)
(32)
(33)
(33)
Proof
The proof follows the common Lagrange’s method (see [Citation12]). For arbitrary functions we add the zero (see (Equation7
(7)
(7) ), (Equation13
(13)
(13) ), (Equation10
(10)
(10) )) to the objective function
and obtain the following equation:
(34)
(34)
We note that we use various variations (e.g. ,
, etc.) along a direction
similarly to definition (Equation27
(27)
(27) ) as follows:
(35)
(35)
The variation obtained from the Equation (Equation34
(34)
(34) ) has the following form:
(36)
(36)
Using the integration by parts (to carry derivatives from ,
to functions
), we get the following result:
(37)
(37)
We note that expressions and
equal zero, because of the boundary conditions (Equation11
(11)
(11) ), (Equation12
(12)
(12) ). If we choose functions
such that they are the solution of (Equation29
(29)
(29) )–(Equation33
(33)
(33) ), we arrive at the form (Equation28
(28)
(28) ), thus completing the proof.
5.1. Semidiscretization of the adjoint equations
We can take advantage of the fact that we use the fixed semidiscretization to obtain the solution of the direct problem. We propose an analogous theorem to the Theorem 1, which will be formulated directly to the semidiscretization (Equation19(19)
(19) )–(Equation22
(22)
(22) ). We apply spatially discrete adjoint functions to the semidiscretized adjoint problem. The resulting system of ODEs can be considered as the appropriate semidiscretization of ‘adjoint’ PDEs (Equation29
(29)
(29) )–(Equation33
(33)
(33) ), resulting in the maximum possible accuracy. We note that here, the objective function
is naturally modified – the term
is replaced by the
.
Theorem 2
When we use the semidiscretization (Equation19(19)
(19) )–(Equation22
(22)
(22) ), then the variation of the function
in the direction
has the following form:
(38)
(38)
where and
are adjoint functions (Lagrange multiplicators) to
and
defined by the following ‘adjoint’ system of ODEs:
(39)
(39)
(40)
(40)
(41)
(41)
(42)
(42)
(43)
(43)
Sketch of the proof
We use the Lagrange’s method again. For arbitrary functions , we add the zero (see (Equation19
(19)
(19) )–(Equation22
(22)
(22) )) to the objective function
and obtain the following equation:
(44)
(44)
We again construct the variation in (Equation44
(44)
(44) ), use the integration by parts (to carry time derivatives from
,
to functions
) and rearrange the terms such that the terms
are standing before parenthesis. If we choose functions
such that they are solution to (Equation39
(39)
(39) )–(Equation43
(43)
(43) ), we arrive at the form (Equation38
(38)
(38) ).
6. Projection to the finite-dimensional space
When we perform the actual iteration process on the computer, we have to project the infinite-dimensional function to some high-dimensional finite subspace. In our case, we use Bessel splines, which are
class functions. We choose the formula with zero second derivatives at boundaries. Each Bessel spline is a linear combination of the basis functions
, and therefore we have:
(45)
(45)
where are the parameters in the finite-dimensional approximation denoting the function value
at point
.
The explicit formula for basis functions is
(46)
(46)
where is the number of Bessel splines used. In Figure , we show some of these basis functions for
:
To write down the derivative of with respect to
, we simply use (Equation45
(45)
(45) ) and (Equation38
(38)
(38) ):
(47)
(47)
We note that during the computation on the computer, we use the fact that our basis functions have finite support, and therefore we use it for fast computation of partial derivatives for all indices . At the beginning of the computation, we set all partial derivatives to zero, we go through every element of our discretized spacetime and update only those derivatives corresponding to non-zero
. We also note that exact compliance of conditions (Equation24
(24)
(24) ) would be unnecessarily difficult to achieve. Therefore, we formulate similar, but not equivalent conditions for the values
:
(48)
(48)
We note, that these conditions are linear. Therefore, we can easily use projected gradient method to construct the new iteration. The formula for the new iteration is following:(49)
(49)
where is projection operator to the admissible set given by (Equation48
(48)
(48) ). The projection of the point
(
) is given by the solution of the following quadratic programming problem:
(50)
(50)
In each iteration, we perform an approximate line search to determine the step size. In this manner, we obtain a new iteration. We stop the iteration precess when the norm of difference between the two successive iterations is very small.
7. Results
First, let us focus on a simple experiment. Assume that we put the contaminated water on the top of the sample at the beginning of the experiment and we do not refill the injection chamber during infiltration. In this case, we are able to obtain in an iterative way such a function that the outflow contaminant flux corresponding to it is in agreement with the ‘measured’ flux. The two graphs of the ‘measured’ and the computed outflow contaminant flux are almost identical. However, the isotherm
that was used to produce the ‘measured’ flux is significantly different from the one obtained by the iterative process (see Figure ), which demonstrates the ill-posedness of our inverse problem. In Figure , we present two different isotherms
, which both produce an almost identical outflow contaminant flux:
Therefore, we can observe that the data of the contaminant flux in the simple experiment proved to be insufficient to determine the sorption isotherm (or even a part of it). This is the reason why we simulate a more complex scenario, where the top liquid reservoir is refilled multiple times to stimulate the dynamics in the outflow contaminant flux (and force the solution of the direct problem to produce more values of the concentration
in the sample). Let us assume the following common scenario in all remaining experiments. Let a 10 cm long porous medium sample be initially dry:
(51)
(51)
Next, let there be a column of 3 cm of the contaminated liquid in the top liquid reservoir chamber at the beginning of the experiment. At the following time points , we refill the chamber with 2 cm of contaminated liquid:
(52)
(52)
We stop the simulation at time . Let soil parameters be known and have following values:
(53)
(53)
Further, let contaminant and sorption parameters be as follows:(54)
(54)
Finally, let the initial contaminant/adsorption condition be as follows:(55)
(55)
Now, the following experiments will differ only in the desired outflow contaminant flux .
7.1. Experiment 1
In the first experiment, we produce by running the simulation with the Freundlich isotherm
(56)
(56)
and setting . In the Figure , we present the final iteration
of the algorithm together with the original Freundlich isotherm and the starting iteration
.
Figure 4. Red (dot): initial linear iteration ; black (dash-dot): Freundlich isotherm (Equation56
(56)
(56) ); blue (solid): final iteration
.
![Figure 4. Red (dot): initial linear iteration ψ0; black (dash-dot): Freundlich isotherm (Equation56(56) ψ(w)=w0,75,(56) ); blue (solid): final iteration ψ165.](/cms/asset/1c29cba8-8cd8-4a83-80a8-dd765e5736a2/gipe_a_1017481_f0004_oc.gif)
As we can see, the result is satisfactory within the interval . In the neighbourhood of
, the result is flawed due to the fact that the values of the concentration greater than
were rarely present during the experiment.
7.2. Experiment 2
In the second experiment, we obtain by performing the simulation with the following Langmuir isotherm:
(57)
(57)
In Figure , we present the final iteration of the algorithm together with the original Langmuir isotherm and the starting iteration
.
Figure 5. Red (dot): initial linear iteration ; black (dash): Langmuir isotherm (Equation57
(57)
(57) ); blue (solid): final iteration
.
![Figure 5. Red (dot): initial linear iteration ψ0; black (dash): Langmuir isotherm (Equation57(57) ψ(w)=2ww+1.(57) ); blue (solid): final iteration ψ270.](/cms/asset/0a49479a-8814-4c90-b123-73b0e9ac8404/gipe_a_1017481_f0005_oc.gif)
Figure 6. (a) Red (dot): initial linear iteration ; black (dash): Freundlich isotherm (Equation56
(56)
(56) ); blue (solid): final iteration
. (b) Red (dot):
corresponding to
; black (dash):
corresponding to Freundlich isotherm (Equation56
(56)
(56) ); blue (solid): both
corresponding to final iteration
and
obtained by running simulation using Freundlich isotherm (Equation56
(56)
(56) ) and subsequently altered by the perturbation (Equation58
(58)
(58) ).
![Figure 6. (a) Red (dot): initial linear iteration ψ0; black (dash): Freundlich isotherm (Equation56(56) ψ(w)=w0,75,(56) ); blue (solid): final iteration ψ177. (b) Red (dot): q(d,t)w(d,t) corresponding to ψ0; black (dash): q(d,t)w(d,t) corresponding to Freundlich isotherm (Equation56(56) ψ(w)=w0,75,(56) ); blue (solid): both q(d,t)w(d,t) corresponding to final iteration ψ177 and m~ obtained by running simulation using Freundlich isotherm (Equation56(56) ψ(w)=w0,75,(56) ) and subsequently altered by the perturbation (Equation58(58) m~=m(1+c1sin(ln(t+1))+c2cos(ln(t+1))).(58) ).](/cms/asset/798a91be-d07a-4493-9f27-38564b0f9fb6/gipe_a_1017481_f0006_oc.gif)
Again, the result is satisfactory within the interval . The reason for this observation is identical to the one mentioned in the previous experiment.
7.3. Experiment 3
In the third experiment, we determine by running the simulation with the same Freundlich isotherm as in Experiment 1, and then we apply the continuous (up to 5%) perturbation to the
in the following form:
(58)
(58)
In the Figure , we present the final iteration of the algorithm together with the original Freundlich isotherm and the starting iteration
. Additionally, we present the figure of the original measurement
together with the altered
.
7.4. Experiment 4
In the fourth experiment, we arrive at by performing the simulation with the same Langmuir isotherm as in Experiment 2, and then we apply the continuous perturbation to the
as given by (Equation58
(58)
(58) ). In Figure , we present the final iteration
of the algorithm together with the original Langmuir isotherm and the starting iteration
. Additionally, we present the figure of original measurement
together with the altered
.
Figure 7. (a) Red (dot): initial linear iteration ; black(dash): Langmuir isotherm (Equation57
(57)
(57) ); blue (solid): final iteration
. (b) Red (dot):
corresponding to
; black (dash):
corresponding to Langmuir isotherm (Equation57
(57)
(57) ); blue (solid): both
corresponding to final iteration
and
obtained by running simulation using Langmuir isotherm (Equation57
(57)
(57) ) and subsequently altered by the perturbation (Equation58
(58)
(58) ).
![Figure 7. (a) Red (dot): initial linear iteration ψ0; black(dash): Langmuir isotherm (Equation57(57) ψ(w)=2ww+1.(57) ); blue (solid): final iteration ψ319. (b) Red (dot): q(d,t)w(d,t) corresponding to ψ0; black (dash): q(d,t)w(d,t) corresponding to Langmuir isotherm (Equation57(57) ψ(w)=2ww+1.(57) ); blue (solid): both q(d,t)w(d,t) corresponding to final iteration ψ319 and m~ obtained by running simulation using Langmuir isotherm (Equation57(57) ψ(w)=2ww+1.(57) ) and subsequently altered by the perturbation (Equation58(58) m~=m(1+c1sin(ln(t+1))+c2cos(ln(t+1))).(58) ).](/cms/asset/38e03bbf-20d7-4cc2-ad10-632a6e539d97/gipe_a_1017481_f0007_oc.gif)
7.5. Experiment 5
In the final experiment, we obtain by running the simulation with the same Freundlich isotherm as in Experiment 1, and then consider a random perturbation
of
obtained by multiplying
with a random variate which is uniformly distributed in the interval
at each time point for which the function has been enumerated. In Figure , we present the final iteration
of the algorithm together with the original Freundlich isotherm and the starting iteration
. Additionally, we present the figure of original measurement
together with the altered
.
Figure 8. (a) Red (dot): initial linear iteration ; black (dash): Freundlich isotherm (Equation56
(56)
(56) ); blue (solid): final iteration
. (b) Red (dot):
corresponding to
; black (dash):
corresponding to Freundlich isotherm (Equation56
(56)
(56) ); blue (solid):
corresponding to final iteration
; green (dash-dot):
obtained by running simulation using Freundlich isotherm (Equation56
(56)
(56) ) and subsequently altered by the random noise.
![Figure 8. (a) Red (dot): initial linear iteration ψ0; black (dash): Freundlich isotherm (Equation56(56) ψ(w)=w0,75,(56) ); blue (solid): final iteration ψ96. (b) Red (dot): q(d,t)w(d,t) corresponding to ψ0; black (dash): q(d,t)w(d,t) corresponding to Freundlich isotherm (Equation56(56) ψ(w)=w0,75,(56) ); blue (solid): q(d,t)w(d,t) corresponding to final iteration ψ96; green (dash-dot): m~ obtained by running simulation using Freundlich isotherm (Equation56(56) ψ(w)=w0,75,(56) ) and subsequently altered by the random noise.](/cms/asset/7d57ca24-4406-4a3f-92d1-acdc461d28f9/gipe_a_1017481_f0008_oc.gif)
As we can see, results here are poor if compared to previous results. It is clear that some smoothing of the function is required prior to running the algorithm to determine
. This is to be expected, since, in the ‘adjoint’ differential equations, we assume
to be a continuous function. This is however not valid in the case of Experiment 5, thus significantly decreasing the effectiveness of the proposed method to determine
.
8. Conclusions
We have proposed an effective experimental scenario to determine the sorption isotherm using non-invasive measurements of the outflow contaminant flux. We have not assumed that sorption isotherm is a member of some finite-dimensional class. Instead, we have performed a free form parametrization, where only some qualitative properties were assumed. We have stimulated the dynamics of the contaminant concentration at the outflow to increase the definiteness of the sorption isotherm. We have achieved the stimulation by multiple refilling of the injection chamber with contaminated water.
The main mathematical tool that we have used is the Gateaux differential. Once we have projected sorption isotherm into finite-dimensional space generated by localized splines, Gateaux differential enabled us to compute all partial derivatives without significant computational time penalty. Hence, we could choose large number of basis spline functions. Our numerical experiments with perturbation showed that our numerical method can reconstruct the sorption isotherm also in the cases, when measurements are affected by some error. We have obtained good results when the error was systematic (see Experiment 3 and 4) and flawed result when the error was stochastic and no a priori smoothing was used (see Experiment 5). This observation indicates that the sorption isotherm obtained using our method could be used for solution of the direct problem with the same sample and different initial and/or boundary conditions. Based on these facts, we think that proposed numerical procedure is a good candidate for the solution of the inverse problems.
Acknowledgements
The author thanks prof. Jozef Kačur for valuable discussions.
Additional information
Funding
References
- Kačur J, Malengier B, Troj\’{a}kov\’{a} E. Numerical modelling of convection-diffusion-adsorption problems in 1D using dynamical discretization. Chem. Eng. Sci. 2010;65:2301–2309.
- Kr\"{a}utle S, Knabner P. A new numerical reduction scheme for fully coupled multicomponent transport-reaction problems in porous media. Water Resour. Res. 2005;41:1–17.
- Šim\‘{u}nek J, Nimo JR. Estimating soil hydraulic parameters from transient flow experiments in a centrifuge using parameter optimization technique. Water Resour. Res. 2005;41:1–9.
- Bitterlich S, Knabner P. An efficient method for solving an inverse problem for the Richards equation. J. Comput. Appl. Math. 2002;147:153–173.
- Ka\‘{e}ur J, Minár J. A benchmark solution for infiltration and adsorption of polluted water into unsaturated--saturated porous media. Transp. Porous Media. 2013;97:223–239.
- Thede G, Below E, Thede R. Determination of adsorption isotherms by the inverse method with a first order reversible reaction occurring in both phases of a liquid chromatographic column. J. Liq. Chromatogr. Related Technol. 2010;33:499–512.
- Huber JFK, Gerritse RG. Evaluation of dynamic gas chromatographic methods for the determination of adsorption and solution isotherms. J. Chromatogr. A. 1971;58:137–158.
- {\v{S}}imunek J, {\v{S}}ejna M, Saito H, Sakai M, van Genuchten MTh. The Hydrus-1D software package for simulating the movement of water, heat, and multiple solutes in variably saturated media. Version 4.0. HYDRUS Software Series 3, Riverside (CA): Department of Environmental Sciences/University of California Riverside; 2008.
- Bear J, Cheng H-D. Modeling groundwater flow and contaminant transport. New York (NY): Springer; 2010. ISBN-978-1402066818.
- van Genuchten MTh. A closed-form equation for predicting the hydraulic conductivity of unsaturated soils. Soil. Sci. Soc. Am. J. 1980;44:892–898.
- Troj{\’a}kov{\’a} E, Babušíková J. Contaminant transport in partially saturated porous media. In: Delgado JMPQ, de Lima AGB, da Silva MV, editors. Numerical analysis of heat and mass transfer in porous media. Vol. 27, Advanced structured materials. Berlin: Springer; 2012. p. 297–316. ISBN-978-3-642-30531-3.
- Bryson AE Jr, Ho Y-C. Applied optimal control. New York (NY): Hemisphere; 1975. ISBN-978-0891162285.