In [1]:
TEST_DIR='/home/matk/Software/vasp_automation/test/'

from ase.lattice.surface import fcc111
from ase.io.vasp import write_vasp

pt_slab = fcc111('Pt', size=(2,2,5), vacuum=10.0, orthogonal=True)

write_vasp(TEST_DIR+'POSCAR_pt_ase.vasp', pt_slab,
           direct=False, sort=None,
           symbol_count=None, long_format=True, 
           vasp5=True )

In [2]:
#%load TEST_DIR+/POSCAR_pt_ase.vasp

#from ase.io.png import write_png
#write_png(TEST_DIR+'test.png', slab)

#from IPython.display import Image
#Image(filename='TEST_DIR+test.png')

#from ase.visualize import view
#view(pt_slab)
#pt_slab.edit()

In [3]:
from ase import Atoms
from ase.lattice.surface import surface

a = 6.0

pbs_conventional = Atoms('Pb4S4',
                         scaled_positions=[(0, 0, 0),
                                           (0.5, 0.5, 0),
                                           (0.5, 0, 0.5),
                                           (0, 0.5, 0.5),
                                           (0, 0.5, 0),
                                           (0, 0, 0.5),
                                           (0.5, 0, 0),
                                           (0.5, 0.5, 0.5)],
                        cell=[a, a, a],
                        pbc=True)
#111, 2 layers
pbs_slab1 = surface(pbs_conventional, (1, 1, 1), 2)
pbs_slab1.center(vacuum=10, axis=2)

write_vasp(TEST_DIR+'POSCAR_pbs_ase1.vasp', pbs_slab1,
           direct=False, sort=None,
           symbol_count=None, long_format=True, 
           vasp5=True)

In [4]:
from ase.io.vasp import read_vasp

#primitve PbS from materialsproject
pbs_primitive = read_vasp(filename=TEST_DIR+'POSCAR.mp-21276_PbS')

#111, 2 layers
pbs_slab2 = surface(pbs_primitive, (1, 1, 1), 2)
pbs_slab2.center(vacuum=10, axis=2)

write_vasp(TEST_DIR+'POSCAR_pbs_ase2.vasp', pbs_slab2, 
           direct=False, sort=None,
           symbol_count=None, long_format=True, 
           vasp5=True)

In [5]:
#convert ase Atoms object to pymatgen Structure object
from pymatgen.io.aseio import AseAtomsAdaptor

pmg_structure = AseAtomsAdaptor().get_structure(pbs_slab2)
print pmg_structure


Structure Summary (Pb2 S2)
Reduced Formula: PbS
abc   :   4.244924   4.244924  25.198949
angles:  90.000000  90.000000  60.000000
Sites (4)
1 Pb     0.000000     0.000000     0.396842
2 S     0.333333     0.333333     0.465614
3 Pb     0.666667     0.666667     0.534386
4 S     1.000000     0.000000     0.603158

In [5]: