top of page

'WPPT': A solver for Wave- and Particle-like Phonon Transport (WPPT)

What's WPPT:

  • A solver for Wave- and Particle-like Phonon Transport (WPPT)

  • WPPT contains three modules:

    • NMA: Time- and spatial-dependent normal mode velocity or displacement calculations.

    • PWave: Phonon Wavelet transform both for the temporal coherence and spatial coherence calculations.

    • WPpt: Particlelike lifetimes, coherence revised lifetimes, coherence time, and thermal conductivity calculation including wavelike and particlelike phonons.

Authors:

Install and run WPPT:

Download WPPT:

  • Please go to GitHub and download the package as you need.

Prerequisites for using WPPT

  • In the Linux system, you should have

          for NMA module: intel mpi compiler and fftw library

          for PWave module: Fortran GPU compiler pgfortran or nvfortran from nvhpc or NVIDIA HPC SDK

          for WPpt module: python with version higher than 3.3.

Compile WPPT

  • Modify the makefile and copy to src/ direction.

  • Type make. Three executables, NMA, PWave and WPpt will be generated in the src/ direction.

Run WPPT

  • To run each executable, one has to prepare some input files and a CONTROL.wppt input file.

  • The control and data input files will be explained in detail in next each section.

NMA

NMA module

Input files:​

CONTROL.WPPT In general block{}:

  • Ntotal= integer           

The number of steps in the MD simulation files. We recommend that the user converts the MD files to the binary format, as file reading can be much faster.

  • Natom= integer         

Number of atoms in the whole system which should be consistent with MD input.

  • Ncell=  integer           

Number of atoms in the primitive cell that you want to project. For instance, Ncell= 2 in the single-layer graphene or silicon system.

  • nKpoints= integer     

Number of Kpoints that want to project.

CONTROL.WPPT In NMA block{}:

  • cal_mode= S/T         

The choice of calculation mode in the Normal mode analysis, S:Spatial; T:Temporal. (for temporal and spatial)

  • Delta_time= floats     

The tilmestep of the MD simulation input. (for temporal)

  • NMA_omega= True   

To calculate and write the normal mode velocity after FFTW. Support both 'True' and 'False'. (for temporal)

  • SED= True                 

To calculate and write the spectral energy density (SED). Support both 'True' and 'False'. Only can works as NMA_omega= True. (for temporal)

  • DOS= True                 

To calculate and write the density of states (DOS). Support both 'True' and 'False'. Only can works as NMA_omega= True. (for temporal)

  • Nsample= integer     

Averaging number for the modal domain calculation. (for temporal)

periodicity.dat:

   Natom

   :

   Ni,x Ni,y Ni,z nj Mi

   :

  • Natom= integer               Number of atoms in the entire system, which should be consistent with the atoms specified in the CONTROL file.

  • Ni,x Ni,y Ni,z=  integers    Periodicity No. of i-th primitive cell along x/y/z direction that should be consistent with the lattice periodicity in the MD output files.

  • nj=  integer                     The j-th atom in the primitive cell that should be consistent with the atomic order in the Eigenvector.

  • Mifloat                         The mass of the i-th atom, in the unit of amu.

Eigenvector.dat:

  • The Eigenvector.dat can be obtained from some open-source codes, such as PHONOPY  and GULP

  • The Eigenvector.dat has two columns, the real part (1st) and the image part (2nd). The data will be listed by firstly change the atom-id (in the ongoing prejected primitive cell), then branches and finally wavevectors.

Kpoints.dat:

The Kpoints.dat can also be obtained from some open-source codes, such as PHONOPY  and GULP

   nKpoints

   :

   Ki,x Ki,y Ki,z Wi

   :

  • nKpoints= integer      Number of Kpoints in k-mesh that should be consistent with the nKpoints in CONTROL file.

  • Ki,x Ki,y Ki,z=  floats    Wavevector of i-th kpoints along kx/ky/kz direction that should be consistent with the wavevector order in the Eigenvector.dat.

  • Wi=  floats                  Weight of the i-th points.

