phono3py 3.0.2__tar.gz → 3.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. {phono3py-3.0.2/phono3py.egg-info → phono3py-3.0.4}/PKG-INFO +2 -2
  2. phono3py-3.0.4/__nanoversion__.txt +1 -0
  3. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/api_phono3py.py +201 -76
  4. phono3py-3.0.4/phono3py/cui/create_force_sets.py +396 -0
  5. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/create_supercells.py +2 -3
  6. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/load.py +12 -5
  7. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/phono3py_argparse.py +8 -0
  8. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/phono3py_script.py +25 -267
  9. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/interface/phono3py_yaml.py +51 -42
  10. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/version.py +1 -1
  11. {phono3py-3.0.2 → phono3py-3.0.4/phono3py.egg-info}/PKG-INFO +2 -2
  12. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py.egg-info/SOURCES.txt +5 -0
  13. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py.egg-info/requires.txt +1 -1
  14. {phono3py-3.0.2 → phono3py-3.0.4}/setup.py +1 -1
  15. phono3py-3.0.4/test/Si-111-222-fd.tar.xz +0 -0
  16. phono3py-3.0.4/test/Si-111-222-rd.tar.xz +0 -0
  17. phono3py-3.0.4/test/api/test_api_phono3py.py +168 -0
  18. {phono3py-3.0.2 → phono3py-3.0.4}/test/conftest.py +88 -0
  19. phono3py-3.0.4/test/phono3py_params_Si-111-222-fd.yaml.xz +0 -0
  20. phono3py-3.0.4/test/phono3py_params_Si-111-222-rd.yaml.xz +0 -0
  21. phono3py-3.0.2/__nanoversion__.txt +0 -1
  22. phono3py-3.0.2/test/api/test_api_phono3py.py +0 -42
  23. {phono3py-3.0.2 → phono3py-3.0.4}/LICENSE +0 -0
  24. {phono3py-3.0.2 → phono3py-3.0.4}/MANIFEST.in +0 -0
  25. {phono3py-3.0.2 → phono3py-3.0.4}/README.md +0 -0
  26. {phono3py-3.0.2 → phono3py-3.0.4}/c/_phono3py.c +0 -0
  27. {phono3py-3.0.2 → phono3py-3.0.4}/c/_phononcalc.c +0 -0
  28. {phono3py-3.0.2 → phono3py-3.0.4}/c/bzgrid.c +0 -0
  29. {phono3py-3.0.2 → phono3py-3.0.4}/c/bzgrid.h +0 -0
  30. {phono3py-3.0.2 → phono3py-3.0.4}/c/collision_matrix.c +0 -0
  31. {phono3py-3.0.2 → phono3py-3.0.4}/c/collision_matrix.h +0 -0
  32. {phono3py-3.0.2 → phono3py-3.0.4}/c/dynmat.c +0 -0
  33. {phono3py-3.0.2 → phono3py-3.0.4}/c/dynmat.h +0 -0
  34. {phono3py-3.0.2 → phono3py-3.0.4}/c/fc3.c +0 -0
  35. {phono3py-3.0.2 → phono3py-3.0.4}/c/fc3.h +0 -0
  36. {phono3py-3.0.2 → phono3py-3.0.4}/c/grgrid.c +0 -0
  37. {phono3py-3.0.2 → phono3py-3.0.4}/c/grgrid.h +0 -0
  38. {phono3py-3.0.2 → phono3py-3.0.4}/c/gridsys.c +0 -0
  39. {phono3py-3.0.2 → phono3py-3.0.4}/c/gridsys.h +0 -0
  40. {phono3py-3.0.2 → phono3py-3.0.4}/c/imag_self_energy_with_g.c +0 -0
  41. {phono3py-3.0.2 → phono3py-3.0.4}/c/imag_self_energy_with_g.h +0 -0
  42. {phono3py-3.0.2 → phono3py-3.0.4}/c/interaction.c +0 -0
  43. {phono3py-3.0.2 → phono3py-3.0.4}/c/interaction.h +0 -0
  44. {phono3py-3.0.2 → phono3py-3.0.4}/c/isotope.c +0 -0
  45. {phono3py-3.0.2 → phono3py-3.0.4}/c/isotope.h +0 -0
  46. {phono3py-3.0.2 → phono3py-3.0.4}/c/lagrid.c +0 -0
  47. {phono3py-3.0.2 → phono3py-3.0.4}/c/lagrid.h +0 -0
  48. {phono3py-3.0.2 → phono3py-3.0.4}/c/lapack_wrapper.c +0 -0
  49. {phono3py-3.0.2 → phono3py-3.0.4}/c/lapack_wrapper.h +0 -0
  50. {phono3py-3.0.2 → phono3py-3.0.4}/c/niggli.c +0 -0
  51. {phono3py-3.0.2 → phono3py-3.0.4}/c/niggli.h +0 -0
  52. {phono3py-3.0.2 → phono3py-3.0.4}/c/phono3py.c +0 -0
  53. {phono3py-3.0.2 → phono3py-3.0.4}/c/phono3py.h +0 -0
  54. {phono3py-3.0.2 → phono3py-3.0.4}/c/phonoc_array.h +0 -0
  55. {phono3py-3.0.2 → phono3py-3.0.4}/c/phonoc_const.h +0 -0
  56. {phono3py-3.0.2 → phono3py-3.0.4}/c/phonoc_utils.c +0 -0
  57. {phono3py-3.0.2 → phono3py-3.0.4}/c/phonoc_utils.h +0 -0
  58. {phono3py-3.0.2 → phono3py-3.0.4}/c/phonon.c +0 -0
  59. {phono3py-3.0.2 → phono3py-3.0.4}/c/phonon.h +0 -0
  60. {phono3py-3.0.2 → phono3py-3.0.4}/c/phononcalc.c +0 -0
  61. {phono3py-3.0.2 → phono3py-3.0.4}/c/phononcalc.h +0 -0
  62. {phono3py-3.0.2 → phono3py-3.0.4}/c/pp_collision.c +0 -0
  63. {phono3py-3.0.2 → phono3py-3.0.4}/c/pp_collision.h +0 -0
  64. {phono3py-3.0.2 → phono3py-3.0.4}/c/real_self_energy.c +0 -0
  65. {phono3py-3.0.2 → phono3py-3.0.4}/c/real_self_energy.h +0 -0
  66. {phono3py-3.0.2 → phono3py-3.0.4}/c/real_to_reciprocal.c +0 -0
  67. {phono3py-3.0.2 → phono3py-3.0.4}/c/real_to_reciprocal.h +0 -0
  68. {phono3py-3.0.2 → phono3py-3.0.4}/c/reciprocal_to_normal.c +0 -0
  69. {phono3py-3.0.2 → phono3py-3.0.4}/c/reciprocal_to_normal.h +0 -0
  70. {phono3py-3.0.2 → phono3py-3.0.4}/c/snf3x3.c +0 -0
  71. {phono3py-3.0.2 → phono3py-3.0.4}/c/snf3x3.h +0 -0
  72. {phono3py-3.0.2 → phono3py-3.0.4}/c/tetrahedron_method.c +0 -0
  73. {phono3py-3.0.2 → phono3py-3.0.4}/c/tetrahedron_method.h +0 -0
  74. {phono3py-3.0.2 → phono3py-3.0.4}/c/triplet.c +0 -0
  75. {phono3py-3.0.2 → phono3py-3.0.4}/c/triplet.h +0 -0
  76. {phono3py-3.0.2 → phono3py-3.0.4}/c/triplet_grid.c +0 -0
  77. {phono3py-3.0.2 → phono3py-3.0.4}/c/triplet_grid.h +0 -0
  78. {phono3py-3.0.2 → phono3py-3.0.4}/c/triplet_iw.c +0 -0
  79. {phono3py-3.0.2 → phono3py-3.0.4}/c/triplet_iw.h +0 -0
  80. {phono3py-3.0.2 → phono3py-3.0.4}/example/AlN-LDA/BORN +0 -0
  81. {phono3py-3.0.2 → phono3py-3.0.4}/example/AlN-LDA/FORCES_FC2 +0 -0
  82. {phono3py-3.0.2 → phono3py-3.0.4}/example/AlN-LDA/FORCES_FC3.lzma +0 -0
  83. {phono3py-3.0.2 → phono3py-3.0.4}/example/AlN-LDA/POSCAR-unitcell +0 -0
  84. {phono3py-3.0.2 → phono3py-3.0.4}/example/AlN-LDA/README.md +0 -0
  85. {phono3py-3.0.2 → phono3py-3.0.4}/example/AlN-LDA/phono3py_disp.yaml +0 -0
  86. {phono3py-3.0.2 → phono3py-3.0.4}/example/AlN-LDA/phono3py_disp_dimfc2.yaml +0 -0
  87. {phono3py-3.0.2 → phono3py-3.0.4}/example/NaCl-alm/README.md +0 -0
  88. {phono3py-3.0.2 → phono3py-3.0.4}/example/NaCl-alm/phono3py_params_NaCl222.yaml.xz +0 -0
  89. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-CRYSTAL/FORCES_FC2 +0 -0
  90. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-CRYSTAL/FORCES_FC3 +0 -0
  91. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-CRYSTAL/README +0 -0
  92. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-CRYSTAL/TEMPLATE +0 -0
  93. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-CRYSTAL/TEMPLATE3 +0 -0
  94. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-CRYSTAL/crystal.o +0 -0
  95. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-CRYSTAL/outputs.tar.gz +0 -0
  96. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-LDA/FORCES_FC3 +0 -0
  97. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-LDA/POSCAR-unitcell +0 -0
  98. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-LDA/README.md +0 -0
  99. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-LDA/phono3py_disp.yaml +0 -0
  100. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-LDA/vasprun_xmls.tar.lzma +0 -0
  101. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBE/FORCES_FC3 +0 -0
  102. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBE/POSCAR-unitcell +0 -0
  103. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBE/README.md +0 -0
  104. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBE/phono3py_disp.yaml +0 -0
  105. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBE/vasprun_xmls.tar.lzma +0 -0
  106. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/FORCES_FC3 +0 -0
  107. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/POSCAR-unitcell +0 -0
  108. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/README.md +0 -0
  109. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/Si-band-DOS.png +0 -0
  110. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/Si-kaccum.png +0 -0
  111. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/Si.py +0 -0
  112. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/phono3py_disp.yaml +0 -0
  113. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/phono3py_disp_dimfc2.yaml +0 -0
  114. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/vasprun_xml_fc2/disp-fc2-00001/INCAR +0 -0
  115. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/vasprun_xml_fc2/disp-fc2-00001/POSCAR +0 -0
  116. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/vasprun_xml_fc2/disp-fc2-00001/vasprun.xml +0 -0
  117. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-PBEsol/vasprun_xmls.tar.lzma +0 -0
  118. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-QE/FORCES_FC3 +0 -0
  119. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-QE/README.md +0 -0
  120. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-QE/Si.in +0 -0
  121. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-QE/phono3py_disp.yaml +0 -0
  122. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-QE/supercell_out.tar.lzma +0 -0
  123. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-TURBOMOLE/FORCES_FC2 +0 -0
  124. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-TURBOMOLE/FORCES_FC3 +0 -0
  125. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-TURBOMOLE/README +0 -0
  126. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-TURBOMOLE/control +0 -0
  127. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-TURBOMOLE/coord +0 -0
  128. {phono3py-3.0.2 → phono3py-3.0.4}/example/Si-TURBOMOLE/outputs.tar.gz +0 -0
  129. {phono3py-3.0.2 → phono3py-3.0.4}/example/Wigner_La2Zr2O7/BORN +0 -0
  130. {phono3py-3.0.2 → phono3py-3.0.4}/example/Wigner_La2Zr2O7/POSCAR +0 -0
  131. {phono3py-3.0.2 → phono3py-3.0.4}/example/Wigner_La2Zr2O7/command.sh +0 -0
  132. {phono3py-3.0.2 → phono3py-3.0.4}/example/Wigner_La2Zr2O7/fc2.hdf5 +0 -0
  133. {phono3py-3.0.2 → phono3py-3.0.4}/example/Wigner_La2Zr2O7/kappa-m191919.hdf5 +0 -0
  134. {phono3py-3.0.2 → phono3py-3.0.4}/example/Wigner_La2Zr2O7/tc_La2Zr2O7.out.xz +0 -0
  135. {phono3py-3.0.2 → phono3py-3.0.4}/example/zb-ZnTe-PBEsol/README.md +0 -0
  136. {phono3py-3.0.2 → phono3py-3.0.4}/example/zb-ZnTe-PBEsol/launch_phono3py_ZnTe_PBEsol_222.py +0 -0
  137. {phono3py-3.0.2 → phono3py-3.0.4}/example/zb-ZnTe-PBEsol/phono3py_params_ZnTe.yaml.xz +0 -0
  138. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/__init__.py +0 -0
  139. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/api_isotope.py +0 -0
  140. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/api_jointdos.py +0 -0
  141. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/conductivity/__init__.py +0 -0
  142. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/conductivity/base.py +0 -0
  143. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/conductivity/direct_solution.py +0 -0
  144. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/conductivity/kubo.py +0 -0
  145. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/conductivity/rta.py +0 -0
  146. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/conductivity/utils.py +0 -0
  147. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/conductivity/wigner.py +0 -0
  148. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/__init__.py +0 -0
  149. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/create_force_constants.py +0 -0
  150. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/kaccum_script.py +0 -0
  151. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/settings.py +0 -0
  152. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/show_log.py +0 -0
  153. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/cui/triplets_info.py +0 -0
  154. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/file_IO.py +0 -0
  155. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/interface/__init__.py +0 -0
  156. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/interface/alm.py +0 -0
  157. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/interface/calculator.py +0 -0
  158. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/interface/fc_calculator.py +0 -0
  159. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/other/__init__.py +0 -0
  160. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/other/isotope.py +0 -0
  161. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/other/kaccum.py +0 -0
  162. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/other/tetrahedron_method.py +0 -0
  163. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon/__init__.py +0 -0
  164. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon/func.py +0 -0
  165. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon/grid.py +0 -0
  166. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon/group_velocity_matrix.py +0 -0
  167. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon/heat_capacity_matrix.py +0 -0
  168. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon/solver.py +0 -0
  169. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon/velocity_operator.py +0 -0
  170. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/__init__.py +0 -0
  171. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/collision_matrix.py +0 -0
  172. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/dataset.py +0 -0
  173. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/displacement_fc3.py +0 -0
  174. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/fc3.py +0 -0
  175. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/gruneisen.py +0 -0
  176. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/imag_self_energy.py +0 -0
  177. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/interaction.py +0 -0
  178. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/joint_dos.py +0 -0
  179. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/real_self_energy.py +0 -0
  180. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/real_to_reciprocal.py +0 -0
  181. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/reciprocal_to_normal.py +0 -0
  182. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/spectral_function.py +0 -0
  183. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/phonon3/triplets.py +0 -0
  184. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/sscha/__init__.py +0 -0
  185. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py/sscha/sscha.py +0 -0
  186. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py.egg-info/dependency_links.txt +0 -0
  187. {phono3py-3.0.2 → phono3py-3.0.4}/phono3py.egg-info/top_level.txt +0 -0
  188. {phono3py-3.0.2 → phono3py-3.0.4}/pyproject.toml +0 -0
  189. {phono3py-3.0.2 → phono3py-3.0.4}/scripts/phono3py +0 -0
  190. {phono3py-3.0.2 → phono3py-3.0.4}/scripts/phono3py-coleigplot +0 -0
  191. {phono3py-3.0.2 → phono3py-3.0.4}/scripts/phono3py-kaccum +0 -0
  192. {phono3py-3.0.2 → phono3py-3.0.4}/scripts/phono3py-kdeplot +0 -0
  193. {phono3py-3.0.2 → phono3py-3.0.4}/scripts/phono3py-load +0 -0
  194. {phono3py-3.0.2 → phono3py-3.0.4}/setup.cfg +0 -0
  195. {phono3py-3.0.2 → phono3py-3.0.4}/test/AgNO2_cell.yaml +0 -0
  196. {phono3py-3.0.2 → phono3py-3.0.4}/test/BORN_NaCl +0 -0
  197. {phono3py-3.0.2 → phono3py-3.0.4}/test/FORCES_FC3_si_pbesol +0 -0
  198. {phono3py-3.0.2 → phono3py-3.0.4}/test/FORCE_SETS_NaCl +0 -0
  199. {phono3py-3.0.2 → phono3py-3.0.4}/test/conductivity/__init__.py +0 -0
  200. {phono3py-3.0.2 → phono3py-3.0.4}/test/conductivity/test_kappa_LBTE.py +0 -0
  201. {phono3py-3.0.2 → phono3py-3.0.4}/test/conductivity/test_kappa_LBTE_Wigner.py +0 -0
  202. {phono3py-3.0.2 → phono3py-3.0.4}/test/conductivity/test_kappa_RTA.py +0 -0
  203. {phono3py-3.0.2 → phono3py-3.0.4}/test/conductivity/test_kappa_RTA_Wigner.py +0 -0
  204. {phono3py-3.0.2 → phono3py-3.0.4}/test/cui/phono3py_params-qe-Si222.yaml.xz +0 -0
  205. {phono3py-3.0.2 → phono3py-3.0.4}/test/cui/test_phono3py_load_script.py +0 -0
  206. {phono3py-3.0.2 → phono3py-3.0.4}/test/file_IO/test_file_IO.py +0 -0
  207. {phono3py-3.0.2 → phono3py-3.0.4}/test/interface/test_phono3py_yaml.py +0 -0
  208. {phono3py-3.0.2 → phono3py-3.0.4}/test/other/__init__.py +0 -0
  209. {phono3py-3.0.2 → phono3py-3.0.4}/test/other/test_isotope.py +0 -0
  210. {phono3py-3.0.2 → phono3py-3.0.4}/test/other/test_kaccum.py +0 -0
  211. {phono3py-3.0.2 → phono3py-3.0.4}/test/phono3py_params-Si111-rd.yaml.xz +0 -0
  212. {phono3py-3.0.2 → phono3py-3.0.4}/test/phono3py_params_AlN332.yaml.xz +0 -0
  213. {phono3py-3.0.2 → phono3py-3.0.4}/test/phono3py_params_NaCl111.yaml +0 -0
  214. {phono3py-3.0.2 → phono3py-3.0.4}/test/phono3py_params_NaCl222.yaml.xz +0 -0
  215. {phono3py-3.0.2 → phono3py-3.0.4}/test/phono3py_params_Si-111-222.yaml +0 -0
  216. {phono3py-3.0.2 → phono3py-3.0.4}/test/phono3py_params_Si111.yaml +0 -0
  217. {phono3py-3.0.2 → phono3py-3.0.4}/test/phono3py_si_pbesol.yaml +0 -0
  218. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon/__init__.py +0 -0
  219. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon/test_grid.py +0 -0
  220. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon/test_velocity_operator.py +0 -0
  221. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/__init__.py +0 -0
  222. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_displacements.py +0 -0
  223. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_fc3.py +0 -0
  224. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_imag_self_energy.py +0 -0
  225. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_interaction.py +0 -0
  226. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_joint_dos.py +0 -0
  227. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_real_self_energy.py +0 -0
  228. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_spectral_function.py +0 -0
  229. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonon3/test_triplets.py +0 -0
  230. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonopy_disp_NaCl.yaml +0 -0
  231. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonopy_params-Si111-iterha.yaml.gz +0 -0
  232. {phono3py-3.0.2 → phono3py-3.0.4}/test/phonopy_params_Si.yaml +0 -0
  233. {phono3py-3.0.2 → phono3py-3.0.4}/test/sscha/__init__.py +0 -0
  234. {phono3py-3.0.2 → phono3py-3.0.4}/test/sscha/test_sscha.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phono3py
