A Python framework implementing Basin Hopping Monte Carlo algorithm coupled with VASP for studying ion insertion in materials.
The investigation of ion insertion mechanisms in materials is fundamental to the development of next-generation energy storage systems. Understanding the structural evolution, phase stability, and thermodynamic properties during ion insertion/extraction processes requires accurate computational methods. Density functional theory (DFT) calculations have emerged as a powerful tool for studying these phenomena at the atomic scale.
However, traditional DFT approaches face significant challenges when exploring the vast configuration space of possible ion arrangements:
-
Energy Landscape Complexity
- Multiple local minima in potential energy surface
- Metastable configurations trap local optimization
- Complex structural reorganization during ion insertion
-
Configuration Space
- Exponential growth with system size
- Manual structure generation introduces bias
- Limited sampling of possible arrangements
-
Phase Stability
- Multiple competing phases at each composition
- Formation energy calculations require global minima
- Voltage profiles depend on accurate phase identification
IonHopper implements the Basin Hopping Monte Carlo algorithm coupled with DFT calculations to address these challenges. The method:
-
Energy Surface Transformation
- Maps continuous potential energy surface to discrete basins
- Each basin corresponds to local minimum
- Simplifies global optimization problem
-
Monte Carlo Sampling
- Temperature-controlled acceptance criterion
- Efficient exploration of configuration space
- Escape from local minima
-
DFT Integration
- Accurate energy evaluation using VASP
- Structure optimization at each step
- Electronic structure analysis
-
Thermodynamic Analysis
- Convex hull construction
- Phase stability determination
- Voltage profile calculation
git clone https://github.com/nabkh/ionhopper.git
cd ionhopper
pip install -e .
Requirements:
- Python ≥ 3.8
- ASE ≥ 3.22.1
- NumPy ≥ 1.21.0
- PyYAML ≥ 5.4.1
- VASP 5.4+ (not included)
- Configure calculation:
cp config.yaml.template config.yaml
# Edit settings
- Prepare files:
python -m ionhopper.setup.prepare_calculation
- Run BHMC:
python -m ionhopper.workflow.run_compositions --compositions 0.25 0.5 0.75 1.0
If you use this code in your research, please cite:
@article{khossossi2022revealing,
title={Revealing the superlative electrochemical properties of o-B2N2 monolayer in Lithium/Sodium-ion batteries},
author={Khossossi, Nabil and Luo, Wei and Haman, Zakaryae and Singh, Deobrat and Essaoudi, Ismail and Ainane, Abdelmajid and Ahuja, Rajeev},
journal={Nano Energy},
volume={96},
pages={107066},
year={2022},
publisher={Elsevier}
}
@article{khossossi2022flexible,
title={Flexible 3D porous boron nitride interconnected network as a high-performance Li-and Na-ion battery electrodes},
author={Khossossi, Nabil and Singh, Deobrat and Luo, Wei and Ahuja, Rajeev},
journal={Electrochimica Acta},
volume={421},
pages={140491},
year={2022},
publisher={Elsevier}
}
MIT License. See LICENSE file.