@classmethod
def from_grid(cls, base_structure, grid, expansions=0):
    """Generate a gamma surface from a base structure and a grid specification at a
        given expansion.

        Parameters
        ----------
        base_structure : Bicrystal
        grid : list of length two
            Number of relative shifts in each boundary vector direction.
        expansions : number or (list or ndarray) of numbers, optional
            Expansion(s) for all shifts in the grid. By default, 0, meaning a single grid
            is added. If a list or ndarray is supplied, multiple grids are added, one for
            each expansion value.

        """
    gamma_surface = cls(base_structure, None, None)
    gamma_surface.add_grid(grid, expansions)
    return gamma_surface