vx/vy/bz.bin:

   :

   vt,i,x

   :

  • vt,i,x=  floats  Atomic velocity of i-th atom along x direction at time t.

  • The should be in the binary format and with fixed file name.

  • The v*.bin can be generated from any MD simulation packages (LAMMPS, GPUMD and ab-initio softares). 

Output files:​

NMAt_i_j.dat:

  • There will be a series of NMAt_i_j.dat files in NMAt direction. The number of i is determined by the number of wavevectors and j by the number of branches.

​   Title1

   Title2

   Title3

   :

   ti Vi_real Vi_imag

   :

​

  • Title1 introduces which content is shown.

  • Title2 introduces which wavevector and branch are calculated.

  • Title3 introduces the listed properties in each column.

  • ti is the evolution time of the i-th step.

  • Vi_real and Vi_imag are the real and imag parts of the i-th step normal mode velocity. 

NMAw_i_j.dat:​

  • There will be a series of NMAw_i_j.dat files in NMAw direction. The number of i is determined by the number of wavevectors and j by the number of branches.

​   Title1

   Title2

   Title3

   :

  omegai Ei

   :

​

  • Title1 introduces which content is shown.

  • Title2 introduces which wavevector and branch are calculated.

  • Title3 introduces the listed properties in each column.

  • omegai is the i-th frequency after FFTW.

  • Ei is the spectral energy density at i-th frequency. 

SED_k_w.dat:​

  • There will be a SED_k_w.dat file, i.e. spectral energy density, appearing in SED direction.

   Title1 

   :

   Ki,x Ki,y Ki,z omegaj Ej

   :

​​

  • Title1 introduces the listed properties in each column.

  • The spectral energy density at Ki,x Ki,y Ki,z wavevector and j-th frequency. 

DOS_w.dat:​

  • There will be a DOS_w.dat file appearing in DOS direction.

   Title1 

   :

 omegai DOSi

   :

​​

  • Title1 introduces the listed properties in each column.

  • The density of state (DOS) at i-th frequency, i.e. omegai

Spatial_i_j.dat :​

  • There will be a series of Spatial_i_j.dat files in Spatial direction. The number of i is determined by the number of wavevectors and j by the number of branches.

   Title1 

   Title2 

   Title3 

    write(1,'(A11,I4,A7,I5,I8)') 'wavevector:',m,'Branch:',n,num

    write(1,*) 'ai real imag'

   :

ni,t Vi_real,t Vi_imag,t

   :

​​

   :

ni,t+1 Vi_real,t+1 Vi_imag,t+1

   :

  • Title1 introduces the content of the file.

  • Title2 introduces the corresponding number of wavevector and branch.

  • Title3 introduces the listed properties in each column.

  • ni is the i-th atom.

  • Vi_real and Vi_imag are the real and imag parts of the normal mode velocity for the i-th atom

  • t indicates the data at t-th time step. Note that each time block is separated by a space. 

Run NMA:​​

  • mpirun -np ncpu ./NMA

Notices:​

  • The generated NMAt_i_j.dat files are used to calculate the temporal coherence and phonon decay [1] in the next PWave module.

  • The NMAw_i_j.dat and SED_k_w.dat can also be used to calculate the conventional phonon lifetimes by a Lorentzian fitting [2].

  • The generated Spatial_i_j.dat files are used to calculate the spatial coherence [1] in the next PWave module.

PWave

PWave module

Input files:​

CONTROL.WPPT In PWave block{}

  • cal_mode= S/T         

The choice of calculation mode in the wavelet transform calculations, S:Spatial; T:Temporal. (for temporal and spatial)

  • Ndisplace= integer   

Number of interval steps to jump the evolution. The purpose is to reduce the calculation cost. 10 or 5 is suggested. (for temporal)

  • coh_up= float           

A float to determine the maximum coherence time/length in ps/Angstrom units. (for temporal and spatial)

  • coh_down= float       

A float to determine the minimum coherence time/length in ps/Angstrom units. (for temporal and spatial)

  • coh_number= integer     

Number of the values to sample the coherence range. (for temporal and spatial)

  • Size_WP= float               

The scaling size of phonon wavepacke, as a ratio to the coherence time/length. 2 is suggested. coh_up*2.0*Size_WP< length of simulation scale is a reasonable setting. (for temporal and spatial)

  • Nsample= 20                 

