SAMBA-ilum 1.0.0.475__tar.gz → 1.0.0.476__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/PKG-INFO +1 -1
  2. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/SAMBA_ilum.egg-info/PKG-INFO +1 -1
  3. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/SAMBA_ilum.egg-info/SOURCES.txt +1 -0
  4. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/__main__.py +1 -1
  5. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/HeteroStructure_Generator.py +10 -3
  6. samba_ilum-1.0.0.476/samba_ilum/src/rotation_axis_check.py +123 -0
  7. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/setup.py +1 -1
  8. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/LICENSE.txt +0 -0
  9. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/README.md +0 -0
  10. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/SAMBA_ilum.egg-info/dependency_links.txt +0 -0
  11. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/SAMBA_ilum.egg-info/entry_points.txt +0 -0
  12. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/SAMBA_ilum.egg-info/requires.txt +0 -0
  13. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/SAMBA_ilum.egg-info/top_level.txt +0 -0
  14. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/__init__.py +0 -0
  15. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/BZ_2D.py +0 -0
  16. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/HeteroStructure_Generator_OLD.py +0 -0
  17. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_a-scan +0 -0
  18. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_bader +0 -0
  19. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_bader.SO +0 -0
  20. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_bands +0 -0
  21. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_bands.SO +0 -0
  22. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_dos +0 -0
  23. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_dos.SO +0 -0
  24. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_relax +0 -0
  25. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_scf +0 -0
  26. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_scf.SO +0 -0
  27. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_xy-scan +0 -0
  28. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_xyz-scan +0 -0
  29. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/INCAR_z-scan +0 -0
  30. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/SAMBA_HeteroStructure.input +0 -0
  31. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/SAMBA_WorkFlow.input +0 -0
  32. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.bands +0 -0
  33. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.chgcar +0 -0
  34. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.dos +0 -0
  35. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.location +0 -0
  36. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.locpot +0 -0
  37. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.orbitals +0 -0
  38. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.spin +0 -0
  39. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/INPUTS/vdw_kernel.bindat +0 -0
  40. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/_info_pseudo.py +0 -0
  41. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/a-scan.py +0 -0
  42. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/a-scan_analysis.py +0 -0
  43. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/bader +0 -0
  44. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/bader_poscar.py +0 -0
  45. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/bader_update.py +0 -0
  46. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/charge_transfer.py +0 -0
  47. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/chgsum.pl +0 -0
  48. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/contcar_update.py +0 -0
  49. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/data-base_json.py +0 -0
  50. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/data-base_union.py +0 -0
  51. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/energy_scan.py +0 -0
  52. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/hubbard_correction.py +0 -0
  53. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/job.py +0 -0
  54. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/kpoints.py +0 -0
  55. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/lattice_plot3d.py +0 -0
  56. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/make_files.py +0 -0
  57. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/output.py +0 -0
  58. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/potcar.py +0 -0
  59. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/vdW_DF.py +0 -0
  60. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/xy-scan.py +0 -0
  61. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/xy-scan_analysis.py +0 -0
  62. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/xyz-scan.py +0 -0
  63. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/xyz-scan_analysis.py +0 -0
  64. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/z-scan.py +0 -0
  65. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/samba_ilum/src/z-scan_analysis.py +0 -0
  66. {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.476}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SAMBA_ilum
3
- Version: 1.0.0.475
3
+ Version: 1.0.0.476
4
4
  Summary: ...
5
5
  Author: Augusto de Lelis Araujo
6
6
  Author-email: augusto-lelis@outlook.com
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SAMBA_ilum
3
- Version: 1.0.0.475
3
+ Version: 1.0.0.476
4
4
  Summary: ...
5
5
  Author: Augusto de Lelis Araujo
6
6
  Author-email: augusto-lelis@outlook.com
@@ -32,6 +32,7 @@ samba_ilum/src/lattice_plot3d.py
32
32
  samba_ilum/src/make_files.py
33
33
  samba_ilum/src/output.py
34
34
  samba_ilum/src/potcar.py
35
+ samba_ilum/src/rotation_axis_check.py
35
36
  samba_ilum/src/vdW_DF.py
36
37
  samba_ilum/src/xy-scan.py
37
38
  samba_ilum/src/xy-scan_analysis.py
@@ -16,7 +16,7 @@ dir_samba = os.path.dirname(os.path.realpath(__file__))
16
16
  print(f'{dir_samba}')
