dftpy 2.0.2__tar.gz → 2.0.3__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 (239) hide show
  1. {dftpy-2.0.2/src/dftpy.egg-info → dftpy-2.0.3}/PKG-INFO +1 -1
  2. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_ase_md.py +0 -2
  3. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_ase_opt.py +0 -2
  4. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_ase_pmg_io.py +0 -1
  5. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/__init__.py +2 -2
  6. dftpy-2.0.3/src/dftpy/api/api4ase.py +58 -0
  7. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/constants.py +1 -4
  8. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/field.py +6 -1
  9. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/grid.py +2 -2
  10. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mpi/mp_mpi4py.py +1 -1
  11. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mpi/mpi.py +5 -0
  12. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/real_time_runner.py +1 -1
  13. {dftpy-2.0.2 → dftpy-2.0.3/src/dftpy.egg-info}/PKG-INFO +1 -1
  14. dftpy-2.0.2/src/dftpy/api/api4ase.py +0 -80
  15. {dftpy-2.0.2 → dftpy-2.0.3}/.gitattributes +0 -0
  16. {dftpy-2.0.2 → dftpy-2.0.3}/.github/workflows/publish.yml +0 -0
  17. {dftpy-2.0.2 → dftpy-2.0.3}/.gitignore +0 -0
  18. {dftpy-2.0.2 → dftpy-2.0.3}/.gitlab-ci.yml +0 -0
  19. {dftpy-2.0.2 → dftpy-2.0.3}/LICENSE.txt +0 -0
  20. {dftpy-2.0.2 → dftpy-2.0.3}/MANIFEST.in +0 -0
  21. {dftpy-2.0.2 → dftpy-2.0.3}/README.md +0 -0
  22. {dftpy-2.0.2 → dftpy-2.0.3}/doc/Makefile +0 -0
  23. {dftpy-2.0.2 → dftpy-2.0.3}/doc/gen_doc.py +0 -0
  24. {dftpy-2.0.2 → dftpy-2.0.3}/doc/make.bat +0 -0
  25. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/conf.py +0 -0
  26. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/contact.rst +0 -0
  27. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/faq.rst +0 -0
  28. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/index.rst +0 -0
  29. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/install.rst +0 -0
  30. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/ofdft.rst +0 -0
  31. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/releases.rst +0 -0
  32. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/static/custom.css +0 -0
  33. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/static/dftpy.ico +0 -0
  34. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/static/dftpy.jpg +0 -0
  35. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/static/dftpy.png +0 -0
  36. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/static/dftpy_new_bkg.png +0 -0
  37. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/templates/breadcrumbs.html +0 -0
  38. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/templates/footer.html +0 -0
  39. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/jupyter/density.png +0 -0
  40. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/jupyter/density_optimization.ipynb +0 -0
  41. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/jupyter/ions.png +0 -0
  42. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/jupyter/movie.gif +0 -0
  43. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/jupyter/td-ofdft-tutorial.ipynb +0 -0
  44. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/ofdft/ase_traj.py +0 -0
  45. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/ofdft/md.rst +0 -0
  46. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/ofdft/nvt.py +0 -0
  47. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/ofdft/optimize.rst +0 -0
  48. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/ofdft/relax.py +0 -0
  49. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/ofdft/relax.rst +0 -0
  50. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/tddft/optimize.ini +0 -0
  51. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/tddft/propagate.ini +0 -0
  52. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/tddft/propagate.rst +0 -0
  53. {dftpy-2.0.2 → dftpy-2.0.3}/doc/source/tutorials/tutorials.rst +0 -0
  54. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/Al_fde_rho.pp +0 -0
  55. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/Al_lda.oe01.recpot +0 -0
  56. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/As_lda.oe04.recpot +0 -0
  57. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/GaAs.cif +0 -0
  58. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/GaAs.vasp +0 -0
  59. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/GaAs.xyz +0 -0
  60. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/GaAs_random.vasp +0 -0
  61. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/GaAs_random.xsf +0 -0
  62. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/Ga_lda.oe04.recpot +0 -0
  63. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/Mg8.vasp +0 -0
  64. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/Mg_OEPP_PZ.UPF +0 -0
  65. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/Mg_cluster.vasp +0 -0
  66. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/Mg_lda.oe01.recpot +0 -0
  67. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/al.gga.recpot +0 -0
  68. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/al.lda.lps +0 -0
  69. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/al.lda.psp +0 -0
  70. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/al.lda.recpot +0 -0
  71. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/al.lda.upf +0 -0
  72. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/al_random.in +0 -0
  73. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/al_random.xsf +0 -0
  74. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/as.lda.recpot +0 -0
  75. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/ase_opt.traj +0 -0
  76. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/cd.vasp +0 -0
  77. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/fcc.vasp +0 -0
  78. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/ga.lda.recpot +0 -0
  79. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/hd.vasp +0 -0
  80. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/in.lda.recpot +0 -0
  81. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/initial_atoms_md.traj +0 -0
  82. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/li.lda.recpot +0 -0
  83. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/md.traj +0 -0
  84. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/mg.lda.recpot +0 -0
  85. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/p.lda.recpot +0 -0
  86. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/sb.lda.recpot +0 -0
  87. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/si.gga.recpot +0 -0
  88. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/si.lda.recpot +0 -0
  89. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/ti.xsf +0 -0
  90. {dftpy-2.0.2 → dftpy-2.0.3}/examples/DATA/ti_pbe_v1.4.uspp.F.UPF +0 -0
  91. {dftpy-2.0.2 → dftpy-2.0.3}/examples/md/test_ase_npt.py +0 -0
  92. {dftpy-2.0.2 → dftpy-2.0.3}/examples/md/test_ase_nvt.py +0 -0
  93. {dftpy-2.0.2 → dftpy-2.0.3}/examples/md/test_ase_nvt_nh.py +0 -0
  94. {dftpy-2.0.2 → dftpy-2.0.3}/examples/md/traj2xyz.py +0 -0
  95. {dftpy-2.0.2 → dftpy-2.0.3}/examples/notebooks/density_optimization.ipynb +0 -0
  96. {dftpy-2.0.2 → dftpy-2.0.3}/examples/notebooks/td-ofdft-tutorial.ipynb +0 -0
  97. {dftpy-2.0.2 → dftpy-2.0.3}/examples/ofdft/config.ini +0 -0
  98. {dftpy-2.0.2 → dftpy-2.0.3}/examples/ofdft/isolate.ini +0 -0
  99. {dftpy-2.0.2 → dftpy-2.0.3}/examples/ofdft/optim.ini +0 -0
  100. {dftpy-2.0.2 → dftpy-2.0.3}/examples/ofdft/optim.py +0 -0
  101. {dftpy-2.0.2 → dftpy-2.0.3}/examples/ofdft/optim_pbe.ini +0 -0
  102. {dftpy-2.0.2 → dftpy-2.0.3}/examples/ofdft/simple.py +0 -0
  103. {dftpy-2.0.2 → dftpy-2.0.3}/examples/relax/test_ase_opt.py +0 -0
  104. {dftpy-2.0.2 → dftpy-2.0.3}/examples/td-ofdft/casida.ini +0 -0
  105. {dftpy-2.0.2 → dftpy-2.0.3}/examples/td-ofdft/optimize.ini +0 -0
  106. {dftpy-2.0.2 → dftpy-2.0.3}/examples/td-ofdft/propagate-restart.ini +0 -0
  107. {dftpy-2.0.2 → dftpy-2.0.3}/examples/td-ofdft/propagate.ini +0 -0
  108. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/__init__.py +0 -0
  109. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/common.py +0 -0
  110. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_density_opt.py +0 -0
  111. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_ewald.py +0 -0
  112. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_field.py +0 -0
  113. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_functional.py +0 -0
  114. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_functional_LibXC.py +0 -0
  115. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_grid.py +0 -0
  116. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_linear_solver.py +0 -0
  117. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_mpi_grid.py +0 -0
  118. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_pme.py +0 -0
  119. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_propagator.py +0 -0
  120. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_read_pp.py +0 -0
  121. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_rvv10.py +0 -0
  122. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_snpy.py +0 -0
  123. {dftpy-2.0.2 → dftpy-2.0.3}/examples/test/test_xc.py +0 -0
  124. {dftpy-2.0.2 → dftpy-2.0.3}/requirements.txt +0 -0
  125. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/convertPP.py +0 -0
  126. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/convert_den.py +0 -0
  127. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/convert_td.py +0 -0
  128. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/dftpy +0 -0
  129. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/invert +0 -0
  130. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/opt_layer_pseudo.py +0 -0
  131. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/quadrupole.py +0 -0
  132. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/rtc_runner +0 -0
  133. {dftpy-2.0.2 → dftpy-2.0.3}/scripts/test_layer_pseudo.py +0 -0
  134. {dftpy-2.0.2 → dftpy-2.0.3}/setup.cfg +0 -0
  135. {dftpy-2.0.2 → dftpy-2.0.3}/setup.py +0 -0
  136. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/__main__.py +0 -0
  137. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/api/__init__.py +0 -0
  138. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/api/dftd4.py +0 -0
  139. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/config/__init__.py +0 -0
  140. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/config/config.py +0 -0
  141. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/config/config_entry.py +0 -0
  142. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/config/configentries.json +0 -0
  143. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/cui/__init__.py +0 -0
  144. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/cui/main.py +0 -0
  145. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/density/__init__.py +0 -0
  146. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/density/density.py +0 -0
  147. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/ewald.py +0 -0
  148. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/fft.py +0 -0
  149. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/__init__.py +0 -0
  150. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/ase_io.py +0 -0
  151. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/chg.py +0 -0
  152. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/cube.py +0 -0
  153. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/den.py +0 -0
  154. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/io.py +0 -0
  155. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/npy.py +0 -0
  156. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/pmg_io.py +0 -0
  157. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/qepp.py +0 -0
  158. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/snpy.py +0 -0
  159. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/vasp.py +0 -0
  160. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/xsf.py +0 -0
  161. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/formats/xyz.py +0 -0
  162. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/__init__.py +0 -0
  163. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/abstract_functional.py +0 -0
  164. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/external_potential.py +0 -0
  165. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/functional_output.py +0 -0
  166. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/hartree.py +0 -0
  167. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/__init__.py +0 -0
  168. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/fp.py +0 -0
  169. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/gga.py +0 -0
  170. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/hc.py +0 -0
  171. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/kernel.py +0 -0
  172. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/lkt.py +0 -0
  173. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/lwt.py +0 -0
  174. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/mgp.py +0 -0
  175. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/sm.py +0 -0
  176. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/tf.py +0 -0
  177. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/vw.py +0 -0
  178. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/kedf/wt.py +0 -0
  179. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/nonadiabatic/__init__.py +0 -0
  180. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/nonadiabatic/jp.py +0 -0
  181. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/nonadiabatic/wcdhc.py +0 -0
  182. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/__init__.py +0 -0
  183. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/abstract_pseudo.py +0 -0
  184. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/layer_pseudo.py +0 -0
  185. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/psp.py +0 -0
  186. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/recpot.py +0 -0
  187. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/upf.py +0 -0
  188. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/usp.py +0 -0
  189. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/pseudo/xml.py +0 -0
  190. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/semilocal_xc.py +0 -0
  191. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/total_functional.py +0 -0
  192. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/xc/__init__.py +0 -0
  193. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/xc/rvv10.py +0 -0
  194. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/xc/semilocal_xc.py +0 -0
  195. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/functional/xc/xc.json +0 -0
  196. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/interface.py +0 -0
  197. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/invert/__init__.py +0 -0
  198. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/invert/analysis.py +0 -0
  199. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/inverter.py +0 -0
  200. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/ions.py +0 -0
  201. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/linear_solver.py +0 -0
  202. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/math_utils.py +0 -0
  203. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mixer/__init__.py +0 -0
  204. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mixer/linear.py +0 -0
  205. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mixer/mixer.py +0 -0
  206. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mixer/pulay.py +0 -0
  207. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mpi/__init__.py +0 -0
  208. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mpi/mp_serial.py +0 -0
  209. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/mpi/utils.py +0 -0
  210. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/optimization/__init__.py +0 -0
  211. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/optimization/optimization.py +0 -0
  212. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/optimization/scf.py +0 -0
  213. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/optimize.py +0 -0
  214. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/properties/__init__.py +0 -0
  215. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/properties/potential.py +0 -0
  216. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/__init__.py +0 -0
  217. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/casida.py +0 -0
  218. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/hamiltonian.py +0 -0
  219. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/interface.py +0 -0
  220. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/operator.py +0 -0
  221. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/predictor_corrector.py +0 -0
  222. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/propagator/__init__.py +0 -0
  223. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/propagator/abstract_propagator.py +0 -0
  224. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/propagator/crank_nicholson.py +0 -0
  225. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/propagator/taylor.py +0 -0
  226. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/td/utils.py +0 -0
  227. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/time_data.py +0 -0
  228. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/utils/__init__.py +0 -0
  229. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/utils/utils.py +0 -0
  230. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/visualize/__init__.py +0 -0
  231. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/visualize/ase_viewer.py +0 -0
  232. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/visualize/ipv_viewer.py +0 -0
  233. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/visualize/jupyter.py +0 -0
  234. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/visualize/mpl_viewer.py +0 -0
  235. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy/visualize/vesta_viewer.py +0 -0
  236. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy.egg-info/SOURCES.txt +0 -0
  237. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy.egg-info/dependency_links.txt +0 -0
  238. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy.egg-info/requires.txt +0 -0
  239. {dftpy-2.0.2 → dftpy-2.0.3}/src/dftpy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dftpy
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Python3 packages for Density Functional Theory
5
5
  Home-page: http://dftpy.rutgers.edu
