SAMBA-ilum 1.0.0.398__tar.gz → 1.0.0.399__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 (68) hide show
  1. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/PKG-INFO +1 -1
  2. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/PKG-INFO +1 -1
  3. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/SOURCES.txt +2 -1
  4. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/__main__.py +1 -1
  5. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/SAMBA_WorkFlow.input +3 -3
  6. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/job.py +1 -1
  7. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/make_files.py +2 -2
  8. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/xy-scan.py +2 -2
  9. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/xy-scan_analysis.py +5 -3
  10. SAMBA_ilum-1.0.0.399/samba_ilum/src/xyz-scan.py +300 -0
  11. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/setup.py +1 -1
  12. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/LICENSE.txt +0 -0
  13. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/README.md +0 -0
  14. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/dependency_links.txt +0 -0
  15. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/entry_points.txt +0 -0
  16. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/requires.txt +0 -0
  17. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/top_level.txt +0 -0
  18. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/__init__.py +0 -0
  19. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/HeteroStructure_Generator.py +0 -0
  20. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_a-scan +0 -0
  21. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bader +0 -0
  22. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bader.SO +0 -0
  23. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bands +0 -0
  24. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bands.SO +0 -0
  25. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_dos +0 -0
  26. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_dos.SO +0 -0
  27. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_relax +0 -0
  28. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_scf +0 -0
  29. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_scf.SO +0 -0
  30. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_xy-scan +0 -0
  31. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_xyz-scan +0 -0
  32. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_z-scan +0 -0
  33. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/SAMBA_HeteroStructure.input +0 -0
  34. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.bands +0 -0
  35. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.chgcar +0 -0
  36. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.dos +0 -0
  37. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.location +0 -0
  38. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.locpot +0 -0
  39. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.orbitals +0 -0
  40. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.spin +0 -0
  41. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/vdw_kernel.bindat +0 -0
  42. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/a-scan.py +0 -0
  43. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/a-scan_analysis.py +0 -0
  44. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/job.py +0 -0
  45. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/z-scan.py +0 -0
  46. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/z-scan_analysis.py +0 -0
  47. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/_info_pseudo.py +0 -0
  48. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/a-scan.py +0 -0
  49. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/a-scan_analysis.py +0 -0
  50. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/bader +0 -0
  51. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/bader_poscar.py +0 -0
  52. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/bader_update.py +0 -0
  53. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/charge_transfer.py +0 -0
  54. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/chgsum.pl +0 -0
  55. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/contcar_update.py +0 -0
  56. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/data-base_json.py +0 -0
  57. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/data-base_union.py +0 -0
  58. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/energy_scan.py +0 -0
  59. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/kpoints.py +0 -0
  60. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/lattice_plot3d.py +0 -0
  61. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/output.py +0 -0
  62. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/potcar.py +0 -0
  63. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/vdW_DF.py +0 -0
  64. /SAMBA_ilum-1.0.0.398/samba_ilum/src/xyz-scan.py → /SAMBA_ilum-1.0.0.399/samba_ilum/src/xyz-scan - Copia.py +0 -0
  65. /SAMBA_ilum-1.0.0.398/samba_ilum/src/xyz-scan_analysis.py → /SAMBA_ilum-1.0.0.399/samba_ilum/src/xyz-scan_analysis - Copia.py +0 -0
  66. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/z-scan.py +0 -0
  67. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/z-scan_analysis.py +0 -0
  68. {SAMBA_ilum-1.0.0.398 → SAMBA_ilum-1.0.0.399}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SAMBA_ilum
3
- Version: 1.0.0.398
3
+ Version: 1.0.0.399
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.398
3
+ Version: 1.0.0.399
4
4
  Summary: ...
5
5
  Author: Augusto de Lelis Araujo
6
6
  Author-email: augusto-lelis@outlook.com
@@ -32,8 +32,9 @@ samba_ilum/src/potcar.py
32
32
  samba_ilum/src/vdW_DF.py
33
33
  samba_ilum/src/xy-scan.py
34
34
  samba_ilum/src/xy-scan_analysis.py
35
+ samba_ilum/src/xyz-scan - Copia.py
35
36
  samba_ilum/src/xyz-scan.py
36
- samba_ilum/src/xyz-scan_analysis.py
37
+ samba_ilum/src/xyz-scan_analysis - Copia.py
37
38
  samba_ilum/src/z-scan.py
