def __init__(self,b,N): self.b=array(b) self.kmesh=meshgrid_v([arange(n) for n in N],vecs=b/array(N)[:,newaxis]) self.groups={} G=zeros(self.b.shape[-1],dtype='float64') self.special_points={'G':G} #add transplation symmetry group tg=TranslationGroup(self.b,per=arange(self.dimension)) self.usegroup(tg)
def __init__(self,Rs,per,k=1): super(TranslationGroup,self).__init__('translation') self.Rs=array(Rs) self.per=zeros(len(Rs),dtype='bool') self.per[array(per)]=True self.per=tuple(per) self.k=k #initialize the translation matrix. self.tmatrix=meshgrid_v([arange(-k,k+1)]*sum(self.per),vecs=self.Rs[array(self.per)])
def __init__(self,name,a,N,catoms=[(0.,0.)]): self.name=name self.catoms=array(catoms) self.a=array(a) self.N=array(N) mr=meshgrid_v([arange(n) for n in self.N],vecs=a) self.lmesh=(mr[...,newaxis,:]+self.catoms) vdim=self.a.shape[-1] items=self.lmesh.reshape([-1,vdim]) super(Lattice,self).__init__(items)
def TRI(self): '''Time reversal invarient points.''' return meshgrid_v([arange(-0.5,1.,0.5)]*len(N),vecs=b).reshape([-1,vdim])
def __setattr__(self,name,value): super(TranslationGroup,self).__setattr__(name,value) if name=='per' or name=='k' or name=='Rs': if hasattr(self,'tmatrix'): self.tmatrix=meshgrid_v([arange(-self.k,self.k+1)]*sum(self.per),vecs=self.Rs[array(self.per)])