Sensitivity Analysis for the Numerical Simulation of the Transport of Contaminants
Creators: name: Marchand, Estelle
name: Clement, Francois
name: Marchand, Estelle
Publisher: name: XVI International Conference on Computational Methods in Water Resources
Year: 2006

description: The questions of safety and uncertainties are central to feasibility studies for an 
underground waste storage site.  One of the important points to be considered is 
the problem of the evaluation of concentration uncertainties which are due to input 
parameter uncertainties.  These concentration uncertainties can be obtained by 
probabilistic methods.  These methods give good results and are relatively easy to 
implement, but they are expensive because they require a large number of 
simulations.  The method of deterministic sensitivities is much less demanding in 
computing time.  This gain in computing time is accompanied by a deterioration of 
the quality of the information obtained, but because of its much lower cost, it 
still deserves to be developed.

The mathematical model consists of a flow equation based on Darcy’s law – we assume 
that the Darcy velocity is stationary - , a transport equation, ie mass balanced 
equation, for each radionuclide, and a law of exchange between liquid and solid 
phases for each radionuclide.

We must be able to compute the Jacobian matrix of the function which associates the 
output concentrations to the parameters. This can be done by direct or inverse 
methods (direct methods are preferable when output data are more numerous than 
parameters; otherwise inverse methods are preferable).

To differentiate the model we do not want to use finite difference methods. The 
alternatives are to compute the derivatives obtained "by-hand" or to use an 
automatic differentiation tool.

One object of this presentation is to evaluate the performance of the automatic 
differentiation tool "adolC" which is able to differentiate C++ code both in direct 
and inverse modes. For differentiating a solver for the flow equation, this tool 
has provided some interesting results: the execution times are comparable to those 
obtained with a code differentiated “by-hand”, for a shorter development time. The 
major limitation to the use of this tool is the size of the files generated during 
the execution. The usefulness of this tool will depend on the sort of code we want 
to differentiate: indications from the experiments carried out this far suggest 
differentiating "by-hand" programs that use huge exterior libraries or that contain 
iterative methods; automatic differentiation will be very interesting in the case 
of programs for which the list of operations realized during the execution depends 
strongly, but not iteratively, on the parameters, for example for the computation 
of upwinded schemes.

Fortunately it is possible to combine manual and automatic differentiation, and 
that is what we do. A solution is to make executables differentiated “by-hand” 
communicate with executables differentiated automatically by means of an 
input/output library. We use splitting methods, so our problem is decomposed in 
quite simple blocs. Communication between these blocs must transmit not only 
values, but also elementary variations or gradients. The input/output library will 
also make it possible to control domain decomposition methods.