def where_metal(self, r):
     dd = self.resolution / 4
     for cellc in self.cellcenters:
         if in_sphere(r, cx=-self.radius-self.gap/2-dd, cy=dd, cz=dd, rad=self.radius) or \
                 (not self.singlesphere and in_sphere(r, cx=self.radius+self.gap/2-dd, cy=dd, cz=dd, rad=self.radius)):
             return self.return_value
     return 0
 def where_metal(self, r):
     dd=self.resolution/4
     for cellc in self.cellcenters:
         if in_sphere(r, cx=-self.radius-self.gap/2-dd, cy=dd, cz=dd, rad=self.radius) or \
                 (not self.singlesphere and in_sphere(r, cx=self.radius+self.gap/2-dd, cy=dd, cz=dd, rad=self.radius)):
             return self.return_value
     return 0
 def where_TiO2(self, r):
     for cellz in self.cell_centers():
         if   in_sphere(r, cx=-self.size_x/2, cy=-self.size_y/2, cz=cellz+self.wzofs, rad=self.radius) \
           or in_sphere(r, cx= self.size_x/2, cy=-self.size_y/2, cz=cellz+self.wzofs, rad=self.radius) \
           or in_sphere(r, cx=-self.size_x/2, cy= self.size_y/2, cz=cellz+self.wzofs, rad=self.radius) \
           or in_sphere(r, cx= self.size_x/2, cy= self.size_y/2, cz=cellz+self.wzofs, rad=self.radius):
             return self.return_value
     return 0
    def where_TiO2(self, r):
        # callback used for each polarizability of each material (materials should never overlap)
        for cellz in self.cell_centers():
            ## XXX ## avoid the metal volume
            #if (in_xslab(r, cx=0e-6, d=self.wtth) or in_yslab(r, cy=0e-6, d=self.wtth)) and \
            #in_zslab(r, cz=self.wzofs+cellz, d=self.wlth):
            #return 0

            # Y-bars
            #if   in_ycyl(r, cx=-self.size_x/2, cz=cellz, rad=self.radius) \
            #or in_ycyl(r, cx= self.size_x/2, cz=cellz, rad=self.radius):
            #return self.return_value            # (do not change this return value)
            # X-bars
            #if   in_xcyl(r, cy=-self.size_y/2, cz=cellz, rad=self.radius) \
            #or in_xcyl(r, cy= self.size_y/2, cz=cellz, rad=self.radius):
            #return self.return_value            # (do not change this return value)
            ## /XXX

            if in_sphere(r, cx=0, cy=0, cz=cellz, rad=self.radius):
                return self.return_value  # (do not change this return value) XXX

            #if   in_sphere(r, cx=-self.size_x/2, cy=-self.size_y/2, cz=cellz, rad=self.radius) \
            #or in_sphere(r, cx= self.size_x/2, cy=-self.size_y/2, cz=cellz, rad=self.radius) \
            #or in_sphere(r, cx=-self.size_x/2, cy= self.size_y/2, cz=cellz, rad=self.radius) \
            #or in_sphere(r, cx= self.size_x/2, cy= self.size_y/2, cz=cellz, rad=self.radius):
            #return self.return_value            # (do not change this return value)
        return 0
 def where_diel(self, r):
     for cellc in self.cellcenters:
         if in_sphere(r, cx=self.resolution/4, cy=self.resolution/4, cz=cellc+self.resolution/4, rad=self.radius):
             return 0
     for cellc in self.cellcenters:
         if in_zslab(r, cz=0, d=self.cellsize):
             return self.return_value             # (do not change this line)
     return 0
Пример #6
0
 def where_TiO2(self, r):
     if in_sphere(r,
                  cx=0,
                  cy=self.spherey,
                  cz=self.spherez,
                  rad=self.radius):
         return self.return_value
     return 0
 def where_diel(self, r):
     for cellc in self.cellcenters:
         if in_sphere(r, cx=self.resolution/4, cy=self.resolution/4, cz=cellc+self.resolution/4, rad=self.radius):
             return 0
     for cellc in self.cellcenters:
         if in_zslab(r, cz=0, d=self.cellsize):
             return self.return_value             # (do not change this line)
     return 0
Пример #8
0
 def where_TiO2(self, r):
     if  in_sphere(r, cx=0, cy=self.spherey, cz=self.spherez, rad=self.radius):
         return self.return_value          
     return 0