Averaging number for the auto-correlation calculation. (for temporal)

  • Omegafile= True           

If True, the frequency of wavelet transform reads from a file of frequency.dat. Otherwise (False), the frequency is obtained from FFTW of the inputted normal mode velocity. Support both 'True' and 'False'. (for temporal)

  • *CD_cw= False              

If True, the time- and coherence time-dependent, or the spatial- and coherence length-dependent phonon number are calculated and write to files T_C_D/time_tau_i_j.dat or Sp_C_D/spa_len_i_j.dat. False is suggested. (for temporal and spatial)

  • ph_decay= True.           

If True, the phonon decay is calculated from the coherence corrected auto-correlation. Support both 'True' and 'False'. True is suggested. (for temporal)

  • coh_decay= False         

If True, the phonon decay output at each coherence time. Support both 'True' and 'False'. False is suggested. (for temporal)

  • Dimension= integer       

The integer determines the dimension of spatial wavelet transform. (for spatial)

frequency.dat:​

   :

   di omegai,1 ... omegai,j ...

   :

​​

  • di defines the distance in reciprocal space from the first wavevector to the i-th wavevector.

  • omegai,j defines the frequency of j-th branches at i-th wavevector. The frequency.dat should be consistent with the Eigenvector.dat and Kpoints.dat.

NMAt_i_j.dat​​

  • NMAt_i_j.dat can be calculated from the NMA module and should be listed in the NMAt direction.

Spatial_i_j.dat​​

  • NMAt_i_j.dat can be calculated from the NMA module and should be listed in the Spatial direction.

Output files:​

  • These files are corresponding to the NMAt_i_j.dat files, in which the I is in the order of wavevectors and j in the order of branches.

coh_i_j.dat:​

​   Title1

   :

  tau_c/l_ci pdi

   :

​

  • Title1 introduces the listed properties in each column.

  • tau_c/l_ci is the i-th coherence time or coherence length.

  • pdi is the corresponding phonon number density.

  • The coh_i_j.dat will be listed in the TauC_Dens direction for temporal calculation, while in LenC_Dens direction for spatial calculation.

time_tau_i_j.dat:​​

​   Title1

   :

  t_evoi tau_cj pni,j

   :

​

  • Title1 introduces the listed properties in each column.

  • t_evoi is the i-th evolution time.

  • tau_cj is the j-th coherence time.

  • pni,j is the corresponding phonon number density.

  • The time_tau_i_j.dat will be listed in the T_C_D direction. 

decay_coh_i_j.dat:​​

​   Title1

   :

   tau_ci

   :

   t_cori,j dyi,j

   :

​

  • Title1 introduces the listed properties in each column.

  • tau_ci is the coherence time of the i-th auto-correlation.

  • t_cori,j is the j-th step correlation time of the i-th coherence time.

  • dyi,j is the j-th step decay of the i-th coherence time.

  • The decay_coh_i_j.dat will be listed in the Decay_coh direction. 

dcay_i_j.dat:​

​​   Title1

   Title2

   Title3

   :

   t_cori dyi

   :

​

  • Title1 introduces which content is shown.

  • Title2 introduces which wavevector and branch are calculated.

  • Title3 introduces the listed properties in each column.

  • t_cori is the i-th step correlation time.

  • dyi is the i-th step decay.

  • The decay_i_j.dat will be listed in the Decay direction. 

spa_len_i_j.dat:​​

​   Title1

   :

  xi yi zi l_cj pni,j

   :

​

  • Title1 introduces the listed properties in each column.

  • xi yi zi is the position of the i-th atom.

  • l_cj is the j-th coherence length.

  • pni,j is the corresponding phonon number density.

  • The spa_len_i_j.dat will be listed in the Sp_C_D direction. 

Run PWave:​

  • ./PWave  (running on GPU device)

Notices:​

  • The NMA (CPU version) and PWave (GPU version) may be executed on different clusters, where data transfer between clusters will be a problem.

  • PWave could comsume huge disk storage when setting *CD_cw= True  and coh_decay= True

