195 lines
5.0 KiB
Org Mode
195 lines
5.0 KiB
Org Mode
#+TITLE: Li2S-P2S5-LiI Glass: PS4-Centered Ion Density Analysis
|
|
#+AUTHOR: Minami Sakuma
|
|
#+OPTIONS: toc:2 num:nil
|
|
|
|
* Overview
|
|
|
|
This repository contains Python scripts for analyzing and visualizing
|
|
Li and I spatial probability distributions around =PS4^{3-}= units in
|
|
Li2S-P2S5-LiI glass trajectories.
|
|
|
|
The workflow consists of two steps:
|
|
|
|
1. =dump2cube.py=
|
|
- Reads a LAMMPS trajectory.
|
|
- Aligns each =PS4^{3-}= tetrahedron using the nearest I^- ion.
|
|
- Accumulates Li and I positions in the aligned coordinate system.
|
|
- Outputs three-dimensional probability-density data in Gaussian cube format.
|
|
|
|
2. =cube2mayavi.py=
|
|
- Reads the generated cube file.
|
|
- Visualizes the spatial probability density as an isosurface using Mayavi.
|
|
- Displays the reference =PS4^{3-}= tetrahedron.
|
|
|
|
The scripts are intended to analyze the local geometrical relationship
|
|
between I^- ions and =PS4^{3-}= units in Li2S-P2S5-LiI glasses.
|
|
|
|
* Files
|
|
|
|
| File | Description |
|
|
|---+---|
|
|
| =dump2cube.py= | Converts a LAMMPS trajectory into Li/I probability-density cube files. |
|
|
| =cube2mayavi.py= | Visualizes a cube file with Mayavi. |
|
|
| =050Li3PS4-050LiI.lammpstrj= | Example LAMMPS trajectory. |
|
|
| =050Li3PS4-050LiI_PS4_I.cube= | Example I^- probability-density cube file. |
|
|
|
|
* Requirements
|
|
|
|
The scripts require Python 3 and the following packages:
|
|
|
|
- NumPy
|
|
- Mayavi
|
|
- VTK
|
|
- Traits
|
|
- PyQt5 or PySide6, depending on the Mayavi installation
|
|
|
|
Example installation using conda:
|
|
|
|
#+begin_src bash
|
|
conda create -n ps4-density python=3.10
|
|
conda activate ps4-density
|
|
conda install -c conda-forge numpy mayavi pyqt
|
|
#+end_src
|
|
|
|
Alternatively, NumPy can be installed using pip:
|
|
|
|
#+begin_src bash
|
|
pip install numpy
|
|
#+end_src
|
|
|
|
Mayavi installation is generally more stable with conda-forge.
|
|
|
|
* Input Trajectory Format
|
|
|
|
=dump2cube.py= assumes a LAMMPS trajectory containing the following
|
|
atom columns:
|
|
|
|
#+begin_example
|
|
ITEM: ATOMS id type element mol x y z
|
|
#+end_example
|
|
|
|
The trajectory must contain at least the following elements:
|
|
|
|
- Li
|
|
- P
|
|
- S
|
|
- I
|
|
|
|
The script assumes that P and S atoms belonging to the same
|
|
=PS4^{3-}= unit share the same molecule ID (=mol=).
|
|
|
|
* Analysis Procedure
|
|
|
|
For each trajectory frame:
|
|
|
|
1. Each P atom is selected as the center of a reference =PS4^{3-}= unit.
|
|
2. The four nearest I^- ions are identified.
|
|
3. The nearest I^- ion is used to define the orientation of the =PS4^{3-}= unit.
|
|
4. The =PS4^{3-}= tetrahedron is rotated into a common reference frame.
|
|
5. Li positions within the cutoff distance are accumulated.
|
|
6. The positions of the four nearest I^- ions are accumulated.
|
|
7. Three-dimensional histograms are written as cube files.
|
|
|
|
The reference orientation is defined as follows:
|
|
|
|
- The S atom farthest from the nearest I^- ion is aligned with the z axis.
|
|
- A second S atom is used to fix the rotation around the z axis.
|
|
|
|
* Usage
|
|
|
|
** Generate Cube Files
|
|
|
|
#+begin_src bash
|
|
python dump2cube.py \
|
|
-i 050Li3PS4-050LiI.lammpstrj \
|
|
-m 160 160 160 \
|
|
-cut 8
|
|
#+end_src
|
|
|
|
Arguments:
|
|
|
|
| Argument | Description |
|
|
|---+---|
|
|
| =-i=, =--trjfile= | Input LAMMPS trajectory file. |
|
|
| =-m=, =--mesh= | Number of grid points in x, y, and z directions. |
|
|
| =-cut=, =--cutoff= | Spatial cutoff radius in angstrom. |
|
|
|
|
Expected output files:
|
|
|
|
#+begin_example
|
|
050Li3PS4-050LiI_PS4_Li.cube
|
|
050Li3PS4-050LiI_PS4_I.cube
|
|
#+end_example
|
|
|
|
** Visualize I^- Probability Density
|
|
|
|
#+begin_src bash
|
|
python cube2mayavi.py \
|
|
-i 050Li3PS4-050LiI_PS4_I.cube \
|
|
-atom I \
|
|
-iso 1.26483e-09
|
|
#+end_src
|
|
|
|
** Visualize Li+ Probability Density
|
|
|
|
#+begin_src bash
|
|
python cube2mayavi.py \
|
|
-i 050Li3PS4-050LiI_PS4_Li.cube \
|
|
-atom Li \
|
|
-iso 1.0e-09
|
|
#+end_src
|
|
|
|
The appropriate isovalue depends on the trajectory length, mesh size,
|
|
cutoff radius, and probability-density distribution. It should therefore
|
|
be adjusted for each dataset.
|
|
|
|
* Output
|
|
|
|
The cube files contain:
|
|
|
|
- A reference =PS4^{3-}= tetrahedron:
|
|
- P atom at the origin
|
|
- Four S atoms in the aligned coordinate system
|
|
- A three-dimensional spatial probability-density field for Li or I
|
|
|
|
The cube files can be visualized using:
|
|
|
|
- Mayavi
|
|
- VMD
|
|
- PyMOL
|
|
- ParaView
|
|
- Other software supporting Gaussian cube files
|
|
|
|
* Visualization Colors
|
|
|
|
The default visualization settings in =cube2mayavi.py= are:
|
|
|
|
| Object | Color |
|
|
|---+---|
|
|
| P | Purple |
|
|
| S | Yellow |
|
|
| Li probability density | Blue |
|
|
| I probability density | Red |
|
|
| P-S bonds | Gray |
|
|
|
|
* Notes
|
|
|
|
- The trajectory is treated using periodic boundary conditions.
|
|
- Coordinates are converted to fractional coordinates before alignment.
|
|
- The current implementation assumes an orthorhombic simulation box for
|
|
the trajectory parsing procedure.
|
|
- The script includes a triclinic-cell lattice conversion function, but
|
|
the exact input format should be checked before applying it to
|
|
triclinic LAMMPS trajectories.
|
|
- Large trajectory and cube files can exceed the standard GitHub file-size
|
|
limit. Git LFS is recommended when files are larger than 100 MB.
|
|
|
|
* Citation
|
|
|
|
If this repository is used in research, please cite the corresponding
|
|
publication or presentation describing the Li2S-P2S5-LiI glass analysis.
|
|
|
|
* License
|
|
|
|
This repository is intended for academic research use.
|