Files
lps-lii-ps4-iodide-geometry/README.org
T
2026-08-07 14:45:01 +09:00

238 lines
7.6 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#+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.