Kappa

WPpt module

Input files:​

CONTROL.WPPT In PWave block{}:

  • cal_mode= integer           

A integer to determine the calculation mode of WPpt.

# 1: only times (lifetime and coherence time) calculations

# 2: times+kappa calculations

# 3: kappa calculations

  • times_mode= integer       

A integer to determine the calculation mode of times.

# 1: conventional lifetimes from SED and coherence times from coherence distribution function (wavelet transform)

# 2: lifetimes and coherence times from phonon decay

# 3: conventional lifetimes (SED) and coherence times from from spectroscopy or spectral energy

  • Nsample= integer           

Number of samples.

  • tau_p_file= filename         

A file contains the modal lifetimes with the same format of tau_P_*.dat generated by WPpt. Only need to set when cal_mode=3.

  • tau_c_file= filename         

A file contains the modal lifetimes with the same format of tau_C_*.dat generated by WPpt. Only need to set when cal_mode=3.

  • Volume= float                 

A float defines the volume of the studied system in Angstrom**3 units.

  • Temp_range= float or float1 float2 float3     

It can be a single float or three floats. Single float indicates calculations will be done at a single temperature. Three floats mean calculations will be done at the temperature range of [float1,float2,float3]. 

  • isotope= False              

If True, the phonon-isotope scattering is included. The isotope scattering rate will be read from BTE.w_isotopic.

  • Length= False or True float    

If True, the length-dependent thermal conductivity is calculated at float temperature.

Kpoints.dat:​

​   nKpoints

   :

  k_i,x k_i,y k_i,z weight_i

   :

​

  • nKpoints is the number of kpoints.

  • k_i,x k_i,y k_i,z is the reduced position of i-th point at K-space.

  • weight_i is the weight of this point in the irreducible space.

Groupvelocity.dat:​

​   :

  v_i_j,x v_i_j,y v_i_j,z

   :

​

  • v_i_j,x v_i_j,y v_i_j,z is the group velocity along x,y,z directions of the mode i-j​ in the units of Angstrom*THz (branch index changes first, and then wavevector index). 

BTE.w_isotopic:​

​This file is calculated from ShengBTE software.

NMAw_i_j.dat; coh_density_i_j.dat; decay_i_j.dat

These files are calculated from the PWave module. 

Notices:​

  • These files should be listed in the directions of NMAw-k, Coh_Dens-k, Decay-k, respectively. The k denotes the k-th samples, and the number is defined by Nsample= integer.

Output files:​

tau_P*.dat:​

​   Title1

   :

  omega_i_j tau_P_i_j

   :

​

  • Title1 introduces the listed properties in each column.

  • omega_i_j is the frequency of mode i_j in the units of THz.

  • tau_P_i_j is the particle-like lifetime of mode i_j (branch index changes first, and then wavevector index).

       * will append the create time of this file. 

tau_C*.dat:​

​   Title1

   :

  omega_i_j tau_P_i_j

   :

​

  • Title1 introduces the listed properties in each column.

  • omega_i_j is the frequency of mode i_j in the units of THz.

  • tau_C_i_j is the wave-like lifetime of mode i_j (branch index changes first, and then wavevector index). 

​      * will append the create time of this file. 

mode_kappa*K.dat:​

​   Title1

   :

  omega_i_j  p-k_clas  p-k_quan  w-k_clas  w-k_quan

   :

​

  • Title1 introduces the listed properties in each column.

  • omega_i_j is the frequency of mode i_j in the units of THz.

  • p-k_clas is the particle-like thermal conductivity with classical heat capacity of mode i_j.

  • p-k_quan is the particle-like thermal conductivity with quantum heat capacity of mode i_j.

  • w-k_clas is the thermal conductivity including phonon coherence (wave-like) and with classical heat capacity of mode i_j.

  •  w-k_quan is the thermal conductivity including phonon coherence (wave-like) and with quantum heat capacity of mode i_j (branch index changes first, and then wavevector index). The units of thermal conductivity is W/mK.

​      * will append the temperature information of the calculated thermal conductivity. 

modal_kappa*K.dat; accum_kappa*K.dat:​

