ElasTool (Elastic Analysis and Simulation Toolkit for Optimized Observations and Learning) is a powerful and innovative Python-based toolkit optimized for computing the second-order elastic constants (SOECs) and mechanical properties of crystal systems across different dimensions, including 3D structures, 2D materials, nanoribbons, coaxially rolled 2D-based van der Waals nanostructures, and 1D nanotubes. It harnesses first-principles Density Functional Theory (DFT) and ab initio molecular dynamics, making it ideal for analyzing both zero-temperature and finite-temperature conditions.
ElasTool offers a flexible approach to determining elastic constants and mechanical properties of various materials at zero and finite temperatures and pressures, providing a broad scope of utility across different material conditions. It seamlessly integrates with the VASP electronic structure code. However, its architecture is open and can easily implement interfaces to other DFT packages. If you are interested in such extensions, please don't hesitate to contact the authors for further guidance and support with the ElasTool source code. The software utilizes three kinds of strain-matrix sets: High-Efficiency Strain-Matrix Sets (OHESS), Universal Linear-Independent Coupling Strains (ULICS), and All-Single-Element Strain-Matrix Sets (ASESS) [1], enabling automatic and efficient calculation of the SOECs.
The ElasTool toolkit offers several features, including:
ElasTool offers a comprehensive range of features for analyzing various material properties:
The Christoffel equations have been integrated into our approach for calculating wave velocities, power factors, and enhancement factors. This integration is based on the methodology described in Christoffel. The feature is turned on once plotparameters
is set to yes
in the ElasTool input file elastol.in
. For 2D materials, we implemented an embedding method to visualize the properties in a three-dimensional plane. Specifically, the solution of the Christoffel equations generates the following output files:
slow_secondary.dat
, fast_secondary.dat
, primary.dat
These files provide acoustic data for various directions, determined by the Numtheta
and Numphi
grid settings. They offer insights into the slowest, intermediate, and fastest acoustic modes. Each file comprises 17 columns with the following data:
anisotropy.dat
This file details the maximum and minimum velocities for the three acoustic modes and their directional occurrences. It also quantifies the material's overall anisotropy.
directions.dat
Contains information on sound velocities in various directions.
sound.out
Offers general data on the etensor tensor, bulk and shear modulus, and the isotropic sound velocities of the material.
Upon enabling the plot feature, ElasTool generates Gnuplot scripts for automatic plotting of key features. These are saved as high-resolution PNG files in the property_plots
folder. Due to the volume of files produced, enabling plot features in high-throughput settings is not recommended unless necessary. Alternatively, the post-processing mode (run_mode=3
) can be used for plot generation for specific materials. For outputs related to the Christoffel equation solution, the following file naming conventions are important:
phase
----- Phase velocitygroup
----- Group velocity (absolute value only)ray
------- Ray surface (directional group velocity)pfangle
--- Power flow angleenh
------- Enhancement factorpol
------- Phase velocity polarizationrelative
-- Relative to isotropic sound velocities (for phase and group)sphere
---- Projection onto the unit spherecube
------ Projection onto the unit cubeeqar
------ Equal area plane projectionstereo
---- Stereographic plane projection, preserving local shaperadius
---- For phase velocity, showing data on a sphere with radius scaled by absolute velocityThese features establish ElasTool as a versatile and indispensable toolkit for scientists and engineers specializing in materials science and engineering. Its comprehensive computational capabilities are ideal for advanced material science research, providing critical insights into the mechanical and thermal properties of various materials. Whether for academic research, industrial applications, or innovative material design, ElasTool serves as a pivotal resource in exploring and understanding the intricate behavior of 3D structures, 2D materials, and nanoscale systems.
ElasTool is a highly efficient computational tool designed for calculating and visualizing the elastic, mechanical, and related properties of materials in 1D, 2D, and 3D systems. It stands out with its advanced visualization capabilities, offering insightful and enriching user experiences. The visualization capabilities in ElasTool are designed to enhance user engagement, provide deeper insights into material properties, and facilitate the efficient presentation of complex data. Whether for academic research, material design, or engineering applications, these features make ElasTool a valuable asset in the field of material science.
ElasTool is not just a computational toolkit; it's also a powerful visualization platform, enabling:
massdensity_dim.dat
for material's dimension and mass density.
# Mass density in Kg/m^2, Dimension
0.00000224 2D
elastic_tensor.dat
for the elastic tensor matrix.
# Elastic tensor in Voigt notation for 2D material
52.2849 28.6494 0.0000
28.6494 36.5780 0.0000
0.0000 0.0000 22.8516
The postprocessing is for generating the plots for visualizing the elastic and mechanical properties of materials after a complete stress-strain calculation has been carried out. The massdensity_dim.dat
and the elastic_tensor.dat
files are only needed if you're using elastic tensor parameters from other electronic structure codes or besides the ones you have obtained. To utilize ElasTool's post-processing features:
massdensity_dim.dat
and elastic_tensor.dat
files as described.elastool -pp
elastool -Postprocess
elastool -postprocess
elastool -POSTPROCESS
-plotly
:
elastool -pp -plotly
elastool -Postprocess -plotly
elastool -postprocess -plotly
elastool -POSTPROCESS -plotly
ElasTool excels in:
You can also use ElasTool for post-processing visualization using the Elate web interface. After completing stress-strain calculations, users can seamlessly integrate ElasTool with Elate.
elastool -elate
, or elastool -Elate
, or elastool -ELATE
in your terminal.These features enhance the user experience by simplifying the analysis process and providing intuitive, accessible data visualizations directly from ElasTool's interface.
ElasTool offers straightforward installation options suitable for various user preferences. These methods ensure a hassle-free setup, allowing you to commence your material science investigations with ElasTool promptly. Detailed instructions can be found in the INSTALL file, but here are the general methods:
Using pip:
pip install -U elastool
From Source Code:
git clone [git@github.com:zhongliliu/elastool.git]
pip install .
Installation via setup.py:
setup.py
script:
python setup.py install [--prefix=/path/to/install/]
--prefix
argument is useful for installations in environments like shared High-Performance Computing (HPC) systems, where administrative privileges might be restricted.pip
are not applicable.Learning to use ElasTool is made easy with the provided examples in the example folder. Here are the key steps for using ElasTool effectively:
Create a Calculation Directory:
elastool -0
to generate basic template input files (INCARs, KPOINTS, and elastool.in).Modify Input Files:
Initialize the Job:
elastool
to begin the calculation process.Understanding ElasTool Options:
elastool.in
includes descriptive text for each flag, making it user-friendly.elastool -h
or elastool -help
.This streamlined process allows users to quickly start and efficiently conduct their material analysis with ElasTool.
If you have used ElasTool in your research, please, consider citing the appropriate publications from the list below:
@article{Liu2020elastool, title = {ElasTool: An automated toolkit for elastic constants calculation}, journal = {Computer Physics Communications}, volume = {270}, pages = {108180}, year = {2022}, issn = {0010-4655}, doi = {https://doi.org/10.1016/j.cpc.2021.108180}, url = {https://www.sciencedirect.com/science/article/pii/S0010465521002927}, author = {Zhong-Li Liu and C.E. Ekuma and Wei-Qi Li and Jian-Qun Yang and Xing-Ji Li} }
@article{Kastuar2022efficient, title={Efficient prediction of temperature-dependent elastic and mechanical properties of 2D materials}, author={Kastuar, SM and Ekuma, CE and Liu, Z-L}, journal={Scientific Reports}, volume={12}, number={1}, pages={3776}, year={2022}, url = {https://www.nature.com/articles/s41598-022-07819-8}, publisher={Nature Publishing Group UK London} }
@article{Ekuma2024, title = {ElasTool v3.0: Efficient computational and visualization toolkit for elastic and mechanical properties of materials}, journal = {Computer Physics Communications}, volume = {300}, pages = {109161}, year = {2024}, doi = {10.1016/j.cpc.2024.109161}, url = {https://www.sciencedirect.com/science/article/abs/pii/S0010465524000845?via%3Dihub}, author = {Chinedu E. Ekuma and Zhong-Li Liu } }
We welcome your interest in extending ElasTool's capabilities and are happy to assist with integrating it with other electronic structure codes. If you have queries about ElasTool, need help using it, or wish to share suggestions for its improvement, please reach out to us. Our team is dedicated to supporting your work and enhancing ElasTool's functionality.
Feel free to contact us via email:
Your feedback and questions are invaluable to us, and we look forward to hearing from you.