first commit
This commit is contained in:
+132
@@ -0,0 +1,132 @@
|
||||
#+TITLE: Nearest P/I Environment Analysis for Li₃PS₄–LiI Glasses
|
||||
#+AUTHOR: Minami Sakuma
|
||||
#+OPTIONS: toc:2 num:t
|
||||
|
||||
* Overview
|
||||
|
||||
This repository contains a Python program for analyzing the local
|
||||
environments of Li⁺ ions in Li₃PS₄–LiI glass trajectories.
|
||||
|
||||
For each Li⁺ ion, the program calculates the distances to the nearest
|
||||
P atom and I⁻ ion under periodic boundary conditions. It then determines
|
||||
whether the Li⁺ ion is closer to P or I⁻.
|
||||
|
||||
The following two quantities are calculated for each composition:
|
||||
|
||||
- The P fraction in the entire system:
|
||||
P / (P + I)
|
||||
- The fraction of Li⁺ ions whose nearest center is P:
|
||||
N_{Li-near-P} / N_{Li}
|
||||
|
||||
The second quantity is calculated for each molecular-dynamics step and
|
||||
then averaged over all steps.
|
||||
|
||||
* Target System
|
||||
|
||||
The target system is Li₃PS₄–LiI glass.
|
||||
|
||||
The following compositions are included in this repository:
|
||||
|
||||
- 80Li₃PS₄–20LiI
|
||||
- 70Li₃PS₄–30LiI
|
||||
- 60Li₃PS₄–40LiI
|
||||
- 50Li₃PS₄–50LiI
|
||||
|
||||
* Analysis Procedure
|
||||
|
||||
For each molecular-dynamics step, the program performs the following
|
||||
operations:
|
||||
|
||||
1. Read the coordinates of Li⁺, P, S, and I⁻.
|
||||
2. Calculate all Li⁺–P distances under periodic boundary conditions.
|
||||
3. Calculate all Li⁺–I⁻ distances under periodic boundary conditions.
|
||||
4. Identify the nearest P atom and I⁻ ion for each Li⁺ ion.
|
||||
5. Classify each Li⁺ ion according to whether P or I⁻ is closer.
|
||||
6. Calculate the fraction of Li⁺ ions whose nearest center is P.
|
||||
7. Average the fraction over all simulation steps.
|
||||
|
||||
The minimum-image convention is used to calculate distances under
|
||||
periodic boundary conditions.
|
||||
|
||||
* Requirements
|
||||
|
||||
- Python 3
|
||||
- NumPy
|
||||
- Matplotlib
|
||||
|
||||
The required Python packages can be installed using:
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
pip install numpy matplotlib
|
||||
#+END_SRC
|
||||
|
||||
* Repository Contents
|
||||
|
||||
#+BEGIN_EXAMPLE
|
||||
.
|
||||
├── calc_share.py
|
||||
├── 050Li3PS4-050LiI_thin100.lammpstrj
|
||||
├── 060Li3PS4-040LiI_thin100.lammpstrj
|
||||
├── 070Li3PS4-030LiI_thin100.lammpstrj
|
||||
├── 080Li3PS4-020LiI_thin100.lammpstrj
|
||||
├── Readme.org
|
||||
└── .gitignore
|
||||
#+END_EXAMPLE
|
||||
|
||||
* Usage
|
||||
|
||||
Run the program by specifying one or more trajectory files with the
|
||||
=-i= option:
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
python calc_share.py -i \
|
||||
080Li3PS4-020LiI_thin100.lammpstrj \
|
||||
070Li3PS4-030LiI_thin100.lammpstrj \
|
||||
060Li3PS4-040LiI_thin100.lammpstrj \
|
||||
050Li3PS4-050LiI_thin100.lammpstrj
|
||||
#+END_SRC
|
||||
|
||||
A wildcard can also be used:
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
python calc_share.py -i *.lammpstrj
|
||||
#+END_SRC
|
||||
|
||||
* Output
|
||||
|
||||
The program generates a plot containing the following quantities:
|
||||
|
||||
- Blue line: P / (P + I) in the entire system
|
||||
- Green line: fraction of Li⁺ ions whose nearest center is P,
|
||||
averaged over all simulation steps
|
||||
|
||||
The plot is saved as:
|
||||
|
||||
#+BEGIN_EXAMPLE
|
||||
voronoi_count_diff.pdf
|
||||
#+END_EXAMPLE
|
||||
|
||||
* Expected Trajectory Format
|
||||
|
||||
The current parser assumes a specific LAMMPS trajectory format:
|
||||
|
||||
- Each atom record contains six columns.
|
||||
- The third column contains the element name:
|
||||
Li, P, S, or I.
|
||||
- The fourth to sixth columns contain the atomic coordinates.
|
||||
- The simulation cell is orthorhombic.
|
||||
- The number and order of header fields are fixed for every frame.
|
||||
|
||||
If the trajectory format differs from these assumptions, the data-loading
|
||||
section of =calc_share.py= must be modified.
|
||||
|
||||
* Notes
|
||||
|
||||
- Li⁺ ions for which the nearest P and I⁻ distances are exactly equal
|
||||
are excluded from both counts in the current implementation.
|
||||
- This analysis is based on nearest-neighbor distances and is not a
|
||||
rigorous Voronoi tessellation.
|
||||
- The local P fraction around Li⁺ should be interpreted by comparison
|
||||
with the P / (P + I) fraction in the entire system.
|
||||
- The current code assumes that both P and I⁻ are present in every
|
||||
trajectory.
|
||||
Reference in New Issue
Block a user