code: def add_adsorbate_atom(self, indices, specie, distance):
          
          # Let's do the work in cartesian coords
          center = np.sum([self[i].coords for i in indices], axis=0) / len(
              indices)
  
          coords = center + self.normal * distance / np.linalg.norm(self.normal)
  
          self.append(specie, coords, coords_are_cartesian=True)
docs: Gets the structure of single atom adsorption.
          slab structure from the Slab class(in [0, 0, 1])
  
          Args:
              indices ([int]): Indices of sites on which to put the absorbate.
                  Absorbed atom will be displaced relative to the center of
                  these sites.
              specie (Specie/Element/str): adsorbed atom species
              distance (float): between centers of the adsorbed atom and the
                  given site in Angstroms.