## 1. Transient Heat Conduction in Soil

This simple 3D example demonstrates the non-stationary linear heat analysis solver. The cooling of soil under a constant temperature of the air in the atmosphere and an initial temperature of the soil is calculated for a period of 60 days, the example being taken from the text book by Kreith and Bohn[36].

The soil is modelled by a row of solid heat conduction elements extending 3 m down in the soil (z-direction). The soil is assumed to be semi-infinite, thus, a row of elements is sufficient, with free faces in the x- and y-directions. The face of the model which is in contact with the atmosphere is permanently set to -15 °C, while the rest of the model is set +20 °C for t=0. It is assumed that the conduction properties of the soil are uniform and linear and no convection or radiation between the soil and the atmosphere are taken into account.

The FE mesh is generated with a single epatch of type cube, with face f1 in contact with the air at x=0.0.

The linear transient response is calculated with the first order transient solver and the parameters defined in the case command (see input file soil.mdl):

cases
case 1
analysis              dynamic_nonlinear # Although problem is linear
stage 2 time_step     5184000   # Time is (60 days in seconds)
end
stage 2
step_size_init        84600     # 1 day
step_size_max         84600     # Keeps step size constant
step_size_min         84600     # Keeps step size constant
dof_init              1         # Initial conditions
ebc 1 sfactor 1 sfunction '1'   # Keeps ebcs constant
tol_dynamic           1000.     # Inactivate time integration error
end
end

The solver increments, by default, the time parameter from 0.0 to 1.0. In the example the time parameter range is from 0 to 60 days, i.e. 5184000 seconds. The best way of specifying this range is by introducing a case with a stage and by scaling the stage with the time_step option (see definition of case 1 above). The stage (case) 2 then defines the parameters of the effective case to be analyzed: The (constant) step size, the initial conditions and the essential boundary conditions, no natural boundary conditions being defined in this model. Note that, by setting step_size_init, step_size_max, and step_size_min to fixed values the solver cannot vary the time step as a function of the time integration error. Therefore, tol_dynamic has to be set to a large value to inactivate the time integration error control.

The initial conditions at the mesh nodes are activated by the dof_init option, which refers to the dof_init definition found in soil.mdl:

dof_init
set 1
value 20 allnodes      # Initially all nodes
allow_override yes     # Default is 'no'
value -15. epatch 1 f1 # Overwrite nodes of face to air
end
end

The essential boundary conditions (-15 on face exposed to air):

ebc
set 1
value -15. dof 1 epatch 1 f1
end
end

are activated with the ebc option of case 2:

ebc 1 sfunction '1'

The sfunction defined as sfunction(t)=1. tells the solver to keep the ebc constant in time.

Finally, the adir command specifies the analysis type and the case to be solved for:

adir
case 1
end

Note that, although the analysis is linear, the dynamic_nonlinear analysis type has to be selected for transient heat analysis, because the solver cannot deal with linear problems. The case 1 option activates the case 1, which in its turn solves for the stage (case) 2.

Setting tol_dynamic=100000, i.e. to a large value will inactivate the error estimator of the time integration module, and the residue_function_type=order_one directive specifies the order of the equation. The temperature at a given mesh node as a function of time is viewed with the post-processing tool (see xy.py script). At z=0.6 m this becomes

The analytical function can be found in Kreith and Bohn and it is programmed in the xy.py script.

[36] F. S: Kreith, M. S: Bohn; Principles of Heat Transfer; Brooks/Cole Pub. Corp.