Nonstationary Heat Transfer

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.

Linear transient heat conduction: Mesh and initial conditions at face in contact with air.

Figure 104. Linear transient heat conduction: Mesh and initial conditions at face in contact with air.


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

Linear transient heat conduction: Temperature T(t) at z=0.6[m]

Figure 105. Linear transient heat conduction: Temperature T(t) at z=0.6[m]


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.