Source code for ase2sprkkr.examples.A14_Semiinfinite.au111_bsf

"""Calculate the Bloch spectral function of a semi-infinite Au(111) surface."""


[docs] def main(): from ase.build import fcc111 from ase2sprkkr import SPRKKR from ase2sprkkr.sprkkr.build import semiinfinite_system # Build a central interaction zone between bulk Au and vacuum. bulk_slab = fcc111("Au", size=(1, 1, 3), periodic=True) surface = semiinfinite_system( atoms=bulk_slab, repeat=[3, 3], atoms2=None, axis=2 ) bulk_options = { "CONTROL.KRMT": 2, "SITES.NL": 4, "TAU.KKRMODE": "TB", "TAU.NKTAB3D": 1000, "TAU.NKTAB2D": 100, "TAU.CLURAD": 2.7, "SCF.VXC": "VWN", "SCF.NITER": 500, "SCF.MIX": 0.1, "SCF.TOL": 1e-5, } calculator = SPRKKR(atoms=surface, options=bulk_options) bulk_result = calculator.calculate() # The surface SCF starts from the converged bulk potential and uses gentler # mixing because convergence of the interaction zone is more demanding. surface_options = { **bulk_options, "TAU.NKTAB2D": 71, "SCF.NITER": 2000, "SCF.MIX": 0.01, } surface_calculator = SPRKKR( potential=bulk_result.potential_filename, options=surface_options ) surface_result = surface_calculator.calculate() # Evaluate the energy-dependent BSF along a path through the surface BZ. bsf_options = { "TAU.NKTAB3D": 1000, "TAU.NKTAB2D": 71, "TAU.CLURAD": 2.7, "ENERGY.ImE": 0.002, "ENERGY.EMINEV": -4.0, "ENERGY.EMAXEV": 2.0, "ENERGY.NE": 400, "TASK.NK": 300, "TASK.KA": [[-0.66667, 0.0, 0.0], [0.0, 0.0, 0.0]], "TASK.KE": [[0.0, 0.0, 0.0], [0.66667, 0.0, 0.0]], } result = surface_calculator.calculate( potential=surface_result.potential_filename, input_parameters="bsfek", options=bsf_options, ) result.bsf.plot(IQ=[0, 1, 2, 10, 11, 12])
if __name__ == "__main__": main()