![]() Similarly the weighted work function can be defined as: Where is the surface energy for a unique facet existing in the Wulff shape, is the total area of all facets in the family in the Wulff shape, and is the area fraction of the family in the Wulff shape. We define the weighted surface energy using this fraction as given by the following equation: In this construction, the distance of a facet from the crystal center is directly proportional to the surface energy of that facet, and the inner convex hull of all facets form the Wulff shape. The Wulff construction gives the crystal shape under equilibrium conditions. Where is the electrostatic potential in the middle of the vacuum region of the slab model and is the Fermi energy of the material. Similarly, each slab model of a facet has a work function given by: Where, is the total energy of the slab model with termination, is the energy per atom of the bulk OUC, is the total number of atoms in the slab structure, is the surface area of the slab structure, and the factor of 2 in the denominator accounts for the two surfaces in the slab model. Both these criterias (nonpolar and symmetric) should be satisfiedīefore calculating a particular slab model.For a given slab model of a facet with Miller index, the surface energy is given by: We can check polarity using the is_polar() property of A polar termination will lead to a very high surface energy, so we can skip Secondly,įor structures containing oxidation states, we need to ensure that our surfaces are In our slab rather than the surface energy for one slab in our calculation. Symmetric), we would be calculating the average surface energy of two different surfaces If the surfaces are different (the slab is not Same as the above equation for surface energy is used to get the energy of one surface, It's important that both surfaces are the Property of our slab object to check this. To do this, we need to ensure the slab model has Laue First off, we need to ensure that all slabs we will be calculating have There are a couple of rules before we actually run calculations on some of these weighted_surface_energy, ) ) # If we want to see what our Wulff shape looks like wulffshape. lattice, miller_list, e_surf_list ) # Let's get some useful information from our wulffshape object print ( "shape factor: %.3f, anisotropy: \ %.3f, weighted surface energy: %.3f J/m^2" % ( wulffshape. values () # We can now construct a Wulff shape with an accuracy up to a max Miller index of 3 wulffshape = WulffShape ( Ni. keys () e_surf_list = surface_energies_Ni. The total energy of the bulk ($E_ miller_list = surface_energies_Ni. To do this, we actually need to calculate (from first principles) the total energy of two structures. all_slabs = generate_all_slabs ( Si, 3, 10, 10 ) print ( " %s unique slab structures have been found for a max Miller index of 3" % ( len ( all_slabs )) ) get_slabs ())) ) # The simplest way to do this is to just use generate_all_slabs which finds all the unique # Miller indices for a structure and uses SlabGenerator to create all terminations for all of them. cubic ( 5.46873 ) Si = Structure ( lattice, ,, ,, ,, ,, , ], ) slabgen = SlabGenerator ( Si, ( 1, 1, 1 ), 10, 10 ) print ( "Notice now there are actually now %s terminations that can be \ generated in the (111) direction for diamond Si" % ( len ( slabgen. # Let's try this for a diamond Silicon structure lattice = Lattice. get_slabs () print ( "The Ni(111) slab only has %s termination." % ( len ( all_slabs ))) For a # fcc structure such as Ni however, there should only be one way to cut a (111) slab. The # simplest example of this would be the Si(Fd-3m) (111) slab which can be cut or # terminated in two different locations along the vector of the Miller index. When generating a slab for a particular orientation, there are sometimes # more than one location we can terminate or cut the structure to create a slab. This returns a LIST of slabs rather than a single # slab. Plug in the CONVENTIONAL unit cell of your structure, the # maximum Miller index value to generate the different slab orientations along # with the minimum slab and vacuum size in Angstroms slabgen = SlabGenerator ( Ni, ( 1, 1, 1 ), 10, 10 ) # If we want to find all terminations for a particular Miller index orientation, # we use the get_slabs() method. # We'll use the SlabGenerator class to get a single slab.
0 Comments
Leave a Reply. |