Skip to content

Commit

Permalink
Merge pull request #37 from SMTG-UCL/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
ireaml authored Nov 29, 2022
2 parents ce9bf57 + 59128bd commit 6fc306d
Show file tree
Hide file tree
Showing 9 changed files with 2,173 additions and 35 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
Change Log
==========

v22.11.29
--------

Main changes:
- Add example notebook showing how to generate interstitials and apply SnB to them.
- Fix typo in example notebook and docs.
- Add comment about font installation to Installation guide.
- Update paper.md with suggestions from editor.


v22.11.18
--------

Expand Down
2 changes: 1 addition & 1 deletion docs/Installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ which contains the ``POTCAR.X(.gz)`` files (in this case for PBE ``POTCARs``). M
`here <https://pymatgen.org/installation.html#potcar-setup>`_.

.. NOTE::
The font `Montserrat <https://fonts.google.com/specimen/Montserrat/about>`
The font `Montserrat <https://fonts.google.com/specimen/Montserrat/about>`_
(`Open Font License <https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL>`_)
will be installed with the package, and will be used by default for plotting. If you prefer to use a different
font, you can change the font in the ``matplotlib`` style sheet (in ``shakenbreak/shakenbreak.mplstyle``).
Expand Down
20 changes: 10 additions & 10 deletions docs/ShakeNBreak_Example_Workflow.ipynb

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
author = 'Irea Mosquera-Lois, Seán R. Kavanagh'

# The full version, including alpha/beta/rc tags
release = '22.11.19'
release = '22.11.29'


# -- General configuration ---------------------------------------------------
Expand Down
26 changes: 14 additions & 12 deletions paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@ tags:
- ab initio
authors:
- name: Irea Mosquera-Lois
equal-contrib: true
orcid: 0000-0001-7651-0814
affiliation: 1
- name: Seán R. Kavanagh
affiliation: 1, 2
equal-contrib: true
corresponding: true
affiliation: 1, 2
orcid: 0000-0003-4577-9647
- name: Aron Walsh
affiliation: 2
Expand All @@ -35,40 +37,40 @@ bibliography: paper.bib

Point defects are present in all crystalline solids, controlling the properties and performance
of most functional materials, including thermoelectrics, photovoltaics and catalysts.
The standard modelling approach, based on local optimisation of a defect placed on a known crystal
site can miss the true ground state structure, however.
However, the standard modelling approach, based on local optimisation of a defect placed on a known crystal
site, can miss the true ground state structure.
This structure may lie within a local minimum of the potential energy surface (PES), trapping a gradient-based optimisation algorithm in a metastable arrangement and thus
yielding incorrect defect structures that compromise predicted properties [@Mosquera-Lois:2021]. As such, an efficient way to explore the defect energy landscape and identify low energy structures is required.
yielding incorrect defect structures that compromise predicted properties [@Mosquera-Lois:2021]. As such, an efficient way to explore the defect energy landscape and identify low-energy structures is required.

# Statement of need

To tackle this limitation, two approaches have recently been designed. Arrigoni and Madsen [@Arrigoni:2021]
developed an evolutionary algorithm combined with a machine learning model to navigate the defect configurational
landscape and identify low energy structures. While ideal to study specific defects, its complexity
landscape and identify low-energy structures. While ideal to study specific defects, its complexity
and computational cost hinders its application to typical defect investigations.
Alternatively, Pickard and Needs [@Pickard:2011] applied random sampling to the atoms near the defect site --
with the limitation that random sampling on a high-dimensional space lowers efficiency and increases
computational cost. To improve sampling efficiency, domain knowledge can be used to tailor the sampling
structures towards likely energy lowering distortions. This is the purpose of our package, which aims to serve
as a simple, efficient and affordable tool to identify low energy defect structures.
structures towards likely energy-lowering distortions. This is the purpose of our package, which aims to serve
as a simple, efficient, and affordable tool to identify low-energy defect structures.

# ShakeNBreak

`ShakeNBreak` is a set of Python modules developed to automatise the process of defect structure searching.
`ShakeNBreak` is a set of Python modules developed to automate the process of defect structure searching.
It makes extensive use of several open-source packages, including Python Materials Genomics (pymatgen) [@pymatgen] and the Atomic Simulation Environment (ase) [@ase]. It supports most common *ab-initio* plane wave codes, including VASP [@vasp], CP2K [@cp2k], Quantum Espresso [@espresso], CASTEP [@castep] and FHI-aims [@fhi_aims].
In combination, these features make `ShakeNBreak` compatible with the majority of defect packages such as PyCDT [@pycdt],
pylada [@pylada], DASP [@dasp] and Spinney [@spinney], as well as workflow managers (FireWorks [@fireworks] and AiiDA [@aiida]).
In addition to a Python API, `ShakeNBreak` provides a command line interface, making it user-friendly and readily-applicable to defect modelling workflows.
In addition to a Python API, `ShakeNBreak` provides a command line interface, making it user-friendly and readily applicable to defect modelling workflows.

The structure search strategy is based on applying a range of chemically-guided distortions
to the high-symmetry defect configuration, yielding a set of sampling structures which are then geometrically optimised.
Although the distortions can be customised, a set of sensible defaults and informative warnings have been implemented.
Optionally, the relaxation input files can be generated for the desired *ab-initio* code and
organised into a directory structure. These processes are fully automated, requiring only a few lines of code or a single command.
Following the geometry optimisations, the results can be automatically parsed, analysed
and plotted to identify the different low energy structures, as well as the physico-chemical factors driving the energy lowering distortions.
and plotted to identify the different low-energy structures, as well as the physico-chemical factors driving the energy-lowering distortions.
Within its analysis toolbox, `ShakeNBreak` includes methods to quantify structural similarity (Figure 1a), compare the defect local environments (Figure 1c,d)
and analyse site and orbital-decomposed magnetisations (Figure 1b).
and analyse site- and orbital-decomposed magnetisations (Figure 1b).

The distortion procedure, underlying rationale and its application to a wide range of semiconductors have recently been described [@Mosquera-Lois:2022]. In addition,
the package has been employed to identify the defect structures reported in several studies [@Kavanagh:2021; @Kavanagh:2022], with the identified configurations having significant impact on predicted behaviour.
Expand All @@ -84,6 +86,6 @@ support from the EPSRC (EP/N01572X/1) and from the European Research Council, ER

ShakeNBreak has benefitted from feature requests from many members of the Walsh and Scanlon research groups,
including Adair Nicolson, Xinwei Wang, Katarina Brlec, Joe Willis, Zhenzhu Li, Jiayi Cen, Lavan Ganeshkumar,
Daniel Sykes, Luisa Herring-Rodriguez and Sabrine Hachmiouane.
Daniel Sykes, Luisa Herring-Rodriguez, Alex Squires, Sabrine Hachmiouane and Chris Savory.

# References
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ def package_files(directory):

setup(
name="shakenbreak",
version="22.11.19",
version="22.11.29",
description="Package to generate and analyse distorted defect structures, in order to "
"identify ground-state and metastable defect configurations.",
long_description="Python package to automatise the process of defect structure searching. "
Expand Down Expand Up @@ -170,6 +170,7 @@ def package_files(directory):
"hiphive",
"monty",
"click>8.0",
"importlib_metadata",
],
extras_require={
"tests": [
Expand Down
Binary file added tests/data/vasp/CdTe/doped_Te_i_dict.pickle
Binary file not shown.
Loading

0 comments on commit 6fc306d

Please sign in to comment.