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

How to delete some specific dislocations

Dear all,

I found that Dislocation analysis (DXA) was not stable in identifying structure with grain boundaries. For example, in a configuration with grain boundaries, sometimes a large number of dislocations can be identified in the region of grain boundaries , while the next frame has no dislocation in this region. What is the difference here?

In addition, I would like to know whether the dislocations with some specific IDs or in a certain region could be deleted after DXA (for example, I want to exclude the dislocations in the region of grain boundaries). I want these dislocations will not be visualized and will not be counted in the statistics results such as the total dislocation line length. Could such an operation be achieved in OVITO? (Version 3.2.0)

Best regard.

-Leqing

Dear Leqing,

What is the difference here?

The difference is the existence or non-existence of small crystalline connections between the two grains, which represent continuous atom-to-atom paths through the grain boundary. See my attached illustration. Most grain boundaries (especially low-angle GBs) contain these "bridge atoms" in the interface, but some grain boundaries exhibit not a single gap and are completely leak-tight. For the DXA algorithm the presence of these gaps makes a big difference. Even one single gap atom is sufficient for the algorithm to establish a CSL-type crystallographic orientation relationship between the two grains. The algorithm then sees a continuous cluster of crystalline atoms that stretches across both grains, and it can start looking for dislocations in the grain boundary. In my illustration, I have indicated this with two yellow Burgers circuits constructed by the algorithm, which may potentially result in dislocation signatures.

This also happens for grain boundaries which have a vicinal twin configuration. A single hcp atom (red) is sufficient to make the DXA regard the boundary as a vicinal coherent twin boundary, and it will start looking for secondary grain boundary dislocations.

Only if the GB is "leak-tight", then the DXA considers the two grains as two completely separate crystallites without any crystallographic relationship, and it cannot even start searching for dislocations in the GB region.

 

Uploaded files:
  • dxa_grain_boundary.jpeg
  • vicinal_twin_gb.jpg

For a better understanding of the underlying ideas, please have a look at section 3 of the paper: https://iopscience.iop.org/article/10.1088/0965-0393/20/8/085007/meta

Thank you very much for your detailed explanation. I get the idea.

Now there are two more questions :

1. Whether dislocations in grain boundaries can be identified is not related to the validity of configuration with grain boundaries, right?

2. More importantly, I would like to know after DXA analysis, is there any way to keep these dislocations in the grain boundaries from being displayed and counted in the length of the dislocation line ?

I'm not sure if I understand the meaning of your first question. The DXA's ability to identify dislocations in a grain boundary mainly depends on the successful identification of the grain boundary's ideal type. With "ideal type" I mean the defect-free reference state of the planar interface, relative to which the secondary GB dislocations will be identified. The current DXA implementation in OVITO supports only two particular reference interface types: The Σ3 coherent twin boundary in fcc and cubic diamond crystals, and the "Σ1" interface in any of the supported crystal structures. With "Σ1" boundary I mean an imaginary crystal interface having zero misorientation, basically any single crystal.

Effectively, "Σ1" is used as underlying reference type if a least one fcc "bridge atom" connecting the two grains is present in the GB  (see my previous posting). Σ3 coherent twin serves as underlying type if at least one hcp "bridge atom" is present.

DXA identifies excess dislocations (secondary GB dislocations) associated with GBs that are vicinal to either of these two reference GB types. You probably are familiar with the GB concept of small-angle grain boundaries, which can be described in terms of an array of lattice dislocations. The DXA currently handles such boundaries transparently, without any specific measures, because the algorithm is originally designed to identify lattice dislocations in single crystals. For the algorithm it doesn't matter whether a bunch of dislocation lines are randomly placed in the crystal or are arranged in the particular form of an array (i.e. a dislocation wall). Furthermore, because the algorithm doesn't differentiate between these situations, it's not possible for the algorithm to mark GB dislocations as such (which would allow removing the lines later on).

