Page 1 of 1

inverse modelling: temperature

Posted: Thu Dec 15, 2011 10:31 am
by Sija
Dear Jirka,

I would like to find hydraulic parameters using inverse modelling based on temperature measurements. From the user manuals I understand that Hydrus 2d only has inversed modelling with solute concentrations. Is there a non-GUI way to be able to use temperature data, or is it only possible with Hydrus 2/3D?

Thank you,


Posted: Thu Dec 15, 2011 1:41 pm
by Jirka

That is not correct. HYDRUS-2D can use temperatures in the objective function in order to estimate soil hydraulic (and other) parameters. Similarly as it can use concentrations. It only can not use them both simultaneously. See for example the following papers, in which we have been using HYDRUS in this way:

Hopmans, J. W., J. Šim?nek, and K. L. Bristow, Indirect estimation of soil thermal properties and water flux from heat pulse measurements: Geometry and Dispersion effects, Water Resources Research, 38(1), 10.1029/2000WR000071, 7.1-7.14, 2002.

Saito, H., J. Šim?nek, J. W. Hopmans, and A. Tuli, Numerical evaluation of the heat pulse probe for simultaneous estimation of water fluxes and soil hydraulic and thermal properties, Water Resources Research, 43, W07408, doi:10.1029/2006WR005320, 14 pp., 2007.

You can download these papers from my (CV) website. You can likely find additional papers in our list of references.


Posted: Wed Jan 04, 2012 10:12 am
by Sija
Dear Jirka,

Thank you.

I have been experiencing a problem with parameter estimation. I hope you can help me with this.

The simulation model itself runs fine (without parameter estimation). The model simulates warm water flowing into a medium through different heads as boundary conditions. Observation nodes keep track of the temperature.

Using temperature data as input (type=4), I attempt to find a value for the hydraulic conductivity.

When I run Hydrus, the first 'run' (normal simulation I suppose) is fine, the second 'run' (0th iteration) is also fine, but the next one always crashes after reaching the last timestep. It gives the error 'Floating point error - invalid number!'. It seems this happens when it compares with measurement data or when it starts the next calculation.

Afterwards it gives only results of 1 iteration:

Parameter estimation with the 1. initial estimate

Iteration SSQ CONDS
0 .3733D+04 .1000E-01

I have tried changing many parameters to see if that would help, but the problem remains. When I run it without checking the 'Fitted' box of Ks (so that it won't try many values but just the initial estimate) it crashes after the first run.

Do you know what I did wrong? Or where I could look for problems?

Thank you!


Posted: Wed Jan 04, 2012 10:27 pm
by Jirka

I have not used the old version of HYDRUS-2D in a while. But as far as I remember, you could get this error, when the valueo of the objective function (SSQ) was independent of the optimized parameter. In the case, there was a division by zero (no change). Try to use different initial estimate of optimized parameters, or use different values and look at the objective function, to see if it changes.


Posted: Fri Feb 17, 2012 3:44 pm
by Sija
Dear Jirka,

It indeed seems like that, as if there is a division by zero or something similar after the last time step.
I have tried to use many different combinations of values and also different models. However, the same problem remains. Is there anything else that could have gone wrong?

Thank you,


Posted: Fri Feb 17, 2012 9:29 pm
by Jirka
If that's the case, then there is the problem with the data and not with the model. However, check that your data are correctly entered into the objective function. Are they displayed at correct places in output. Can you see in the Inverse Information both measured and fitted values? J.

Posted: Mon Feb 20, 2012 11:32 am
by Sija
No it does not give an overview of measured and fitted values (like it does when I test the same problem for (for example) pressure data).

Below is a copy of the output file (note that the temperature values are hypothetical):

-------------------------------------------------------------------- ************************************************************************
* *
* *
*Welcome to HYDRUS-FIT *
*Parameter Estimation of Soil Hydraulic Properties *
* *

Program parameters
Max. iterations.....................(MIT)............... 2
No. of observations.................(NOBb)............. 9

Soil hydraulic properties
Residual moisture content...........(WCR)............ .010
Saturated moisture content..........(WCS)............ .800
First coefficient...................(ALPHA).......... .018
Second coefficeint..................(N).............. 1.293
Saturated conductivity..............(CONDS).......... .1000E-01
Pore conectivity factor.............(L).............. .500

Obs Time QUANTITY Type Position Weight
1 10.000 10.100 4 10 1.000000
2 20.000 10.500 4 10 1.000000
3 60.000 11.000 4 10 1.000000
4 120.000 11.500 4 10 1.000000
5 140.000 13.000 4 10 1.000000
6 180.000 12.000 4 10 1.000000
7 200.000 14.000 4 10 1.000000
8 260.000 15.000 4 10 1.000000
9 1190.000 16.000 4 10 1.000000

Parameter estimation with the 1. initial estimate

Iteration SSQ CONDS
0 .1456D+04 .1000E-01

In the manual of this version (I am using H2D 2.103) there is nothing about using temperature data in inverse modelling (which is why I asked my original question).
However, I saw in the manual for 2D/3D that it must be stated in the input file that the type 4 data are temperature data, instead of concentration data (iConcType = 6).

In this version there is no option in the GUI for that. Does that mean it is not necessary to include it, or could it be that I have to include it manually in the FIT.IN file? (I should add that I have tried the latter and it didnt work, but of course I may have entered it incorrectly).

I will also include the input file I use for testing:


Welcome to HYDRUS-FIT
Parameter Estimation of Soil Hydraulic Properties
NOBB MIT iWeight
9 2 0
lWatF lChemF NMat lTempF
t f 1 f
Model Hyster Aniz
0 0 f
thr ths Alfa n Ks l
0.01 0.8 0.0176 1.293 0.01 0.5
0 0 0 0 1 0
0 0 0 0 0.051 0
0 0 0 0 0.2 0
10 10.1 4 10 1
20 10.5 4 10 1
60 11 4 10 1
120 11.5 4 10 1
180 12 4 10 1
140 13 4 10 1
200 14 4 10 1
260 15 4 10 1
1190 16 4 10 1
end*** END OF INPUT FILE 'FIT.IN' **********************************

Thank you in advance!

Posted: Mon Feb 20, 2012 11:41 am
by Jirka
You can temperature data as you have in your input (if you have 10 observation nodes). But, obviously, you need to simulate heat transport in addition to water flow, to generate variable temperature at the specified observation node.


Posted: Mon Feb 20, 2012 1:15 pm
by Sija
I am simulating heat transport and water flow (and no solute transport), and in the normal simulation results I see a temperature front moving through the domain. I also see temperature changes over time for observation node 10.

For the inverse modelling, I entered similar (but never the same) values as 'observations' for observation node 10, to see if it would work.

I have also tried it for concentration (instead of temperature) and I got normal results.

Posted: Mon Feb 20, 2012 8:40 pm
by Jirka
I have just noticed that you are using the old HYDRUS and not HYDRUS (2D/3D). I do not think that you could use Temperature in the objective function of the old HYDRUS.