Scales the Wulff shape with an effective radius r. Note that the resulting
            Wulff does not neccesarily have the same effective radius as the one
            provided. The Wulff shape is scaled by its surface energies where first
            the surface energies are scale by the minimum surface energy and then
            multiplied by the given effective radius.

        Args:
            wulffshape (WulffShape): Initial, unscaled WulffShape
            r (float): Arbitrary effective radius of the WulffShape

        Returns:
            WulffShape (scaled by r)

def scaled_wulff(self, wulffshape, r):
        """
        Scales the Wulff shape with an effective radius r. Note that the resulting
            Wulff does not neccesarily have the same effective radius as the one
            provided. The Wulff shape is scaled by its surface energies where first
            the surface energies are scale by the minimum surface energy and then
            multiplied by the given effective radius.

        Args:
            wulffshape (WulffShape): Initial, unscaled WulffShape
            r (float): Arbitrary effective radius of the WulffShape

        Returns:
            WulffShape (scaled by r)
        """

        # get the scaling ratio for the energies
        r_ratio = r/wulffshape.effective_radius
        miller_list = wulffshape.miller_energy_dict.keys()
        # Normalize the magnitude of the facet normal vectors
        # of the Wulff shape by the minimum surface energy.
        se_list = np.array(list(wulffshape.miller_energy_dict.values()))
        # Scale the magnitudes by r_ratio
        scaled_se = se_list * r_ratio

        return WulffShape(wulffshape.lattice, miller_list,
                          scaled_se, symprec=self.symprec)