SAMBA-ilum 1.0.0.400__tar.gz → 1.0.0.401__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.400 → SAMBA_ilum-1.0.0.401}/PKG-INFO +1 -1
  2. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/SAMBA_ilum.egg-info/PKG-INFO +1 -1
  3. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/SAMBA_ilum.egg-info/SOURCES.txt +1 -2
  4. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/__main__.py +1 -1
  5. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/energy_scan.py +5 -0
  6. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/xy-scan_analysis.py +8 -92
  7. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/setup.py +1 -1
  8. SAMBA_ilum-1.0.0.400/samba_ilum/src/xyz-scan - Copia.py +0 -300
  9. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/LICENSE.txt +0 -0
  10. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/README.md +0 -0
  11. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/SAMBA_ilum.egg-info/dependency_links.txt +0 -0
  12. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/SAMBA_ilum.egg-info/entry_points.txt +0 -0
  13. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/SAMBA_ilum.egg-info/requires.txt +0 -0
  14. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/SAMBA_ilum.egg-info/top_level.txt +0 -0
  15. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/__init__.py +0 -0
  16. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/HeteroStructure_Generator.py +0 -0
  17. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_a-scan +0 -0
  18. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_bader +0 -0
  19. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_bader.SO +0 -0
  20. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_bands +0 -0
  21. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_bands.SO +0 -0
  22. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_dos +0 -0
  23. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_dos.SO +0 -0
  24. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_relax +0 -0
  25. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_scf +0 -0
  26. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_scf.SO +0 -0
  27. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_xy-scan +0 -0
  28. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_xyz-scan +0 -0
  29. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/INCAR_z-scan +0 -0
  30. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/SAMBA_HeteroStructure.input +0 -0
  31. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/SAMBA_WorkFlow.input +0 -0
  32. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.bands +0 -0
  33. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.chgcar +0 -0
  34. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.dos +0 -0
  35. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.location +0 -0
  36. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.locpot +0 -0
  37. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.orbitals +0 -0
  38. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.spin +0 -0
  39. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/INPUTS/vdw_kernel.bindat +0 -0
  40. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/OLD/a-scan.py +0 -0
  41. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/OLD/a-scan_analysis.py +0 -0
  42. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/OLD/job.py +0 -0
  43. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/OLD/z-scan.py +0 -0
  44. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/OLD/z-scan_analysis.py +0 -0
  45. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/_info_pseudo.py +0 -0
  46. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/a-scan.py +0 -0
  47. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/a-scan_analysis.py +0 -0
  48. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/bader +0 -0
  49. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/bader_poscar.py +0 -0
  50. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/bader_update.py +0 -0
  51. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/charge_transfer.py +0 -0
  52. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/chgsum.pl +0 -0
  53. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/contcar_update.py +0 -0
  54. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/data-base_json.py +0 -0
  55. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/data-base_union.py +0 -0
  56. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/job.py +0 -0
  57. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/kpoints.py +0 -0
  58. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/lattice_plot3d.py +0 -0
  59. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/make_files.py +0 -0
  60. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/output.py +0 -0
  61. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/potcar.py +0 -0
  62. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/vdW_DF.py +0 -0
  63. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/xy-scan.py +0 -0
  64. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/xyz-scan.py +0 -0
  65. /SAMBA_ilum-1.0.0.400/samba_ilum/src/xyz-scan_analysis - Copia.py → /SAMBA_ilum-1.0.0.401/samba_ilum/src/xyz-scan_analysis.py +0 -0
  66. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/z-scan.py +0 -0
  67. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/samba_ilum/src/z-scan_analysis.py +0 -0
  68. {SAMBA_ilum-1.0.0.400 → SAMBA_ilum-1.0.0.401}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SAMBA_ilum
3
- Version: 1.0.0.400
3
+ Version: 1.0.0.401
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.400
3
+ Version: 1.0.0.401
4
4
  Summary: ...
5
5
  Author: Augusto de Lelis Araujo
6
6
  Author-email: augusto-lelis@outlook.com
@@ -32,9 +32,8 @@ 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
36
35
  samba_ilum/src/xyz-scan.py
37
- samba_ilum/src/xyz-scan_analysis - Copia.py
36
+ samba_ilum/src/xyz-scan_analysis.py
38
37
  samba_ilum/src/z-scan.py
39
38
  samba_ilum/src/z-scan_analysis.py
40
39
  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.400'
19
+ version = '1.0.0.401'
20
20
 
21
21
  print(" ")
22
22
  print("=============================================================")
@@ -20,11 +20,16 @@ energia = VTemp.replace('=',' ').split()
20
20
  energy.write(f'{name_dir} {energia[4]} \n')
21
21
 
22
22
  temp_name = name_dir.replace('_', ' ').split()
23
+ t_temp_name = temp_name
24
+ #------------------------
23
25
  if (len(temp_name) == 2):
24
26
  if (temp_name[0] == '0.0'): temp_name[0] = '1.0'
25
27
  if (temp_name[1] == '0.0'): temp_name[1] = '1.0'
26
28
  if (temp_name[0] == '1.0' or temp_name[1] == '1.0'):
27
29
  new_name_dir = str(temp_name[0]) + '_' + str(temp_name[1])
28
30
  energy.write(f'{new_name_dir} {energia[4]} \n')
31
+ if (t_temp_name[0] == '0.0' and t_temp_name[1] == '0.0'):
32
+ energy.write(f'1.0_0.0 {energia[4]} \n')
33
+ energy.write(f'0.0_1.0 {energia[4]} \n')
29
34
 
30
35
  energy.close()