3
- Version: 3.0.2
3
+ Version: 3.0.4
4
4
  Summary: This is the phono3py module.
5
5
  Home-page: http://phonopy.github.io/phono3py/
6
6
  Author: Atsushi Togo
@@ -14,4 +14,4 @@ Requires-Dist: PyYAML>=5.3
14
14
  Requires-Dist: matplotlib>=2.2.2
15
15
  Requires-Dist: h5py>=3.0
16
16
  Requires-Dist: spglib>=2.0
17
- Requires-Dist: phonopy<2.23,>=2.22
17
+ Requires-Dist: phonopy<2.24,>=2.23
@@ -0,0 +1 @@
1
+ 3.0.4
@@ -34,8 +34,9 @@
34
34
  # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35
35
  # POSSIBILITY OF SUCH DAMAGE.
36
36
 
37
+ import copy
37
38
  from collections.abc import Sequence
38
- from typing import Optional, Union
39
+ from typing import Literal, Optional, Union
39
40
 
40
41
  import numpy as np
41
42
  from phonopy.exception import ForceCalculatorRequiredError
@@ -582,6 +583,7 @@ class Phono3py:
582
583
  {'number': atom index of second displaced atom,
583
584
  'displacement': displacement in Cartesian coordinates},
584
585
  'forces': forces on atoms in supercell,