38
39
  samba_ilum/src/z-scan_analysis.py
39
40
  samba_ilum/src/INPUTS/INCAR_a-scan
@@ -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.398'
19
+ version = '1.0.0.399'
20
20
 
21
21
  print(" ")
22
22
  print("=============================================================")
@@ -62,9 +62,9 @@ k_dens_z_scan = 6 # Cálculo do z-scan: nº de pontos-k por Å-1
62
62
  #============================
63
63
  # Parâmetros xy-scan ========
64
64
  #============================
65
- k_dens_xy_scan = 6 # Cálculo do xy-scan: nº de pontos-k por Å-1
66
- displacement_xy_A1 = [0.0, (1/8), (1/6), (1/4), (1/3), (1/2), (2/3), (3/4), (5/6), 1.0] # Deslocamentos na direção do vetor A1 (2º material)
67
- displacement_xy_A2 = [0.0, (1/8), (1/6), (1/4), (1/3), (1/2), (2/3), (3/4), (5/6), 1.0] # Deslocamentos na direção do vetor A2 (2º material)
65
+ k_dens_xy_scan = 6 # Cálculo do xy-scan: nº de pontos-k por Å-1
66
+ r_displacement_A1 = [0.0, (1/8), (1/6), (1/4), (1/3), (1/2), (2/3), (3/4), (5/6)] # Deslocamentos na direção do vetor A1 (2º material)
67
+ r_displacement_A2 = [0.0, (1/8), (1/6), (1/4), (1/3), (1/2), (2/3), (3/4), (5/6)] # Deslocamentos na direção do vetor A2 (2º material)
68
68
 
69
69
 
70
70
  #============================
@@ -63,7 +63,7 @@ job.write(f'# module load vasp-6.2.0-gcc-9.3.0-epqgvat \n')
63
63
  job.write(f'# vasp_std="{vasp_std_2}" \n')
64
64
  job.write(f'# vasp_ncl="{vasp_ncl_2}" \n')
65
65
  job.write(f' \n')
66
- job.write(f'ttasks=( "xyz-scan" "xy-scan" "z-scan" "a-scan" "relax" "scf" "bands" "dos" "bader" "scf.SO" "bands.SO" "dos.SO" "bader.SO" ) \n')
66
+ job.write(f'ttasks=( "xyz-scan" "z-scan" "xy-scan" "a-scan" "relax" "scf" "bands" "dos" "bader" "scf.SO" "bands.SO" "dos.SO" "bader.SO" ) \n')
67
67
  job.write(f' \n')
68
68
  job.write(f'#------------------------ \n')
69
69
  job.write(f'if [ ! -d "$dir0/completed" ]; then \n')
@@ -203,8 +203,8 @@ for i in range(len(files)):
203
203
  #===============================================================
204
204
  # Atualizando o arquivo xy-scan.py =============================
205
205
  #===============================================================
206
- content = content.replace('replace_displacement_xy_A1', str(displacement_xy_A1))
207
- content = content.replace('replace_displacement_xy_A2', str(displacement_xy_A2))
206
+ content = content.replace('replace_displacement_A1', str(r_displacement_A1))
207
+ content = content.replace('replace_displacement_A2', str(r_displacement_A2))
208
208
  if (task[j] == 'xyz-scan'):
209
209
  #===============================================================
210
210
  # Atualizando o arquivo xyz-scan.py ============================
@@ -19,10 +19,10 @@ TALVEZ CRIAR UMA FUNÇÃO COM ESTE PROPOSITO SEJA PRATICO PARA O CODIGO TODO
19
19
  #==========================================================================
20
20
 
21
21
  # Deslocamentos a ser aplicado no 2º material, referente ao vetor A1 da rede
22
- displacement_A1 = [0.0, 0.125, 0.16666666666666666, 0.25, 0.3333333333333333, 0.5, 0.6666666666666666, 0.75, 0.8333333333333334]
22
+ displacement_A1 = replace_displacement_A1
23
23
 
24
24
  # Deslocamentos a ser aplicado no 2º material, referente ao vetor A2 da rede
25
- displacement_A2 = [0.0, 0.125, 0.16666666666666666, 0.25, 0.3333333333333333, 0.5, 0.6666666666666666, 0.75, 0.8333333333333334]
25
+ displacement_A2 = replace_displacement_A2
26
26
 
