SAMBA-ilum 1.0.0.409__tar.gz → 1.0.0.411__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.409 → samba_ilum-1.0.0.411}/PKG-INFO +1 -1
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/SAMBA_ilum.egg-info/PKG-INFO +1 -1
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/SAMBA_ilum.egg-info/SOURCES.txt +1 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/__main__.py +1 -1
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/make_files.py +1 -1
- samba_ilum-1.0.0.411/samba_ilum/src/xy-scan_analysis.py +265 -0
- samba_ilum-1.0.0.409/samba_ilum/src/xy-scan_analysis.py → samba_ilum-1.0.0.411/samba_ilum/src/xy-scan_analysis_old.py +2 -2
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/setup.py +1 -1
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/LICENSE.txt +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/README.md +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/SAMBA_ilum.egg-info/dependency_links.txt +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/SAMBA_ilum.egg-info/entry_points.txt +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/SAMBA_ilum.egg-info/requires.txt +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/SAMBA_ilum.egg-info/top_level.txt +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/__init__.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/HeteroStructure_Generator.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_a-scan +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_bader +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_bader.SO +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_bands +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_bands.SO +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_dos +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_dos.SO +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_relax +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_scf +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_scf.SO +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_xy-scan +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_xyz-scan +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/INCAR_z-scan +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/SAMBA_HeteroStructure.input +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/SAMBA_WorkFlow.input +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.bands +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.chgcar +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.dos +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.location +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.locpot +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.orbitals +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/inputs_VASProcar/input.vasprocar.spin +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/INPUTS/vdw_kernel.bindat +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/OLD/a-scan.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/OLD/a-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/OLD/job.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/OLD/z-scan.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/OLD/z-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/_info_pseudo.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/a-scan.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/a-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/bader +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/bader_poscar.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/bader_update.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/charge_transfer.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/chgsum.pl +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/contcar_update.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/data-base_json [backup].py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/data-base_json.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/data-base_union.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/energy_scan.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/job.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/kpoints.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/lattice_plot3d.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/output.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/potcar.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/vdW_DF.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/xy-scan.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/xyz-scan.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/xyz-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/z-scan.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/samba_ilum/src/z-scan_analysis.py +0 -0
- {samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/setup.cfg +0 -0
|
@@ -270,7 +270,7 @@ for i in range(len(files)):
|
|
|
270
270
|
# Atualizando o arquivo input.vasprocar.location --------------------------------------------
|
|
271
271
|
#--------------------------------------------------------------------------------------------
|
|
272
272
|
with open(dir_task + '/inputs/input.vasprocar.location', "r") as file: content = file.read()
|
|
273
|
-
content = content.replace('replace_n_reg', str(
|
|
273
|
+
content = content.replace('replace_n_reg', str(len(label_materials)))
|
|
274
274
|
for m in range(len(label_materials)):
|
|
275
275
|
content = content.replace('replace_label_Lattice' + str(m+1), str(label_materials[m].replace('_', '')))
|
|
276
276
|
content = content.replace('replace_nion_Lattice' + str(m+1), str(range_ion_Lattice[m]))
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# SAMBA_ilum Copyright (C) 2024 - Closed source
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
5
|
+
# Observação: Introduzir o vácuo original no arquivo POSCAR final
|
|
6
|
+
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
import numpy as np
|
|
10
|
+
import shutil
|
|
11
|
+
import os
|
|
12
|
+
#--------------------------
|
|
13
|
+
import plotly.offline as py
|
|
14
|
+
import plotly.graph_objects as go
|
|
15
|
+
#--------------------------------
|
|
16
|
+
import scipy.interpolate as interp
|
|
17
|
+
from scipy.interpolate import griddata
|
|
18
|
+
#-------------------------------------
|
|
19
|
+
import matplotlib as mpl
|
|
20
|
+
from matplotlib import cm
|
|
21
|
+
from matplotlib import pyplot as plt
|
|
22
|
+
import matplotlib.ticker as ticker
|
|
23
|
+
from mpl_toolkits.mplot3d.axes3d import Axes3D
|
|
24
|
+
from matplotlib.ticker import LinearLocator, FormatStrFormatter
|
|
25
|
+
import matplotlib.colors as mcolors
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
n_d = 301 # O dados do xy-scan serão interpolados para um grid de (n_d x n_d) pontos
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
#========================================================
|
|
32
|
+
# Obtendo a área no plano XY da Heteroestrutura =========
|
|
33
|
+
#========================================================
|
|
34
|
+
poscar = open('POSCAR.0', 'r')
|
|
35
|
+
VTemp = poscar.readline().split()
|
|
36
|
+
VTemp = poscar.readline(); param = float(VTemp)
|
|
37
|
+
#-----------------------------------------------
|
|
38
|
+
A1 = poscar.readline().split(); A1x = float(A1[0])*param; A1y = float(A1[1])*param; A1z = float(A1[2])*param; mA1 = np.linalg.norm(A1)
|
|
39
|
+
A2 = poscar.readline().split(); A2x = float(A2[0])*param; A2y = float(A2[1])*param; A2z = float(A2[2])*param; mA2 = np.linalg.norm(A2)
|
|
40
|
+
A3 = poscar.readline().split(); A3x = float(A3[0])*param; A3y = float(A3[1])*param; A3z = float(A3[2])*param; mA3 = np.linalg.norm(A3)
|
|
41
|
+
#---------------------------------------------------------------------------------------------------------------------------------------
|
|
42
|
+
A1 = np.array([A1x, A1y])
|
|
43
|
+
A2 = np.array([A2x, A2y])
|
|
44
|
+
#---------------------------
|
|
45
|
+
# Área da célula no plano XY
|
|
46
|
+
Area = np.linalg.norm(np.cross(A1, A2))
|
|
47
|
+
#--------------------------------------
|
|
48
|
+
poscar.close()
|
|
49
|
+
#-------------
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
#=====================================================
|
|
53
|
+
# Extraindo informações do arquivo energy_scan.txt ===
|
|
54
|
+
#=====================================================
|
|
55
|
+
file0 = np.loadtxt('energy_scan.txt', dtype=str)
|
|
56
|
+
file0.shape
|
|
57
|
+
#-----------------------
|
|
58
|
+
date_shift = file0[:,0]
|
|
59
|
+
date_E = np.array(file0[:,1],dtype=float)
|
|
60
|
+
E_min = min(date_E)
|
|
61
|
+
E_max = max(date_E)
|
|
62
|
+
Delta_E_meV = ((E_max -E_min)*1000)/Area
|
|
63
|
+
Delta_E_J = ((E_max -E_min)*1.6021773e-19)/(Area*1e-20)
|
|
64
|
+
line = np.argmin(date_E)
|
|
65
|
+
delta = date_shift[line]
|
|
66
|
+
#------------------------------------------
|
|
67
|
+
delta_min = delta.replace('_', ' ').split()
|
|
68
|
+
a1_min = float(delta_min[0])
|
|
69
|
+
a2_min = float(delta_min[1])
|
|
70
|
+
x_min = (a1_min*A1x) + (a2_min*A2x)
|
|
71
|
+
y_min = (a1_min*A1y) + (a2_min*A2y)
|
|
72
|
+
#----------------------------------
|
|
73
|
+
if (a1_min == -0.0): a1_min = 0.0
|
|
74
|
+
if (a2_min == -0.0): a2_min = 0.0
|
|
75
|
+
if (x_min == -0.0): x_min = 0.0
|
|
76
|
+
if (y_min == -0.0): y_min = 0.0
|
|
77
|
+
#-------------------------------
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
#===============================================
|
|
81
|
+
# Criando o arquivo energy_scan_shift.txt ======
|
|
82
|
+
#===============================================
|
|
83
|
+
file0 = np.loadtxt('energy_scan.txt', dtype=str)
|
|
84
|
+
file0.shape
|
|
85
|
+
#----------------------
|
|
86
|
+
date_shift = file0[:,0]
|
|
87
|
+
date_E = np.array(file0[:,1],dtype=float)
|
|
88
|
+
#----------------------------------------
|
|
89
|
+
file = open('energy_scan_shift.txt', "w")
|
|
90
|
+
shift = [-2, -1, 0, +1, +2]
|
|
91
|
+
#-------------------------------
|
|
92
|
+
for i in range(len(date_shift)):
|
|
93
|
+
#--------------------------------------------------
|
|
94
|
+
shift_temp = date_shift[i].replace('_',' ').split()
|
|
95
|
+
shift_A1 = float(shift_temp[0])
|
|
96
|
+
shift_A2 = float(shift_temp[1])
|
|
97
|
+
#------------------------------
|
|
98
|
+
for j in range(len(shift)):
|
|
99
|
+
for k in range(len(shift)):
|
|
100
|
+
t_shift_A1 = shift_A1 -a1_min +shift[j]
|
|
101
|
+
t_shift_A2 = shift_A2 -a2_min +shift[k]
|
|
102
|
+
if (t_shift_A1 >= 0.0 and t_shift_A1 <= 1.0):
|
|
103
|
+
if (t_shift_A2 >= 0.0 and t_shift_A2 <= 1.0):
|
|
104
|
+
file.write(f'{shift_A1 -a1_min +shift[j]}_{shift_A2 -a2_min + shift[k]} {date_E[i]} \n')
|
|
105
|
+
#-----------
|
|
106
|
+
file.close()
|
|
107
|
+
#-----------
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
#===========================================================
|
|
111
|
+
# Extraindo informações do arquivo energy_scan_shift.txt ===
|
|
112
|
+
#===========================================================
|
|
113
|
+
file0 = np.loadtxt('energy_scan_shift.txt', dtype=str)
|
|
114
|
+
file0.shape
|
|
115
|
+
#----------------------
|
|
116
|
+
date_shift = file0[:,0]
|
|
117
|
+
date_E = np.array(file0[:,1],dtype=float)
|
|
118
|
+
E_min = min(date_E)
|
|
119
|
+
#---------------------
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
#-------------------------------------
|
|
123
|
+
file = open('xy-scan_direct.dat', "w")
|
|
124
|
+
#-------------------------------------
|
|
125
|
+
for i in range(len(date_shift)):
|
|
126
|
+
VTemp = str(date_shift[i])
|
|
127
|
+
VTemp = VTemp.replace('_', ' ')
|
|
128
|
+
file.write(f'{VTemp} {((date_E[i] -E_min)*1000)/Area} \n')
|
|
129
|
+
#-----------
|
|
130
|
+
file.close()
|
|
131
|
+
#-----------
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
#----------------------------------------
|
|
135
|
+
file = open('xy-scan_cartesian.dat', "w")
|
|
136
|
+
#----------------------------------------
|
|
137
|
+
for i in range(len(date_shift)):
|
|
138
|
+
VTemp = str(date_shift[i])
|
|
139
|
+
VTemp = VTemp.replace('_', ' ').split()
|
|
140
|
+
Coord_X = ((float(VTemp[0])*A1x) + (float(VTemp[1])*A2x))
|
|
141
|
+
Coord_Y = ((float(VTemp[0])*A1y) + (float(VTemp[1])*A2y))
|
|
142
|
+
file.write(f'{Coord_X} {Coord_Y} {((date_E[i] -E_min)*1000)/Area} \n')
|
|
143
|
+
#-----------
|
|
144
|
+
file.close()
|
|
145
|
+
#-----------
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
#===================================================
|
|
149
|
+
# Plot 3D - Coordenadas Cartesianas (.html) ========
|
|
150
|
+
#===================================================
|
|
151
|
+
label1 = '\u0394' + 'X' + ' (' + '\u212B' + ')'
|
|
152
|
+
label2 = '\u0394' + 'Y' + ' (' + '\u212B' + ')'
|
|
153
|
+
label3 = 'E-Emin' + ' (meV/' + '\u212B' + '\u00B2' + ')'
|
|
154
|
+
#------------------------------------------------------------
|
|
155
|
+
file2 = np.loadtxt('xy-scan_cartesian.dat')
|
|
156
|
+
file2.shape
|
|
157
|
+
#------------------
|
|
158
|
+
eixo1c = file2[:,0]
|
|
159
|
+
eixo2c = file2[:,1]
|
|
160
|
+
eixo3c = file2[:,2]
|
|
161
|
+
#---------------------------
|
|
162
|
+
# Create meshgrid for (x, y):
|
|
163
|
+
x = np.linspace(min(eixo1c), max(eixo1c), n_d)
|
|
164
|
+
y = np.linspace(min(eixo2c), max(eixo2c), n_d)
|
|
165
|
+
x_grid, y_grid = np.meshgrid(x, y)
|
|
166
|
+
# Grid data:
|
|
167
|
+
e2_grid = griddata((eixo1c, eixo2c), eixo3c, (x_grid, y_grid), method = 'cubic', fill_value=np.nan)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
#============================================================
|
|
171
|
+
# Obtendo as coordenadas do ponto de E_mínima ===============
|
|
172
|
+
#============================================================
|
|
173
|
+
e2_grid[np.isnan(e2_grid)] = np.inf
|
|
174
|
+
min_idx = np.unravel_index(np.argmin(e2_grid), e2_grid.shape) # Encontrando o índice do menor valor de energia no e_grid
|
|
175
|
+
delta_X = x_grid[min_idx] # Encontrando o correspondente valor de delta_X
|
|
176
|
+
delta_Y = y_grid[min_idx] # Encontrando o correspondente valor de delta_Y
|
|
177
|
+
E_min = e2_grid[min_idx] # Encontrando o correspondente valor de E_min
|
|
178
|
+
# print(min_idx, delta_X, delta_Y, E_min)
|
|
179
|
+
#----------------------------------------
|
|
180
|
+
fig = go.Figure()
|
|
181
|
+
fig.add_trace(go.Surface(x = x_grid, y = y_grid, z = e2_grid, name = 'xy-scan', opacity = 0.8, showscale = False, colorscale='jet'))
|
|
182
|
+
fig.update_layout(title = 'xy-scan', scene = dict(xaxis_title = label1, yaxis_title = label2, zaxis_title = label3, aspectmode = 'cube'), margin = dict(r = 20, b = 10, l = 10, t = 10))
|
|
183
|
+
fig.update_layout(xaxis_range=[min(eixo1c), max(eixo1c)])
|
|
184
|
+
fig.update_layout(yaxis_range=[min(eixo2c), max(eixo2c)])
|
|
185
|
+
fig.write_html('xy-scan_3D_cartesian.html')
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
#===========================================================================
|
|
189
|
+
# Obtendo as coordenadas do ponto de E_mínima na forma direta ==============
|
|
190
|
+
#===========================================================================
|
|
191
|
+
a = np.array([A1x, A1y, A1z])
|
|
192
|
+
b = np.array([A2x, A2y, A2z])
|
|
193
|
+
c = np.array([A3x, A3y, A3z])
|
|
194
|
+
T = np.linalg.inv(np.array([a, b, c]).T) # Definindo a matriz de transformação
|
|
195
|
+
#------------------------------------------------------------------------------
|
|
196
|
+
r = np.array([delta_X, delta_Y, 0.0]) # Definindo o vetor posição cartesiano do átomo
|
|
197
|
+
#------------------------------------
|
|
198
|
+
f = np.dot(T, r) # Calculando a correspondenre posição em coordenadas fracionárias # ??????????????????? Esta correto ???????????????????
|
|
199
|
+
for m in range(3): # ?????? Ao invés de 'f' não deveria ser 'f[m]' ??????
|
|
200
|
+
f = np.where(f < 0, f + 1, f) # ??????????????????? Esta correto ???????????????????
|
|
201
|
+
f = np.where(f > 1, f - 1, f)
|
|
202
|
+
#--------------------------------
|
|
203
|
+
for m in range(3):
|
|
204
|
+
# f[m] = round(f[m], 6)
|
|
205
|
+
if (f[m] > 0.9999 or f[m] < 0.0001):
|
|
206
|
+
f[m] = 0.0
|
|
207
|
+
#------------------------------------
|
|
208
|
+
delta_A1 = float(f[0])
|
|
209
|
+
delta_A2 = float(f[1])
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
#=======================================================
|
|
213
|
+
# Plot 2D - Coordenadas Cartesianas (Mapa de cores) ====
|
|
214
|
+
#=======================================================
|
|
215
|
+
n_contour = 100
|
|
216
|
+
#------------------------------------
|
|
217
|
+
mod_x = abs(max(eixo1c) -min(eixo1c))
|
|
218
|
+
mod_y = abs(max(eixo2c) -min(eixo2c))
|
|
219
|
+
#----------------------------------------------------------------
|
|
220
|
+
cmap_gray = (mpl.colors.ListedColormap(['darkgray', 'darkgray']))
|
|
221
|
+
#-----------------------
|
|
222
|
+
fig, ax = plt.subplots()
|
|
223
|
+
cp = plt.contourf(x_grid, y_grid, e2_grid, levels = n_contour, cmap = 'jet', alpha = 1.0, antialiased = True)
|
|
224
|
+
plt.quiver(0, 0, A1x, A1y, angles='xy', scale_units='xy', scale=1, color='black', label='A$_1$')
|
|
225
|
+
plt.quiver(0, 0, A2x, A2y, angles='xy', scale_units='xy', scale=1, color='black', label='A$_2$')
|
|
226
|
+
plt.text((A1x/2), (A1y/2), "A$_1$", fontsize=10, color="black")
|
|
227
|
+
plt.text((A2x/2), (A2y/2), "A$_2$", fontsize=10, color="black")
|
|
228
|
+
# plt.scatter(delta_X, delta_Y, c='black', marker='o', s=2)
|
|
229
|
+
# plt.scatter(x_min, y_min, c='black', marker='o', s=2)
|
|
230
|
+
cbar = fig.colorbar(cp, orientation = 'vertical', shrink = 1.0)
|
|
231
|
+
#-------------------
|
|
232
|
+
plt.title('xy-scan')
|
|
233
|
+
plt.xlabel('$\Delta$X' + '$\ ({\AA})$')
|
|
234
|
+
plt.ylabel('$\Delta$Y' + '$\ ({\AA})$')
|
|
235
|
+
cbar.set_label('$E-E_{min}\ $(meV/${\AA^2})$')
|
|
236
|
+
#---------------------------------------------
|
|
237
|
+
ax.set_box_aspect(mod_y/mod_x)
|
|
238
|
+
#------------------------------------------------------------------------------
|
|
239
|
+
plt.savefig('xy-scan_cartesian.png', dpi = 600, bbox_inches='tight', pad_inches = 0)
|
|
240
|
+
# plt.savefig('xy-scan_cartesian.pdf', dpi = 600, bbox_inches='tight', pad_inches = 0)
|
|
241
|
+
# plt.savefig('xy-scan_cartesian.eps', dpi = 600, bbox_inches='tight', pad_inches = 0)
|
|
242
|
+
# plt.savefig('xy-scan_cartesian.svg', dpi = 600, bbox_inches='tight', pad_inches = 0)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
#--------------------------------------------------
|
|
246
|
+
shutil.copyfile(str(delta) + '/POSCAR', 'POSCAR')
|
|
247
|
+
shutil.copyfile(str(delta) + '/CONTCAR', 'CONTCAR')
|
|
248
|
+
#----------------------------------------------------
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
#=====================================================
|
|
252
|
+
info = open('info_xy-scan.dat', "w", encoding='utf-8')
|
|
253
|
+
info.write(f'====================================================== \n')
|
|
254
|
+
info.write(f'Displacement carried out over the 2nd material lattice \n')
|
|
255
|
+
#------------------------------------------------------------------
|
|
256
|
+
info.write(f'Displacement_XY = ({x_min}, {y_min}) in Å \n')
|
|
257
|
+
info.write(f'Displacement_XY = ({a1_min}*A1, {a2_min}*A2) \n')
|
|
258
|
+
#----------------------------------------------------------------
|
|
259
|
+
# info.write(f'Displacement_XY = ({delta_X}, {delta_Y}) in Å \n')
|
|
260
|
+
# info.write(f'Displacement_XY = ({delta_A1}*A1, {delta_A2}*A2) \n')
|
|
261
|
+
info.write(f'------------------------------------------------------ \n')
|
|
262
|
+
info.write(f'ΔE = {Delta_E_meV:.12f} meV/Å^2 or {Delta_E_J:.12f} J/m^2 \n')
|
|
263
|
+
info.write(f'====================================================== \n')
|
|
264
|
+
info.close()
|
|
265
|
+
#===========
|
|
@@ -206,7 +206,7 @@ plt.quiver(0, 0, A2x, A2y, angles='xy', scale_units='xy', scale=1, color='black'
|
|
|
206
206
|
plt.text((A1x/2), (A1y/2), "A$_1$", fontsize=10, color="black")
|
|
207
207
|
plt.text((A2x/2), (A2y/2), "A$_2$", fontsize=10, color="black")
|
|
208
208
|
# plt.scatter(delta_X, delta_Y, c='black', marker='o', s=2)
|
|
209
|
-
plt.scatter(x_min, y_min, c='black', marker='o', s=2)
|
|
209
|
+
# plt.scatter(x_min, y_min, c='black', marker='o', s=2)
|
|
210
210
|
cbar = fig.colorbar(cp, orientation = 'vertical', shrink = 1.0)
|
|
211
211
|
#-------------------
|
|
212
212
|
plt.title('xy-scan')
|
|
@@ -271,7 +271,7 @@ cmap_gray = (mpl.colors.ListedColormap(['darkgray', 'darkgray']))
|
|
|
271
271
|
#-----------------------
|
|
272
272
|
fig, ax = plt.subplots()
|
|
273
273
|
cp = plt.contourf(a1_grid, a2_grid, e1_grid, levels = n_contour, cmap = 'jet', alpha = 1.0, antialiased = True)
|
|
274
|
-
plt.scatter(delta_A1, delta_A2, c='black', marker='o', s=2)
|
|
274
|
+
# plt.scatter(delta_A1, delta_A2, c='black', marker='o', s=2)
|
|
275
275
|
cbar = fig.colorbar(cp, orientation = 'vertical', shrink = 1.0)
|
|
276
276
|
#-------------------
|
|
277
277
|
plt.title('xy-scan')
|
|
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
|
{samba_ilum-1.0.0.409 → samba_ilum-1.0.0.411}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|