Next: Finite difference programs Up: Actual program operation Previous: Electric and elastic
The eigenstrain programs, THERMAL2D.F and THERMAL3D.F, are quite similar in many ways to the elastic programs but have some significant differences. The main difference is that in THERMAL3D.F, each phase can have an eigenstrain tensor, given by the variable eigen. These are 6-vectors (Voigt notation), giving the eigenstrains in the x, y, and z and the shear directions. Usually the shear terms are zero, as the processes that produce eigenstrains do not usually produce shear strains. The programs relax the energy and treat the overall size and shape of the system as being dynamic variables. The final size (given macrostrains in the x, y, and z directions) and shape (shear macrostrains) are given by the interaction between the eigenstrains and elastic moduli of each of the phases. The initial displacements of the problem, along with the macrostrains, can be all set to zero, or perhaps an initial value of the macrostrains can be chosen, by guessing the final answer, and the displacements uniformly strained according to this chosen inital value. The conjugate gradient algorithm is fairly robust, and should give the same answer for any reasonable initial values of the variables.
Subroutine DEMBX, with the help of subroutines CONST and BGRAD for THERMAL3D.F and THERMAL2D.F, runs the conjugate gradient algorithm to find the answer to the problem that satisfies the gtest criterion. Subroutine STRESS can then be used to output the stresses and strains of the problem. The values of the macrostrains give the overall expansion and shape change of the system. One should note that if all the shear eigenstrains are initially zero, there will in general be a zero shear macrostrain found.