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.

Files changed (125) hide show
  1. {vasprocar-1.1.19.142/vasprocar.egg-info → vasprocar-1.1.19.144}/PKG-INFO +1 -1
  2. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/setup.py +1 -1
  3. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/__main__.py +1 -1
  4. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_nscf.py +1 -0
  5. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_pdos_ldos.py +1 -1
  6. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_settings.py +14 -1
  7. vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/Gerador_Slab.py +22 -0
  8. vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/Projection_BZs.py +161 -0
  9. vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/Projection_kpoints.py +208 -0
  10. vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/VASProcar_Direto_Cartesiano.py +108 -0
  11. vasprocar-1.1.19.144/vasprocar/src/etc/codes_append/_TESTE_projecao_localizacao_contour_video.py +565 -0
  12. vasprocar-1.1.19.144/vasprocar/src/plot/_TESTE_plot_projecao_localizacao_contour_video.py +414 -0
  13. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_contour_video.py +1 -1
  14. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144/vasprocar.egg-info}/PKG-INFO +1 -1
  15. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/SOURCES.txt +6 -0
  16. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/LICENSE.txt +0 -0
  17. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/README.md +0 -0
  18. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/setup.cfg +0 -0
  19. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/__init__.py +0 -0
  20. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_info.py +0 -0
  21. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_info_b.py +0 -0
  22. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_label.py +0 -0
  23. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/_var_kpoints.py +0 -0
  24. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/angular_momentum_plot/plot_projecao_angular_momentum.py +0 -0
  25. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/angular_momentum_plot/plot_projecao_angular_momentum_grace.py +0 -0
  26. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/contribuicao.py +0 -0
  27. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos.py +0 -0
  28. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/Grace/plot_dos_pdos_ldos_[polarizado].py +0 -0
  29. {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
  30. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/plot_dos_pdos_ldos.py +0 -0
  31. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/dos_plot/plot_dos_pdos_ldos_[polarizado].py +0 -0
  32. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/kpoints_2D_3D.py +0 -0
  33. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_QE/projecao_angular_momentum.py +0 -0
  34. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_info.py +0 -0
  35. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_info_b.py +0 -0
  36. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_label.py +0 -0
  37. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_nscf.py +0 -0
  38. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/_var_kpoints.py +0 -0
  39. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/chgcar.py +0 -0
  40. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/contcar_info.py +0 -0
  41. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/contribuicao.py +0 -0
  42. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/dielectric_function.py +0 -0
  43. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/dos_pdos_ldos.py +0 -0
  44. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/dos_pdos_ldos_[polarizado].py +0 -0
  45. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/kpoints_2D_3D.py +0 -0
  46. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/parchg.py +0 -0
  47. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/poscar_replace.py +0 -0
  48. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/postar_combination.py +0 -0
  49. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/potencial.py +0 -0
  50. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_VASP/wave_function.py +0 -0
  51. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_dft.py +0 -0
  52. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_dft2kp.py +0 -0
  53. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_loop.py +0 -0
  54. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/_update.py +0 -0
  55. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/bandas_2D.py +0 -0
  56. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/bandas_3D.py +0 -0
  57. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/bandas_4D.py +0 -0
  58. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/correction_file.py +0 -0
  59. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/etc/BibTeX.dat +0 -0
  60. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/etc/DOI.png +0 -0
  61. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/etc/Greek_alphabet.jpg +0 -0
  62. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/fermi_surface.py +0 -0
  63. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.bands +0 -0
  64. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.chgcar +0 -0
  65. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.dos +0 -0
  66. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.fermi_surface +0 -0
  67. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.location +0 -0
  68. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.locpot +0 -0
  69. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.orbitals +0 -0
  70. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.spin +0 -0
  71. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/input.vasprocar.spin_video +0 -0
  72. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/inputs.py +0 -0
  73. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/inputs/inputs_files.py +0 -0
  74. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/level_countour.py +0 -0
  75. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/orbital_texture.py +0 -0
  76. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/orbital_texture_vector.py +0 -0
  77. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_bandas_2D.py +0 -0
  78. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_chgcar.py +0 -0
  79. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dielectric_function.py +0 -0
  80. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos.py +0 -0
  81. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos_[polarizado].py +0 -0
  82. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_dos_pdos_ldos_[polarizado_delta].py +0 -0
  83. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_parchg.py +0 -0
  84. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_potencial.py +0 -0
  85. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_localizacao.py +0 -0
  86. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_orbitais.py +0 -0
  87. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_psi.py +0 -0
  88. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_projecao_spin.py +0 -0
  89. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/Grace/plot_wave_function.py +0 -0
  90. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/_plot_settings.py +0 -0
  91. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_2D.py +0 -0
  92. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_3D_matplotlib.py +0 -0
  93. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_3D_plotly.py +0 -0
  94. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_bandas_4D_plotly.py +0 -0
  95. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_chgcar.py +0 -0
  96. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_dielectric_function.py +0 -0
  97. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_dos_pdos_ldos.py +0 -0
  98. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_dos_pdos_ldos_[polarizado].py +0 -0
  99. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_fermi_surface.py +0 -0
  100. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_level_countour.py +0 -0
  101. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_orbital_texture.py +0 -0
  102. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_orbital_texture_vector.py +0 -0
  103. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_parchg.py +0 -0
  104. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_potencial.py +0 -0
  105. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_localizacao.py +0 -0
  106. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_orbitais.py +0 -0
  107. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_psi.py +0 -0
  108. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_projecao_spin.py +0 -0
  109. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_2D.py +0 -0
  110. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_3D.py +0 -0
  111. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_4D.py +0 -0
  112. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_4D_[iso].py +0 -0
  113. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_spin_texture_contour.py +0 -0
  114. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/plot/plot_wave_function.py +0 -0
  115. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_localizacao.py +0 -0
  116. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_orbitais.py +0 -0
  117. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_psi.py +0 -0
  118. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/projecao_spin.py +0 -0
  119. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/spin_texture.py +0 -0
  120. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/spin_texture_contour.py +0 -0
  121. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar/src/spin_texture_contour_video.py +0 -0
  122. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/dependency_links.txt +0 -0
  123. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/entry_points.txt +0 -0
  124. {vasprocar-1.1.19.142 → vasprocar-1.1.19.144}/vasprocar.egg-info/requires.txt +0 -0
  125. {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.142
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.142",
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.142'
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}; ; save_pdf = {save_pdf}; save_svg = {save_svg}; save_eps = {save_eps} # Plotting output format, onde [0] = NO e [1] = YES \n')
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
+ """