Adds an adsorbate at a particular coordinate.  Adsorbate
        represented by a Molecule object, and is positioned relative
        to the input adsorbate coordinate.

        Args:
            molecule (Molecule): molecule object representing the adsorbate
            ads_coord (array): coordinate of adsorbate position
            repeat (3-tuple or list): input for making a supercell of slab
                prior to placing the adsorbate
            reorient (bool): flag on whether to reorient the molecule to
                have its z-axis concurrent with miller index

def add_adsorbate(self, molecule, ads_coord, repeat=None, reorient=True):
        """
        Adds an adsorbate at a particular coordinate.  Adsorbate
        represented by a Molecule object, and is positioned relative
        to the input adsorbate coordinate.

        Args:
            molecule (Molecule): molecule object representing the adsorbate
            ads_coord (array): coordinate of adsorbate position
            repeat (3-tuple or list): input for making a supercell of slab
                prior to placing the adsorbate
            reorient (bool): flag on whether to reorient the molecule to
                have its z-axis concurrent with miller index
        """
        if reorient:
            # Reorient the molecule along slab m_index
            sop = get_rot(self.slab)
            molecule.apply_operation(sop.inverse)
        struct = self.slab.copy()
        if repeat:
            struct.make_supercell(repeat)
        if 'surface_properties' in struct.site_properties.keys():
            molecule.add_site_property("surface_properties",
                                       ["adsorbate"] * molecule.num_sites)
        if 'selective_dynamics' in struct.site_properties.keys():
            molecule.add_site_property("selective_dynamics",
                                       [[True, True, True]] * molecule.num_sites)
        for site in molecule:
            struct.append(site.specie, ads_coord + site.coords, coords_are_cartesian=True,
                          properties=site.properties)
        return struct