@@ -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):
@@ -265,94 +265,10 @@ plt.savefig('xy-scan_direct.png', dpi = 600, bbox_inches='tight', pad_inches = 0
265
265
  """
266
266
 
267
267
 
268
- #==========================================================
269
- # Obtendo os vetores de rede A1 e A2 da Heteroestrutura ===
270
- #==========================================================
271
- poscar = open('POSCAR.0', "r")
272
- #-----------------------------
273
- VTemp = poscar.readline()
274
- VTemp = poscar.readline(); param = float(VTemp)
275
- VTemp = poscar.readline().split(); A1x = float(VTemp[0])*param; A1y = float(VTemp[1])*param; A1z = float(VTemp[2])*param
276
- VTemp = poscar.readline().split(); A2x = float(VTemp[0])*param; A2y = float(VTemp[1])*param; A2z = float(VTemp[2])*param
277
- VTemp = poscar.readline().split(); A3x = float(VTemp[0])*param; A3y = float(VTemp[1])*param; A3z = float(VTemp[2])*param
278
- #-------------
279
- poscar.close()
280
- #-------------
281
-
282
-
283
- #================================================
284
- # Gerando o arquivo POSCAR deslocado no plano ===
285
- #================================================
286
- poscar = open('CONTCAR.0', "r")
287
- poscar_new = open('CONTCAR', "w")
288
- #-------------------------------
289
- VTemp = poscar.readline()
290
- poscar_new.write(f'{VTemp}')
291
- VTemp = VTemp.split()
292
- nions1 = int(VTemp[2]); nions2 = int(VTemp[3])
293
- #----------------------------------------------
294
- for k in range(7):
295
- VTemp = poscar.readline()
296
- poscar_new.write(f'{VTemp}')
297
- #-------------------------------
298
- for k in range(nions1):
299
- VTemp = poscar.readline().split()
300
- poscar_new.write(f'{VTemp[0]} {VTemp[1]} {VTemp[2]} \n')
301
- #-----------------------------------------------------------
302
- for k in range(nions2):
303
- VTemp = poscar.readline().split()
304
- #---------------------------------
305
- temp_c1 = float(VTemp[0]) + a1_min
306
- temp_c2 = float(VTemp[1]) + a2_min
307
- #---------------------------------
308
- # temp_c1 = float(VTemp[0]) + delta_A1
309
- # temp_c2 = float(VTemp[1]) + delta_A2
310
- #-------------------------------------
311
- for i in range(3):
312
- if (temp_c1 > 1.0): temp_c1 = temp_c1 -1.0
313
- if (temp_c2 > 1.0): temp_c2 = temp_c2 -1.0
314
- #---------------------------------------------
315
- poscar_new.write(f'{temp_c1} {temp_c2} {VTemp[2]} \n')
316
- #---------------------------------------------------------
317
- poscar.close()
318
- poscar_new.close()
319
- #-----------------
320
-
321
-
322
- #===========================================================================
323
- # Gerando arquivo POSCAR com coordenadas cartesianas =======================
324
- #===========================================================================
325
- a = np.array([A1x, A1y, A1z])
326
- b = np.array([A2x, A2y, A2z])
327
- c = np.array([A3x, A3y, A3z])
328
- T = np.linalg.inv(np.array([a, b, c]).T) # Definindo a matriz de transformação
329
- #------------------------------------------------------------------------------
330
- poscar = open('CONTCAR', "r")
331
- poscar_new = open('POSCAR', "w")
332
- #--------------------------------
333
- for k in range(7):
334
- VTemp = poscar.readline()
335
- poscar_new.write(f'{VTemp}')
336
- #------------------------
337
- VTemp = poscar.readline()
338
- poscar_new.write(f'Cartesian \n')
339
-
340
- #-------------------------------------------------------------------------------------------------------
341
- # Convertendo as posições atomicas diretas de todos os átomos da Supercélula para a forma cartesiana ---
342
- #-------------------------------------------------------------------------------------------------------
343
- for k in range(nions1 + nions2):
344
- VTemp = poscar.readline().split()
345
- #--------------------------------
346
- k1 = float(VTemp[0]); k2 = float(VTemp[1]); k3 = float(VTemp[2])
347
- #---------------------------------------------------------------
348
- coord_x = ((k1*A1x) + (k2*A2x) + (k3*A3x))
349
- coord_y = ((k1*A1y) + (k2*A2y) + (k3*A3y))
350
- coord_z = ((k1*A1z) + (k2*A2z) + (k3*A3z))
351
- poscar_new.write(f'{coord_x:>28,.21f} {coord_y:>28,.21f} {coord_z:>28,.21f} \n')
352
- #-------------
353
- poscar.close()
354
- poscar_new.close()
355
- #-----------------
268
+ #--------------------------------------------------
269
+ shutil.copyfile(str(delta) + '/POSCAR', 'POSCAR')
270
+ shutil.copyfile(str(delta) + '/CONTCAR', 'CONTCAR')
271
+ #----------------------------------------------------
356
272
 
357
273
 
358
274
  #=====================================================
@@ -370,4 +286,4 @@ info.write(f'ΔE = {Delta_E_meV:.12f} meV/Å^2 or {Delta_E_J:.12f} J/m^2 \n')
370
286
  info.write(f'====================================================== \n')
371
287
  info.close()
372
288
  #===========
373
-
289
+
@@ -6,7 +6,7 @@ import json
6
6
 
7
7
  setup(
8
8
  name = "SAMBA_ilum",
9
- version = "1.0.0.400",
9
+ version = "1.0.0.401",
10
10
  entry_points={'console_scripts': ['samba_ilum = samba_ilum:main']},
11
11
  description = "...",
12
12
  author = "Augusto de Lelis Araujo",
@@ -1,300 +0,0 @@
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
- #-----------------------
File without changes
File without changes