def atoms_inside(self, atoms): """Decides which atoms are inside the body (see Body class).""" atoms_inside = Cylinder.atoms_inside(self, atoms) atoms_inside *= self.periodicity.mask_unique(atoms - self.shift_vector, atoms_inside) return atoms_inside
def __init__(self, geometry, period, **kwargs): """Creates a Periodic1DCylinder instance. Keyword args: shift_vector: Origin of the body. radius: Radius of the cylinder. """ self.radius = kwargs.pop("radius") self.periodicity = period kwargs["radius1"] = self.radius kwargs["radius2"] = self.radius axis = period.get_axis("cartesian")[0] axisnorm = np.linalg.norm(axis) kwargs["point1"] = -axis / axisnorm * PERIODIC_TOLERANCE kwargs["point2"] = axis + axis / axisnorm * PERIODIC_TOLERANCE kwargs["point1_coordsys"] = "cartesian" kwargs["point2_coordsys"] = "cartesian" Cylinder.__init__(self, geometry, period, **kwargs)