Exemple #1
0
 def setUp(self):
     basis = Basis((1,1,1,0,0,-0.5), kind = 'triclinic')
     
     kp_gamma = numpy.array((0,0,0))[numpy.newaxis,:]
     kp_m = numpy.array((0.5, 0.0, 0))[numpy.newaxis,:]
     kp_k = numpy.array((2./3, 1./3, 0))[numpy.newaxis,:]
     
     kp_path = numpy.linspace(0,1,30)[:,numpy.newaxis]
             
     kp_path = numpy.concatenate((
         kp_gamma*(1-kp_path) + kp_m*kp_path,
         kp_m*(1-kp_path) + kp_k*kp_path,
         kp_k*(1-kp_path) + kp_gamma*kp_path,
     ), axis = 0)
     
     d = (basis.transform_to_cartesian(kp_path)**2).sum(axis = 1)
     
     self.bands = UnitCell(
         basis,
         kp_path,
         ([[0,0,3]] + d[...,numpy.newaxis]*[[1,2,-3]])*eV,
     )
     self.bands.meta["Fermi"] = 1*eV
     self.weights = self.bands.values/self.bands.values.max()
     self.huge_bands = UnitCell(
         self.bands,
         kp_path,
         ([BandPlotTest.__pseudo_random__(0,1000,50)*10-5] + d[...,numpy.newaxis]*[BandPlotTest.__pseudo_random__(1000,2000,50)*20-10])*eV,
     )
Exemple #2
0
 def setUp(self):
     basis = Basis((1,1,1,0,0,-0.5), kind = 'triclinic', meta = {"Fermi": 0})
     
     kp_gamma = numpy.array((0,0,0))[numpy.newaxis,:]
     kp_m = numpy.array((0.5, 0.0, 0))[numpy.newaxis,:]
     kp_k = numpy.array((2./3, 1./3, 0))[numpy.newaxis,:]
     
     kp_path = numpy.linspace(0,1,30)[:,numpy.newaxis]
             
     kp_path = numpy.concatenate((
         kp_gamma*(1-kp_path) + kp_m*kp_path,
         kp_m*(1-kp_path) + kp_k*kp_path,
         kp_k*(1-kp_path) + kp_gamma*kp_path,
     ), axis = 0)
     
     k = basis.transform_to_cartesian(kp_path)*math.pi/3.**.5*2
     e = (1+4*numpy.cos(k[...,1])**2 + 4*numpy.cos(k[...,1])*numpy.cos(k[...,0]*3.**.5))**.5
     
     self.cell = UnitCell(
         basis,
         kp_path,
         e[:,numpy.newaxis]*eV*[[-1.,1.]],
     )
     self.cell_weights = self.cell.values/self.cell.values.max()
     
     self.grid = Grid(
         basis,
         (numpy.linspace(0,1,30, endpoint = False)+1./60,numpy.linspace(0,1,30, endpoint = False)+1./60,(0,)),
         numpy.zeros((30,30,1,2), dtype = numpy.float64),
     )
     k = self.grid.cartesian()*math.pi/3.**.5*2
     e = (1+4*numpy.cos(k[...,1])**2 + 4*numpy.cos(k[...,1])*numpy.cos(k[...,0]*3.**.5))**.5*eV
     
     self.grid.values[...,0] = -e
     self.grid.values[...,1] = e