17
17
  #--------------------
18
18
 
19
- version = '1.0.0.475'
19
+ version = '1.0.0.476'
20
20
 
21
21
  print(" ")
22
22
  print("=============================================================")
@@ -22,6 +22,13 @@ import sys
22
22
  import os
23
23
 
24
24
 
25
+ #=======================================================
26
+ # Checagem da estrutura dos arquivos POSCAR, com relação
27
+ # ao ângulo de rotação em relação ao eixo-z ============
28
+ #=======================================================
29
+ exec(open(dir_codes + '/rotation_axis_check.py').read())
30
+
31
+
25
32
  #---------------------------------------------
26
33
  crit_mod_vector = float(crit_mod_vector)
27
34
  crit_distorc_lattice = float(crit_distorc_lattice)
@@ -37,9 +44,9 @@ if (crit_area <= 0.0): crit_area = 0.01
37
44
  #--------------------------------------------------
38
45
 
39
46
 
40
- #----------------------------------------------------------------------------------------------------------------------------------------------
41
- # Rotulo temporário para os ions inequivalentes da célula unitária ----------------------------------------------------------------------------
42
- #----------------------------------------------------------------------------------------------------------------------------------------------
47
+ #-----------------------------------------------------------------------------------------------------------------------------------------------
48
+ # Rotulo temporário para os ions inequivalentes da célula unitária -----------------------------------------------------------------------------
49
+ #-----------------------------------------------------------------------------------------------------------------------------------------------
43
50
  letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Z', 'Y', 'W']
44
51
  alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Z', 'Y', 'W']
45
52
  #------------------------------------------------------
