Author Topic: The DXA misjudges the burgers vector  (Read 55 times)

lx_pico

  • Newbie
  • *
  • Posts: 6
The DXA misjudges the burgers vector
« on: April 17, 2019, 05:18:59 AM »
Dear Alex and OVITO users,

i found the DXA sometimes misjudges the burgers vectors of dislocation segments. There is an edge dislocation line with a double super-jog in the first attached figure. This segment is painted in light green since its burgers vector is judged as 1/2[111] by DXA, right along the X-direction.

In the next scene,  this dislocation just glided forwards a little bit and without any dislocation interaction, however, the DXA judged it as a 1/2[11-1] line and painted it in brown (see the second attached figure)

The OVITO version i used is 3.0.0-dev372, but i also encountered this error with 2.9.0. By checking the information in "dislocation" table, i believe this misjudgement is due to some numerical errors: the spatial burgers vector is [2.4739,0.00,0.00] in the first figure and [2.4739,0.00,-0.00] in the next.

How can i fix this to judge the burgers vector correctly by DXA?

best regards,
Peter

Alexander Stukowski

  • Administrator
  • Hero Member
  • *****
  • Posts: 588
Re: The DXA misjudges the burgers vector
« Reply #1 on: April 17, 2019, 07:39:45 AM »
Dear Peter,

This surprising behavior is not a bug in the DXA and can be explained as follows:

You are dealing with a BCC crystal. Every cubic crystal lattice has 24 equivalent orientations. Thus, given a crystal model that has some orientation in space, you have 24 different ways of defining the axis orientations of the crystal, i.e., the spatial directions of the [100], [010] and [001] Miller indices.

When the DXA sees your input crystal, it will pick one of these 24 physically equivalent rotations at random. It's important to note that the algorithm newly picks the orientation in each simulation frame in an uncorrelated manner, because it doesn't remember which orientation it has used for the previous frame.

So what you are observing is a flipping of the crystal lattice orientation to a different symmetrically equivalent orientation. Even though the dislocation doesn't change in any, the Burgers vector displayed by the DXA apparently does, because it gets expressed in a newly oriented lattice coordinate system.

The column "Spatial Burgers vector" shows that the physical Burgers vector, which is obtained by transforming the calculated true Burgers vector from the lattice coordinate system to the simulation coordinate system, indeed does not change. [2.4739,0.00,0.00] and [2.4739,0.00,-0.00] are essentially the same spatial vector --small numerical errors aside that typically occur due to elastic distortions of the crystal.

The dislocation line changes color, because you selected to color the lines "by Burgers vector" and not "by dislocation type". In the latter mode, the line would probably stay green, because 1/2[111] and 1/2[11-1] belong to the same class of dislocations.

Note that the spurious flipping of the crystal orientation only occurs for certain alignments of the crystal lattice, like in your particular case where the <111> direction is aligned along the y-axis of the simulation coordinate system. For the DXA, this orientation is right on the edge of a standard orientation triangle. So even an infinitesimal reorientation of the crystal into an adjacent standard triangle, which is associated with a symmetry flip of the lattice. Other orientations, which are located more in the interior of the standard triangle, won't show this unstable behavior and DXA will typically maintain the same orientation over time.

-Alex

lx_pico

  • Newbie
  • *
  • Posts: 6
Re: The DXA misjudges the burgers vector
« Reply #2 on: April 17, 2019, 09:20:16 AM »
Alex,

Thank you for explaining this spurious behavior of DXA. However, what i want to do is, exactly, indentfying different <111> type dislocations. How should i do to achieve it in this case?

Alexander Stukowski

  • Administrator
  • Hero Member
  • *****
  • Posts: 588
Re: The DXA misjudges the burgers vector
« Reply #3 on: April 17, 2019, 09:59:49 AM »
The two screenshots you posted show only a single dislocation line, so there wouldn't be much to identify. But do you mean you actually have multiple dislocations in your simulation, all with different 1/2<111> Burgers vectors, that you would like to identify?

One way would be to look at the "spatial Burgers vectors" of these dislocations. As mentioned before, these vectors are all expressed in the same static and global coordinate system and are not subject to spurious lattice symmetry flips. However, they are subject to elastic lattice strains, meaning they will never be mathematically exact 1/2<111> vectors. Thus, you will have to apply some rounding procedure to determine the true Burgers vector of each dislocation.

Another possibility is to consider the lattice orientation that has been assigned to the crystal by the DXA. It can be used to detect symmetry flips and transform the crystal orientation (and with it the Burgers vectors of all embedded dislocations) to a specific orientation that you specify. Then you could directly work with the true Burgers vectors of the dislocations. However, this approach is probably more complicated and requires functions from Ovito's Python interface that are not documented. I would have to give you more information about this.

-Alex

lx_pico

  • Newbie
  • *
  • Posts: 6
Re: The DXA misjudges the burgers vector
« Reply #4 on: April 17, 2019, 10:58:49 AM »
Yes, i want to obtain a series of snapshot, in which the dislocations with different Burgers vectors are painted with different colors, while the color for a specify type is uniform in every snapshots. For example, the 1/2[111] is always painted in green.

Now i know that i can judge the Burgers vectors by transforming "spatial Burgers vectors" back into lattice coordinate. So, a simple way to achieve my purpose is to assign the colors for the dislocations with different Burgers vectors manually. Is this possible to realize by a Python script? i need more information about this.

Peter

Alexander Stukowski

  • Administrator
  • Hero Member
  • *****
  • Posts: 588
Re: The DXA misjudges the burgers vector
« Reply #5 on: April 17, 2019, 11:06:49 AM »
There might be another solution, which is even easier than what I have proposed before:

You can apply an Affine Transformation modifier to your model prior to the Dislocation Analysis (DXA) modifier in order to bring the crystal (including the simulation cell) into a different orientation, which shows less spurious symmetry flips. The aim is to (roughly) align the [100] direction of your crystal with the x-axis of the global coordinate system, the [010] direction with the y-axis, and the [001] direction with the z-axis. For this specific crystal orientation, DXA includes extra measures to avoid symmetry flips and should yield a stable crystal lattice orientation.

I don't know the orientation of your crystal, but it shouldn't be too difficult to figure out the rotation matrix that is needed to transform the crystal into the [001] standard orientation. If you like, you can then apply a second Affine Transformation modifier, with a reverse rotation matrix, to bring the crystal and the extracted dislocation lines back into the original orientation after DXA has been performed.

lx_pico

  • Newbie
  • *
  • Posts: 6
Re: The DXA misjudges the burgers vector
« Reply #6 on: April 17, 2019, 11:49:42 AM »
Thanks, Alex, this works. However, i can not change the extracted dislocations back in to the original orientation by appliying a reverse rotation after DXA analysis.

« Last Edit: April 17, 2019, 11:52:21 AM by lx_pico »

Alexander Stukowski

  • Administrator
  • Hero Member
  • *****
  • Posts: 588
Re: The DXA misjudges the burgers vector
« Reply #7 on: April 17, 2019, 12:13:06 PM »
Right, I forgot that the Affine Transformation modifier won't act on the dislocations lines. That's a missing feature I might add in a future version of Ovito.

Another option is to use the object rotation tool from the main tool bar, see the attached screenshot. It allows you to rotate the entire model around the coordinate axes.