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