​   Title1

   :

  omega p-k_clas  p-k_quan  w-k_clas  w-k_quan

   :

​

  • Title1 introduces the listed properties in each column.

  • omega is the frequency of mode i_j in the units of THz.

  • p-k_clas is the particle-like thermal conductivity with classical heat capacity of mode i_j.

  • p-k_quan is the particle-like thermal conductivity with quantum heat capacity of mode i_j.

  • w-k_clas is the thermal conductivity including phonon coherence (wave-like) and with classical heat capacity of mode i_j.

  •  w-k_quan is the thermal conductivity including phonon coherence (wave-like) and with quantum heat capacity of mode i_j (branch index changes first, and then wavevector index). The units of thermal conductivity is W/mK.

​      * will append the temperature information of the calculated thermal conductivity. 

MFP_kappa*K.dat:​

​   Title1

   :

  mfp p-k_clas  p-k_quan  w-k_clas  w-k_quan

   :

​

  • Title1 introduces the listed properties in each column.

  • mfp is the mean free path of phonon mode i_j in the units of Angstrom.

  • p-k_clas is the particle-like thermal conductivity with classical heat capacity of mode i_j.

  • p-k_quan is the particle-like thermal conductivity with quantum heat capacity of mode i_j.

  • w-k_clas is the thermal conductivity including phonon coherence (wave-like) and with classical heat capacity of mode i_j.

  •  w-k_quan is the thermal conductivity including phonon coherence (wave-like) and with quantum heat capacity of mode i_j (branch index changes first, and then wavevector index). The units of thermal conductivity is W/mK.

​      * will append the temperature information of the calculated thermal conductivity. 

Length_kappa*K.dat:​

​   Title1

   :

  L p-k_clas  p-k_quan  w-k_clas  w-k_quan

   :

​

  • Title1 introduces the listed properties in each column.

  • L is the length of sample in the units of Angstrom.

  • p-k_clas is the particle-like thermal conductivity with classical heat capacity.

  • p-k_quan is the particle-like thermal conductivity with quantum heat capacity.

  • w-k_clas is the thermal conductivity including phonon coherence (wave-like) and with classical heat capacity.

  •  w-k_quan is the thermal conductivity including phonon coherence (wave-like) and with quantum heat capacity. The units of thermal conductivity is W/mK.

​      * will append the temperature information of the calculated thermal conductivity. 

Run WPpt:​

  • python WPpt.py

Notices:​

  • The python should install the numpy and scipy modules.

  • The calculated lifetimes and coherence times should be double-checked to avoid any unphysical values. 

About us

About us

Our group engaged in studying the nanoscale thermal transport through atomistic simulation approaches and theories.

Prof. Zhongwei Zhang

Assistant Professor

Center for Phononics and Thermal Energy Science

Tongji University

Google scholar

Personal Website

Prof. Sebastian Volz

CNRS, University of Tokyo

LIMMS director

Google scholar

Acknowledgement:

- This work is supported by the National Natural Science Foundation of China (Grant No. 12205220); Shanghai Pujiang Program (Grant No. 22PJ1413700); Fundamental Research Funds for the Central Universities (Grant No. 22120220556).

Reference

[1] Z. Zhang, Y. Guo, M. Bescond, J. Chen, M. Nomura, and S. Volz, Generalized Decay Law for Particlelike and Wavelike Thermal Phonons, Phys. Rev. B 103, 184307 (2021).
[2] J. M. Larkin, J. E. Turney, A. D. Massicotte, C. H. Amon, and A. J. H. McGaughey, Comparison and Evaluation of Spectral Energy Methods for Predicting Phonon Properties, J. Comput. Theor. Nanosci. 11, 249 (2014).

[3] Z. Zhang#, Y. Guo, M. Bescond, J. Chen, M. Nomura, and S. Volz, Heat conduction theory including phonon coherence, Phys. Rev. Lett. 128, 015901 (2022).

[4] Z. Zhang#, Y. Guo, M. Bescond, J. Chen, M. Nomura, S. Volz, How coherence is governing diffuson heat transfer in amorphous solids. npj Compu. Mater. 8, 96 (2022).

bottom of page