Hi, I am trying to relax one Metal/Semiconductor interface. I constrain some atoms in the semiconductor side, and make no constrain atoms in the metal side. The problem is that. I assume the metal atoms in the boundary should have the smallest position change. But after relaxation, the metal atoms in the boundary change a lot. Here is the script i am using for this test. Any idea about why?
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = [
GGABasis.Silicon_DoubleZeta,
GGABasis.Titanium_DoubleZeta,
]
#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = GGA.PBE
numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=(4, 4, 1),
)
iteration_control_parameters = IterationControlParameters(
max_steps=1000,
)
calculator = LCAOCalculator(
basis_set=basis_set,
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=numerical_accuracy_parameters,
iteration_control_parameters=iteration_control_parameters,
)
bulk_configuration.setCalculator(calculator)
nlprint(bulk_configuration)
bulk_configuration.update()
nlsave('open_tisi2_1.nc', bulk_configuration)
constraints = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
bulk_configuration = OptimizeGeometry(
bulk_configuration,
max_forces=0.05*eV/Ang,
max_steps=2000,
max_step_length=0.5*Ang,
constraints=constraints,
trajectory_filename='open_tisi2_1_trajectory.nc',
disable_stress=True,
optimizer_method=QuasiNewton(),
)
nlsave('open_tisi2_1_final.nc', bulk_configuration)
nlprint(bulk_configuration)
Kai