Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for dumbbell/split interstitials #56

Open
seatonullberg opened this issue Mar 26, 2024 · 4 comments
Open

Add support for dumbbell/split interstitials #56

seatonullberg opened this issue Mar 26, 2024 · 4 comments

Comments

@seatonullberg
Copy link

Are there any plans to support split interstitial generation? Maybe this is already supported with some advanced configuration but it was not obvious to me from the defect generation tutorial.

@kavanase
Copy link
Member

kavanase commented Mar 27, 2024

Direct initialisation of split interstitial structures isn't automated in doped, as there's a lot of configurational complexity and combinatorial explosion of possible structures for this.
However, we have found that the recommended approach of Voronoi tessellation for initial interstitial sites + structure-searching (with ShakeNBreak or otherwise) does quite a good job of this, and has identified these structures for all known cases (some examples are Te interstitials in CdTe, Li-Li and O-O (peroxide) dumbbells in LNMO and split Sb interstitials in Sb₂O₅ – similar to the split Ga interstitials in Ga₂O₃).

That said, with the functions provided and defect structures output by doped, you could directly initialise some split interstitial configurations if you had a specific motif in mind (e.g. non-dumbbell like; 2 nearby-but-separated interstitials + vacancy -> split interstitial)

@kavanase
Copy link
Member

Just to note @seatonullberg, I was thinking about this a bit more.

If one wanted to directly target/initialise dumbbell-like split-interstitials for testing, this could be automated relatively easily by:

  • Identifying the symmetry-inequivalent lattice sites (done in the doped vacancy/substitution generators / just using pymatgen's symmetrized structure)
  • For each, displacing the atomic site toward the largest neighbouring interstitial void (there are python tools for this), by a distance equal to the covalent radius (available in the pymatgen Element properties) or half the dimer bond length if known.
  • Placing the additional "interstitial" atom at this same distance away from the lattice site, in the opposite direction.

This is assuming a certain orientation for the dumbbell (in the direction of the largest interstitial void), but this is typically the most stable arrangement.

We have tools for doing something similar in ShakeNBreak (creating dimer configurations at vacancies). If you were particularly keen on this you could try creating a pull request for this and I can help along the way?
(Either way as mentioned, the typical doped + ShakeNBreak approach should identify these species)

@seatonullberg
Copy link
Author

That sounds like a reasonable approach. Could you direct me to the python tool you mentioned that would identify the largest neighboring void? Identifying the most likely orientation like that was a big part of the challenge when I was considering it. I'll familiarize myself with the codebase some more then open a PR.

@seatonullberg seatonullberg reopened this Mar 27, 2024
@kavanase
Copy link
Member

Yeah so Voronoi tessellation is the main approach for this I've seen. We use code for this in ShakeNBreak input.py: https://github.com/SMTG-Bham/ShakeNBreak/blob/main/shakenbreak/input.py for getting the vertices of the Voronoi polyhedra, that we then place interstitials at. With that code from scipy.spatial, you can also get the corresponding Voronoi polyhedra and use this. See also the VoronoiPolyhedron class from pymatgen-analysis-defects for this: https://github.com/materialsproject/pymatgen-analysis-defects/blob/074cfcdc2d1b17d115cb604d52d1ee3f4d73e7a3/pymatgen/analysis/defects/utils.py#L674

I guess the approach would be to take the voronoi nodes (used as candidate interstitial positions) and corresponding polyhedra, choose the polyhedron with the largest volume whose node is within a cutoff (~3 Å?) of the lattice site and use that as the direction of largest interstitial void?

I feel like I've seen other tools out there for this, which might be better suited to the job, but can't remember these off the top of my head.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants