Third order force constants with external thermal calculators #364
-
I am trying to convert the third-order force constants with other external thermal calculators, like ShengBTE and Phonopy, as the direct solution for the phonon Boltzmann transport equation is not included in SSCHA. I followed the instructions on GitHub (https://github.com/orgs/SSCHAcode/discussions/104) and successfully obtained the force constants in ShengBTE form. However, there are large differences in the lattice thermal conductivity (RTA level) from SSCHA, ShengBTE, and phono3py. I tested on the silicon example. The RTA thermal conductivity for silicon at 300 K from SSCHA, ShengBTE, and phono3py are 251.32 W/mK, 1.375, and 10.289 W/mK, respectively. I think there is something wrong with the unit of the third-order force constants. I paste the Python code to calculate the second- and third-order force constants in the following. import cellconstructor.ForceTensor def get_starting_dynamical_matrices(structure_filename, potential, supercell): temperature = 300.0 pot = Potential('IP Tersoff', param_filename='./ip.parms.Tersoff.xml') ensemble = sscha.Ensemble.Ensemble(dyn, T0 = temperature, supercell=dyn.GetSupercell()) minimizer.max_ka = 4000 relax = sscha.Relax.SSCHA(minimizer,ase_calculator=pot, N_configs=nconf, max_pop = max_pop, save_ensemble=True) new_ensemble = sscha.Ensemble.Ensemble(relax.minim.dyn, T0=temperature, supercell=relax.minim.dyn.GetSupercell()) new_minimizer = sscha.SchaMinimizer.SSCHA_Minimizer(new_ensemble) new_ensemble.update_weights(new_minimizer.dyn, temperature) dyn_hessian, d3_tensor = new_ensemble.get_free_energy_hessian(include_v4=False, get_full_hessian=True, verbose = True, return_d3 = True) I use this block to convert the third-order force constantstensor3 = cellconstructor.ForceTensor.Tensor3(new_minimizer.dyn.structure,new_minimizer.dyn.structure.generate_supercell(supercell),supercell) I believe the unit for the third-order force constants from SCCHA is RY/BOHR³, while ShengBTE uses eV/ų. I am unsure about the cause of the final discrepancy in thermal conductivities. If anyone has encountered a similar issue, could you please share your experience with converting third-order force constants for use in other thermal conductivity calculators? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
Hi, there are functions in the Methods class that translate SSCHA force constants to PHONOPY/PHONO3PY ones: tensor2_to_phonopy_fc2(SSCHA_tensor, phonon) and tensor3_to_phonopy_fc3(SSCHA_tensor, phonon). You can try them with phonopy (SSCHA.Phonons is dyn and d3 is 3rd order tensor which depending on how you save it might have a factor of two):
|
Beta Was this translation helpful? Give feedback.
Hi, there are functions in the Methods class that translate SSCHA force constants to PHONOPY/PHONO3PY ones: tensor2_to_phonopy_fc2(SSCHA_tensor, phonon) and tensor3_to_phonopy_fc3(SSCHA_tensor, phonon). You can try them with phonopy (SSCHA.Phonons is dyn and d3 is 3rd order tensor which depending on how you save it might have a factor of two):