SAMBA-ilum 1.0.0.397__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.397 → SAMBA_ilum-1.0.0.399}/PKG-INFO +1 -1
  2. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/PKG-INFO +1 -1
  3. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/SOURCES.txt +2 -1
  4. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/__main__.py +1 -1
  5. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_a-scan +1 -0
  6. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bader +1 -0
  7. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bands +1 -0
  8. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_dos +1 -0
  9. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_relax +1 -0
  10. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_scf +1 -0
  11. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_xy-scan +1 -0
  12. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_xyz-scan +1 -0
  13. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_z-scan +1 -0
  14. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/SAMBA_WorkFlow.input +3 -3
  15. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/job.py +5 -5
  16. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/make_files.py +2 -2
  17. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/xy-scan.py +2 -2
  18. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/xy-scan_analysis.py +5 -3
  19. SAMBA_ilum-1.0.0.399/samba_ilum/src/xyz-scan.py +300 -0
  20. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/setup.py +1 -1
  21. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/LICENSE.txt +0 -0
  22. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/README.md +0 -0
  23. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/dependency_links.txt +0 -0
  24. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/entry_points.txt +0 -0
  25. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/requires.txt +0 -0
  26. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/SAMBA_ilum.egg-info/top_level.txt +0 -0
  27. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/__init__.py +0 -0
  28. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/HeteroStructure_Generator.py +0 -0
  29. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bader.SO +0 -0
  30. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_bands.SO +0 -0
  31. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_dos.SO +0 -0
  32. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/INCAR_scf.SO +0 -0
  33. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/SAMBA_HeteroStructure.input +0 -0
  34. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.bands +0 -0
  35. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.chgcar +0 -0
  36. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.dos +0 -0
  37. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.location +0 -0
  38. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.locpot +0 -0
  39. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.orbitals +0 -0
  40. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.spin +0 -0
  41. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/INPUTS/vdw_kernel.bindat +0 -0
  42. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/a-scan.py +0 -0
  43. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/a-scan_analysis.py +0 -0
  44. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/job.py +0 -0
  45. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/z-scan.py +0 -0
  46. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/OLD/z-scan_analysis.py +0 -0
  47. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/_info_pseudo.py +0 -0
  48. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/a-scan.py +0 -0
  49. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/a-scan_analysis.py +0 -0
  50. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/bader +0 -0
  51. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/bader_poscar.py +0 -0
  52. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/bader_update.py +0 -0
  53. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/charge_transfer.py +0 -0
  54. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/chgsum.pl +0 -0
  55. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/contcar_update.py +0 -0
  56. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/data-base_json.py +0 -0
  57. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/data-base_union.py +0 -0
  58. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/energy_scan.py +0 -0
  59. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/kpoints.py +0 -0
  60. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/lattice_plot3d.py +0 -0
  61. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/output.py +0 -0
  62. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/potcar.py +0 -0
  63. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/vdW_DF.py +0 -0
  64. /SAMBA_ilum-1.0.0.397/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.397/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.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/z-scan.py +0 -0
  67. {SAMBA_ilum-1.0.0.397 → SAMBA_ilum-1.0.0.399}/samba_ilum/src/z-scan_analysis.py +0 -0
  68. {SAMBA_ilum-1.0.0.397 → 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.397
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.397
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.397'
19
+ version = '1.0.0.399'
20
20
 
21
21
  print(" ")
22
22
  print("=============================================================")
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 60
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ # ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 0
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 60
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 0
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 201
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 0
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 201
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ ISPIN = 2
6
7
  ISMEAR = -5
7
8
  SIGMA = 0.001
8
9
  NEDOS = 3001
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 201
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ # ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 999
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 201
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 0
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 60
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ # ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 0
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 60
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ # ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 0
@@ -3,6 +3,7 @@ NELMIN = 4
3
3
  NELM = 60
4
4
  EDIFF = 1E-6
5
5
  EDIFFG = -1E-3
6
+ # ISPIN = 2
6
7
  ISMEAR = -1
7
8
  SIGMA = 0.001
8
9
  NSW = 0
@@ -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')
@@ -123,15 +123,15 @@ job.write(f' #------------------------ \n')
123
123
  job.write(f' for k in "{folders2}"; do \n')
124
124
  job.write(f' cd $dir0/$i/$j/$k \n')
125
125
  job.write(f' $vasp_std \n')
126
- job.write(f' rm -r CHG CHGCAR DOSCAR PROCAR WAVECAR EIGENVAL IBZKPT vasprun.xml \n')
127
126
  job.write(f' python3 contcar_update.py \n')
128
127
  job.write(f' python3 energy_scan.py \n')
128
+ job.write(f' rm -r CHG CHGCAR DOSCAR PROCAR WAVECAR INCAR KPOINTS OSZICAR PCDAT POTCAR REPORT XDATCAR vdw_kernel.bindat EIGENVAL IBZKPT vasprun.xml *.py \n')
129
129
  job.write(f' bzip2 OUTCAR \n')
130
130
  job.write(f' done \n')
131
131
  job.write(f' #------------- \n')
132
132
  job.write(f' cd $dir0/$i/$j \n')
133
133
  job.write(" python3 ${j}_analysis.py \n")
134
- job.write(" rm -r 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* \n")
134
+ job.write(" # rm -r 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* \n")
135
135
  job.write(f' #----------------------- \n')
136
136
  job.write(f' for k in "{tasks2}"; do \n')
137
137
  job.write(f' #----------------------------------------------------- \n')
@@ -166,9 +166,9 @@ job.write(" prefixo=${k:0:3} \n")
166
166
  job.write(f' if [ "$prefixo" != "OK_" ]; then \n')
167
167
  job.write(f' cd $dir0/$i/$j/$k \n')
168
168
  job.write(f' $vasp_std \n')
169
- job.write(f' rm -r CHG CHGCAR DOSCAR PROCAR WAVECAR EIGENVAL IBZKPT vasprun.xml \n')
170
169
  job.write(f' python3 contcar_update.py \n')
171
170
  job.write(f' python3 energy_scan.py \n')
171
+ job.write(f' rm -r CHG CHGCAR DOSCAR PROCAR WAVECAR INCAR KPOINTS OSZICAR PCDAT POTCAR REPORT XDATCAR vdw_kernel.bindat EIGENVAL IBZKPT vasprun.xml *.py \n')
172
172
  job.write(f' bzip2 OUTCAR \n')
173
173
  job.write(f' cd $dir0/$i/$j \n')
174
174
  job.write(f' mv $k OK_$k \n')
@@ -188,7 +188,7 @@ job.write(" new_name=${k:3} \n")
188
188
  job.write(f' mv "$k" "$new_name" \n')
189
189
  job.write(f' done \n')
190
190
  job.write(" python3 ${j}_analysis.py \n")
191
- job.write(" rm -r 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* \n")
191
+ job.write(" # rm -r 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* \n")
192
192
  job.write(f' #----------------------- \n')
193
193
  job.write(f' for k in "{tasks2}"; do \n')
194
194
  job.write(f' #-------------------------------------------------- \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.397",
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