@@ -0,0 +1,123 @@
1
+ # SAMBA_ilum Copyright (C) 2024 - Closed source
2
+
3
+
4
+ #------------
5
+ stop_code = 0
6
+ #------------
7
+ for k in range(n_Lattice):
8
+ name = vLattice[k]
9
+ Lattice = dir_files + '/' + vLattice[k]
10
+
11
+ try:
12
+ estrutura = Structure.from_file(Lattice)
13
+ sga = SpacegroupAnalyzer(estrutura, symprec=1e-3)
14
+ operacoes_0 = sga.get_symmetry_operations()
15
+ operacoes_1 = sga.get_symmetry_operations(cartesian=True)
16
+
17
+ angulos_z = []
18
+ angulos_z_na_origem = []
19
+ # =========================================================
20
+ # Loop 1: Encontra todos os ângulos de rotação em Z
21
+ for op in operacoes_0:
22
+ R = op.rotation_matrix
23
+ if int(round(np.linalg.det(R))) != 1: continue
24
+ z = np.array([0, 0, 1])
25
+ if np.allclose(R @ z, z, atol=1e-3):
26
+ Rxy = R[:2, :2]
27
+ trace = np.trace(Rxy)
28
+ cos_theta = np.clip(trace / 2.0, -1.0, 1.0)
29
+ angle = np.arccos(cos_theta)
30
+ angle_deg = round(np.degrees(angle), 4)
31
+ if 0.1 < angle_deg < 360.0 and angle_deg not in angulos_z:
32
+ angulos_z.append(angle_deg)
33
+ # =========================================================
34
+ # Loop 2: Encontra rotações em Z que fixam a origem
35
+ z = np.array([0, 0, 1])
36
+ for op in operacoes_1:
37
+ R = op.rotation_matrix
38
+ if not np.allclose(op.translation_vector, 0, atol=1e-3): continue
39
+ if int(round(np.linalg.det(R))) != 1: continue
40
+ if np.allclose(R @ z, z, atol=1e-3):
41
+ trace_3d = np.trace(R)
42
+ cos_theta_3d = np.clip((trace_3d - 1.0) / 2.0, -1.0, 1.0)
43
+ angle = np.arccos(cos_theta_3d)
44
+ angle_deg = round(np.degrees(angle), 4)
45
+ if 0.1 < angle_deg < 360.0 and angle_deg not in angulos_z_na_origem:
46
+ angulos_z_na_origem.append(angle_deg)
47
+ # =========================================================
48
+
49
+ temp_name = name.replace('_',' ').split()
50
+ menor_0 = min(angulos_z) if angulos_z else 0.0
51
+ menor_1 = min(angulos_z_na_origem) if angulos_z_na_origem else 0.0
52
+
53
+ # Se houver diferença, calcula, corrige e salva o new file.
54
+ if (menor_0 != menor_1 and menor_0 != 0.0):
55
+ stop_code += 1
56
+
57
+ if (stop_code == 1):
58
+ print(" ")
59
+ print(f"-------------------------------------------------------------")
60
+
61
+ print(f"POSCAR file: {name}")
62
+ print(f"Discrepância encontrada em relação ao ângulo de rotação em torno do eixo Z")
63
+ print(f"Menor ângulo geral: {int(menor_0)}°, Menor ângulo na origem: {int(menor_1)}°")
64
+
65
+ op_alvo = None
66
+ for op_cart in operacoes_1:
67
+ R_cart = op_cart.rotation_matrix
68
+ if int(round(np.linalg.det(R_cart))) != 1 or not np.allclose(R_cart @ z, z, atol=1e-3):
69
+ continue
70
+ trace_3d = np.trace(R_cart)
71
+ cos_theta_3d = np.clip((trace_3d - 1.0) / 2.0, -1.0, 1.0)
72
+ if np.isclose(np.degrees(np.arccos(cos_theta_3d)), menor_0, atol=1e-4):
73
+ op_alvo = op_cart
74
+ break
75
+
76
+ if op_alvo:
77
+ R = op_alvo.rotation_matrix
78
+ t = op_alvo.translation_vector
79
+ celula = estrutura.lattice.matrix.T
80
+
81
+ try:
82
+ M = R - np.eye(3)
83
+ p_cart, *_ = np.linalg.lstsq(M, -t, rcond=None)
84
+ p_direto = np.linalg.solve(celula, p_cart)
85
+
86
+ deslocamento_frac = np.array([-p_direto[0], -p_direto[1], 0.0])
87
+ print(f"Coordenadas diretas do eixo de rotação apropriado: ({p_direto[0]:.9f}, {p_direto[1]:.9f})")
88
+
89
+ estrutura_corrigida = estrutura.copy()
90
+ indices_dos_sites = list(range(len(estrutura_corrigida)))
91
+ estrutura_corrigida.translate_sites(indices_dos_sites, deslocamento_frac, frac_coords=True)
92
+
93
+ name_base, extensao = os.path.splitext(name)
94
+ if not extensao: extensao = '.vasp'
95
+ new_name_file = f"{name_base}_fixed{extensao}"
96
+ Lattice_new_file = os.path.join(dir_files, new_name_file)
97
+
98
+ estrutura_corrigida.to(fmt="poscar", filename=Lattice_new_file)
99
+ print(f"Estrutura corrigida salva como '{new_name_file}' no diretório Structures")
100
+ print(f"-------------------------------------------------------------")
101
+
102
+ except np.linalg.LinAlgError:
103
+ print("ERRO: Não foi possível calcular o deslocamento devido a um erro numérico.")
104
+
105
+ except Exception as e:
106
+ print(f"ERRO CRÍTICO ao processar o file {name}: {e}")
107
+
108
+ if (stop_code == 1):
109
+ print(" ")
110
+ print(f"Remova a versão anterior do file POSCAR corrigido no diretório Structures")
111
+ print(f"Faça um Backup da versão corrigida do file POSCAR para evitar ambiguidades em relação ao cálculo do xy-scan")
112
+ print(f"Após isso, reinicie a execução do código")
113
+ confirmacao = input (" "); confirmacao = str(confirmacao)
114
+ sys.exit()
115
+
116
+ if (stop_code > 1):
117
+ print(" ")
118
+ print(f"Remova a versão anterior dos files POSCAR corrigidos no diretório Structures")
119
+ print(f"Faça um Backup da versão corrigida dos files POSCAR para evitar ambiguidades em relação ao cálculo do xy-scan")
120
+ print(f"Após isso, reinicie a execução do código")
121
+ confirmacao = input (" "); confirmacao = str(confirmacao)
122
+ sys.exit()
123
+
@@ -6,7 +6,7 @@ import json
6
6
 
7
7
  setup(
8
8
  name = "SAMBA_ilum",
9
- version = "1.0.0.475",
9
+ version = "1.0.0.476",
10
10
  entry_points={'console_scripts': ['samba_ilum = samba_ilum:main']},
11
11
  description = "...",
12
12
  author = "Augusto de Lelis Araujo",
File without changes
File without changes