586
+ 'supercell_energy': energy of supercell,
585
587
  'pair_distance': distance between paired atoms,
586
588
  'included': with cutoff pair distance in displacement
587
589
  pair generation, this indicates if this
@@ -591,9 +593,11 @@ class Phono3py:
591
593
  ... ] }, ... ] }
592
594
  Type 2. All atomic displacements in each supercell:
593
595
  {'displacements': ndarray, dtype='double', order='C',
594
- shape=(supercells, atoms in supercell, 3)
596
+ shape=(supercells, atoms in supercell, 3),
595
597
  'forces': ndarray, dtype='double',, order='C',
596
- shape=(supercells, atoms in supercell, 3)}
598
+ shape=(supercells, atoms in supercell, 3),
599
+ 'supercell_energies': ndarray, dtype='double',
600
+ shape=(supercells,)}
597
601
  In type 2, displacements and forces can be given by numpy array
598
602
  with different shape but that can be reshaped to
599
603
  (supercells, natom, 3).
@@ -607,7 +611,20 @@ class Phono3py:
607
611
 
608
612
  @dataset.setter
609
613
  def dataset(self, dataset):
610
- self._dataset = dataset
614
+ if dataset is None:
615
+ self._dataset = None
616
+ elif "first_atoms" in dataset:
617
+ self._dataset = copy.deepcopy(dataset)
618
+ elif "displacements" in dataset:
619
+ self._dataset = {}
620
+ self.displacements = dataset["displacements"]
621
+ if "forces" in dataset:
622
+ self.forces = dataset["forces"]
623
+ if "supercell_energies" in dataset:
624
+ self.supercell_energies = dataset["supercell_energies"]
625
+ else:
626
+ raise RuntimeError("Data format of dataset is wrong.")
627
+
611
628
  self._supercells_with_displacements = None