6
6
  Author: Pavanello Research Group
@@ -5,12 +5,10 @@ import numpy as np
5
5
 
6
6
  from dftpy.config import DefaultOption, OptionFormat
7
7
  from dftpy.api.api4ase import DFTpyCalculator
8
- import pytest
9
8
 
10
9
 
11
10
  class Test(unittest.TestCase):
12
11
  def test_md(self):
13
- pytest.importorskip("ase")
14
12
  from ase.md.langevin import Langevin
15
13
  from ase.md.verlet import VelocityVerlet
16
14
  from ase.md.velocitydistribution import MaxwellBoltzmannDistribution
@@ -2,14 +2,12 @@
2
2
  import os
3
3
  import unittest
4
4
  import numpy as np
5
- import pytest
6
5
 
7
6
  from dftpy.config import DefaultOption, OptionFormat
8
7
  from dftpy.api.api4ase import DFTpyCalculator
9
8
 
10
9
  class Test(unittest.TestCase):
11
10
  def test_opt(self):
12
- pytest.importorskip("ase")
13
11
  from ase.optimize import BFGS, LBFGS, FIRE
14
12
  from ase.optimize.sciopt import SciPyFminBFGS, SciPyFminCG
15
13
  from ase.constraints import StrainFilter, UnitCellFilter
