====== コバルト(111)表面の水素吸着 ====== ===== コバルト(111)表面スラブ模型 ===== from ASE import Atom d = 1./6 h = 1./6 atoms = [] atoms.append(Atom('Co', (0.0, 0.0, 0.0), magmom=1.6)) atoms.append(Atom('Co', (0.5, 0.0, 0.0), magmom=1.6)) atoms.append(Atom('Co', (0.0, 0.5, 0.0), magmom=1.6)) atoms.append(Atom('Co', (0.5, 0.5, 0.0), magmom=1.6)) atoms.append(Atom('Co', ( d, d, -h), magmom=1.6)) atoms.append(Atom('Co', (0.5 + d, d, -h), magmom=1.6)) atoms.append(Atom('Co', ( d, 0.5 + d, -h), magmom=1.6)) atoms.append(Atom('Co', (0.5 + d, 0.5 + d, -h), magmom=1.6)) from ASE import ListOfAtoms slab = ListOfAtoms(atoms) from math import sqrt a = 2.5 c = 1.622*a a1 = (2*a, 0, 0) a2 = ( a, a*sqrt(3), 0) a3 = ( 0, 0, 3*c) cell = [a1, a2, a3] slab.SetUnitCell(cell) from ASE.IO.xyz import WriteXYZ WriteXYZ('Co_slab.xyz', atoms = slab) from Dacapo import Dacapo calc = Dacapo(spinpol=True) # this calculation should be spinpolarized calc.SetNumberOfBands(10 + 8*6 + 1*1) calc.SetPlaneWaveCutoff(340) calc.SetDensityCutoff(340) from ASE.Utilities.ChadiCohen import CC18_1x1 calc.SetBZKPoints(CC18_1x1) calc.SetNetCDFFile('Co_slab.nc') calc.SetTxtFile('Co_slab.text') calc.SetSymmetryOn() slab.SetCalculator(calc) calc.Calculate() d = 1./6 h = 1./6 positions_of_metal_atoms = [] positions_of_metal_atoms.append((0.0 , 0.0 , 0.0)) positions_of_metal_atoms.append((0.0 , 0.0 , 0.0)) positions_of_metal_atoms.append((0.5 , 0.0 , 0.0)) positions_of_metal_atoms.append((0.0 , 0.5 , 0.0)) positions_of_metal_atoms.append((0.5 , 0.5 , 0.0)) positions_of_metal_atoms.append(( d, d, -h)) positions_of_metal_atoms.append((0.5 + d, d, -h)) positions_of_metal_atoms.append(( d, 0.5 + d, -h)) positions_of_metal_atoms.append((0.5 + d, 0.5 + d, -h)) number_of_metal_atoms = len(positions_of_metal_atoms) from math import sqrt a = 2.5 c = 1.622*a a1 = (2*a, 0, 0) a2 = ( a, a*sqrt(3), 0) a3 = ( 0, 0, 3*c) cell = [a1, a2, a3] from ASE import Atom, ListOfAtoms metal_atoms = [] for v in positions_of_metal_atoms: metal_atoms.append(Atom('Co', v, magmom=1.6)) slab = ListOfAtoms(atoms) slab.SetUnitCell(cell) from ASE.IO.xyz import WriteXYZ WriteXYZ('Co_slab.xyz', atoms = slab) from Dacapo import Dacapo calc = Dacapo(spinpol=True) # this calculation should be spinpolarized calc.SetNumberOfBands(10 + 8*6 + 1*1) calc.SetPlaneWaveCutoff(340) calc.SetDensityCutoff(340) from ASE.Utilities.ChadiCohen import CC18_1x1 calc.SetBZKPoints(CC18_1x1) calc.SetNetCDFFile('Co_slab.nc') calc.SetTxtFile('Co_slab.text') calc.SetSymmetryOn() slab.SetCalculator(calc) calc.Calculate() ===== atop席吸着状態 =====