# コバルト(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)

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)