The Strain utility in EosFit7c calculates strain tensors and property tensors (thermal expansion and compressibility) from pairs of unit-cell parameters at different T or P. It replaces the Winstrain4 program, allowing strain tensors to be calculated directly from EosFit data files without any need to reformat the data.
Results from the Strain utility of EosFit7c are more robust than those from Winstrain4, especially for cases where the strain or property representation surface has a nearly circular section. This is because the version on EosFit7c uses the eigenvalue and vector routines in the cfml maths library. Eigenvectors of the strains calculated from a series of unit-cells are now checked and made consistent, so there is no swapping of principal axes between consecutive strain calculations. Apart from these changes, the results from the Strain utility agree with those from Winstrain4, and have also been against external manual calculation. Small differences in eigenvector vector directions when there are large shear strains arise from the choice of Cartesian reference systems, and a small bug in Winstrain4.
Apart from the triclinic and monoclinic crystal systems, the directions of the principal axes of the strain and property tensors are fixed by symmetry. It is therefore not necessary to use the Strain utility, although it will work. Instead, you are advised to model the variation of the unit--cell parameters with either independent axial equations of state, or by fitting most of the cell parameters in this way and calculating a last parameter with the Cell utility.
Before using the Strain utility in EosFit7c we advise you to:
Important points about results
List of the Strain commands
System and macro commands are the same as for the main program.
Data handling
Read |
Read in a dataset. Data must include at minimum the symmetry-independent cell parameters at each P and T. |
Use |
Select individual data points to be used in calculations of the strain tensor |
Omit |
Set individual data points to be not used in calculations of the strain tensor |
Sort |
Sort the data into ascending or descending order in P or T |
List |
List the input cell data and the tensor properties calculated from them |
Transform |
Transform the unit cell with a transformation matrix. For details about how to specify transformation matrices, see the edit utility |
Write |
Write the current unit-cell data out to a data file. If you have used transform the transformed data will be written to file, without esd's. |
|
Settings and Calculations
Cryst |
Set the crystal system of the data. This is used to symmetrise the strain tensors to reduce the effects of numerical rounding errors. |
Cart |
Set the orientation of the Cartesian coordinate system for the tensors with respect to the crystallographic axes |
Type |
Set the type of strain to be calculated |
Strain |
Calculate the strains between a list of unit cells |
Calc |
Calculate the strain and property in any crystallographic direction, from the calculated strain tensors. |
The following example shows you how to use these commands to calculate the strains and compressibility tensor for albite, from the high-pressure cell parameters contained in the example dataset Pcell_triclinic.dat
|
|
|
These commands work in the same way as in the main program of EosFit. The data file can be read in and manipulated in the main program before starting the Strain utility. Or you can start the Strain utility and then read in the data file. The data file must include at minimum the symmetry-independent cell parameters at each P and T, with the crystal system specified in the file. You can also set the crystal system with the Cryst command. This will change the cell parameters to their symmetry-constrained values. So, if you have a triclinic dataset like this albite, and then tell the program with Cryst that the symmetry is orthorhombic, all of the unit-cell angles will be set to 90o. This cannot be undone. If you do this by mistake, read in the datafile again. |
|
|
|
The strain command calculates the strains from pairs of unit-cell parameters collected at different P or T. The program first requests information for the calculation: The reference cell is the unit-cell you use as the initial, unstrained, reference state. The program will calculate the strains from this unit cell to all of the others in the list. If you input 0 as the cell number, the calculations will be incremental. Strains will be calculated from each cell to the next one in the list. You then choose whether to calculate Eulerian or Lagrangian strains, and finite or infinitesimal strains. Infinitesimal Lagrangian strains are what engineers call strains, the equivalent of (L-L0)/L0. See Zotov (1990), for definitions and details of how these are calculated. You can also use the type command to make this choice. Finally you choose the orientation of the Cartesian coordinate system for the tensors with respect to the crystallographic axes. The tensor properties are the same for all coordinate systems (by definition!), but the values of the tensor components do depend on the choice of orientation. Three commonly-used choices are supported. You can also use the cart command to make this choice The results are provided in two Tables. The first list the strain tensor components (shown here on the left). each line in the table is one strain calculation from one pair of unit-cells: Nref is the list number of the unit-cell used as reference state. Ncell is the list number of the unit-cell of the final state....that means the strains are from the cell Nref to cell Ncell. Pcell and Tcell are the P and T of the cell of the final state. The columns labelled e11, e22.... are the strain tensor components The second table contains the property tensor components (compressibility or thermal expansion), formatted in the same way. |
|
|
|
The tables can be displayed again with the List command. The list command can also list information about the eigenvectors of the strain in the triclinic and monoclinic systems. (The Eigenvectors are parallel to the cell axes in the other crystal systems). Option 4 of list gives you the eigenvector magnitudes of the strains and properties. They are the magnitude of the strains along the directions of maximum and minimum strain, and a direction perpendicular to these two. The choice of labels of the eigenvectors is arbitrary and has no physical significance. In EosFit, evec1 is the one closest to Cartesian X, and evec2 is the one closest to Cartesian Y. Thus Evec1 can easily not be the Eigenvector with the largest Eigenvalue. Note that this is different from Winstrain4, where the Eigenvectors were sorted on the basis of their magnitude, which can be confusing (see Knight, 2010). The same labels are used for all output of Eigenvector properties. Options 5 and 6 of list give you the angles between the Eigenvectors and either the basis vectors of the Cartesian coordinate system, or the unit-cell axes. All angles given in degrees. In all output, the 1 esd uncertainties on values are given in parentheses if uncertainties were provided in the input datafile. |
|
|
Calc command: |
|
|
The calc command is only available after you have calculated the strain tensors from the unit-cell data. It allows you to calculate the strains and the property in any crystallographic direction. You can input either a,b,c for a unit-cell axis, a lattice vector as a zone symbol in square brackets (as in the example on the left) or as Miller indices in round brackets, |