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
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