vasprocar 1.1.19.142__tar.gz → 1.1.19.144__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.
- {vasprocar-1.1.19.142/vasprocar.egg-info → vasprocar-1.1.19.144}/PKG-INFO +1 -1
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/setup.py +1 -1
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/__main__.py +1 -1
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_nscf.py +1 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_pdos_ldos.py +1 -1
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_settings.py +14 -1
- vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/Gerador_Slab.py +22 -0
- vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/Projection_BZs.py +161 -0
- vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/Projection_kpoints.py +208 -0
- vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/VASProcar_Direto_Cartesiano.py +108 -0
- vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/_TESTE_projecao_localizacao_contour_video.py +565 -0
- vasprocar-1.1.19.144/vasprocar/src/plot/_TESTE_plot_projecao_localizacao_contour_video.py +414 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_contour_video.py +1 -1
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144/vasprocar.egg-info}/PKG-INFO +1 -1
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/SOURCES.txt +6 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/LICENSE.txt +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/README.md +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/setup.cfg +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/__init__.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_info.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_info_b.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_label.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_var_kpoints.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/angular_momentum_plot/plot_projecao_angular_momentum.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/angular_momentum_plot/plot_projecao_angular_momentum_grace.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/contribuicao.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos_[polarizado].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos_[polarizado_delta].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/plot_dos_pdos_ldos.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/plot_dos_pdos_ldos_[polarizado].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/kpoints_2D_3D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/projecao_angular_momentum.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_info.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_info_b.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_label.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_nscf.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_var_kpoints.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/chgcar.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/contcar_info.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/contribuicao.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/dielectric_function.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/dos_pdos_ldos.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/dos_pdos_ldos_[polarizado].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/kpoints_2D_3D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/parchg.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/poscar_replace.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/postar_combination.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/potencial.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/wave_function.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_dft.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_dft2kp.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_loop.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_update.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/bandas_2D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/bandas_3D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/bandas_4D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/correction_file.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/etc/BibTeX.dat +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/etc/DOI.png +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/etc/Greek_alphabet.jpg +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/fermi_surface.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.bands +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.chgcar +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.dos +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.fermi_surface +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.location +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.locpot +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.orbitals +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.spin +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.spin_video +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/inputs.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/inputs_files.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/level_countour.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/orbital_texture.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/orbital_texture_vector.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_bandas_2D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_chgcar.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dielectric_function.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos_[polarizado].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos_[polarizado_delta].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_parchg.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_potencial.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_localizacao.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_orbitais.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_psi.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_spin.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_wave_function.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/_plot_settings.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_2D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_3D_matplotlib.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_3D_plotly.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_4D_plotly.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_chgcar.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_dielectric_function.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_dos_pdos_ldos.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_dos_pdos_ldos_[polarizado].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_fermi_surface.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_level_countour.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_orbital_texture.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_orbital_texture_vector.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_parchg.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_potencial.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_localizacao.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_orbitais.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_psi.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_spin.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_2D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_3D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_4D.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_4D_[iso].py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_contour.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_wave_function.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_localizacao.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_orbitais.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_psi.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_spin.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/spin_texture.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/spin_texture_contour.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/spin_texture_contour_video.py +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/dependency_links.txt +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/entry_points.txt +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/requires.txt +0 -0
- {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/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.
|
|
3
|
+
Version: 1.1.19.144
|
|
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.
|
|
9
|
+
version = "1.1.19.144",
|
|
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.
|
|
17
|
+
version = '1.1.19.144'
|
|
18
18
|
VASProcar_name = 'VASProcar version ' + version
|
|
19
19
|
|
|
20
20
|
url_1 = 'https://pypi.org/project/vasprocar'
|
|
@@ -630,6 +630,7 @@ for wp in range(1,(n_procar+1)):
|
|
|
630
630
|
#---------------------------
|
|
631
631
|
|
|
632
632
|
VTemp = project.readline().split()
|
|
633
|
+
print(VTemp)
|
|
633
634
|
orb[wp][t_orb][point_k][Band][ion_n] = orb[wp][t_orb][point_k][Band][ion_n] + float(VTemp[2])
|
|
634
635
|
tot[wp][point_k][Band][ion_n] = tot[wp][point_k][Band][ion_n] + float(VTemp[2])
|
|
635
636
|
|
|
@@ -509,7 +509,7 @@ linha += 1; lines.insert(linha, '\n')
|
|
|
509
509
|
linha += 1; lines.insert(linha, f'n_procar = {n_procar}; nk = {nk}; x_inicial = {x_inicial}; x_final = {x_final}; energ_min = {y_inicial}; energ_max = {y_final}; lorbit = {lorbit}; esc = {esc} \n')
|
|
510
510
|
linha += 1; lines.insert(linha, f'Efermi = {Efermi} # Fermi energy from DFT outpout file \n')
|
|
511
511
|
linha += 1; lines.insert(linha, f'esc_fermi = {esc_fermi} # Would you like to shift the Fermi level? [0] No, use the value obtained from VASP [1] Yes, shift the Fermi level to 0.0 eV \n')
|
|
512
|
-
linha += 1; lines.insert(linha, f'save_png = {save_png};
|
|
512
|
+
linha += 1; lines.insert(linha, f'save_png = {save_png}; save_pdf = {save_pdf}; save_svg = {save_svg}; save_eps = {save_eps} # Plotting output format, onde [0] = NO e [1] = YES \n')
|
|
513
513
|
linha += 1; lines.insert(linha, '\n')
|
|
514
514
|
linha += 1; lines.insert(linha, '#===================================================================== \n')
|
|
515
515
|
|
|
@@ -121,6 +121,10 @@ if (len(inputs) == 0 and DFT == '_VASP/'):
|
|
|
121
121
|
print("## 2D projection of the spatial location of bands (regions) ##")
|
|
122
122
|
print("## [32] Default -- [-32] Custom ##")
|
|
123
123
|
print("## ======================================================== ##")
|
|
124
|
+
print("## !!!!! UNDER TESTS !!!!! ##")
|
|
125
|
+
print("## 2D projection [ki,kj] of the spatial location of bands ##")
|
|
126
|
+
print("## [37] Default -- [-37] Custom ##")
|
|
127
|
+
print("## ======================================================== ##")
|
|
124
128
|
print("## 2D projection of states Character: ##")
|
|
125
129
|
print("## [33] Default -- [-33] Custom ##")
|
|
126
130
|
print("## ======================================================== ##")
|
|
@@ -321,7 +325,16 @@ if (opcao == 31 or opcao == -31):
|
|
|
321
325
|
|
|
322
326
|
if (opcao == 32 or opcao == -32):
|
|
323
327
|
execute_python_file(filename = 'projecao_localizacao.py')
|
|
324
|
-
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
# TESTE ???????????????????????????????????????????????????????
|
|
331
|
+
# ?????????????????????????????????????????????????????????????
|
|
332
|
+
if ((opcao == 37 or opcao == -37) and (DFT == '_VASP/')):
|
|
333
|
+
execute_python_file(filename = 'projecao_localizacao_contour_video')
|
|
334
|
+
# TESTE ???????????????????????????????????????????????????????
|
|
335
|
+
# ?????????????????????????????????????????????????????????????
|
|
336
|
+
|
|
337
|
+
|
|
325
338
|
if (opcao == 33 or opcao == -33):
|
|
326
339
|
execute_python_file(filename = 'projecao_psi.py')
|
|
327
340
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import ase
|
|
2
|
+
from ase.build import surface
|
|
3
|
+
from ase.io import read
|
|
4
|
+
|
|
5
|
+
file_path = 'POSCAR_SiO2_Bulk'
|
|
6
|
+
n_layers = 2
|
|
7
|
+
direction = [-1, 0, -1]
|
|
8
|
+
vacuum = 15
|
|
9
|
+
|
|
10
|
+
def build_nlayer(poscar_file, n_layers, direction, vacuum):
|
|
11
|
+
str_dir = ''
|
|
12
|
+
for i in direction: str_dir += str(i)
|
|
13
|
+
formula = poscar_file.get_chemical_formula()
|
|
14
|
+
### Generate the surfaces
|
|
15
|
+
|
|
16
|
+
surface = ase.build.surface(poscar_file,direction,n_layers,vacuum=vacuum)
|
|
17
|
+
ase.io.vasp.write_vasp(f'POSCAR_{formula}_{str_dir}_{n_layers}layers.vasp',surface,direct=False,sort=True)
|
|
18
|
+
|
|
19
|
+
poscar = read(file_path)
|
|
20
|
+
|
|
21
|
+
build_nlayer(poscar, n_layers, direction, vacuum)
|
|
22
|
+
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import matplotlib.pyplot as plt
|
|
3
|
+
from scipy.spatial import Voronoi
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
#---------------------------------------------------------
|
|
9
|
+
# Vetores da rede real (Supercélula S) -------------------
|
|
10
|
+
#---------------------------------------------------------
|
|
11
|
+
S1x = -4.8376251965; S1y = 0.00000000000; S1z = 0.000000000000
|
|
12
|
+
S2x = 0.0000000000; S2y = -17.4125575085; S2z = 0.000000000000
|
|
13
|
+
S3x = 0.0000000000; S3y = 0.00000000000; S3z = 34.87887456188
|
|
14
|
+
#-----------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#--------------------------------------------------------------------
|
|
20
|
+
# Vetores da rede real (Rede Pristina P) ----------------------------
|
|
21
|
+
#--------------------------------------------------------------------
|
|
22
|
+
P1x = -2.418812598250; P1y = 0.0000000000000; P1z = 0.000000000000
|
|
23
|
+
P2x = -1.209406299125; P2y = -2.1765696885625; P2z = 0.000000000000
|
|
24
|
+
P3x = 0.000000000000; P3y = 0.0000000000000; P3z = 34.87887456188
|
|
25
|
+
#--------------------------------------------------------------------
|
|
26
|
+
# k-points de interesse (Rede Pristina P) ---------------------------
|
|
27
|
+
#--------------------------------------------------------------------
|
|
28
|
+
K1u = [ [+0.5, +0.0], [+0.0, +0.5], [-0.5, +0.0], [+0.0, -0.5], [+0.5, +0.5], [-0.5, -0.5] ]
|
|
29
|
+
K1u += [ [-0.6666666666666666, -0.3333333333333333], [+0.6666666666666666, +0.3333333333333333] ]
|
|
30
|
+
#-----------------------------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
#------------------------------------------------------
|
|
36
|
+
# Obtendo a rede recíproca da Supercélula S -----------
|
|
37
|
+
#------------------------------------------------------
|
|
38
|
+
ss1 = S1x*((S2y*S3z) - (S2z*S3y))
|
|
39
|
+
ss2 = S1y*((S2z*S3x) - (S2x*S3z))
|
|
40
|
+
ss3 = S1z*((S2x*S3y) - (S2y*S3x))
|
|
41
|
+
ss = ss1 + ss2 + ss3
|
|
42
|
+
#-------------------------------
|
|
43
|
+
B1x = ((S2y*S3z) - (S2z*S3y))/ss
|
|
44
|
+
B1y = ((S2z*S3x) - (S2x*S3z))/ss
|
|
45
|
+
B1z = ((S2x*S3y) - (S2y*S3x))/ss
|
|
46
|
+
B2x = ((S3y*S1z) - (S3z*S1y))/ss
|
|
47
|
+
B2y = ((S3z*S1x) - (S3x*S1z))/ss
|
|
48
|
+
B2z = ((S3x*S1y) - (S3y*S1x))/ss
|
|
49
|
+
B3x = ((S1y*S2z) - (S1z*S2y))/ss
|
|
50
|
+
B3y = ((S1z*S2x) - (S1x*S2z))/ss
|
|
51
|
+
B3z = ((S1x*S2y) - (S1y*S2x))/ss
|
|
52
|
+
#-------------------------------
|
|
53
|
+
ft = 6.2831853071795860
|
|
54
|
+
S1b = [B1x*ft, B1y*ft]
|
|
55
|
+
S2b = [B2x*ft, B2y*ft]
|
|
56
|
+
#---------------------
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
#------------------------------------------------------
|
|
62
|
+
# Obtendo a rede recíproca da Rede Pristina P ---------
|
|
63
|
+
# Obtendo as coord. cart. dos k-points de interesse ---
|
|
64
|
+
#------------------------------------------------------
|
|
65
|
+
ss1 = P1x*((P2y*P3z) - (P2z*P3y))
|
|
66
|
+
ss2 = P1y*((P2z*P3x) - (P2x*P3z))
|
|
67
|
+
ss3 = P1z*((P2x*P3y) - (P2y*P3x))
|
|
68
|
+
ss = ss1 + ss2 + ss3
|
|
69
|
+
#-------------------------------
|
|
70
|
+
B1x = ((P2y*P3z) - (P2z*P3y))/ss
|
|
71
|
+
B1y = ((P2z*P3x) - (P2x*P3z))/ss
|
|
72
|
+
B1z = ((P2x*P3y) - (P2y*P3x))/ss
|
|
73
|
+
B2x = ((P3y*P1z) - (P3z*P1y))/ss
|
|
74
|
+
B2y = ((P3z*P1x) - (P3x*P1z))/ss
|
|
75
|
+
B2z = ((P3x*P1y) - (P3y*P1x))/ss
|
|
76
|
+
B3x = ((P1y*P2z) - (P1z*P2y))/ss
|
|
77
|
+
B3y = ((P1z*P2x) - (P1x*P2z))/ss
|
|
78
|
+
B3z = ((P1x*P2y) - (P1y*P2x))/ss
|
|
79
|
+
#-------------------------------
|
|
80
|
+
ft = 6.2831853071795860
|
|
81
|
+
P1b = [B1x*ft, B1y*ft]
|
|
82
|
+
P2b = [B2x*ft, B2y*ft]
|
|
83
|
+
#---------------------
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
#-----------------------
|
|
89
|
+
fig, ax = plt.subplots()
|
|
90
|
+
#-----------------------
|
|
91
|
+
|
|
92
|
+
#-------------------------------------------------------------
|
|
93
|
+
# Construindo a BZ 2D usando Voronoi (Supercélula S) ---------
|
|
94
|
+
#-------------------------------------------------------------
|
|
95
|
+
nx, ny = 12, 12 # Número de pontos na grade
|
|
96
|
+
points = np.dot(np.mgrid[-nx:nx+1, -ny:ny+1].reshape(2, -1).T, np.array([S1b, S2b]))
|
|
97
|
+
vor = Voronoi(points)
|
|
98
|
+
#--------------------------------
|
|
99
|
+
# Plotando a zona de Brillouin 2D
|
|
100
|
+
#--------------------------------
|
|
101
|
+
for simplex in vor.ridge_vertices:
|
|
102
|
+
simplex = np.asarray(simplex)
|
|
103
|
+
if np.all(simplex >= 0): ax.plot(vor.vertices[simplex, 0], vor.vertices[simplex, 1], color = 'black', linewidth = 0.25, alpha = 0.5, zorder=3)
|
|
104
|
+
#------------------------------------------------------------------------------------------------
|
|
105
|
+
plt.quiver(0, 0, S1b[0], S1b[1], angles='xy', scale_units='xy', scale=1.0, color='blue', alpha = 0.5, zorder=0)
|
|
106
|
+
plt.quiver(0, 0, S2b[0], S2b[1], angles='xy', scale_units='xy', scale=1.0, color='blue', alpha = 0.5, zorder=0)
|
|
107
|
+
plt.text((S1b[0] +0.005), (S1b[1] +0.005), "B$_1$", fontsize=10, alpha = 0.5, color="black")
|
|
108
|
+
plt.text((S2b[0] +0.010), (S2b[1] +0.010), "B$_2$", fontsize=10, alpha = 0.5, color="black")
|
|
109
|
+
#-------------------------------------------------------------------------------------------
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
#-------------------------------------------------------------
|
|
114
|
+
# Construindo a BZ 2D usando Voronoi (Rede Pristina P) -------
|
|
115
|
+
#-------------------------------------------------------------
|
|
116
|
+
nx, ny = 12, 12 # Número de pontos na grade
|
|
117
|
+
points = np.dot(np.mgrid[-nx:nx+1, -ny:ny+1].reshape(2, -1).T, np.array([P1b, P2b]))
|
|
118
|
+
vor = Voronoi(points)
|
|
119
|
+
#--------------------------------
|
|
120
|
+
# Plotando a zona de Brillouin 2D
|
|
121
|
+
#--------------------------------
|
|
122
|
+
for simplex in vor.ridge_vertices:
|
|
123
|
+
simplex = np.asarray(simplex)
|
|
124
|
+
if np.all(simplex >= 0): ax.plot(vor.vertices[simplex, 0], vor.vertices[simplex, 1], color = 'black', linewidth = 0.5, zorder=2)
|
|
125
|
+
#------------------------------------------------------------------------------------------------
|
|
126
|
+
plt.quiver(0, 0, P1b[0], P1b[1], angles='xy', scale_units='xy', scale=1.0, color='red', alpha = 0.5, zorder=1)
|
|
127
|
+
plt.quiver(0, 0, P2b[0], P2b[1], angles='xy', scale_units='xy', scale=1.0, color='red', alpha = 0.5, zorder=1)
|
|
128
|
+
plt.text((P1b[0] +0.005), (P1b[1] +0.005), "B$_1$", fontsize=10, alpha = 0.5, color="black")
|
|
129
|
+
plt.text((P2b[0] +0.010), (P2b[1] +0.010), "B$_2$", fontsize=10, alpha = 0.5, color="black")
|
|
130
|
+
#-------------------------------------------------------------------------------------------
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
#-----------------------------------------------------------------
|
|
136
|
+
# Ajustar os limites dos eixos para refletir os comprimentos reais
|
|
137
|
+
#-----------------------------------------------------------------
|
|
138
|
+
Sx_min, Sx_max = vor.vertices[:, 0].min(), vor.vertices[:, 0].max()
|
|
139
|
+
Sy_min, Sy_max = vor.vertices[:, 1].min(), vor.vertices[:, 1].max()
|
|
140
|
+
|
|
141
|
+
# Adicionar configuração do gráfico
|
|
142
|
+
plt.title("1º Brillouin Zone (2D)")
|
|
143
|
+
plt.xlabel("kx")
|
|
144
|
+
plt.ylabel("ky")
|
|
145
|
+
|
|
146
|
+
x_min = -3.0
|
|
147
|
+
x_max = +2.0
|
|
148
|
+
y_min = -3.2
|
|
149
|
+
y_max = +2.0
|
|
150
|
+
|
|
151
|
+
plt.xlim((x_min, x_max))
|
|
152
|
+
plt.ylim((y_min, y_max))
|
|
153
|
+
|
|
154
|
+
#----------------------------------------------------
|
|
155
|
+
# Ajustar aspect ratio para refletir proporções reais
|
|
156
|
+
#----------------------------------------------------
|
|
157
|
+
ax.set_box_aspect(abs((y_max - y_min) / (x_max - x_min))) # Razão dos comprimentos dos eixos
|
|
158
|
+
|
|
159
|
+
plt.savefig('Brillouin_Zone_2D_Cr2Br2S2_C2.png', dpi = 600, bbox_inches='tight', pad_inches=0)
|
|
160
|
+
plt.savefig('Brillouin_Zone_2D_Cr2Br2S2_C2.eps', dpi = 600, bbox_inches='tight', pad_inches=0)
|
|
161
|
+
# plt.show()
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import numpy as np
|
|
3
|
+
from scipy.spatial import Voronoi
|
|
4
|
+
#--------------------------------
|
|
5
|
+
import matplotlib as mpl
|
|
6
|
+
from matplotlib import cm
|
|
7
|
+
from matplotlib import pyplot as plt
|
|
8
|
+
import matplotlib.ticker as ticker
|
|
9
|
+
from mpl_toolkits.mplot3d.axes3d import Axes3D
|
|
10
|
+
from matplotlib.ticker import LinearLocator, FormatStrFormatter
|
|
11
|
+
import matplotlib.colors as mcolors
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
#---------------------------------------------------------
|
|
17
|
+
# Vetores da rede real (Supercélula S) -------------------
|
|
18
|
+
#---------------------------------------------------------
|
|
19
|
+
S1x = -4.8376251965; S1y = 0.00000000000; S1z = 0.000000000000
|
|
20
|
+
S2x = 0.0000000000; S2y = -17.4125575085; S2z = 0.000000000000
|
|
21
|
+
S3x = 0.0000000000; S3y = 0.00000000000; S3z = 34.87887456188
|
|
22
|
+
#-----------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
#----------------------------------------------------------------
|
|
28
|
+
# Vetores da rede real (Rede Pristina P) ------------------------
|
|
29
|
+
#----------------------------------------------------------------
|
|
30
|
+
P1x = -2.418812598250; P1y = 0.0000000000000; P1z = 0.000000000000
|
|
31
|
+
P2x = -1.209406299125; P2y = -2.1765696885625; P2z = 0.000000000000
|
|
32
|
+
P3x = 0.000000000000; P3y = 0.0000000000000; P3z = 34.87887456188
|
|
33
|
+
#-------------------------------------------------------------------
|
|
34
|
+
# k-points de interesse (Rede Pristina P) --------------------------
|
|
35
|
+
#-------------------------------------------------------------------
|
|
36
|
+
K1 = [ [+0.5, +0.0], [+0.0, +0.5], [-0.5, +0.0], [+0.0, -0.5], [+0.5, +0.5], [-0.5, -0.5] ]
|
|
37
|
+
K1 += [ [-0.6666666666666666, -0.3333333333333333], [+0.6666666666666666, +0.3333333333333333] ]
|
|
38
|
+
#-----------------------------------------------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
#------------------------------------------------------
|
|
44
|
+
# Obtendo a rede recíproca da Supercélula S -----------
|
|
45
|
+
#------------------------------------------------------
|
|
46
|
+
ss1 = S1x*((S2y*S3z) - (S2z*S3y))
|
|
47
|
+
ss2 = S1y*((S2z*S3x) - (S2x*S3z))
|
|
48
|
+
ss3 = S1z*((S2x*S3y) - (S2y*S3x))
|
|
49
|
+
ss = ss1 + ss2 + ss3
|
|
50
|
+
#-------------------------------
|
|
51
|
+
B1x = ((S2y*S3z) - (S2z*S3y))/ss
|
|
52
|
+
B1y = ((S2z*S3x) - (S2x*S3z))/ss
|
|
53
|
+
B1z = ((S2x*S3y) - (S2y*S3x))/ss
|
|
54
|
+
B2x = ((S3y*S1z) - (S3z*S1y))/ss
|
|
55
|
+
B2y = ((S3z*S1x) - (S3x*S1z))/ss
|
|
56
|
+
B2z = ((S3x*S1y) - (S3y*S1x))/ss
|
|
57
|
+
B3x = ((S1y*S2z) - (S1z*S2y))/ss
|
|
58
|
+
B3y = ((S1z*S2x) - (S1x*S2z))/ss
|
|
59
|
+
B3z = ((S1x*S2y) - (S1y*S2x))/ss
|
|
60
|
+
#-------------------------------
|
|
61
|
+
ft = 6.2831853071795860
|
|
62
|
+
S1b = [B1x*ft, B1y*ft]
|
|
63
|
+
S2b = [B2x*ft, B2y*ft]
|
|
64
|
+
#---------------------
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
#------------------------------------------------------
|
|
70
|
+
# Obtendo a rede recíproca da Rede Pristina P ---------
|
|
71
|
+
# Obtendo as coord. cart. dos k-points de interesse ---
|
|
72
|
+
#------------------------------------------------------
|
|
73
|
+
ss1 = P1x*((P2y*P3z) - (P2z*P3y))
|
|
74
|
+
ss2 = P1y*((P2z*P3x) - (P2x*P3z))
|
|
75
|
+
ss3 = P1z*((P2x*P3y) - (P2y*P3x))
|
|
76
|
+
ss = ss1 + ss2 + ss3
|
|
77
|
+
#-------------------------------
|
|
78
|
+
B1x = ((P2y*P3z) - (P2z*P3y))/ss
|
|
79
|
+
B1y = ((P2z*P3x) - (P2x*P3z))/ss
|
|
80
|
+
B1z = ((P2x*P3y) - (P2y*P3x))/ss
|
|
81
|
+
B2x = ((P3y*P1z) - (P3z*P1y))/ss
|
|
82
|
+
B2y = ((P3z*P1x) - (P3x*P1z))/ss
|
|
83
|
+
B2z = ((P3x*P1y) - (P3y*P1x))/ss
|
|
84
|
+
B3x = ((P1y*P2z) - (P1z*P2y))/ss
|
|
85
|
+
B3y = ((P1z*P2x) - (P1x*P2z))/ss
|
|
86
|
+
B3z = ((P1x*P2y) - (P1y*P2x))/ss
|
|
87
|
+
#-------------------------------
|
|
88
|
+
ft = 6.2831853071795860
|
|
89
|
+
P1b = [B1x*ft, B1y*ft]
|
|
90
|
+
P2b = [B2x*ft, B2y*ft]
|
|
91
|
+
#---------------------------------------
|
|
92
|
+
# KPOINTS de interesse (Rede Pristina P)
|
|
93
|
+
#---------------------------------------
|
|
94
|
+
K1_new = []
|
|
95
|
+
for i in range(len(K1)):
|
|
96
|
+
#-------------------
|
|
97
|
+
coord_x = (K1[i][0]*P1b[0]) + (K1[i][1]*P2b[0])
|
|
98
|
+
coord_y = (K1[i][0]*P1b[1]) + (K1[i][1]*P2b[1])
|
|
99
|
+
temp_xy = []
|
|
100
|
+
temp_xy.append(coord_x); temp_xy.append(coord_y)
|
|
101
|
+
#------------------------------------------------
|
|
102
|
+
K1_new.append(temp_xy)
|
|
103
|
+
#-------------------------
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
#-----------------------------------
|
|
109
|
+
# Definirndo matriz de transformação
|
|
110
|
+
#-----------------------------------
|
|
111
|
+
a = np.array([S1b[0], S1b[1]])
|
|
112
|
+
b = np.array([S2b[0], S2b[1]])
|
|
113
|
+
T = np.linalg.inv(np.array([a, b]).T)
|
|
114
|
+
#------------------------------------
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
#-------------------------------------------------------------
|
|
120
|
+
# Construindo a BZ 2D usando Voronoi (Supercélula S) ---------
|
|
121
|
+
#-------------------------------------------------------------
|
|
122
|
+
nx, ny = 12, 12 # Número de pontos na grade
|
|
123
|
+
points = np.dot(np.mgrid[-nx:nx+1, -ny:ny+1].reshape(2, -1).T, np.array([S1b, S2b]))
|
|
124
|
+
vor = Voronoi(points)
|
|
125
|
+
#--------------------------------
|
|
126
|
+
# Plotando a zona de Brillouin 2D
|
|
127
|
+
#--------------------------------
|
|
128
|
+
fig, ax = plt.subplots()
|
|
129
|
+
#-----------------------
|
|
130
|
+
for simplex in vor.ridge_vertices:
|
|
131
|
+
simplex = np.asarray(simplex)
|
|
132
|
+
if np.all(simplex >= 0): ax.plot(vor.vertices[simplex, 0], vor.vertices[simplex, 1], color = 'black', linewidth = 0.25, alpha = 0.5, zorder=3)
|
|
133
|
+
#------------------------------------------------------------------------------------------------
|
|
134
|
+
plt.quiver(0, 0, S1b[0], S1b[1], angles='xy', scale_units='xy', scale=1.0, color='blue', alpha = 0.5, zorder=0)
|
|
135
|
+
plt.quiver(0, 0, S2b[0], S2b[1], angles='xy', scale_units='xy', scale=1.0, color='blue', alpha = 0.5, zorder=0)
|
|
136
|
+
plt.text((S1b[0] +0.005), (S1b[1] +0.005), "B$_1$", fontsize=10, alpha = 0.5, color="black")
|
|
137
|
+
plt.text((S2b[0] +0.010), (S2b[1] +0.010), "B$_2$", fontsize=10, alpha = 0.5, color="black")
|
|
138
|
+
#-------------------------------------------------------------------------------------------
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
#--------------------------------------------------------
|
|
144
|
+
# Convertendo as posições cartesianas para a forma direta
|
|
145
|
+
#--------------------------------------------------------
|
|
146
|
+
Kpoints = K1_new
|
|
147
|
+
Kpoints_f = []
|
|
148
|
+
#----------------------------
|
|
149
|
+
for i in range(len(Kpoints)):
|
|
150
|
+
#-----------------------
|
|
151
|
+
kx = float(Kpoints[i][0])
|
|
152
|
+
ky = float(Kpoints[i][1])
|
|
153
|
+
r = np.array([kx, ky])
|
|
154
|
+
#----------------------------------------------------------------
|
|
155
|
+
# Calculandos as posições fracionárias com relação a supercélula:
|
|
156
|
+
#----------------------------------------------------------------
|
|
157
|
+
f = np.dot(T, r)
|
|
158
|
+
for n in range(9):
|
|
159
|
+
for m in range(2):
|
|
160
|
+
f[m] = np.where(f[m] < -0.5, f[m] +1, f[m])
|
|
161
|
+
f[m] = np.where(f[m] > +0.5, f[m] -1, f[m])
|
|
162
|
+
if (f[m] > -0.00001 and f[m] < 0.00001): f[m] = 0.0
|
|
163
|
+
if (f[m] > 0.49999 and f[m] < 0.50001): f[m] = 0.5
|
|
164
|
+
if (f[m] > -0.50001 and f[m] < -0.49999): f[m] = -0.5
|
|
165
|
+
#------------------------------------------------------------
|
|
166
|
+
temp_k = []; temp_k.append(f[0]); temp_k.append(f[1])
|
|
167
|
+
Kpoints_f.append(temp_k)
|
|
168
|
+
print(temp_k)
|
|
169
|
+
#---------------------------
|
|
170
|
+
Kpoints_f_cart = []
|
|
171
|
+
#------------------
|
|
172
|
+
for i in range(len(Kpoints_f)):
|
|
173
|
+
#--------------------
|
|
174
|
+
coord_x = (Kpoints_f[i][0]*S1b[0]) + (Kpoints_f[i][1]*S2b[0])
|
|
175
|
+
coord_y = (Kpoints_f[i][0]*S1b[1]) + (Kpoints_f[i][1]*S2b[1])
|
|
176
|
+
temp_k = []; temp_k.append(coord_x); temp_k.append(coord_y)
|
|
177
|
+
#------------------------------------------------------------
|
|
178
|
+
Kpoints_f_cart.append(temp_k)
|
|
179
|
+
#--------------------------------
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
#=======================================================
|
|
185
|
+
# Plot (k-points projected) ============================
|
|
186
|
+
#=======================================================
|
|
187
|
+
#----------------------------------------------------------------------------------------------------------------------------------
|
|
188
|
+
for i in range(len(Kpoints_f_cart)): plt.scatter(Kpoints_f_cart[i][0], Kpoints_f_cart[i][1], c='black', marker='o', s=60, zorder=1)
|
|
189
|
+
#----------------------------------------------------------------------------------------------------------------------------------
|
|
190
|
+
plt.title('k-points projection')
|
|
191
|
+
plt.xlabel('$k_x$')
|
|
192
|
+
plt.ylabel('$k_y$')
|
|
193
|
+
#----------------------
|
|
194
|
+
x_min = -1.5
|
|
195
|
+
x_max = +0.75
|
|
196
|
+
y_min = -0.4
|
|
197
|
+
y_max = +0.25
|
|
198
|
+
plt.xlim((x_min, x_max))
|
|
199
|
+
plt.ylim((y_min, y_max))
|
|
200
|
+
#----------------------------------------------------
|
|
201
|
+
# Ajustar aspect ratio para refletir proporções reais
|
|
202
|
+
#----------------------------------------------------
|
|
203
|
+
ax.set_box_aspect(abs((y_max - y_min) / (x_max - x_min))) # Razão dos comprimentos dos eixos
|
|
204
|
+
#------------------------------------------------------------------------------------
|
|
205
|
+
plt.savefig('k-points_projected.png', dpi = 600, bbox_inches='tight', pad_inches = 0)
|
|
206
|
+
plt.savefig('k-points_projected.eps', dpi = 600, bbox_inches='tight', pad_inches = 0)
|
|
207
|
+
#------------------------------------------------------------------------------------
|
|
208
|
+
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# VASProcar Copyright (C) 2023
|
|
2
|
+
# GNU GPL-3.0 license
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#=============================================================================
|
|
6
|
+
# Conversão do arquivo POSCAR/CONTCAR para coordenadas cartesianas/Diretas ===
|
|
7
|
+
#=============================================================================
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
#================
|
|
11
|
+
name_i = 'POSCAR_124atoms_-0.1246_0.1986_1.133_C4+Cr2S2Br2Cr2S2Br2_f84c69e814a8448c+0046.vasp'
|
|
12
|
+
#---------------------------
|
|
13
|
+
poscar_i = open(name_i, "r")
|
|
14
|
+
for i in range(8): VTemp = poscar_i.readline()
|
|
15
|
+
poscar_i.close()
|
|
16
|
+
#------------------
|
|
17
|
+
string = str(VTemp)
|
|
18
|
+
if (string[0] == 'c' or string[0] == 'C'): name_o = name_i.replace('.vasp','') + '_Direct.vasp'
|
|
19
|
+
if (string[0] == 'd' or string[0] == 'D'): name_o = name_i.replace('.vasp','') + '_Cartesian.vasp'
|
|
20
|
+
#------------------------------------------------------------------------
|
|
21
|
+
poscar_i = open(name_i, "r")
|
|
22
|
+
poscar_o = open(name_o, "w")
|
|
23
|
+
VTemp = poscar_i.readline(); poscar_o.write(f'{VTemp}')
|
|
24
|
+
VTemp = poscar_i.readline(); poscar_o.write(f'{VTemp}'); param = float(VTemp)
|
|
25
|
+
VTemp = poscar_i.readline(); poscar_o.write(f'{VTemp}'); VTemp = VTemp.split(); A = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
|
|
26
|
+
VTemp = poscar_i.readline(); poscar_o.write(f'{VTemp}'); VTemp = VTemp.split(); B = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
|
|
27
|
+
VTemp = poscar_i.readline(); poscar_o.write(f'{VTemp}'); VTemp = VTemp.split(); C = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
|
|
28
|
+
VTemp = poscar_i.readline(); poscar_o.write(f'{VTemp}')
|
|
29
|
+
VTemp = poscar_i.readline(); poscar_o.write(f'{VTemp}')
|
|
30
|
+
#-----------------------------------------------------
|
|
31
|
+
nions = 0; VTemp = VTemp.split()
|
|
32
|
+
for k in range(len(VTemp)): nions += int(VTemp[k])
|
|
33
|
+
#-------------------------------------------------
|
|
34
|
+
VTemp = poscar_i.readline()
|
|
35
|
+
#--------------------------
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
#=========================================
|
|
39
|
+
if (string[0] == 'd' or string[0] == 'D'):
|
|
40
|
+
#---------------------------
|
|
41
|
+
poscar_o.write(f'Cartesian \n')
|
|
42
|
+
#-----------------------------------------------------------
|
|
43
|
+
# Escrita das coordenadas cartesianas ----------------------
|
|
44
|
+
#-----------------------------------------------------------
|
|
45
|
+
for k in range(nions):
|
|
46
|
+
VTemp = poscar_i.readline().split()
|
|
47
|
+
k1 = float(VTemp[0]); k2 = float(VTemp[1]); k3 = float(VTemp[2])
|
|
48
|
+
coord_x = ((k1*A[0]) + (k2*B[0]) + (k3*C[0]))
|
|
49
|
+
coord_y = ((k1*A[1]) + (k2*B[1]) + (k3*C[1]))
|
|
50
|
+
coord_z = ((k1*A[2]) + (k2*B[2]) + (k3*C[2]))
|
|
51
|
+
poscar_o.write(f'{coord_x} {coord_y} {coord_z} \n')
|
|
52
|
+
#--------------------------------------------------
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
#=========================================
|
|
56
|
+
if (string[0] == 'c' or string[0] == 'C'):
|
|
57
|
+
#---------------------------
|
|
58
|
+
poscar_o.write(f'Direct \n')
|
|
59
|
+
#--------------------------------------------------
|
|
60
|
+
A1 = np.array([A[0]*param, A[1]*param, A[2]*param])
|
|
61
|
+
A2 = np.array([B[0]*param, B[1]*param, B[2]*param])
|
|
62
|
+
A3 = np.array([C[0]*param, C[1]*param, C[2]*param])
|
|
63
|
+
#----------------------------------
|
|
64
|
+
# Definir a matriz de transformação
|
|
65
|
+
T = np.linalg.inv(np.array([A1, A2, A3]).T)
|
|
66
|
+
#---------------------------------------
|
|
67
|
+
for k in range(nions):
|
|
68
|
+
VTemp = poscar_i.readline().split()
|
|
69
|
+
x = float(VTemp[0])
|
|
70
|
+
y = float(VTemp[1])
|
|
71
|
+
z = float(VTemp[2])
|
|
72
|
+
r = np.array([x, y, z]) # posição cartesiana dos átomos
|
|
73
|
+
#-----------------------------------------------------------
|
|
74
|
+
# Escrita das coordenadas Diretas --------------------------
|
|
75
|
+
#-----------------------------------------------------------
|
|
76
|
+
f = np.dot(T, r)
|
|
77
|
+
f = np.where(f < 0, f + 1, f)
|
|
78
|
+
#------------------------------------
|
|
79
|
+
if ((f[0] >= 0.0) and (f[0] <= 1.0)):
|
|
80
|
+
if ((f[1] >= 0.0) and (f[1] <= 1.0)):
|
|
81
|
+
if ((f[2] >= 0.0) and (f[2] <= 1.0)):
|
|
82
|
+
for m in range(3):
|
|
83
|
+
f[m] = round(f[m], 6)
|
|
84
|
+
if (f[m] > 0.99999 or f[m] < 0.00001):
|
|
85
|
+
f[m] = 0.0
|
|
86
|
+
poscar_o.write(f'{f[0]} {f[1]} {f[2]} {l} \n')
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
#---------------
|
|
90
|
+
poscar_i.close()
|
|
91
|
+
poscar_o.close()
|
|
92
|
+
#---------------
|
|
93
|
+
|
|
94
|
+
"""
|
|
95
|
+
#=======================================================================
|
|
96
|
+
|
|
97
|
+
#-----------------------------------------------------------------
|
|
98
|
+
print(" ")
|
|
99
|
+
print("======================= Completed =======================")
|
|
100
|
+
print(" ")
|
|
101
|
+
#-----------------------------------------------------------------
|
|
102
|
+
|
|
103
|
+
#=======================================================================
|
|
104
|
+
# User option to perform another calculation or finished the code ======
|
|
105
|
+
#=======================================================================
|
|
106
|
+
if (len(inputs) == 0):
|
|
107
|
+
execute_python_file(filename = '_loop.py')
|
|
108
|
+
"""
|