Initinal commit /lps-lii-ps4-iodide-geometry

This commit is contained in:
佐久間 美波
2026-08-07 14:45:01 +09:00
commit d8e27d06b0
9 changed files with 3414171 additions and 0 deletions
+237
View File
@@ -0,0 +1,237 @@
#+TITLE: PS₄³⁻-Centered I⁻ Geometry Analysis in Li₂SP₂S₅–LiI Glasses
#+AUTHOR: Minami Sakuma
#+OPTIONS: toc:2 num:nil
* Overview
This repository contains Python scripts for analyzing the local
geometrical relationship between I⁻ ions and PS₄³⁻ tetrahedra in
Li₂SP₂S₅–LiI glass trajectories.
For each P atom, nearby I⁻ ions are classified according to the number
of S atoms from the same PS₄³⁻ tetrahedron located within a specified
IS cutoff distance.
The resulting I⁻ spatial-density distributions are exported as Gaussian
cube files and visualized as three-dimensional isosurfaces using Mayavi.
* Analysis Concept
For a given I⁻ ion and a given PS₄³⁻ tetrahedron, the number of nearby
S atoms is defined as:
#+begin_example
s_count = number of S atoms within 4.7 Å from I⁻
#+end_example
The I⁻ configuration is classified as follows:
| Classification | s_count | Geometrical interpretation |
|---+---:|---|
| Zero-type | 0 | I⁻ is not close to any S atom of the reference PS₄³⁻ unit. |
| Corner-type | 1 | I⁻ is located near one S vertex of the PS₄³⁻ tetrahedron. |
| Edge-type | 2 | I⁻ is located near two S atoms forming one tetrahedral edge. |
| Three-type | 3 | I⁻ is located near three S atoms of the same PS₄³⁻ unit. |
The terms corner-type and edge-type describe geometrical proximity only.
They do not imply bond sharing or atom sharing between I⁻ and PS₄³⁻
units.
* Workflow
#+begin_example
LAMMPS trajectory
|
v
dump2cube_edge_corner.py
|
+-- PS₄_I_All.cube
+-- PS₄_I_zero.cube
+-- PS₄_I_corner.cube
+-- PS₄_I_edge.cube
+-- PS₄_I_three.cube
|
v
cube2mayavi_edge_corner.py
|
v
Colored 3D isosurface visualization
#+end_example
* Files
| File | Description |
|--------------------------------------+------------------------------------------------------------------------------------------------------|
| =dump2cube_edge_corner.py= | Reads a LAMMPS trajectory, aligns PS₄³⁻ units, classifies nearby I⁻ ions, and generates cube files. |
| =cube2mayavi_edge_corner.py= | Visualizes multiple classified I⁻ cube files using different colors. |
| =050Li3PS4-050LiI.lammpstrj= | Example LAMMPS trajectory for a Li₂SP₂S₅–LiI glass. |
| =050Li3PS4-050LiI_PS4_I_All.cube= | Spatial density of the four nearest I⁻ ions around each P atom. |
| =050Li3PS4-050LiI_PS4_I_zero.cube= | Spatial density of zero-type I⁻ configurations. |
| =050Li3PS4-050LiI_PS4_I_corner.cube= | Spatial density of corner-type I⁻ configurations. |
| =050Li3PS4-050LiI_PS4_I_edge.cube= | Spatial density of edge-type I⁻ configurations. |
| =050Li3PS4-050LiI_PS4_I_three.cube= | Spatial density of three-type I⁻ configurations. |
* Requirements
** Python packages
The scripts require Python 3 and the following packages:
- NumPy
- Mayavi
- VTK
- Traits
- PyQt5 or PySide6
Mayavi is generally easiest to install through conda-forge.
#+begin_src bash
conda create -n ps4-iodide python=3.10
conda activate ps4-iodide
conda install -c conda-forge numpy mayavi pyqt
#+end_src
Alternatively, NumPy can be installed with pip:
#+begin_src bash
pip install numpy
#+end_src
* Input Trajectory Format
=dump2cube_edge_corner.py= expects a LAMMPS trajectory containing the
following atom columns:
#+begin_example
ITEM: ATOMS id type element xu yu zu mol
#+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 PS₄³⁻
tetrahedron have the same molecule ID (=mol=).
Periodic boundary conditions are applied when calculating relative
atomic positions.
* Analysis Procedure
For every trajectory frame, the following procedure is performed.
1. Each P atom is selected as the center of a reference PS₄³⁻ tetrahedron.
2. The nearest I⁻ ion is used to define the orientation of the PS₄³⁻ unit.
3. The S atom farthest from the nearest I⁻ ion is aligned with the z axis.
4. A second S atom is used to fix the rotation around the z axis.
5. The closest I⁻ ions are rotated into the common PS₄³⁻ reference frame.
6. I⁻ ions are classified using the number of S atoms within 4.7 Å.
7. The classified I⁻ coordinates are accumulated over all P atoms and
trajectory frames.
8. Three-dimensional histograms are exported as Gaussian cube files.
* Normalization
The density fields for zero-type, corner-type, edge-type, and three-type
I⁻ configurations are normalized by the total number of I⁻ coordinates
used for the overall I⁻ distribution.
Therefore, the relative density of each classified field reflects both:
- the spatial distribution of the configuration, and
- the relative occurrence of that configuration.
* Usage
** Generate Cube Files
#+begin_src bash
python dump2cube_edge_corner.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 along the x, y, and z directions. |
| =-cut=, =--cutoff= | Spatial cutoff distance around the reference P atom in Å. |
Expected output files:
#+begin_example
050Li3PS4-050LiI_PS4_I_All.cube
050Li3PS4-050LiI_PS4_I_zero.cube
050Li3PS4-050LiI_PS4_I_corner.cube
050Li3PS4-050LiI_PS4_I_edge.cube
050Li3PS4-050LiI_PS4_I_three.cube
#+end_example
** Visualize Classified I⁻ Density Fields
#+begin_src bash
python cube2mayavi_edge_corner.py \
-i 050Li3PS4-050LiI_PS4_I_zero.cube \
050Li3PS4-050LiI_PS4_I_corner.cube \
050Li3PS4-050LiI_PS4_I_edge.cube \
050Li3PS4-050LiI_PS4_I_three.cube \
-iso 1.2e-09
#+end_src
The script assigns colors based on the file name:
| Classification | Color |
|----------------+--------|
| Zero-type | Blue |
| Corner-type | Green |
| Edge-type | Red |
| Three-type | Yellow |
The reference PS₄³⁻ tetrahedron is shown with:
| Object | Color |
|-----------+--------|
| P atom | Purple |
| S atoms | Yellow |
| PS bonds | Gray |
* Output
Each Gaussian cube file contains:
- A reference PS₄³⁻ tetrahedron
- P atom at the origin
- Four S atoms in the aligned coordinate system
- A three-dimensional spatial-density field of the selected I⁻ category
The cube files can be visualized using:
- Mayavi
- VMD
- ParaView
- PyMOL
- Other software supporting Gaussian cube files
* Notes and Limitations
- The IS cutoff for classification is fixed at 4.7 Å in the script.
- The cube files represent accumulated spatial-density distributions.
- The current analysis uses the nearest I⁻ ion to define the orientation
of each PS₄³⁻ tetrahedron.
- The script searches the 15 nearest I⁻ ions around each P atom when
classifying zero-, corner-, edge-, and three-type configurations.
- The output filename is generated from the input trajectory name.
The current implementation expects an input filename containing =LiI=.
- The current trajectory parser is primarily intended for orthorhombic
simulation cells.
- The Mayavi visualization requires a GUI-capable Python environment.
* License
This repository is intended for academic and research use.