This repository contains Python tools for calculating the spectral heat current from the data produced by non-equilibrium molecular dynamics simulation with LAMMPS software. The relevant theory was published in:
- K. Sääskilahti, J. Oksanen, J. Tulkki, and S. Volz, Phys. Rev. B 90, 134312 (2014)
- K. Sääskilahti, J. Oksanen, S. Volz, and J. Tulkki, Phys. Rev. B 91, 115426 (2015)
These codes are meant to help anyone interested in implementing the spectral heat current calculations for their own applications. If you want to use the codes for research purposes, please cite the above-mentioned publications and let me know.
See detailed API documentation in readthedocs.io.
The actual library for computing spectral heat current distributions is found in the sdhc folder. It contains:
- SHCPostProc.py: Python class for performing the post-processing
- calcFC.py: Class for calculating the force constants (note that the definition of the "left" and "right" interfaces must be the same in the NEMD simulation and in the calculation of the force constants)
- compactify_vels.cpp: C++ script for formatting the LAMMPS's dump velocity file into a more easily readable column file. The program can be compiled by running
make
inshc-tools
folder (ifg++
is found, otherwise modifyMakefile
such that appropriate compiler is defined in variable CC).
In addition, the root directory contains the script calcSHC.py demonstrating how the post-processing class is used and how the data could be saved to file.
Ensure that sdhc
is found in your PYTHONPATH
and do
from sdhc import SHCPostProc
import numpy as np
postprocessor = SHCPostProc(*args, **kwargs)
postprocessor.postProcess()
# Save frequencies and smoothened spectral heat currents as NumPy files
np.save('angular_frequencies.npy', postprocessor.oms_fft)
np.save('heat_currents.npy', postprocessor.SHC_smooth)
# Save the frequencies and smoothened spectral heat currents to text file
np.savetxt('frequencies_and_currents.txt', np.column_stack((oms, postprocessor.SHC_smooth)))
See the example below for the arguments required by SHCPostProc
.
Folder example contains a self-contained example for calculating the spectral heat current flowing across a slab of amorphous Si. The script to be run is called silicon_example.py
. It performs the following steps:
- prepare a box of atoms,
- call LAMMPS to perform the quenching procedure contained in LAMMPS input file
quench_Si.lmp
, - call LAMMPS to perform the actual NEMD calculation for a-Si using
amorphous_interface.lmp
, and - perform the post-processing using
shc-tools
- Using LAMMPS from Python requires that you have built LAMMPS as a dynamically shared library as instructed in the LAMMPS manual
- You need to build
compactify_vels.cpp
inscripts
folder and have that available in your$PATH
. - Simulation uses the
sw
pair style, which is included in theMANYBODY
package. See here how to include packages in your LAMMPS build. - You need to have numpy installed.
- Documentation for calcSHC.py
- Documentation for the example
- Preparation of visualization files
- Documentation for fcCalc.py