vasprocar 1.1.19.123__tar.gz → 1.1.19.124__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.

Potentially problematic release.


This version of vasprocar might be problematic. Click here for more details.

Files changed (119) hide show
  1. {vasprocar-1.1.19.123/vasprocar.egg-info → vasprocar-1.1.19.124}/PKG-INFO +1 -1
  2. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/setup.py +1 -1
  3. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/__main__.py +1 -1
  4. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_fermi_surface.py +1 -1
  5. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_spin_texture_contour.py +32 -84
  6. vasprocar-1.1.19.124/vasprocar/src/plot/plot_spin_texture_contour_video.py +417 -0
  7. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124/vasprocar.egg-info}/PKG-INFO +1 -1
  8. vasprocar-1.1.19.123/vasprocar/src/plot/plot_spin_texture_contour_video.py +0 -408
  9. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/LICENSE.txt +0 -0
  10. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/README.md +0 -0
  11. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/setup.cfg +0 -0
  12. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/__init__.py +0 -0
  13. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/_info.py +0 -0
  14. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/_info_b.py +0 -0
  15. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/_label.py +0 -0
  16. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/_nscf.py +0 -0
  17. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/_var_kpoints.py +0 -0
  18. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/angular_momentum_plot/plot_projecao_angular_momentum.py +0 -0
  19. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/angular_momentum_plot/plot_projecao_angular_momentum_grace.py +0 -0
  20. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/contribuicao.py +0 -0
  21. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/dos_pdos_ldos.py +0 -0
  22. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos.py +0 -0
  23. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos_[polarizado].py +0 -0
  24. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos_[polarizado_delta].py +0 -0
  25. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/dos_plot/plot_dos_pdos_ldos.py +0 -0
  26. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/dos_plot/plot_dos_pdos_ldos_[polarizado].py +0 -0
  27. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/kpoints_2D_3D.py +0 -0
  28. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_QE/projecao_angular_momentum.py +0 -0
  29. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/_info.py +0 -0
  30. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/_info_b.py +0 -0
  31. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/_label.py +0 -0
  32. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/_nscf.py +0 -0
  33. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/_var_kpoints.py +0 -0
  34. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/chgcar.py +0 -0
  35. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/contcar_info.py +0 -0
  36. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/contribuicao.py +0 -0
  37. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/dielectric_function.py +0 -0
  38. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/dos_pdos_ldos.py +0 -0
  39. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/dos_pdos_ldos_[polarizado].py +0 -0
  40. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/kpoints_2D_3D.py +0 -0
  41. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/parchg.py +0 -0
  42. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/poscar_replace.py +0 -0
  43. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/postar_combination.py +0 -0
  44. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/potencial.py +0 -0
  45. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_VASP/wave_function.py +0 -0
  46. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_dft.py +0 -0
  47. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_dft2kp.py +0 -0
  48. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_loop.py +0 -0
  49. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_settings.py +0 -0
  50. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/_update.py +0 -0
  51. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/bandas_2D.py +0 -0
  52. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/bandas_3D.py +0 -0
  53. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/bandas_4D.py +0 -0
  54. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/correction_file.py +0 -0
  55. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/etc/BibTeX.dat +0 -0
  56. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/etc/DOI.png +0 -0
  57. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/etc/Greek_alphabet.jpg +0 -0
  58. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/fermi_surface.py +0 -0
  59. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.bands +0 -0
  60. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.chgcar +0 -0
  61. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.dos +0 -0
  62. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.location +0 -0
  63. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.locpot +0 -0
  64. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.orbitals +0 -0
  65. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.spin +0 -0
  66. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/input.vasprocar.spin_video +0 -0
  67. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/inputs.py +0 -0
  68. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/inputs/inputs_files.py +0 -0
  69. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/level_countour.py +0 -0
  70. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/orbital_texture.py +0 -0
  71. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/orbital_texture_vector.py +0 -0
  72. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_bandas_2D.py +0 -0
  73. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_chgcar.py +0 -0
  74. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_dielectric_function.py +0 -0
  75. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos.py +0 -0
  76. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos_[polarizado].py +0 -0
  77. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos_[polarizado_delta].py +0 -0
  78. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_parchg.py +0 -0
  79. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_potencial.py +0 -0
  80. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_projecao_localizacao.py +0 -0
  81. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_projecao_orbitais.py +0 -0
  82. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_projecao_psi.py +0 -0
  83. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_projecao_spin.py +0 -0
  84. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/Grace/plot_wave_function.py +0 -0
  85. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/_plot_settings.py +0 -0
  86. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_bandas_2D.py +0 -0
  87. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_bandas_3D_matplotlib.py +0 -0
  88. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_bandas_3D_plotly.py +0 -0
  89. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_bandas_4D_plotly.py +0 -0
  90. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_chgcar.py +0 -0
  91. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_dielectric_function.py +0 -0
  92. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_dos_pdos_ldos.py +0 -0
  93. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_dos_pdos_ldos_[polarizado].py +0 -0
  94. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_level_countour.py +0 -0
  95. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_orbital_texture.py +0 -0
  96. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_orbital_texture_vector.py +0 -0
  97. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_parchg.py +0 -0
  98. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_potencial.py +0 -0
  99. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_projecao_localizacao.py +0 -0
  100. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_projecao_orbitais.py +0 -0
  101. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_projecao_psi.py +0 -0
  102. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_projecao_spin.py +0 -0
  103. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_spin_texture_2D.py +0 -0
  104. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_spin_texture_3D.py +0 -0
  105. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_spin_texture_4D.py +0 -0
  106. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_spin_texture_4D_[iso].py +0 -0
  107. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/plot/plot_wave_function.py +0 -0
  108. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/projecao_localizacao.py +0 -0
  109. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/projecao_orbitais.py +0 -0
  110. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/projecao_psi.py +0 -0
  111. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/projecao_spin.py +0 -0
  112. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/spin_texture.py +0 -0
  113. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/spin_texture_contour.py +0 -0
  114. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar/src/spin_texture_contour_video.py +0 -0
  115. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar.egg-info/SOURCES.txt +0 -0
  116. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar.egg-info/dependency_links.txt +0 -0
  117. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar.egg-info/entry_points.txt +0 -0
  118. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar.egg-info/requires.txt +0 -0
  119. {vasprocar-1.1.19.123 → vasprocar-1.1.19.124}/vasprocar.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vasprocar