This is what makes it hard to fulfil your request: On one hand, the DXA is designed to eagerly identify as many dislocations as possible in a (single) crystal. On the other hand, you'd like it suddenly stop identifying those dislocations once they arrange in a particular pattern and form a (small-angle) grain boundary. How can the DXA decide what is the right thing to do and when? And since the DXA is generally quite tolerant when detecting dislocations, it even finds them (with a good probability) if they form a densely packed array, almost a large-angle grain boundary. The consequence of this behaviour are the typical "spider's webs" of dislocation lines you can observe in the DXA output for polycrystalline microstructures. See the first attached picture below.

In order to avoid this correct, but undesirable behaviour, we need to amend the DXA with an additional criterion to decide which dislocations are acceptable and which are not. The idea that came to my mind is to couple the DXA with the Grain Segmentation algorithm available in OVITO. This tool provides the capability to identify interfaces whose misorientation angle exceeds a certain threshold and then partition the atoms of the system into separate grains. We can use this partitioning to forbid the DXA to identify dislocations which are surrounded by more than one grain region.

I have an experimental implementation of this coupling, and I can share some preliminary results with you here. Picture 2 shows a detail of the larger microstructure: A small-angle grain boundary. Standard DXA resolves this boundary as a web of dislocation lines (picture 3). We can now insert the Grain Segmentation modifier into the pipeline to first partition the microstructure into separate groups of atoms (atom colouring in picture 4). The extended DXA modifier now picks up this labelling of the atoms and treats the two grains as completely separated crystallites. A solid wall is formed in the DXA output (picture 5) and only small number of dislocation segments remain that are attached to the GB interface and reach into the grain.

Looking at the entire microstructure, most of the "spider's webs" are gone and the DXA output consist mostly of true lattice dislocations now (picture 6).

Uploaded files:
  • dxa_only.png
  • low_angle_gb_ptm.jpg
  • low_angle_gb_dxa.jpg
  • low_angle_gb_segmentation.jpg
  • low_angle_gb_dxa_with_segmentation.jpg
  • dxa_with_segmentation.png

FYI: I have enabled the described capability of the DXA modifier in the latest OVITO release 3.7.3, so you can play with this experimental approach yourself. I would be interested in your feedback.

First, insert the PTM modifier into the pipeline and enable the calculation of lattice orientations. Then insert the Grain Segmentation modifier and let it partition the atoms into crystallite grains. Make sure the "Adopt orphan atoms" option is turned on. Finally, add the Dislocation Analysis (DXA) modifier to your pipeline.

Dear Alex,

Thank you very much for your detailed explanation and your solution perfectly solved my question!!

However, there is still a version problem:

I couldn't install OVITO Pro (Ver 3.7.3) successfully. There are some problems with the ".dll" files. I tried many solutions and failed. But I can still successfully install OVITO Pro (Ver 3.6.0). What's the difference ?

So I can only installed the OVITO Basic (Ver 3.7.3) for the test. Inserting the Grain Segmentation modifier is useful. The result was as expected and the "spider's webs" are gone.

Looking forward to your reply.

-Leqing

We are not aware of any issues with the newer program version. I contacted you directly regarding the program installation problem to look into it.

That would be great.

Picture 1 shows the problem but it's in Chinese. The translation roughly means 'the procedure entry point XXX could not be located in the dynamic link library XXX.dll'. Version 3.6.0 will install successfully but version 3.7.3 will not.

So, this is the problem. How can I contact you to solve this problem?

Uploaded files:
  • 1.jpg

Is this on Windows 7? I did an online search for this error message, and the results suggest that this typically occurs when you try to run a Windows 10/11 application under Windows 7.

OVITO 3.7.x requires Windows 10 or newer, because the Qt framework used by OVITO for its graphical user interface is only compatible with Windows 10. OVITO 3.6 and older were based on Qt5, which was backward compatible with Windows 7.

If you really have to work under Windows 7, you can install the Anaconda version of OVITO Basic or OVITO Pro 3.7. These program packages are still built against the old Qt5 framework and may be backward-compatible with Windows 7.

OVITO Pro:

https://www.ovito.org/python-downloads/

OVITO Basic:

https://anaconda.org/conda-forge/ovito

This may change, however, as soon as conda-forge also switches to Qt6 as standard version of the framework.

Yes,it is on Windows 7 and I have to work under Windows 7 because of the limit of computer.

I install the version OVITO Basic 3.7.3 on the personal laptop for the test above.