27
27
 
28
28
  """
@@ -152,9 +152,9 @@ T = np.linalg.inv(np.array([a, b, c]).T) # Definindo a matriz de transformaçã
152
152
  #------------------------------------------------------------------------------
153
153
  r = np.array([delta_X, delta_Y, 0.0]) # Definindo o vetor posição cartesiano do átomo
154
154
  #------------------------------------
155
- f = np.dot(T, r) # Calculando a correspondenre posição em coordenadas fracionárias ??????????????????????? Esta correto ???????????????????????
156
- for m in range(3): ?????????? Ao invés de 'f' não deveria ser 'f[m]' ??????????
157
- f = np.where(f < 0, f + 1, f) ??????????????????????? Esta correto ???????????????????????
155
+ f = np.dot(T, r) # Calculando a correspondenre posição em coordenadas fracionárias # ??????????????????????? Esta correto ???????????????????????
156
+ for m in range(3): # ?????????? Ao invés de 'f' não deveria ser 'f[m]' ??????????
157
+ f = np.where(f < 0, f + 1, f) # ??????????????????????? Esta correto ???????????????????????
158
158
  f = np.where(f > 1, f - 1, f)
159
159
  #--------------------------------
160
160
  for m in range(3):
@@ -180,6 +180,8 @@ fig, ax = plt.subplots()
180
180
  cp = plt.contourf(x_grid, y_grid, e2_grid, levels = n_contour, cmap = 'jet', alpha = 1.0, antialiased = True)
181
181
  plt.quiver(0, 0, A1x, A1y, angles='xy', scale_units='xy', scale=1, color='black', label='A$_1$')
182
182
  plt.quiver(0, 0, A2x, A2y, angles='xy', scale_units='xy', scale=1, color='black', label='A$_2$')
183
+ plt.text((A1x/2), (A1y/2), "A$_1$", fontsize=10, color="black")
184
+ plt.text((A2x/2), (A2y/2), "A$_2$", fontsize=10, color="black")
183
185
  # plt.scatter(delta_X, delta_Y, c='black', marker='o', s=2)
184
186
  plt.scatter(x_min, y_min, c='black', marker='o', s=2)
185
187
  cbar = fig.colorbar(cp, orientation = 'vertical', shrink = 1.0)
@@ -0,0 +1,300 @@
1
+ # SAMBA_ilum Copyright (C) 2024 - Closed source
2
+
3
+
4
+ import numpy as np
5
+ import shutil
6
+ import os
7
+
8
+
9
+ # Atenção: ================================================================
10
+ # O código foi escrito pensado em uma Heteroestrutura com n_Lattice = 2 ===
11
+ # Para redes com n_Lattice > 2 testes e generalizações devem ser feitas ===
12
+ #==========================================================================
13
+
14
+ # Vacuo mínimo aplicado a Heteroestrutura
15
+ vacuo = replace_vacuo
16
+
17
+ # Separação no eixo-z a ser aplicada entre os materiais da Heteroestrutura
18
+ z_scan = replace_zscan
19
+
20
+ # Deslocamentos a ser aplicado no 2º material, referente ao vetor A1 da rede
21
+ displacement_A1 = replace_displacement_xyz_A1
22
+
23
+ # Deslocamentos a ser aplicado no 2º material, referente ao vetor A2 da rede
24
+ displacement_A2 = replace_displacement_xyz_A2
25
+
26
+
27
+ """
28
+ #----------------------------------------------------------------
29
+ # Testando a compatibilidade do arquivo POSCAR ------------------
30
+ #----------------------------------------------------------------
31
+ poscar = open('POSCAR', "r")
32
+ VTemp = poscar.readline().split()
33
+ poscar.close()
34
+ #-------------
35
+ crit = 0
36
+ for k in range(len(VTemp)):
37
+ try:
38
+ inteiro = int(VTemp[k])
39
+ if (k > 0 and k < 3): crit += 1
40
+ except ValueError:
41
+ if (k == 0): crit += 1
42
+ #------------------------------
43
+ if (len(VTemp) < 3 or crit < 3):
44
+ print(f' ')
45
+ print(f'========================================')
46
+ print(f'Verifique o arquivo POSCAR utilizado! ')
47
+ print(f'INCOMPATIBILIDADE com o código detectada')
48
+ print(f'========================================')
49
+ print(f' ')
50
+ #==========
51
+ sys.exit()
52
+ #=========
53
+ """
54
+
55
+
56
+ #==========================================================================
57
+ # Obtendo os vetores de rede da Heteroestrutura ===========================
58
+ #==========================================================================
59
+ contcar = open('CONTCAR', "r")
60
+ #-----------------------------
61
+ VTemp = contcar.readline()
62
+ VTemp = contcar.readline(); param = float(VTemp)
63
+ VTemp = contcar.readline().split(); A1x = float(VTemp[0]); A1y = float(VTemp[1]); A1z = float(VTemp[2])
64
+ VTemp = contcar.readline().split(); A2x = float(VTemp[0]); A2y = float(VTemp[1]); A2z = float(VTemp[2])
65
+ VTemp = contcar.readline().split(); A3x = float(VTemp[0]); A3y = float(VTemp[1]); A3z = float(VTemp[2])
66
+ #--------------
67
+ contcar.close()
68
+ #--------------
69
+
70
+
71
+ #==========================================================================
72
+ # Obtendo a altura no eixo-z dos diferentes materiais =====================
73
+ #==========================================================================
74
+ contcar = open('CONTCAR', "r")
75
+ #--------------------------------
76
+ VTemp = contcar.readline().split()
77
+ n_Lattice = len(VTemp[1].replace('+', ' ').split())
78
+ nions_Lattice = []
79
+ for m in range(n_Lattice): nions_Lattice.append(int(VTemp[m+2]))
80
+ #----------------------------------------------------------------
81
+ VTemp = contcar.readline(); param = float(VTemp)
82
+ #----------------------------------------------------
83
+ for k in range(3): VTemp = contcar.readline().split()
84
+ fator_Z = float(VTemp[2])*param
85
+ #--------------------------------------------
86
+ for k in range(3): VTemp = contcar.readline()
87
+ #--------------------------------------------------------------
88
+ minZ = [0]*n_Lattice; dZ = [0]*(n_Lattice +1); dZ_total = 0.0
89
+ #--------------------------------------------------------------
90
+ for k in range(n_Lattice):
91
+ vZ = []
92
+ for m in range(nions_Lattice[k]):
93
+ VTemp = contcar.readline().split()
94
+ vZ.append(float(VTemp[2]))
95
+ #-----------------------------
96
+ dZ[k+1] = (max(vZ) - min(vZ))
97
+ dZ_total += dZ[k+1]*fator_Z
98
+ minZ[k] = min(vZ)
99
+ #--------------------
100
+ contcar.close()
101
+ #--------------
102
+
103
+
104
+ #==========================================================================
105
+ # Deslocando os materiais para Z = 0.0 ====================================
106
+ #==========================================================================
107
+ contcar = open('CONTCAR', "r")
108
+ poscar_new = open('POSCAR_temp', "w")
109
+ #------------------------------------
110
+ for k in range(8):
111
+ VTemp = contcar.readline()
112
+ poscar_new.write(f'{VTemp}')
113
+ for k in range(n_Lattice):
114
+ for m in range(nions_Lattice[k]):
115
+ VTemp = contcar.readline().split()
116
+ temp_z = float(VTemp[2]) -minZ[k] +dZ[k]
117
+ if (temp_z < 0.0): temp_z = 0.0
118
+ poscar_new.write(f'{float(VTemp[0])} {float(VTemp[1])} {temp_z} \n')
119
+ #-------------
120
+ contcar.close()
121
+ poscar_new.close()
122
+ #-----------------
123
+
124
+
125
+ #===========================================================
126
+ # Convertendo as coordenadas para a forma cartesiana =======
127
+ #===========================================================
128
+ poscar = open('POSCAR_temp', "r")
129
+ poscar_new = open('POSCAR_cart', "w")
130
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
131
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
132
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}'); VTemp = VTemp.split(); A = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
133
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}'); VTemp = VTemp.split(); B = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
134
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}'); VTemp = VTemp.split(); C = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
135
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
136
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
137
+ VTemp = poscar.readline(); poscar_new.write(f'Cartesian \n')
138
+ #-----------------------------------------------------------
139
+ # Escrita das coordenadas cartesianas ----------------------
140
+ #-----------------------------------------------------------
141
+ for k in range(n_Lattice):
142
+ for m in range(nions_Lattice[k]):
143
+ VTemp = poscar.readline().split()
144
+ k1 = float(VTemp[0]); k2 = float(VTemp[1]); k3 = float(VTemp[2])
145
+ coord_x = ((k1*A[0]) + (k2*B[0]) + (k3*C[0]))
146
+ coord_y = ((k1*A[1]) + (k2*B[1]) + (k3*C[1]))
147
+ coord_z = ((k1*A[2]) + (k2*B[2]) + (k3*C[2]))
148
+ poscar_new.write(f'{coord_x:>28,.21f} {coord_y:>28,.21f} {coord_z:>28,.21f} \n')
149
+ #-------------
150
+ poscar.close()
151
+ poscar_new.close()
152
+ #-----------------
153
+
154
+
155
+ for z in range(len(z_scan)):
156
+ #-----------------
157
+ deltaZ = z_scan[z]
158
+ #-----------------
159
+
160
+ #===========================================================
161
+ # Gerando os arquivos POSCAR para cada separação em Z ======
162
+ #===========================================================
163
+ poscar = open('POSCAR_cart', "r")
164
+ poscar_new = open('POSCAR_deltaZ', "w")
165
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
166
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
167
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}'); VTemp = VTemp.split(); A = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
168
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}'); VTemp = VTemp.split(); B = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
169
+ VTemp = poscar.readline().split(); C = [float(VTemp[0]), float(VTemp[1]), float(VTemp[2])]
170
+ #---------------------------------------------
171
+ # temp_Z = (dZ_total + deltaZ_f + vacuo)/param
172
+ temp_Z = (dZ_total + deltaZ + vacuo)/param; A3z = temp_Z
173
+ poscar_new.write(f'{float(VTemp[0]):>28,.21f} {float(VTemp[1]):>28,.21f} {float(temp_Z):>28,.21f} \n')
174
+ #-----------------------------------------------------------------------------------------------------
175
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
176
+ VTemp = poscar.readline(); poscar_new.write(f'{VTemp}')
177
+ VTemp = poscar.readline(); poscar_new.write(f'Cartesian \n')
178
+ #------------------------------------------------------------
179
+ for k in range(n_Lattice):
180
+ for m in range(nions_Lattice[k]):
181
+ VTemp = poscar.readline().split()
182
+ coord_x = float(VTemp[0]); coord_y = float(VTemp[1]); coord_z = float(VTemp[2])
183
+ #-------------------------------------------------------------------------------
184
+ coord_z = coord_z + (vacuo/2)
185
+ if (k > 0): coord_z = coord_z + deltaZ
186
+ poscar_new.write(f'{coord_x:>28,.21f} {coord_y:>28,.21f} {coord_z:>28,.21f} \n')
187
+ #-------------------------------------------------------------------------------
188
+ #-------------
189
+ poscar.close()
190
+ poscar_new.close()
191
+ #-----------------
192
+
193
+
194
+ #==========================================================================
195
+ # Gerando e Armazenando os arquivos POSCAR deslocados no plano ============
196
+ #==========================================================================
197
+ os.mkdir('POSCAR_temp_cart')
198
+ #---------------------------
199
+ number = 0
200
+ #---------
201
+ for ii in displacement_A1:
202
+ for jj in displacement_A2:
203
+ #-----------------------------------------------
204
+ displacement_X = (ii*A1x*param) + (jj*A2x*param)
205
+ displacement_Y = (ii*A1y*param) + (jj*A2y*param)
206
+ #-----------------------------------------------
207
+ number += 1
208
+ #---------------------------------
209
+ poscar = open('POSCAR_deltaZ', "r")
210
+ poscar_new = open('POSCAR_temp_cart/POSCAR_' + str(number), "w")
211
+ #---------------------------------------------------------------------------
212
+ VTemp = poscar.readline()
213
+ poscar_new.write(f'{VTemp}')
214
+ VTemp = VTemp.split()
215
+ nions1 = int(VTemp[2]); nions2 = int(VTemp[3])
216
+ #----------------------------------------------
217
+ for k in range(7 + nions1):
218
+ VTemp = poscar.readline()
219
+ poscar_new.write(f'{VTemp}')
220
+ #-------------------------------
221
+ for k in range(nions2):
222
+ VTemp = poscar.readline().split()
223
+ poscar_new.write(f'{float(VTemp[0]) + displacement_X} {float(VTemp[1]) + displacement_Y} {VTemp[2]} \n')
224
+ #-----------------------------------------------------------------------------------------------------------
225
+ poscar.close()
226
+ poscar_new.close()
227
+ #-----------------
228
+
229
+
230
+ #=============================================================================
231
+ # Convertendo as coordenadas dos arquivos POSCAR de cartesiano para direto ===
232
+ #=============================================================================
233
+
234
+ #---------
235
+ number = 0
236
+ #----------
237
+ a = np.array([A1x*param, A1y*param, A1z*param])
238
+ b = np.array([A2x*param, A2y*param, A2z*param])
239
+ c = np.array([A3x*param, A3y*param, A3z*param])
240
+ T = np.linalg.inv(np.array([a, b, c]).T) # Definindo a matriz de transformação
241
+ #------------------------------------------------------------------------------
242
+
243
+ for ii in displacement_A1:
244
+ for jj in displacement_A2:
245
+ #----------
246
+ number += 1
247
+ #---------------------------------
248
+ dir_temp = str(ii) + '_' + str(jj) + '_' + str(deltaZ)
249
+ os.mkdir(dir_temp)
250
+ if os.path.isfile('vdw_kernel.bindat'): shutil.copyfile('vdw_kernel.bindat', dir_temp + '/vdw_kernel.bindat')
251
+ shutil.copyfile('contcar_update.py', dir_temp + '/contcar_update.py')
252
+ shutil.copyfile('energy_scan.py', dir_temp + '/energy_scan.py')
253
+ shutil.copyfile('KPOINTS', dir_temp + '/KPOINTS')
254
+ shutil.copyfile('POTCAR', dir_temp + '/POTCAR')
255
+ shutil.copyfile('INCAR', dir_temp + '/INCAR')
256
+ #-----------------------------------------------------------
257
+ poscar = open('POSCAR_temp_cart/POSCAR_' + str(number), "r")
258
+ poscar_new = open(dir_temp + '/POSCAR', "w")
259
+ #-------------------------------------------
260
+ for k in range(7):
261
+ VTemp = poscar.readline()
262
+ poscar_new.write(f'{VTemp}')
263
+ #------------------------
264
+ VTemp = poscar.readline()
265
+ poscar_new.write(f'Direct \n')
266
+
267
+ #----------------------------------------------------------------------------------------------------
268
+ # Convertendo as posições atomicas cartesianas de todos os átomos da Supercélula para a forma direta,
269
+ # e ajustando as posições dos átomos que se encontram fora da célula.
270
+ #--------------------------------------------------------------------
271
+ for k in range(nions1 + nions2):
272
+ VTemp = poscar.readline().split()
273
+ x = float(VTemp[0])
274
+ y = float(VTemp[1])
275
+ z = float(VTemp[2])
276
+ #----------------------
277
+ r = np.array([x, y, z]) # Definindo o vetor posição cartesiano do átomo
278
+ #----------------------
279
+ f = np.dot(T, r) # Calculando a correspondenre posição em coordenadas fracionárias
280
+ for m in range(3):
281
+ f = np.where(f < 0, f + 1, f)
282
+ f = np.where(f > 1, f - 1, f)
283
+ #--------------------------------
284
+ for m in range(3):
285
+ # f[m] = round(f[m], 6)
286
+ if (f[m] > 0.9999 or f[m] < 0.0001):
287
+ f[m] = 0.0
288
+ poscar_new.write(f'{f[0]} {f[1]} {f[2]} \n')
289
+
290
+
291
+ #-------------
292
+ poscar.close()
293
+ poscar_new.close()
294
+ #------------------------
295
+ os.remove('POSCAR_deltaZ')
296
+ shutil.rmtree('POSCAR_temp_cart')
297
+ #------------------------------------
298
+ os.remove('POSCAR_temp')
299
+ os.remove('POSCAR_cart')
300
+ #-----------------------
@@ -6,7 +6,7 @@ import json
6
6
 
7
7
  setup(
8
8
  name = "SAMBA_ilum",
9
- version = "1.0.0.398",
9
+ version = "1.0.0.399",
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