612
629
  self._phonon_supercells_with_displacements = None
613
630
 
@@ -622,12 +639,15 @@ class Phono3py:
622
639
  'first_atoms': [
623
640
  {'number': atom index of first displaced atom,
624
641
  'displacement': displacement in Cartesian coordinates,
625
- 'forces': forces on atoms in supercell} ... ]}
642
+ 'forces': forces on atoms in supercell,
643
+ 'supercell_energy': energy of supercell}, ... ]}
626
644
  Type 2. All atomic displacements in each supercell:
627
645
  {'displacements': ndarray, dtype='double', order='C',
628
- shape=(supercells, atoms in supercell, 3)
646
+ shape=(supercells, atoms in supercell, 3),
629
647
  'forces': ndarray, dtype='double',, order='C',
630
- shape=(supercells, atoms in supercell, 3)}
648
+ shape=(supercells, atoms in supercell, 3),
649
+ 'supercell_energies': ndarray, dtype='double',
650
+ shape=(supercells,)}
631
651
  In type 2, displacements and forces can be given by numpy array
632
652
  with different shape but that can be reshaped to
633
653
  (supercells, natom, 3).
@@ -637,7 +657,21 @@ class Phono3py:
637
657
 
638
658
  @phonon_dataset.setter
639
659
  def phonon_dataset(self, dataset):