@@ -8,7 +8,6 @@ import pytest
8
8
 
9
9
  class Test(unittest.TestCase):
10
10
  def test_io_ase(self):
11
- pytest.importorskip("ase")
12
11
  dftpy_data_path = os.environ.get('DFTPY_DATA_PATH')
13
12
  a1 = dftpy_io.read(dftpy_data_path + '/fcc.vasp', driver='ase')
14
13
  a2 = dftpy_io.read(dftpy_data_path + '/fcc.vasp')
@@ -1,8 +1,8 @@
1
1
  __author__ = "Pavanello Research Group"
2
2
  __contact__ = "m.pavanello@rutgers.edu"
3
3
  __license__ = "MIT"
4
- __version__ = "2.0.2"
5
- __date__ = "2023-06-28"
4
+ __version__ = "2.0.3"
5
+ __date__ = "2023-08-08"
6
6
 
7
7
  from .config import *
8
8
  from .mpi import mp, sprint
@@ -0,0 +1,58 @@
1
+ import numpy as np
2
+ from dftpy.constants import ENERGY_CONV, FORCE_CONV, STRESS_CONV
3
+ from dftpy.interface import ConfigParser, OptimizeDensityConf
4
+ from dftpy.ions import Ions
5
+ from ase.calculators.calculator import Calculator, all_changes
6
+
7
+ class DFTpyCalculator(Calculator):
8
+ """DFTpy calculator for ase"""
9
+ implemented_properties = ['energy', 'forces', 'stress']
10
+
11
+ def __init__(self, config = None, mp = None, **kwargs):
12
+ Calculator.__init__(self, **kwargs)
13
+ self.config = config
14
+ self.mp = mp
15
+ self.dftpy_results = {}
16
+
17
+ def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes):
18
+ Calculator.calculate(self, atoms, properties, system_changes)
19
+
20
+ if len(system_changes) > 0 :
21
+ self.run(system_changes)
22
+
23
+ energy = self.dftpy_results["energypotential"]["TOTAL"].energy * ENERGY_CONV["Hartree"]["eV"]
24
+ self.energy = self.dftpy_results["density"].grid.mp.asum(energy)
25
+ self.results['energy'] = self.energy
26
+ if 'forces' in properties:
27
+ self.forces = self.dftpy_results["forces"]["TOTAL"] * FORCE_CONV["Ha/Bohr"]["eV/A"]
28
+ self.results['forces'] = self.forces
29
+
30
+ if 'stress' in properties:
31
+ stress_voigt = np.zeros(6)
32
+ if "TOTAL" in self.dftpy_results["stress"]:
33
+ for i in range(3):
34
+ stress_voigt[i] = self.dftpy_results["stress"]["TOTAL"][i, i]
35
+ stress_voigt[3] = self.dftpy_results["stress"]["TOTAL"][1, 2] # yz
36
+ stress_voigt[4] = self.dftpy_results["stress"]["TOTAL"][0, 2] # xz
37
+ stress_voigt[5] = self.dftpy_results["stress"]["TOTAL"][0, 1] # xy
38
+ else:
39
+ self.mp.sprint("!WARN : NOT calculate the stress, so return zeros")
40
+ self.stress = stress_voigt * STRESS_CONV["Ha/Bohr3"]["eV/A3"]
41
+ self.results['stress'] = self.stress
42
+
43
+ def run(self, system_changes=all_changes):
44
+ pseudo = self.dftpy_results.get('pseudo', None)
45
+ rho = self.dftpy_results.get('density', None)
46
+
47
+ grid = None
48
+ if 'cell' not in system_changes:
49
+ if rho is not None: grid = rho.grid
50
+ if not self.config["MATH"]["reuse"]:
51
+ rho = None
52
+
53
+ ions = Ions.from_ase(self.atoms)
54
+
55
+ config, others = ConfigParser(self.config, ions=ions, rhoini=rho, pseudo=pseudo, grid=grid, mp = self.mp)
56
+ self.dftpy_results = OptimizeDensityConf(config, **others)
57
+ if self.mp is None :
58
+ self.mp = self.dftpy_results["density"].grid.mp
@@ -86,10 +86,7 @@ ZERO = 1E-30
86
86
 