3
- Version: 1.1.19.123
3
+ Version: 1.1.19.124
4
4
  Summary: VASProcar is an open-source package written in the Python 3 programming language, which aims to provide an intuitive tool for the post-processing of the output files produced by the DFT VASP/QE codes, through an interactive user interface.
5
5
  Home-page: https://doi.org/10.5281/zenodo.6343960
6
6
  Download-URL: https://doi.org/10.5281/zenodo.6343960
@@ -6,7 +6,7 @@ from typing import Optional
6
6
 
7
7
  setup(
8
8
  name = "vasprocar",
9
- version = "1.1.19.123",
9
+ version = "1.1.19.124",
10
10
  entry_points={'console_scripts': ['vasprocar = vasprocar:main']},
11
11
  description = "VASProcar is an open-source package written in the Python 3 programming language, which aims to provide an intuitive tool for the post-processing of the output files produced by the DFT VASP/QE codes, through an interactive user interface.",
12
12
  author = "Augusto de Lelis Araujo and Renan da Paixao Maciel",
@@ -14,7 +14,7 @@ dir_vasprocar = os.path.dirname(os.path.realpath(__file__))
14
14
  print(f'{dir_vasprocar}')
15
15
  #------------------------
16
16
 
17
- version = '1.1.19.123'
17
+ version = '1.1.19.124'
18
18
  VASProcar_name = 'VASProcar version ' + version
19
19
 
20
20
  url_1 = 'https://pypi.org/project/vasprocar'
@@ -211,7 +211,7 @@ if (video == 1):
211
211
  image_output = os.getcwd() + '/figures'
212
212
 
213
213
  image_files = [os.path.join(image_output,img)
214
- for img in os.listdir(image_output)
214
+ for img in sorted(os.listdir(image_output))
215
215
  if img.endswith('.png')]
216
216
 
217
217
  clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files, fps = n_fig)
@@ -138,34 +138,6 @@ map_red_blue = colors.LinearSegmentedColormap.from_list("", ["red","pink","pink"
138
138
  "cyan","cyan","cyan","blue","magenta","magenta","magenta","red"])
139
139
  map_color = map_red_blue
140
140
 
141
-
142
- #-------------
143
- min_energ = []
144
- max_energ = []
145
- pulo = (pulo + 1)
146
- levels = [0]*1
147
- #-----------------------------------
148
- for b in range(band_i, (band_f +1)):
149
- colum = (3 -1) + (b -1)*4 +2
150
- energia = spin[:,colum-1] + dE_fermi + Delta_E
151
- #-----------------------------
152
- min_energ.append(min(energia))
153
- max_energ.append(max(energia))
154
- #---------------------------------
155
- # energ_i = min(min_energ)
156
- # energ_f = max(max_energ)
157
- #----------------------
158
- if (tipo_contour == 0):
159
- for i in range(n_contour + 2):
160
- if (i != 0 and i != (n_contour + 1)):
161
- levels_n[i-1] = energ_i + ((energ_f - energ_i)/(n_contour + 1))*(i-1)
162
- #----------------------
163
- if (tipo_contour == 1):
164
- for i in range(n_contour):
165
- levels_n[i] = energ_i + ((energ_f - energ_i)/(n_contour - 1))*(i)
166
- #-----------------------------------------------------------------------
167
-
168
-
169
141
  #=========================================================================