640
- self._phonon_dataset = dataset
660
+ if dataset is None:
661
+ self._phonon_dataset = None
662
+ elif "first_atoms" in dataset:
663
+ self._phonon_dataset = copy.deepcopy(dataset)
664
+ elif "displacements" in dataset:
665
+ self._phonon_dataset = {}
666
+ self.phonon_displacements = dataset["displacements"]
667
+ if "forces" in dataset:
668
+ self.phonon_forces = dataset["forces"]
669
+ if "supercell_energies" in dataset:
670
+ self.phonon_supercell_energies = dataset["supercell_energies"]
671
+ else:
672
+ raise RuntimeError("Data format of dataset is wrong.")
673
+
674
+ self._phonon_supercells_with_displacements = None
641
675
 
642
676
  @property
643
677
  def band_indices(self):
@@ -816,45 +850,32 @@ class Phono3py:
816
850
  be the same order of supercells_with_displacements.
817
851
 
818
852
  """
819
- dataset = self._dataset
820
- if "forces" in dataset:
821
- return dataset["forces"]
822
- elif "first_atoms" in dataset:
823
- num_scells = len(dataset["first_atoms"])
824
- for disp1 in dataset["first_atoms"]:
825
- num_scells += len(disp1["second_atoms"])
826
- forces = np.zeros(
827
- (num_scells, self._supercell.get_number_of_atoms(), 3),
828
- dtype="double",
829
- order="C",
830
- )
831
- i = 0
832
- for disp1 in dataset["first_atoms"]:
833
- forces[i] = disp1["forces"]
834
- i += 1
835
- for disp1 in dataset["first_atoms"]:
836
- for disp2 in disp1["second_atoms"]:
837
- forces[i] = disp2["forces"]
838
- i += 1
839
- return forces
840
- else:
841
- raise RuntimeError("displacement dataset has wrong format.")
853
+ return self._get_forces_energies(target="forces")
842
854
 
843
855
  @forces.setter
844
- def forces(self, forces_fc3):
845
- forces = np.array(forces_fc3, dtype="double", order="C")
846
- dataset = self._dataset
847
- if "first_atoms" in dataset:
848
- i = 0
849
- for disp1 in dataset["first_atoms"]:
850
- disp1["forces"] = forces[i]
851
- i += 1
852
- for disp1 in dataset["first_atoms"]:
853
- for disp2 in disp1["second_atoms"]:
854
- disp2["forces"] = forces[i]
855
- i += 1
856
- elif "displacements" in dataset or "forces" in dataset:
857
- dataset["forces"] = forces
856
+ def forces(self, values):
857
+ self._set_forces_energies(values, target="forces")
858
+
859
+ @property
860
+ def supercell_energies(self):
861
+ """Setter and getter of supercell energies in displacement dataset.
862
+
863
+ A set of supercell energies of displaced supercells. The order of
864
+ displaced supercells has to match with that in displacement dataset.
865
+ shape=(displaced supercells,)
866
+
867
+ getter : ndarray
868
+
869
+ setter : array_like
870
+ The order of supercells used for calculating supercell energies has
871
+ to be the same order of supercells_with_displacements.
872
+
873
+ """
874
+ return self._get_forces_energies(target="supercell_energies")
875
+
876
+ @supercell_energies.setter
877
+ def supercell_energies(self, values):
878
+ self._set_forces_energies(values, target="supercell_energies")
858
879
 
859
880
  @property
860
881
  def phonon_displacements(self):
@@ -922,7 +943,7 @@ class Phono3py:
922
943
 
923
944
  @property
924
945
  def phonon_forces(self):
925
- """Setter and getter of forces in displacement dataset for fc2.
946
+ """Setter and getter of forces in fc2 displacement dataset.
926
947
 
927
948
  A set of atomic forces in displaced supercells. The order of
928
949
  displaced supercells has to match with that in phonon displacement
@@ -936,39 +957,30 @@ class Phono3py:
936
957
  be the same order of phonon_supercells_with_displacements.
937
958
 
938
959
  """
