def __init__(self, points, groups, blocks, G=None, K=None, lambd=1, check=True, copy=True,**kwds): r""" Constructor function EXAMPLE:: sage: from sage.combinat.designs.group_divisible_designs import GroupDivisibleDesign sage: TD = designs.transversal_design(4,10) sage: groups = [range(i*10,(i+1)*10) for i in range(4)] sage: GDD = GroupDivisibleDesign(40,groups,TD); GDD Group Divisible Design on 40 points of type 10^4 """ from designs_pyx import is_group_divisible_design self._lambd = lambd IncidenceStructure.__init__(self, points, blocks, copy=copy, check=False, **kwds) if copy is False and self._point_to_index is None: self._groups = groups elif self._point_to_index is None: self._groups = [g[:] for g in groups] else: self._groups = [[self._point_to_index[x] for x in g] for g in groups] if check: assert is_group_divisible_design(self._groups,self._blocks,self.num_points(),G,K,lambd,verbose=1)