87
87
  environ = {} # You can change it anytime you want
88
88
  environ['STDOUT'] = sys.stdout # file descriptor of sprint
89
- try:
90
- environ['LOGLEVEL'] = int(os.environ.get('DFTPY_LOGLEVEL', 2)) # The level of sprint
91
- except Exception :
92
- environ['LOGLEVEL'] = 2 # The level of sprint
89
+ environ['LOGLEVEL'] = int(os.environ.get('DFTPY_LOGLEVEL', 2)) # The level of sprint
93
90
  """
94
91
  0 : all
95
92
  1 : debug
@@ -62,7 +62,12 @@ class BaseField(np.ndarray):
62
62
  input_values = np.asarray(data)
63
63
  input_values = np.reshape(input_values, nr, order=order)
64
64
 
65
- obj = np.asarray(input_values).view(cls)
65
+ obj = np.asarray(input_values)
66
+ if order == 'C' and not obj.flags['C_CONTIGUOUS']:
67
+ obj = np.ascontiguousarray(obj)
68
+ elif order == 'F' and not obj.flags['F_CONTIGUOUS']:
69
+ obj = np.asfortranarray(obj)
70
+ obj = obj.view(cls)
66
71
  # add the new attribute to the created instance
67
72
  obj.grid = grid
68
73
  obj.span = (grid.nr > 1).sum()
@@ -24,9 +24,9 @@ class BaseGrid:
24
24
  """