939
- if self._phonon_dataset is None:
940
- raise RuntimeError("phonon_displacement_dataset does not exist.")
941
-
942
- dataset = self._phonon_dataset
943
- if "forces" in dataset:
944
- return dataset["forces"]
945
- elif "first_atoms" in dataset:
946
- num_scells = len(dataset["first_atoms"])
947
- forces = np.zeros(
948
- (num_scells, self._phonon_supercell.get_number_of_atoms(), 3),
949
- dtype="double",
950
- order="C",
951
- )
952
- for i, disp1 in enumerate(dataset["first_atoms"]):
953
- forces[i] = disp1["forces"]
954
- return forces
955
- else:
956
- raise RuntimeError("displacement dataset has wrong format.")
960
+ return self._get_phonon_forces_energies(target="forces")
957
961
 
958
962
  @phonon_forces.setter
959
- def phonon_forces(self, forces_fc2):
960
- if self._phonon_dataset is None:
961
- raise RuntimeError("phonon_displacement_dataset does not exist.")
963
+ def phonon_forces(self, values):
964
+ self._set_phonon_forces_energies(values, target="forces")
962
965
 
963
- forces = np.array(forces_fc2, dtype="double", order="C")
964
- dataset = self._phonon_dataset
965
- if "first_atoms" in dataset:
966
- i = 0
967
- for i, disp1 in enumerate(dataset["first_atoms"]):
968
- disp1["forces"] = forces[i]
969
- i += 1
970
- elif "displacements" in dataset or "forces" in dataset:
971
- dataset["forces"] = forces
966
+ @property
967
+ def phonon_supercell_energies(self):
968
+ """Setter and getter of supercell energies in fc2 displacement dataset.
969
+
970
+ shape=(displaced supercells,)
971
+
972
+ getter : ndarray
973
+
974
+ setter : array_like
975
+ The order of supercells used for calculating supercell energies has
976
+ to be the same order of phonon_supercells_with_displacements.
977
+
978
+ """
979
+ return self._get_phonon_forces_energies(target="supercell_energies")
980
+
981
+ @phonon_supercell_energies.setter
982
+ def phonon_supercell_energies(self, values):
983
+ self._set_phonon_forces_energies(values, target="supercell_energies")
972
984
 