170
142
  # 2D Plot of Spin Projection on Level Contours: ==========================
171
143
  #=========================================================================
@@ -238,49 +210,36 @@ for i in range (1,(6+1)):
238
210
 
239
211
  #------------------------------------------
240
212
 
241
- # for b in range(nb):
242
- # energia = spin[:,(3 + b*4)] + dE_fermi
243
- # Spin_Sx = spin[:,(4 + b*4)]
244
- # Spin_Sy = spin[:,(5 + b*4)]
245
- # Spin_Sz = spin[:,(6 + b*4)]
246
-
247
213
  for b in range(band_i, (band_f +1)):
248
- #-------------------------------
249
- cont = 0
250
- if (allowed_bands == 'all'): cont = 1
251
- if (allowed_bands == 'even'):
252
- if ((int(b/2) -(b/2)) == 0.0): cont = 1
253
- if (allowed_bands == 'odd'):
254
- if ((int(b/2) -(b/2)) != 0.0): cont = 1
255
- #-----------------------------------------
256
- if (cont == 1):
257
- #---------------------------
258
- colum = (3 -1) + (b -1)*4 +2
259
- #---------------------------
260
- energia = spin[:,colum-1] + dE_fermi
261
- Spin_Sx = spin[:,colum+0]
262
- Spin_Sy = spin[:,colum+1]
263
- Spin_Sz = spin[:,colum+2]
264
-
265
-
266
- #------------------------
267
- # if (tipo_contour == 0):
268
- # energ_i = min(energia)
269
- # energ_f = max(energia)
270
- # for ii in range(n_contour + 2):
271
- # if (ii != 0 and ii != (n_contour + 1)):
272
- # levels_n[ii-1] = energ_i + ((energ_f - energ_i)/(n_contour + 1))*(ii-1)
273
- #----------------------------------------------------------------------------------
274
- # if (tipo_contour == 1):
275
- # for ii in range(n_contour):
276
- # levels_n[ii] = energ_i + ((energ_f - energ_i)/(n_contour - 1))*(ii)
277
- #---------------------------------------------------------------------------
214
+ #---------------------------
215
+ colum = (3 -1) + (b -1)*4 +2
216
+ energia = spin[:,colum-1] + dE_fermi
217
+ #-----------------------------------
218
+ Spin_Sx = spin[:,(4 + b*4)]
219
+ Spin_Sy = spin[:,(5 + b*4)]
220
+ Spin_Sz = spin[:,(6 + b*4)]
221
+
222
+ pulo = (pulo + 1)
223
+ levels = [0]*1
224
+
225
+ #------------------------------------------------------------------------------
226
+
227
+ if (tipo_contour == 0):
228
+ energ_i = min(energia)
229
+ energ_f = max(energia)
230
+ for ii in range(n_contour + 2):
231
+ if (ii != 0 and ii != (n_contour + 1)):
232
+ levels_n[ii-1] = energ_i + ((energ_f - energ_i)/(n_contour + 1))*(ii-1)
233
+
234
+ if (tipo_contour == 1):
235
+ for ii in range(n_contour):
236
+ levels_n[ii] = energ_i + ((energ_f - energ_i)/(n_contour - 1))*(ii)
278
237
 
238
+ # Realizando a interpolação de [Kx, Ky, Energia] -------------------------
279
239
 
280
- #---------------------------------------------------------------------------
281
- # Realizando a interpolação de [Kx, Ky, Energia] ---------------------------
282
240
  e_grid = griddata((eixo1,eixo2), energia, (x_grid,y_grid), method = 'cubic')
283
- #---------------------------------------------------------------------------
241
+
242
+ #------------------------------------------------------------------------------
284
243
 
285
244
  for j in range(n_contour):
286
245
 
@@ -331,23 +290,12 @@ for i in range (1,(6+1)):
331
290
 
332
291
  for k in range(passo):
333
292
  #----------------------------------------
334
- if (i == 1):
335
- v_spin = [Spin_S1[k], 0.0]
336
-
337
- if (i == 2):
338
- v_spin = [0.0, Spin_S2[k]]
339
-
340
- if (i == 3):
341
- v_spin = [Spin_S3[k], 0.0]
342
-
343
- if (i == 4):
344
- v_spin = [Spin_S1[k], Spin_S2[k]]
345
-
346
- if (i == 5):
347
- v_spin = [Spin_S1[k], Spin_S3[k]]
348
-
349
- if (i == 6):
350
- v_spin = [Spin_S3[k], Spin_S2[k]]
293
+ if (i == 1): v_spin = [Spin_S1[k], 0.0]
294
+ if (i == 2): v_spin = [0.0, Spin_S2[k]]
295
+ if (i == 3): v_spin = [Spin_S3[k], 0.0]
296
+ if (i == 4): v_spin = [Spin_S1[k], Spin_S2[k]]
297
+ if (i == 5): v_spin = [Spin_S1[k], Spin_S3[k]]
298
+ if (i == 6): v_spin = [Spin_S3[k], Spin_S2[k]]
351
299
 
