SAMBA-ilum 1.0.0.475__tar.gz → 1.0.0.477__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.
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/PKG-INFO +1 -1
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/SAMBA_ilum.egg-info/PKG-INFO +1 -1
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/SAMBA_ilum.egg-info/SOURCES.txt +1 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/__main__.py +9 -1
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/HeteroStructure_Generator.py +3 -3
- samba_ilum-1.0.0.477/samba_ilum/src/rotation_axis_check.py +123 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/setup.py +1 -1
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/LICENSE.txt +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/README.md +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/SAMBA_ilum.egg-info/dependency_links.txt +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/SAMBA_ilum.egg-info/entry_points.txt +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/SAMBA_ilum.egg-info/requires.txt +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/SAMBA_ilum.egg-info/top_level.txt +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/__init__.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/BZ_2D.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/HeteroStructure_Generator_OLD.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_a-scan +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_bader +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_bader.SO +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_bands +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_bands.SO +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_dos +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_dos.SO +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_relax +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_scf +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_scf.SO +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_xy-scan +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_xyz-scan +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/INCAR_z-scan +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/SAMBA_HeteroStructure.input +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/SAMBA_WorkFlow.input +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.bands +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.chgcar +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.dos +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.location +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.locpot +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.orbitals +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.spin +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/vdw_kernel.bindat +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/_info_pseudo.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/a-scan.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/a-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/bader +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/bader_poscar.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/bader_update.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/charge_transfer.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/chgsum.pl +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/contcar_update.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/data-base_json.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/data-base_union.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/energy_scan.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/hubbard_correction.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/job.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/kpoints.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/lattice_plot3d.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/make_files.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/output.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/potcar.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/vdW_DF.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/xy-scan.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/xy-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/xyz-scan.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/xyz-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/z-scan.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/z-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/setup.cfg +0 -0
|
@@ -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.
|
|
19
|
+
version = '1.0.0.477'
|
|
20
20
|
|
|
21
21
|
print(" ")
|
|
22
22
|
print("=============================================================")
|
|
@@ -121,6 +121,14 @@ if (tarefa == 1):
|
|
|
121
121
|
#------------------------------------------------------------
|
|
122
122
|
|
|
123
123
|
|
|
124
|
+
#=======================================================
|
|
125
|
+
# Checagem da estrutura dos arquivos POSCAR, com relação
|
|
126
|
+
# ao ângulo de rotação em relação ao eixo-z ============
|
|
127
|
+
#=======================================================
|
|
128
|
+
exec(open(dir_codes + '/rotation_axis_check.py').read())
|
|
129
|
+
#=======================================================
|
|
130
|
+
|
|
131
|
+
|
|
124
132
|
if (loop_ht == 1):
|
|
125
133
|
#--------------
|
|
126
134
|
n_Lattice = 2
|
|
@@ -37,9 +37,9 @@ if (crit_area <= 0.0): crit_area = 0.01
|
|
|
37
37
|
#--------------------------------------------------
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
# Rotulo temporário para os ions inequivalentes da célula unitária
|
|
42
|
-
|
|
40
|
+
#-----------------------------------------------------------------------------------------------------------------------------------------------
|
|
41
|
+
# Rotulo temporário para os ions inequivalentes da célula unitária -----------------------------------------------------------------------------
|
|
42
|
+
#-----------------------------------------------------------------------------------------------------------------------------------------------
|
|
43
43
|
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
44
|
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
45
|
#------------------------------------------------------
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# SAMBA_ilum Copyright (C) 2024 - Closed source
|
|
2
|
+
|
|
3
|
+
files0 = [name for name in os.listdir(temp_dir) if os.path.isfile(os.path.join(temp_dir, name))] # Listando os arquivos dentro do diretório "dir_poscar"
|
|
4
|
+
|
|
5
|
+
#------------
|
|
6
|
+
stop_code = 0
|
|
7
|
+
#------------
|
|
8
|
+
for name in files0:
|
|
9
|
+
Lattice = dir_files + '/' + dir_poscar + '/' + name
|
|
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 + '/' + dir_poscar + '/' , 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
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/HeteroStructure_Generator_OLD.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{samba_ilum-1.0.0.475 → samba_ilum-1.0.0.477}/samba_ilum/src/INPUTS/SAMBA_HeteroStructure.input
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|