I will try the Anaconda version of OVITO Pro 3.7 under Windows 7 later.

Thank you always for your kindly help!

Quote from Alexander Stukowski on March 28, 2022, 11:21 am

I'm not sure if I understand the meaning of your first question. The DXA's ability to identify dislocations in a grain boundary mainly depends on the successful identification of the grain boundary's ideal type. With "ideal type" I mean the defect-free reference state of the planar interface, relative to which the secondary GB dislocations will be identified. The current DXA implementation in OVITO supports only two particular reference interface types: The Σ3 coherent twin boundary in fcc and cubic diamond crystals, and the "Σ1" interface in any of the supported crystal structures. With "Σ1" boundary I mean an imaginary crystal interface having zero misorientation, basically any single crystal.

Effectively, "Σ1" is used as underlying reference type if a least one fcc "bridge atom" connecting the two grains is present in the GB  (see my previous posting). Σ3 coherent twin serves as underlying type if at least one hcp "bridge atom" is present.

DXA identifies excess dislocations (secondary GB dislocations) associated with GBs that are vicinal to either of these two reference GB types. You probably are familiar with the GB concept of small-angle grain boundaries, which can be described in terms of an array of lattice dislocations. The DXA currently handles such boundaries transparently, without any specific measures, because the algorithm is originally designed to identify lattice dislocations in single crystals. For the algorithm it doesn't matter whether a bunch of dislocation lines are randomly placed in the crystal or are arranged in the particular form of an array (i.e. a dislocation wall). Furthermore, because the algorithm doesn't differentiate between these situations, it's not possible for the algorithm to mark GB dislocations as such (which would allow removing the lines later on).

This is what makes it hard to fulfil your request: On one hand, the DXA is designed to eagerly identify as many dislocations as possible in a (single) crystal. On the other hand, you'd like it suddenly stop identifying those dislocations once they arrange in a particular pattern and form a (small-angle) grain boundary. How can the DXA decide what is the right thing to do and when? And since the DXA is generally quite tolerant when detecting dislocations, it even finds them (with a good probability) if they form a densely packed array, almost a large-angle grain boundary. The consequence of this behaviour are the typical "spider's webs" of dislocation lines you can observe in the DXA output for polycrystalline microstructures. See the first attached picture below.

In order to avoid this correct, but undesirable behaviour, we need to amend the DXA with an additional criterion to decide which dislocations are acceptable and which are not. The idea that came to my mind is to couple the DXA with the Grain Segmentation algorithm available in OVITO. This tool provides the capability to identify interfaces whose misorientation angle exceeds a certain threshold and then partition the atoms of the system into separate grains. We can use this partitioning to forbid the DXA to identify dislocations which are surrounded by more than one grain region.

I have an experimental implementation of this coupling, and I can share some preliminary results with you here. Picture 2 shows a detail of the larger microstructure: A small-angle grain boundary. Standard DXA resolves this boundary as a web of dislocation lines (picture 3). We can now insert the Grain Segmentation modifier into the pipeline to first partition the microstructure into separate groups of atoms (atom colouring in picture 4). The extended DXA modifier now picks up this labelling of the atoms and treats the two grains as completely separated crystallites. A solid wall is formed in the DXA output (picture 5) and only small number of dislocation segments remain that are attached to the GB interface and reach into the grain.

Looking at the entire microstructure, most of the "spider's webs" are gone and the DXA output consist mostly of true lattice dislocations now (picture 6).

Dear Alex,

Could you tell me in detail how to draw Figure 5 ?

Thank you very much.

I've saved the pipeline as a session file to show you how I produced this figure with OVITO Pro. Please download the following files to your computer:

http://www.ovito.org/download/data/grain_segmentation_dxa/grain_segmentation_and_dxa.ovito
http://www.ovito.org/download/data/grain_segmentation_dxa/tensile.250000.dump

After opening the .ovito file, it will take a few minutes until the grain segmentation and the DXA output are fully computed. Let me know if you have any questions regarding the visualization setup.

新的OVITO微信频道!
New for our users in China: OVITO on WeChat 

Official OVITO WeChat channel operated by Foshan Diesi Technology Co., Ltd.