973
985
  @property
974
986
  def phph_interaction(self):
@@ -2274,3 +2286,116 @@ class Phono3py:
2274
2286
  _fc_calculator_options = None
2275
2287
 
2276
2288
  return _fc_calculator, _fc_calculator_options
2289
+
2290
+ def _get_forces_energies(
2291
+ self, target: Literal["forces", "supercell_energies"]
2292
+ ) -> Optional[np.ndarray]:
2293
+ """Return fc3 forces and supercell energies.
2294
+
2295
+ Return None if tagert data is not found rather than raising exception.
2296
+
2297
+ """
2298
+ if target in self._dataset: # type-2
2299
+ return self._dataset[target]
2300
+ elif "first_atoms" in self._dataset: # type-1
2301
+ num_scells = len(self._dataset["first_atoms"])
2302
+ for disp1 in self._dataset["first_atoms"]:
2303
+ num_scells += len(disp1["second_atoms"])
2304
+ if target == "forces":
2305
+ values = np.zeros(
2306
+ (num_scells, len(self._supercell), 3),
2307
+ dtype="double",
2308
+ order="C",
2309
+ )
2310
+ type1_target = "forces"
2311
+ elif target == "supercell_energies":
2312
+ values = np.zeros(num_scells, dtype="double")
2313
+ type1_target = "supercell_energy"
2314
+ count = 0
2315
+ for disp1 in self._dataset["first_atoms"]:
2316
+ values[count] = disp1[type1_target]
2317
+ count += 1
2318
+ for disp1 in self._dataset["first_atoms"]:
2319
+ for disp2 in disp1["second_atoms"]:
2320
+ values[count] = disp2[type1_target]
2321
+ count += 1
2322
+ return values
2323
+ return None
2324
+
2325
+ def _set_forces_energies(
2326
+ self, values, target: Literal["forces", "supercell_energies"]
2327
+ ):
2328
+ if "first_atoms" in self._dataset: # type-1
2329
+ count = 0
2330
+ for disp1 in self._dataset["first_atoms"]:
2331
+ if target == "forces":
2332
+ disp1[target] = np.array(values[count], dtype="double", order="C")
2333
+ elif target == "supercell_energies":
2334
+ disp1["supercell_energy"] = float(values[count])
2335
+ count += 1
2336
+ for disp1 in self._dataset["first_atoms"]:
2337
+ for disp2 in disp1["second_atoms"]:
2338
+ if target == "forces":
2339
+ disp2[target] = np.array(
2340
+ values[count], dtype="double", order="C"
2341
+ )
2342
+ elif target == "supercell_energies":
2343
+ disp2["supercell_energy"] = float(values[count])
2344
+ count += 1
2345
+ elif "displacements" in self._dataset or "forces" in self._dataset: # type-2
2346
+ self._dataset[target] = np.array(values, dtype="double", order="C")
2347
+ else:
2348
+ raise RuntimeError("Set of FC3 displacements is not available.")
2349
+
2350
+ def _get_phonon_forces_energies(
2351
+ self, target: Literal["forces", "supercell_energies"]
2352
+ ) -> Optional[np.ndarray]:
2353
+ """Return fc2 forces and supercell energies.
2354
+
2355
+ Return None if tagert data is not found rather than raising exception.
2356
+
2357
+ """
2358
+ if self._phonon_dataset is None:
2359
+ raise RuntimeError("Dataset for fc2does not exist.")
2360
+
2361
+ if target in self._phonon_dataset: # type-2
2362
+ return self._phonon_dataset[target]
2363
+ elif "first_atoms" in self._phonon_dataset: # type-1
2364
+ values = []
2365
+ for disp in self._phonon_dataset["first_atoms"]:
2366
+ if target == "forces":
2367
+ if target in disp:
2368
+ values.append(disp[target])
2369
+ elif target == "supercell_energies":
2370
+ if "supercell_energy" in disp:
2371
+ values.append(disp["supercell_energy"])
2372
+ if values:
2373
+ return np.array(values, dtype="double", order="C")
2374
+ return None
2375
+
2376
+ def _set_phonon_forces_energies(
2377
+ self, values, target: Literal["forces", "supercell_energies"]
2378
+ ):
2379
+ if self._phonon_dataset is None:
2380
+ raise RuntimeError("Dataset for fc2 does not exist.")
2381
+
2382
+ if "first_atoms" in self._phonon_dataset:
2383
+ for disp, v in zip(self._phonon_dataset["first_atoms"], values):
2384
+ if target == "forces":
2385
+ disp[target] = np.array(v, dtype="double", order="C")
2386
+ elif target == "supercell_energies":
2387
+ disp["supercell_energy"] = float(v)
2388
+ elif "displacements" in self._phonon_dataset:
2389
+ _values = np.array(values, dtype="double", order="C")
2390
+ natom = len(self._phonon_supercell)
2391
+ ndisps = len(self._phonon_dataset["displacements"])
2392
+ if target == "forces" and (
2393
+ _values.ndim != 3 or _values.shape != (ndisps, natom, 3)
2394
+ ):
2395
+ raise RuntimeError(f"Array shape of input {target} is incorrect.")
2396
+ elif target == "supercell_energies":
2397
+ if _values.ndim != 1 or _values.shape != (ndisps,):
2398
+ raise RuntimeError(f"Array shape of input {target} is incorrect.")
2399
+ self._phonon_dataset[target] = _values
2400
+ else:
2401
+ raise RuntimeError("Set of FC2 displacements is not available.")