352
300
  #---------------------------------------------------------------------------------------------------
353
301
  # Obtaining the rotation angle (counter clockwise) of the Spin vector with respect to the x-axis ---
@@ -0,0 +1,417 @@
1
+
2
+ import os
3
+ import numpy as np
4
+ import matplotlib as mpl
5
+ from matplotlib import cm
6
+ from matplotlib import pyplot as plt
7
+ import matplotlib.ticker as ticker
8
+ from mpl_toolkits.mplot3d.axes3d import Axes3D
9
+ from matplotlib.ticker import LinearLocator, FormatStrFormatter
10
+ import matplotlib.colors as colors
11
+ from scipy.interpolate import griddata
12
+
13
+ print(" ")
14
+ print("========== 2D Plot of Spin Projection (Level Contours) ==========")
15
+
16
+ if (tipo_contour < 2):
17
+ levels_n = [0.0]*n_contour
18
+
19
+ #--------------------------------------------------------------------------
20
+ # Variables that define the thickness and length of vectors in the plot ---
21
+ #--------------------------------------------------------------------------
22
+ if ((fator > -1.0 and fator < 1.0) or fator == -1.0):
23
+ fator == 1.0
24
+
25
+ if (fator > 0.0):
26
+ fator = 1/fator
27
+
28
+ if (fator < 0.0):
29
+ fator = (fator**2)**0.5
30
+
31
+ espessura = 0.005 # Use espessura = 100 if you only want to plot the triangular head of the arrow and eliminate the tail,
32
+ comprimento = 2.0*fator # which makes it easier to adjust the size/volume of the vectors by adjusting the comprimento variable.
33
+ #----------------------
34
+
35
+ #------------------------------------------------------------------------
36
+ # Test to know which directories must be correctly informed -------------
37
+ #------------------------------------------------------------------------
38
+ if os.path.isdir('src'):
39
+ 0 == 0
40
+ dir_output = dir_files + '/output/Spin_Texture/'
41
+ else:
42
+ dir_files = ''
43
+ dir_output = ''
44
+ #-----------------
45
+
46
+ #---------------------------------------------------------------------------------------
47
+ # Checking if the "figures" subfolder exists, if it doesn't exist it will be created ---
48
+ #---------------------------------------------------------------------------------------
49
+ if os.path.isdir(dir_output + 'figures'):
50
+ 0 == 0
51
+ else:
52
+ os.mkdir(dir_output + 'figures')
53
+ #----------------------------------
54
+
55
+ #======================================================================
56
+ #======================================================================
57
+ # File Structure for Plot via Matplotlib ==============================
58
+ #======================================================================
59
+ #======================================================================
60
+
61
+ spin = np.loadtxt(dir_output + 'Spin_Texture.dat')
62
+ spin.shape
63
+
64
+ print(" ")
65
+ print(".........................")
66
+ print("..... Wait a moment .....")
67
+ print(".........................")
68
+ print(". It might take a while .")
69
+ print(".........................")
70
+
71
+ #----------------------------------------------------------------------
72
+
73
+ if (esc_fermi == 0): dE_fermi = 0.0
74
+ if (esc_fermi == 1): dE_fermi = (Efermi)*(-1)
75
+
76
+ #----------------------------------------------------------------------
77
+
78
+ if (Plano_k == 1): # Plane (kx,ky) or (k1,k2)
79
+ eixo1 = spin[:,0]
80
+ eixo2 = spin[:,1]
81
+
82
+ if (Plano_k == 2): # Plane (kx,kz) or (k1,k3)
83
+ eixo1 = spin[:,0]
84
+ eixo2 = spin[:,2]
85
+
86
+ if (Plano_k == 3): # Plane (ky,kz) or (k2,k3)
87
+ eixo1 = spin[:,1]
88
+ eixo2 = spin[:,2]
89
+
90
+ #---------------------------
91
+ b = band_i
92
+ colum = (3 -1) + (b -1)*4 +2
93
+ energia = spin[:,colum-1] + dE_fermi
94
+ #-----------------------------------
95
+ Spin_Sx = spin[:,(4 + b*4)]
96
+ Spin_Sy = spin[:,(5 + b*4)]
97
+ Spin_Sz = spin[:,(6 + b*4)]
98
+
99
+ pulo = (pulo + 1)
100
+ levels = [0]*1
101
+
102
+ #----------------------------------------------------------------------
103
+
104
+ if (tipo_contour == 0):
105
+ energ_i = min(energia)
106
+ energ_f = max(energia)
107
+ for i in range(n_contour + 2):
108
+ if (i != 0 and i != (n_contour + 1)):
109
+ levels_n[i-1] = energ_i + ((energ_f - energ_i)/(n_contour + 1))*(i-1)
110
+
111
+ if (tipo_contour == 1):
112
+ for i in range(n_contour):
113
+ levels_n[i] = energ_i + ((energ_f - energ_i)/(n_contour - 1))*(i)
114
+
115
+ #----------------------------------------------------------------------
116
+
117
+ if (Plano_k == 1):
118
+ s1 = 'Sx'; s2 = 'Sy'; s3 = 'Sz'
119
+ sa = r'${S}_{x}$'; sb = r'${S}_{y}$'; sc = r'${S}_{z}$'
120
+ if (Plano_k == 2):
121
+ s1 = 'Sx'; s2 = 'Sz'; s3 = 'Sy'
122
+ sa = r'${S}_{x}$'; sb = r'${S}_{z}$'; sc = r'${S}_{y}$'
123
+ if (Plano_k == 3):
124
+ s1 = 'Sy'; s2 = 'Sz'; s3 = 'Sx'
125
+ sa = r'${S}_{y}$'; sb = r'${S}_{z}$'; sc = r'${S}_{x}$'
126
+
127
+ #----------------------------------------------------------------------
128
+
129
+ if (Dimensao < 4 and Plano_k == 1):
130
+ ca = r'${k}_{x}$'; cb = r'${k}_{y}$'
131
+ if (Dimensao < 4 and Plano_k == 2):
132
+ ca = r'${k}_{x}$'; cb = r'${k}_{z}$'
133
+ if (Dimensao < 4 and Plano_k == 3):
134
+ ca = r'${k}_{y}$'; cb = r'${k}_{z}$'
135
+
136
+ #--------------------------------------
137
+
138
+ if (Dimensao == 4 and Plano_k == 1):
139
+ ca = r'${k}_{1}$'; cb = r'${k}_{2}$'
140
+ if (Dimensao == 4 and Plano_k == 2):
141
+ ca = r'${k}_{1}$'; cb = r'${k}_{3}$'
142
+ if (Dimensao == 4 and Plano_k == 3):
143
+ ca = r'${k}_{2}$'; cb = r'${k}_{3}$'
144
+
145
+ #--------------------------------------
146
+
147
+ if (Dimensao == 1): cc = r' $(2{\pi}/{a})$'
148
+ if (Dimensao == 2): cc = r' $({\AA}^{-1})$'
149
+ if (Dimensao == 3): cc = r' $({nm}^{-1})$'
150
+ if (Dimensao == 4): cc = ' '
151
+
152
+ # Create meshgrid for x,y ------------------------------------------------
153
+
154
+ xi = np.linspace(min(eixo1), max(eixo1), n_d)
155
+ yi = np.linspace(min(eixo2), max(eixo2), n_d)
156
+ x_grid, y_grid = np.meshgrid(xi,yi)
157
+
158
+ e_grid = griddata((eixo1,eixo2), energia, (x_grid,y_grid), method = 'cubic')
159
+
160
+ #=========================================================================
161
+ # 2D Plot of Spin Projection on Level Contours: ==========================
162
+ #=========================================================================
163
+
164
+ for i in range (n_contour):
165
+
166
+ map_gray = (mpl.colors.ListedColormap(['darkgray', 'darkgray']))
167
+
168
+ fig = plt.figure()
169
+ ax = fig.add_subplot(111)
170
+
171
+ #-----------------------------------------------------------------------
172
+
173
+ if (tipo_spin == 1):
174
+ c1 = sa + ' | ' + ca + cc
175
+ c2 = cb + cc
176
+ L1 = sa + r'${\uparrow}$'
177
+ L2 = sa + r'${\downarrow}$'
178
+ rotulo = s1
179
+
180
+ if (tipo_spin == 2):
181
+ c1 = ca + cc
182
+ c2 = sb + ' | ' + cb + cc
183
+ L1 = sb + r'${\uparrow}$'
184
+ L2 = sb + r'${\downarrow}$'
185
+ rotulo = s2
186
+
187
+ if (tipo_spin == 3):
188
+ c1 = sc + ' | ' + ca + cc
189
+ c2 = cb + cc
190
+ L1 = sc + r'${\uparrow}$'
191
+ L2 = sc + r'${\downarrow}$'
192
+ rotulo = s3
193
+
194
+ if (tipo_spin == 4):
195
+ c1 = sa + ' | ' + ca + cc
196
+ c2 = sb + ' | ' + cb + cc
197
+ rotulo = s1 + s2
198
+
199
+ if (tipo_spin == 5):
200
+ rotulo = s1 + s3
201
+ c1 = sa + ' | ' + ca + cc
202
+ c2 = sc + ' | ' + cb + cc
203
+
204
+ if (tipo_spin == 6):
205
+ rotulo = s2 + s3
206
+ c1 = sc + ' | ' + ca + cc
207
+ c2 = sb + ' | ' + cb + cc
208
+
209
+ if ((Plano_k == 1 and tipo_spin == 4) or (Plano_k == 2 and tipo_spin == 5) or (Plano_k == 3 and tipo_spin == 5)):
210
+ L1 = r'${S}_{x}{\uparrow} + {S}_{y}{\uparrow}$'
211
+ L2 = r'${S}_{x|y}{\uparrow}$'
212
+ L3 = r'${S}_{x|y}{\uparrow} + {S}_{y|x}{\downarrow}$'
213
+ L4 = r'${S}_{x|y}{\downarrow}$'
214
+ L5 = r'${S}_{x}{\downarrow} + {S}_{y}{\downarrow}$'
215
+
216
+ if ((Plano_k == 1 and tipo_spin == 5) or (Plano_k == 2 and tipo_spin == 4) or (Plano_k == 3 and tipo_spin == 6)):
217
+ L1 = r'${S}_{x}{\uparrow} + {S}_{z}{\uparrow}$'
218
+ L2 = r'${S}_{x|z}{\uparrow}$'
219
+ L3 = r'${S}_{x|z}{\uparrow} + {S}_{z|x}{\downarrow}$'
220
+ L4 = r'${S}_{x|z}{\downarrow}$'
221
+ L5 = r'${S}_{x}{\downarrow} + {S}_{z}{\downarrow}$'
222
+
223
+ if ((Plano_k == 1 and tipo_spin == 6) or (Plano_k == 2 and tipo_spin == 6) or (Plano_k == 3 and tipo_spin == 4)):
224
+ L1 = r'${S}_{y}{\uparrow} + {S}_{z}{\uparrow}$'
225
+ L2 = r'${S}_{y|z}{\uparrow}$'
226
+ L3 = r'${S}_{y|z}{\uparrow} + {S}_{z|y}{\downarrow}$'
227
+ L4 = r'${S}_{y|z}{\downarrow}$'
228
+ L5 = r'${S}_{y}{\downarrow} + {S}_{z}{\downarrow}$'
229
+
230
+ #-----------------------------------------------------------------------
231
+
232
+ # plt.contourf(x_grid, y_grid, e_grid, levels_n, cmap = "bwr", alpha = 0.05, antialiased = True)
233
+
234
+ #---------------------------------------------------------------------------------------------------------------------------------------
235
+ levels[0] = levels_n[i]
236
+ cs = plt.contour(x_grid, y_grid, e_grid, levels, linestyles = '-', cmap = map_gray, linewidths = 0.5, alpha = 1.0, antialiased = True)
237
+ #---------------------------------------------------------------------------------------------------------------------------------------
238
+ points = []
239
+ paths = cs.collections[0].get_paths()
240
+ verts = [xx.vertices for xx in paths]
241
+ try:
242
+ points = np.concatenate(verts)
243
+ ...
244
+ except Exception as e:
245
+ print(f"error detected: {e}")
246
+
247
+ #--------------------
248
+ if (len(points) > 0):
249
+ #---------------------------------------------------------------------------------------------------------------------------------------
250
+ new_Sx = griddata((eixo1,eixo2), Spin_Sx, (points[::pulo,0], points[::pulo,1]))
251
+ new_Sy = griddata((eixo1,eixo2), Spin_Sy, (points[::pulo,0], points[::pulo,1]))
252
+ new_Sz = griddata((eixo1,eixo2), Spin_Sz, (points[::pulo,0], points[::pulo,1]))
253
+ #---------------------------------------------------------------------------------------------------------------------------------------
254
+
255
+ if (Plano_k == 1): # Plane (kx,ky) or (k1,k2)
256
+ Spin_S1 = new_Sx
257
+ Spin_S2 = new_Sy
258
+ Spin_S3 = new_Sz
259
+
260
+ if (Plano_k == 2): # Plane (kx,kz) or (k1,k3)
261
+ Spin_S1 = new_Sx
262
+ Spin_S2 = new_Sz
263
+ Spin_S3 = new_Sy
264
+
265
+ if (Plano_k == 3): # Plane (ky,kz) or (k2,k3)
266
+ Spin_S1 = new_Sy
267
+ Spin_S2 = new_Sz
268
+ Spin_S3 = new_Sx
269
+
270
+ #---------------------------------------------------------------------------------------------------------------------------------------
271
+
272
+ passo = len(new_Sx)
273
+ nulo = [0.0]*passo
274
+ angle = [0]*passo
275
+
276
+ for k in range(passo):
277
+ #----------------------------------------
278
+ if (tipo_spin == 1):
279
+ v_spin = [Spin_S1[k], 0.0]
280
+
281
+ if (tipo_spin == 2):
282
+ v_spin = [0.0, Spin_S2[k]]
283
+
284
+ if (tipo_spin == 3):
285
+ v_spin = [Spin_S3[k], 0.0]
286
+
287
+ if (tipo_spin == 4):
288
+ v_spin = [Spin_S1[k], Spin_S2[k]]
289
+
290
+ if (tipo_spin == 5):
291
+ v_spin = [Spin_S1[k], Spin_S3[k]]
292
+
293
+ if (tipo_spin == 6):
294
+ v_spin = [Spin_S3[k], Spin_S2[k]]
295
+
296
+ #---------------------------------------------------------------------------------------------------
297
+ # Obtaining the rotation angle (counter clockwise) of the Spin vector with respect to the x-axis ---
298
+ #---------------------------------------------------------------------------------------------------
299
+ u = v_spin / np.linalg.norm(v_spin)
300
+ v = [1.0, 0.0] # Reference vector for the angle. Must be kept fixed.
301
+ dot_product = np.dot(u, v)
302
+ angle[k] = np.arccos(dot_product) / np.pi * 180
303
+ if (u[1] < 0.0):
304
+ angle[k] = 360 - angle[k]
305
+
306
+ #---------------------------------------------------------------------------------------------------------------------------------------
307
+ # map_red_blue = colors.LinearSegmentedColormap.from_list("", ["red","white","red","white","blue","white","blue","white","red"])
308
+ # map_red_blue = colors.LinearSegmentedColormap.from_list("", ["red","magenta","red","magenta","blue","magenta","blue","magenta","red"])
309
+ # map_red_blue = colors.LinearSegmentedColormap.from_list("", ["red","pink","red","magenta","blue","cyan","blue","magenta","red"])
310
+ map_red_blue = colors.LinearSegmentedColormap.from_list("", ["red","pink","pink","pink","red","magenta","magenta","magenta","blue",
311
+ "cyan","cyan","cyan","blue","magenta","magenta","magenta","red"])
312
+ norma = colors.Normalize(0, 360)
313
+ #---------------------------------------------------------------------------------------------------------------------------------------
314
+ if (tipo_spin == 1):
315
+ cp = ax.quiver(points[::pulo,0], points[::pulo,1], Spin_S1, nulo, angle, cmap = map_red_blue, norm = norma, linewidths = 0.25, edgecolor = 'black',
316
+ alpha = transp, width = espessura, scale = comprimento, scale_units = 'inches', pivot = 'tail', minlength = 0.0)
317
+
318
+ if (tipo_spin == 2):
319
+ cp = ax.quiver(points[::pulo,0], points[::pulo,1], nulo, Spin_S2, angle, cmap = map_red_blue, norm = norma, linewidths = 0.25, edgecolor = 'black',
320
+ alpha = transp, width = espessura, scale = comprimento, scale_units = 'inches', pivot = 'tail', minlength = 0.0)
321
+
322
+ if (tipo_spin == 3):
323
+ cp = ax.quiver(points[::pulo,0], points[::pulo,1], Spin_S3, nulo, angle, cmap = map_red_blue, norm = norma, linewidths = 0.25, edgecolor = 'black',
324
+ alpha = transp, width = espessura, scale = comprimento, scale_units = 'inches', pivot = 'tail', minlength = 0.0)
325
+
326
+ if (tipo_spin == 4):
327
+ cp = ax.quiver(points[::pulo,0], points[::pulo,1], Spin_S1, Spin_S2, angle, cmap = map_red_blue, norm = norma, linewidths = 0.25, edgecolor = 'black',
328
+ alpha = transp, width = espessura, scale = comprimento, scale_units = 'inches', pivot = 'tail', minlength = 0.0)
329
+
330
+ if (tipo_spin == 5):
331
+ cp = ax.quiver(points[::pulo,0], points[::pulo,1], Spin_S1, Spin_S3, angle, cmap = map_red_blue, norm = norma, linewidths = 0.25, edgecolor = 'black',
332
+ alpha = transp, width = espessura, scale = comprimento, scale_units = 'inches', pivot = 'tail', minlength = 0.0)
333
+
334
+ if (tipo_spin == 6):
335
+ cp = ax.quiver(points[::pulo,0], points[::pulo,1], Spin_S3, Spin_S2, angle, cmap = map_red_blue, norm = norma, linewidths = 0.25, edgecolor = 'black',
336
+ alpha = transp, width = espessura, scale = comprimento, scale_units = 'inches', pivot = 'tail', minlength = 0.0)
337
+
338
+ #---------------------------------------------------------------------------------------------------------------------------------------
339
+ # plt.quiver(points[::pulo,0], points[::pulo,1], Spin_S1, Spin_S2, angle,
340
+ # scale_units = "xy", angles = "xy", pivot = 'tail', cmap = map_red_blue, norm = norma, linewidths = 0.5, edgecolor = 'black', alpha = transp)
341
+ #---------------------------------------------------------------------------------------------------------------------------------------
342
+
343
+ if (tipo_spin < 4):
344
+ cbar = fig.colorbar(cp, orientation = 'vertical', shrink = 1.0, boundaries = [0, 180, 360], ticks = [90, 270])
345
+ cbar.ax.set_yticklabels([L1, L2])
346
+
347
+ if (tipo_spin > 3):
348
+ cbar = fig.colorbar(cp, orientation = 'vertical', shrink = 1.0, values = [45, 90, 135, 180, 225], ticks = [45, 90, 135, 180, 225])
349
+ cbar.ax.set_yticklabels([L1, L2, L3, L4, L5])
350
+
351
+ # ax.clabel(cs, inline = False, colors = 'black', fontsize = 8)
352
+
353
+ temp_level = f'{levels_n[i]:_.4f}'
354
+
355
+ if (levels_n[i] <= 0.0): c_energ = temp_level
356
+ if (levels_n[i] > 0.0): c_energ = '+' + temp_level
357
+
358
+ c_band = str(band_i)
359
+
360
+ if (esc_fermi == 0): plt.title('Band ' + str(band_i) + ': $E$ = ' + c_energ + ' eV')
361
+ if (esc_fermi == 1): plt.title('Band ' + str(band_i) + ': $E-E_{f}$ = ' + c_energ + ' eV')
362
+
363
+ #----------------------------------------------------------------------
364
+
365
+ ax.set_xlabel(c1)
366
+ ax.set_ylabel(c2)
367
+ ax.set_box_aspect(1.0/1)
368
+
369
+ #----------------------------------------------------------------------
370
+
371
+ m = (i + 1)
372
+ if (m < 10): number = '[000' + str(m) + ']'
373
+ if (m >= 10 and m < 100): number = '[00' + str(m) + ']'
374
+ if (m >= 100 and m < 1000): number = '[0' + str(m) + ']'
375
+ if (m >= 1000): number = '[' + str(m) + ']'
376
+
377
+ if (save_png == 1): plt.savefig(dir_output + 'figures/Spin_Texture_video_' + number + '_[' + c_energ + '].png', dpi = 300, bbox_inches='tight', pad_inches=0)
378
+ if (save_pdf == 1): plt.savefig(dir_output + 'Spin_Texture_video_' + number + '_[' + c_energ + '].pdf', dpi = 600, bbox_inches='tight', pad_inches=0)
379
+ if (save_svg == 1): plt.savefig(dir_output + 'Spin_Texture_video_' + number + '_[' + c_energ + '].svg', dpi = 600, bbox_inches='tight', pad_inches=0)
380
+ if (save_eps == 1): plt.savefig(dir_output + 'Spin_Texture_video_' + number + '_[' + c_energ + '].eps', dpi = 600, bbox_inches='tight', pad_inches=0)
381
+
382
+ fig = plt.gcf()
383
+ fig.set_size_inches(8,6)
384
+ # plt.show()
385
+ plt.close()
386
+
387
+ print(" ")
388
+ print("=== Creating a video (.mp4) of the 2D Spin Texture (Level Contours) ===")
389
+ print(" ")
390
+
391
+ #======================================================================
392
+ # Creating a video with the generated images (moviepy): ===============
393
+ #======================================================================
394
+
395
+ import moviepy.video.io.ImageSequenceClip
396
+
397
+ if (dir_output != ''):
398
+ image_output = dir_output + 'figures'
399
+ if (dir_output == ''):
400
+ image_output = os.getcwd() + '/figures'
401
+
402
+ image_files = [os.path.join(image_output,img)
403
+ for img in os.listdir(image_output)
404
+ if img.endswith('.png')]
405
+
406
+ clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files, fps = n_fig)
407
+
408
+ clip.write_videofile(dir_output + 'STexture_video.mp4')
409
+
410
+ #---------------------------------------------------------------------------
411
+ if (dir_output == ''):
412
+ print(" ")
413
+ print("========================== Concluded! ==========================")
414
+ #---------------------------------------------------------------------------
415
+
416
+ # VASProcar Copyright (C) 2023
417
+ # GNU GPL-3.0 license
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vasprocar
3
- Version: 1.1.19.123
3
+ Version: 1.1.19.124
4
4
  Summary: VASProcar is an open-source package written in the Python 3 programming language, which aims to provide an intuitive tool for the post-processing of the output files produced by the DFT VASP/QE codes, through an interactive user interface.
5
5
  Home-page: https://doi.org/10.5281/zenodo.6343960
6
6
  Download-URL: https://doi.org/10.5281/zenodo.6343960