def __str__(self):
        if not hasattr(self, "site_symm"):
            self.site_symm = site_symm(
                self.wp.symmetry_m[0], self.wp.number, dim=self.wp.dim
            )

        s = "{:>2s} @ [{:6.4f} {:6.4f} {:6.4f}], ".format(self.specie, *self.position)
        s += "WP: {:2d}{:s}, ".format(self.wp.multiplicity, self.wp.letter)
        s += "Site symmetry: {:s}".format(self.site_symm)
        return s
Beispiel #2
0
 def swap_axis(self, swap_id, shift=np.zeros(3)):
     """
     sometimes space groups like Pmm2 allows one to swap the a,b axes
     to get an alternative representation
     """
     self.position += shift
     self.position = self.position[swap_id]
     self.position -= np.floor(self.position)
     self.wp, _ = self.wp.swap_axis(swap_id)
     self.site_symm = site_symm(self.wp.symmetry_m[0],
                                self.wp.number,
                                dim=self.wp.dim)
     self.update()
Beispiel #3
0
    def __str__(self):

        if not hasattr(self, "site_symm"):
            self.site_symm = site_symm(self.wp.symmetry_m[0],
                                       self.wp.number,
                                       dim=self.wp.dim)
        self.angles = self.orientation.r.as_euler('zxy', degrees=True)
        formula = self.mol.formula.replace(" ", "")
        s = "{:} @ [{:7.4f} {:7.4f} {:7.4f}]  ".format(formula, *self.position)
        s += "WP: {:2d}{:s}, ".format(self.wp.multiplicity, self.wp.letter)
        s += "Site symmetry {:} ==> Euler: ".format(self.site_symm)
        s += "{:6.3f} {:6.3f} {:6.3f}".format(*self.angles)
        return s
Beispiel #4
0
    def equivalent_set(self, tran, indices):
        """
        Transform the wp to another equivalent set.
        Needs to update both wp and positions

        Args:
            tran: affine matrix
            indices: the list of transformed wps 
        """
        self.position = SymmOp(tran).operate(self.position)
        self.position -= np.floor(self.position)
        self.wp = self.wp.equivalent_set(
            indices[self.wp.index])  #update the wp index
        self.site_symm = site_symm(self.wp.symmetry_m[0],
                                   self.wp.number,
                                   dim=self.wp.dim)
        self.update()