def __init__(self, comment="", simtime=100e-12, resolution=2e-6, cells=1, monzc=0e-6, Kx=0, Ky=0, padding=100e-6, radius=4e-6, spacing=100e-6, monzd=100e-6, epsilon=600, xlen=50e-6): meep_utils.AbstractMeepModel.__init__(self) ## Base class initialisation self.simulation_name = "XCylWire" ## self.register_locals(locals()) ## Remember the parameters ## Initialization of materials used self.materials = [ meep_materials.material_Metal_THz(where = self.where_particle), #meep_materials.material_TiO2_THz(where = self.where_particle), meep_materials.material_dielectric(where = self.where_filling, eps=epsilon)] ## Dimension constants for the simulation #self.size_x, self.size_y, self.size_z = xyspacing, xyspacing, 400e-6+cells*self.monzd self.pml_thickness = 100e-6 self.size_x = spacing self.size_y = spacing self.size_z = 400e-6+cells*self.monzd + 2*self.padding + 2*self.pml_thickness ## constants for the simulation (self.monitor_z1, self.monitor_z2) = (-(monzd*cells)/2+monzc - padding , (monzd*cells)/2+monzc + padding) self.simtime = simtime # [s] self.srcWidth = 3000e9 self.srcFreq = 4e9 + self.srcWidth/2 + (Ky**2+Kx**2)**.5 / (2*np.pi/3e8) ## cutoff for oblique incidence self.interesting_frequencies = (0., 1000e9) self.TestMaterials() ## catches (most) errors in structure syntax, before they crash the callback
def __init__(self, comment="", simtime=100e-12, resolution=2e-6, cells=1, monzc=0e-6, Kx=0, Ky=0, padding=20e-6, monzd=60e-6, epsilon=100): meep_utils.AbstractMeepModel.__init__(self) ## Base class initialisation self.simulation_name = "XCylWire" ## self.register_locals(locals()) ## Remember the parameters ## Initialization of materials used if 'TiO2' in comment: self.materials = [meep_materials.material_TiO2_THz(where = self.where_diel)] elif 'DielLossless' in comment: self.materials = [meep_materials.material_dielectric(where = self.where_diel, eps=epsilon, loss=0.0)] elif 'Diel' in comment: self.materials = [meep_materials.material_dielectric(where = self.where_diel, eps=epsilon, loss=0.05)] else: self.materials = [] self.materials += [meep_materials.material_Metal_THz(where = self.where_metal)] ## Dimension constants for the simulation self.pml_thickness = 10e-6 self.size_x = 40e-6 self.size_y = 30e-6 self.size_z = 80e-6+cells*self.monzd + 2*self.padding + 2*self.pml_thickness ## constants for the simulation (self.monitor_z1, self.monitor_z2) = (-(monzd*cells)/2+monzc - padding, (monzd*cells)/2+monzc + padding) self.simtime = simtime # [s] self.srcWidth = 2000e9 self.srcFreq = 4e9 + self.srcWidth/2 + (Ky**2+Kx**2)**.5 / (2*np.pi/3e8) ## cutoff for oblique incidence self.interesting_frequencies = (0., 1000e9) #meep_utils.plot_eps(self.materials, freq_range=(1e10, 1e14), plot_conductivity=True) self.TestMaterials() ## catches (most) errors in structure syntax, before they crash the callback
def __init__(self, comment="", simtime=100e-12, resolution=7e-6, cells=1, monzc=0e-6, Kx=0, Ky=0, xs=50e-6, ys=50e-6, zs=12e-6, xyspacing=100e-6, monzd=100e-6, padding=50e-6): meep_utils.AbstractMeepModel.__init__(self) ## Base class initialisation self.simulation_name = "PKCTest" ## self.register_locals(locals()) ## Remember the parameters ## Definition of materials used self.materials = [meep_materials.material_Metal_THz(where = self.where_metal), ] ## Dimension constants for the simulation self.monzd = monzd self.size_x, self.size_y, self.size_z = xyspacing, xyspacing, 200e-6 + cells*self.monzd ## constants for the simulation self.pml_thickness = 30e-6 self.monitor_z1 =-(monzd*cells)/2+self.monzc - self.padding self.monitor_z2 = (monzd*cells)/2+self.monzc + self.padding self.simtime = simtime # [s] self.srcWidth = 4000e9 self.srcFreq = 4e9 + self.srcWidth/2 + (Ky**2+Kx**2)**.5 / (2*np.pi/3e8) ## cutoff for oblique incidence self.interesting_frequencies = (0., 5000e9) self.TestMaterials() ## catches (most) errors in structure syntax, before they crash the callback
def __init__(self, comment="", simtime=100e-12, resolution=2e-6, cells=1, Kx=0, Ky=0, width=64e-6, thick=26e-6, yspacing=96e-6, monzd=96e-6, epsilon=100, padding=50e-6): meep_utils.AbstractMeepModel.__init__(self) ## Base class initialisation self.simulation_name = "XRectWire" ## self.monzc=0e-6 self.register_locals(locals()) ## Remember the parameters self.padding=50e-6 self.monzc=0e-6 ## Initialization of materials used self.materials = [ meep_materials.material_dielectric(where = self.where_slab, eps=epsilon, loss=0.01), meep_materials.material_Metal_THz(where = self.where_met)] ## Dimension constants for the simulation #self.size_x, self.size_y, self.size_z = xyspacing, xyspacing, 400e-6+cells*self.monzd self.pml_thickness = 20e-6 self.size_x = resolution/1.8 self.size_y = yspacing self.size_z = 120e-6+cells*self.monzd + 2*self.padding + 2*self.pml_thickness ## constants for the simulation self.monitor_z1 =-(monzd*cells)/2+self.monzc - self.padding self.monitor_z2 = (monzd*cells)/2+self.monzc + self.padding self.simtime = simtime # [s] self.srcWidth = 3000e9 #self.srcFreq = 4e9 + self.srcWidth/2 + (Ky**2+Kx**2)**.5 / (2*np.pi/3e8) ## cutoff for oblique incidence self.srcFreq = 1e12 self.interesting_frequencies = (0., 1000e9) self.TestMaterials() ## catches (most) errors in structure syntax, before they crash the callback
def __init__(self, comment="", simtime=100e-12, resolution=6e-6, cells=1, monzc=0e-6, Kx=0, Ky=0, padding=50e-6, radius=20e-6, xspacing=100e-6, monzd=100e-6, epsilon=600): meep_utils.AbstractMeepModel.__init__(self) ## Base class initialisation self.simulation_name = "YCylWire" ## self.register_locals(locals()) ## Remember the parameters ## Initialization of materials used if 'TiO2' in comment: self.materials = [meep_materials.material_TiO2_THz(where = self.where_wire)] elif 'STO' in comment: self.materials = [meep_materials.material_STO_THz(where = self.where_wire)] elif 'Diel' in comment: self.materials = [meep_materials.material_dielectric(where = self.where_wire, eps=epsilon, loss=0.001)] else: self.materials = [meep_materials.material_Metal_THz(where = self.where_wire)] ## Dimension constants for the simulation #self.size_x, self.size_y, self.size_z = xyspacing, xyspacing, 400e-6+cells*self.monzd self.pml_thickness = 20e-6 self.size_x = xspacing self.size_y = resolution/1.8 self.size_z = 200e-6+cells*self.monzd + 2*self.padding + 2*self.pml_thickness ## constants for the simulation self.monitor_z1 =-(monzd*cells)/2+self.monzc - self.padding self.monitor_z2 = (monzd*cells)/2+self.monzc + self.padding self.simtime = simtime # [s] self.srcWidth = 3000e9 self.srcFreq = 1e12 #4e9 + self.srcWidth/2 + (Ky**2+Kx**2)**.5 / (2*np.pi/3e8) ## cutoff for oblique incidence self.interesting_frequencies = (0., 3000e9) self.TestMaterials() ## catches (most) errors in structure syntax, before they crash the callback
def __init__(self, comment="", simtime=100e-12, resolution=2e-6, cells=1, monzc=0e-6, Kx=0, Ky=0, padding=20e-6, monzd=60e-6, epsilon=100): meep_utils.AbstractMeepModel.__init__( self) ## Base class initialisation self.simulation_name = "XCylWire" ## self.register_locals(locals()) ## Remember the parameters ## Initialization of materials used if 'TiO2' in comment: self.materials = [ meep_materials.material_TiO2_THz(where=self.where_diel) ] elif 'DielLossless' in comment: self.materials = [ meep_materials.material_dielectric(where=self.where_diel, eps=epsilon, loss=0.0) ] elif 'Diel' in comment: self.materials = [ meep_materials.material_dielectric(where=self.where_diel, eps=epsilon, loss=0.05) ] else: self.materials = [] self.materials += [ meep_materials.material_Metal_THz(where=self.where_metal) ] ## Dimension constants for the simulation self.pml_thickness = 10e-6 self.size_x = 40e-6 self.size_y = 30e-6 self.size_z = 80e-6 + cells * self.monzd + 2 * self.padding + 2 * self.pml_thickness ## constants for the simulation (self.monitor_z1, self.monitor_z2) = (-(monzd * cells) / 2 + monzc - padding, (monzd * cells) / 2 + monzc + padding) self.simtime = simtime # [s] self.srcWidth = 2000e9 self.srcFreq = 4e9 + self.srcWidth / 2 + (Ky**2 + Kx**2)**.5 / ( 2 * np.pi / 3e8) ## cutoff for oblique incidence self.interesting_frequencies = (0., 1000e9) #meep_utils.plot_eps(self.materials, freq_range=(1e10, 1e14), plot_conductivity=True) self.TestMaterials( ) ## catches (most) errors in structure syntax, before they crash the callback
def cell_centers(self): """ Helper function for stacked multilayered metamaterials """ return np.arange(-self.monzd*(self.cells-1)/2, self.monzd*(self.cells-1)/2+1e-12, self.monzd) ## alternatively: add surrounding two cells to compare the propagation _inside_ a metamaterial #return np.arange(-self.monzd*(self.cells+1)/2, self.monzd*(self.cells+1)/2+1e-12, self.monzd) meep_utils.AbstractMeepModel.__init__(self) ## Base class initialisation self.simulation_name = "XCylWire" ## self.register_locals(locals()) ## Remember the parameters ## Initialization of materials used self.materials = [meep_materials.material_dielectric(where = self.where_wire, eps=epsilon, loss=0.01), meep_materials.material_Metal_THz(where = self.where_metal) ] #if 'TiO2' in comment: #self.materials = [meep_materials.material_TiO2_THz(where = self.where_wire)] #elif 'STO' in comment: #self.materials = [meep_materials.material_STO_THz(where = self.where_wire)] #elif 'DielLossless' in comment: #self.materials = [meep_materials.material_dielectric(where = self.where_wire, eps=epsilon, loss=0.0)] #elif 'Diel' in comment: #self.materials = [meep_materials.material_dielectric(where = self.where_wire, eps=epsilon, loss=0.01)] #else: #self.materials = [meep_materials.material_Metal_THz(where = self.where_wire)] # ## Dimension constants for the simulation #self.size_x, self.size_y, self.size_z = xyspacing, xyspacing, 400e-6+cells*self.monzd self.pml_thickness = 20e-6 self.size_x = resolution/1.8 self.size_y = yspacing self.size_z = 200e-6+cells*self.monzd + 2*self.padding + 2*self.pml_thickness ## constants for the simulation (self.monitor_z1, self.monitor_z2) = (-(monzd*cells)/2+monzc - padding, (monzd*cells)/2+monzc + padding) self.simtime = simtime # [s] self.srcWidth = 5000e9 self.srcFreq = 4e9 + self.srcWidth/2 + (Ky**2+Kx**2)**.5 / (2*np.pi/3e8) ## cutoff for oblique incidence self.interesting_frequencies = (0., 2000e9) #meep_utils.plot_eps(self.materials, freq_range=(1e10, 1e14), plot_conductivity=True) self.TestMaterials() ## catches (most) errors in structure syntax, before they crash the callback
def __init__(self, comment="", simtime=10e-12, resolution=2e-6, cells=1, monzc=0e-6, spacing=120e-6, radius1=15e-6, radius2=12e-6, padding=0, Kx=0, Ky=0, metalpos=1000): meep_utils.AbstractMeepModel.__init__( self) ## Base class initialisation self.simulation_name = "SE" self.register_locals(locals()) ## Remember the parameters ## Definition of materials used self.materials = [ meep_materials.material_TiO2_THz(where=self.where_TiO2), meep_materials.material_Metal_THz(where=self.where_metal) ] ## Dimension constants for the simulation monzd = spacing ## monitor z-distance self.monzd = monzd self.size_x, self.size_y, self.size_z = spacing, spacing, 60e-6 + cells * self.monzd ## constants for the simulation self.pml_thickness = 10e-6 (self.monitor_z1, self.monitor_z2) = (-(monzd * cells) / 2 + monzc - padding, (monzd * cells) / 2 + monzc + padding) self.simtime = simtime # [s] self.srcFreq, self.srcWidth = 1000e9, 7000e9 # [Hz], note: "Last source time" = 10/srcWidth self.interesting_frequencies = (0., 5000e9) self.TestMaterials( ) ## catches (most) errors in structure syntax, before they crash the callback
def __init__(self, comment="", simtime=100e-12, resolution=6e-6, cells=1, monzc=0e-6, padding=50e-6, radius=25e-6, wzofs=0e-6, spacing=75e-6, wlth=10e-6, wtth=10e-6, Kx=0, Ky=0, epsilon=100): meep_utils.AbstractMeepModel.__init__( self) ## Base class initialisation self.simulation_name = "SphereWire" ## monzd = spacing self.register_locals(locals()) ## Remember the parameters #wlth=1e-6 #wtth=90e-6 #wlth=6e-6 #wtth=1000e-6 ## Definition of materials used #self.materials = [meep_materials.material_dielectric(where = self.where_diel, eps=4.)] #self.materials = [meep_materials.material_TiO2_THz_HIEPS(where = self.where_TiO2), #meep_materials.material_Metal_THz(where = self.where_metal)] ## Initialization of materials used if 'TiO2NC' in comment: self.materials = [ meep_materials.material_TiO2_NC_THz(where=self.where_TiO2), ] #meep_materials.material_Metal_THz(where = self.where_metal) ] elif 'TiO2' in comment: self.materials = [ meep_materials.material_TiO2_THz(where=self.where_TiO2), meep_materials.material_Metal_THz(where=self.where_metal) ] elif 'Diel' in comment: self.materials = [ meep_materials.material_dielectric(where=self.where_TiO2, eps=epsilon), meep_materials.material_Metal_THz(where=self.where_metal) ] else: self.materials = [ meep_materials.material_STO_THz(where=self.where_TiO2), meep_materials.material_Metal_THz(where=self.where_metal) ] ## constants for the simulation self.pml_thickness = 20e-6 self.monitor_z1, self.monitor_z2 = (-(monzd * cells) / 2 + monzc - padding, (monzd * cells) / 2 + monzc + padding) self.simtime = simtime # [s] self.srcFreq, self.srcWidth = 1000e9, 2000e9 # [Hz], note: "Last source time" = 10/srcWidth self.interesting_frequencies = (0e9, 1000e9) ## Dimension constants for the simulation self.size_x = spacing self.size_y = spacing self.size_z = 60e-6 + cells * monzd + 2 * self.pml_thickness + 2 * self.padding #self.size_x, self.size_y, self.size_z = resolution/1.8, spacing, size_z ## two dimensional case XXX self.TestMaterials() print "CellCenters:", self.cell_centers()