CRYSTALpytools: A Python infrastructure for the CRYSTAL code
CRYSTALpytools: A Python infrastructure for the CRYSTAL code
复制标题
DOI:
10.1016/j.cpc.2023.108853
复制
发表时间:
2023-08-21
影响因子:
6.3
通讯作者:
Harrison,Nicholas M.
中科院分区:
文献类型:
--
作者:
Camino,Bruno;Zhou,Huanyu;Harrison,Nicholas M.
CRYSTALpytoolsis an open source Python project available on GitHub that implements a user-friendly interface to theCrystalcode for quantum-mechanical condensed matter simulations.CRYSTALpytoolsprovides functionalities to: i) write and readCrystalinput and output files for a range of calculations (single-point, electronic structure, geometry optimization, harmonic and quasi-harmonic lattice dynamics, elastic tensor evaluation, topological analysis of the electron density, electron transport, and others); ii) extract relevant information; iii) create workflows; iv) post-process computed quantities, and v) plot results in a variety of styles for rapid and precise visual analysis. Furthermore,CRYSTALpytoolsallows the user to translateCrystalobjects (the central data structure of the project) to and from the Structure and Atoms objects of the pymatgen and ASE libraries, respectively. These tools can be used to create, manipulate and visualise complicated structures and write them efficiently toCrystalinput files. Jupyter Notebooks have also been developed for the less Python savvy users to guide them in the use ofCRYSTALpytoolsthrough a user-friendly graphical interface with predefined workflows to complete different specific tasks.Program summaryProgram Title:CRYSTALpytoolsCPC Library link to program files:https://doi.org/10.17632/p2bp3fsk86.1Developer's repository link:https://github.com/crystal-code-tools/CRYSTALpytoolsLicensing provisions:MITProgramming language:Python and Jupyter NotebookNature of problem:TheCrystalcode [1,2] is a powerful tool for the calculation of materials properties. It stands out in the condensed matter computational landscape because of the use of local basis sets, heavy parallelisation, efficient implementation of non-local Fock exchange, and extensive use of point and space symmetry. However, it currently lacks an easily programmable interface to access its input/output structure needed to be able to useCrystalcalculations within computational materials science workflows. Historically, the use ofCrystalin such workflows has been achieved through bespoke scripting implemented in a variety of languages which has hindered code reuse and sharing.Solution method:TheCRYSTALpytoolsproject will enable the automation ofCrystalcalculations in a modular code that can be co-developed by a wide community of users worldwide. It achieves this by transforming standardised input and output files into python objects and providing a suite of functionality to manipulate them. The core implementation is based on a set of data structures denoted theCrystal_objects.CRYSTALpytools, in its current implementation, contains a large variety of functions for input/output manipulation, vibrational and thermodynamic analysis, and visualisation.Additional comments including restrictions and unusual features:The exploitation of point group and space group symmetry is one of the strengths of theCrystalcode, therefore, all the geometry modification functions have been developed to optimise the use of symmetry. When a structure is downloaded from a database or is modified by external code, such as pymatgen [3] or ASE [4], a symmetry analysis is performed before transforming the structure to be an optimisedCrystal_object. All such objects can be directly transformed to standard structures periodic in 0, 1, 2 or 3 dimensions used byCrystal(ie: .gui or .f34 files).References[1]Dovesi Roberto, et al., Quantum-mechanical condensed matter simulations with CRYSTAL, WIREs Comput. Mol. Sci. 8(4) (1 July 2018) e1360.[2]Erba Alessandro, et al., CRYSTAL23: A Program for Computational Solid State Physics and Chemistry …