25
25
 
26
26
  def __init__(self, lattice, nr = None, origin=np.array([0.0, 0.0, 0.0]), full=True, direct=True,
27
- cplx=False, mp=None, ecut = None, **kwargs):
27
+ cplx=False, mp=None, ecut = None, comm = None, **kwargs):
28
28
  if mp is None :
29
- mp = MP()
29
+ mp = MP(comm)
30
30
  self._origin = np.asarray(origin)
31
31
  if not isinstance(lattice, Cell):
32
32
  cell=Cell(lattice)
@@ -49,7 +49,7 @@ def get_mpi4py_fft(comm, nr, decomposition = 'Slab', backend = None, grid = None
49
49
  cplx = cplx or full
50
50
  if cplx :
51
51
  backend = 'numpy' # If cplx, use numpy for safe
52
- dtype = np.complex
52
+ dtype = np.complex128
53
53
  else :
54
54
  dtype = np.float64
55
55
 
@@ -290,6 +290,11 @@ class MP :
290
290
  s = self._sum_1(a)
291
291
  return s
292
292
 
293
+ def sprint(self, *args, comm = None, **kwargs):
294
+ from .utils import sprint
295
+ if comm is None : comm = self.comm
296
+ sprint(*args, comm = comm, **kwargs)
297
+
293
298
  class PMI :
294
299
  """
295
300
  Detect mpi
@@ -135,7 +135,7 @@ class RealTimeRunner(Dynamics):
135
135
  if self.correction:
136
136
  correct_potential = self.correct_functionals(self.rho, calcType=['V'], current=self.j).potential
137
137
  self.correct_propagator.hamiltonian.v = correct_potential
138
- self.predictor_corrector.psi_pred = self.correct_propagator(self.predictor_corrector.psi_pred)
138
+ self.predictor_corrector.psi_pred, info = self.correct_propagator(self.predictor_corrector.psi_pred)
139
139
  self.predictor_corrector.rho_pred = calc_rho(self.predictor_corrector.psi_pred)
140
140
  self.predictor_corrector.j_pred = calc_j(self.predictor_corrector.psi_pred)
141
141
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dftpy
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Python3 packages for Density Functional Theory
5
5
  Home-page: http://dftpy.rutgers.edu
6
6
  Author: Pavanello Research Group
@@ -1,80 +0,0 @@
1
- import numpy as np
2
- from dftpy.constants import LEN_CONV, ENERGY_CONV, FORCE_CONV, STRESS_CONV
3
- from dftpy.interface import ConfigParser, OptimizeDensityConf
4
- from dftpy.ions import Ions
5
-
6
-
7
- class DFTpyCalculator(object):
8
- """DFTpy calculator for ase"""
9
-
10
- def __init__(self, config=None, mp = None, **kwargs):
11
- self.config = config
12
- self.results = None
13
- self.atoms = {}
14
- self.mp = mp
15
-
16
- def check_restart(self, atoms=None):
17
- if (
18
- self.atoms
19
- and np.allclose(self.atoms["lattice"], atoms.cell)
20
- and np.allclose(self.atoms["positions"], atoms.positions)
21
- and self.results is not None
22
- ):
23
- return False
24
- else:
25
- return True
26
-
27
- def get_potential_energy(self, atoms=None, **kwargs):
28
- if self.check_restart(atoms):
29
- lattice = atoms.cell
30
- pos = atoms.positions
31
- if self.results is not None and len(self.atoms) > 0 :
32
- pseudo = self.results["pseudo"]
33
- if np.allclose(self.atoms["lattice"], atoms.cell[:]):
34
- grid = self.results["density"].grid
35
- else :
36
- grid = None
37
- else :
38
- pseudo = None
39
- grid = None
40
-
41
- # Save the information of structure
42
- self.atoms["lattice"] = lattice.copy()
43
- self.atoms["positions"] = pos.copy()
44
- #
45
- ions = Ions.from_ase(atoms)
46
- #
47
- if self.results is not None and self.config["MATH"]["reuse"]:
48
- config, others = ConfigParser(self.config, ions=ions, rhoini=self.results["density"], pseudo=pseudo, grid=grid, mp = self.mp)
49
- else:
50
- config, others = ConfigParser(self.config, ions=ions, pseudo=pseudo, grid=grid, mp = self.mp)
51
- results = OptimizeDensityConf(config, **others)
52
- self.results = results
53
- energy = self.results["energypotential"]["TOTAL"].energy * ENERGY_CONV["Hartree"]["eV"]
54
- energy = self.results["density"].grid.mp.asum(energy)
55
- return energy
56
-
57
- def get_forces(self, atoms):
58
- if self.check_restart(atoms):
59
- # if 'Force' not in self.config['JOB']['calctype'] :
60
- # self.config['JOB']['calctype'] += ' Force'
61
- self.get_potential_energy(atoms)
62
- return self.results["forces"]["TOTAL"] * FORCE_CONV["Ha/Bohr"]["eV/A"]
63
-
64
- def get_stress(self, atoms):
65
- if self.check_restart(atoms):
66
- # if 'Stress' not in self.config['JOB']['calctype'] :
67
- # self.config['JOB']['calctype'] += ' Stress'
68
- self.get_potential_energy(atoms)
69
- # return self.results['stress']['TOTAL'] * STRESS_CONV['Ha/Bohr3']['eV/A3']
70
- stress_voigt = np.zeros(6)
71
- if "TOTAL" not in self.results["stress"]:
72
- # print("!WARN : NOT calculate the stress, so return zeros")
73
- return stress_voigt
74
- for i in range(3):
75
- stress_voigt[i] = self.results["stress"]["TOTAL"][i, i]
76
- stress_voigt[3] = self.results["stress"]["TOTAL"][1, 2] # yz
77
- stress_voigt[4] = self.results["stress"]["TOTAL"][0, 2] # xz
78
- stress_voigt[5] = self.results["stress"]["TOTAL"][0, 1] # xy
79
- # stress_voigt *= -1.0
80
- return stress_voigt * STRESS_CONV["Ha/Bohr3"]["eV/A3"]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes