Forum Navigation
You need to log in to create posts and topics.

PTM Deformation Gradient to Strain Tensor, Crystal Orietation

Dear all,

I am reposting my previous question here, since I didn't receive any response before, and I appreciate it if you could help me with these issues.

I am depositing a copper (Cu) thin film on a titanium nitride (TiN) substrate. I am doing the deposition at 600 K, and below is the list of parameters that might be required to have a better assessment of the situation that I am concerned with:

  • Bulk lattice constant for TiN at 600 K from the potential that I have: 4.25736409831921 Angstrom
  • Bulk lattice constant for Cu at 600 K from the potential that I have: 3.65057832488483 Angstrom
  • Type 1: Ti
  • Type 2: N
  • Type 3: Cu
  • X and Z are periodic, and there are free surfaces along the Y direction at the top and bottom faces.
  • X: TiN<100>   Y: TiN<010>   Z: TiN<001>
  • RMSD cutoff for PTM: 0.15. Simple cubic was selected also.
  • Elastic Strain Calculation: Face-centered cubic (FCC), Lattice constant: 3.65058

1) I tried the Elastic Strain Calculation, and I compared its results to the ones from PTM in terms of Elastic Deformation Gradient.XX. I have attached a snapshot of the simulation from LAMMPS at 600 K and the related images to this message. I get different results from Elastic Strain Calculation and PTM modifiers, and I am not sure which one is correct. By using the elastic strain tensor components, What I am interested to know is that the deposited Cu thin film is stretched or compressed. But I found a link below that claims "there are some bugs for strain tensor output in OVITO":

Unfortunately, since I don't have access to the Pro version of OVITO I couldn't try a Python modifier, and I can't confirm that if the contents in the link above are valid or not.

Please let me know what your opinion is on the issues above, and how I should do the elastic strain calculations.

2) My second question was actually about the growth direction of a Cu particle or island, i.e., parallel to the normal to the TiN substrate surface. The file that I shared before shows a Cu island relaxed on a TiN{010} substrate, i.e. TiN<010> parallel to the Y direction, and by slicing the Cu particle along the Y direction at different heights, you can see that most of the Cu atoms in each layer are arranged in {010} fashion. So, the Cu particle is grown in <010> direction normal to TiN{010} substrate. However, this could be cumbersome by having a TiN{221} substrate, and determine the growth direction of the Cu along normal to the substrate is difficult visually due to the complex arrangement of the Cu atoms in each layer. So, what I was asking is actually using a tool in OVITO to determine the growth direction automatically, and not by visualizing each atomic layer.

I hope I could clarify the question, but it could be as you said that I want to determine the local crystal lattice direction corresponding to a specific spatial direction (along Y direction in y case) in the simulation coordinate system which is XYZ for my system.



Uploaded files:

Hi Reza,


Yes, the elastic deformation gradients calculated by the Elastic Strain Calculation modifier and the Polyhedral Template Matching modifier in OVITO differ in regard to the treatment of hydrostatic strains. The Elastic Strain Calculation modifier outputs the complete deformation gradient calculated with respect to the ideal lattice configuration, which is given by the lattice parameter entered by the user. In other words, the computed deformation gradient includes hydrostatic deformations relative to the specified reference lattice.

This is not the case for the PTM modifier. If you check the 2016 paper by P.M. Larsen, it should become clear that the PTM algorithm performs an implicit decomposition of the total elastic deformation into a hydrostatic and a deviatoric part. The hydrostatic part is output by the PTM modifier as a scalar quantity (particle property "Interatomic Distance", if the corresponding modifier option is activated), and the deviatoric deformation is output as a def gradient (particle property "Elastic Deformation Gradient", if the corresponding modifier option is activated). That's why the PTM doesn't require you to enter a reference lattice parameter: The calculated "Interatomic Distance" is an absolute value measuring the current lattice spacing (i.e. the average nearest neighbor distance). The "Elastic Deformation Gradient" output by the PTM, on the other hand, is not affected by lattice expansions/contractions at all.

I cannot comment on the blog post that you mentioned, which claims there are "some bugs for strain tensor output in OVITO". I'm not sure what the author meant with that statement. Perhaps it refers to the method of calculating a finite strain tensor from the deformation gradient tensor?

Since you are mainly interested in measuring elastic hydrostatic strain, you have two options in my eyes, and both should lead to very similar results: (i) You can directly use the "Interatomic Distance" quantity calculated by the PTM modifier, or (ii) you can measure a change in lattice parameter using the Elastic Strain Calculation modifier. The determinant of the "Elastic Deformation Gradient" from this modifier should give you a measure of the hydrostatic volume expansion (with respect to the fixed reference lattice), and taking the cube root of the determinant yields the relative lattice parameter change.


OVITO currently doesn't have a direct way of (visually) showing you the orientation of a crystal, but at least it has the capability to calculate it from the atomic positions. The PTM modifier is typically used for that prupose as it provides the option to output lattice orientations (as quaternions). Similarly, the defgradient tensor output by the Elastic Strain Calculation contains the rotational part of the deformation with respect to the axis-aligned standard lattice orientation. However, in both cases additional calculations are required to determine the lattice direction corresponding to a certain spatial direction in the simulation coordinate system. This is best done using OVITO Pro's user-defined Python modifier functions. If you are using OVITO Basic, you would have to perform the calculation externally.

To give you an idea of the calculation that would be required: The def gradient tensor from the Elastic Strain Calculation modifier maps direction vectors from the local lattice coordinate system to the global simulation coordinate system. Thus, inverting this tensor and multiplying with the vector (0,1,0) gives you the cubic lattice direction corresponding to the y-axis in the simulation coordinate system.