Esempio n. 1
0
        #return self.return_value            # (do not change this line)
        #if r.x() > curve2-self.wgwidth/2 and r.x() < curve2+self.wgwidth/2 and r.y()>0:
        #return self.return_value            # (do not change this line)
        return 0


#}}}

# Model selection
model = spdc_model(**model_param)
if sim_param['frequency_domain']:
    model.simulation_name += ("_frequency=%.4e" % sim_param['frequency'])

## Initialize volume and structure according to the model
#XXX vol = meep.vol2d(model.size_x, model.size_y, 1./model.resolution)
vol = meep.vol2d(model.size_x, model.size_y, 1. / model.resolution)
vol.center_origin()
#s = meep_utils.init_structure(model=model, volume=vol, sim_param=sim_param, pml_axes=meep.Z)
s = meep_utils.init_structure(model=model,
                              volume=vol,
                              sim_param=sim_param,
                              pml_axes="All")

## Create fields with Bloch-periodic boundaries (any transversal component of k-vector is allowed, but may not radiate)
f = meep.fields(s)

## Add a source of the plane wave (see meep_utils for definition of arbitrary source shape)
if not sim_param['frequency_domain']:  ## Select the source dependence on time
    src_time_type = meep.band_src_time(model.srcFreq / c / 2,
                                       model.srcWidth / c,
                                       model.simtime * c / 1.1)
Esempio n. 2
0
        #curve1 =   self.size_x/np.pi * np.tanh(r.y()/self.size_y*3)
        #curve2 = - self.size_x/np.pi * np.tanh(r.y()/self.size_y*3)
        #if r.x() > curve1-self.wgwidth/2 and r.x() < curve1+self.wgwidth/2:
            #return self.return_value            # (do not change this line)
        #if r.x() > curve2-self.wgwidth/2 and r.x() < curve2+self.wgwidth/2 and r.y()>0:
            #return self.return_value            # (do not change this line)
        return 0
#}}}

# Model selection
model = spdc_model(**model_param)
if sim_param['frequency_domain']: model.simulation_name += ("_frequency=%.4e" % sim_param['frequency'])

## Initialize volume and structure according to the model
#XXX vol = meep.vol2d(model.size_x, model.size_y, 1./model.resolution)
vol = meep.vol2d(model.size_x, model.size_y, 1./model.resolution)
vol.center_origin()
#s = meep_utils.init_structure(model=model, volume=vol, sim_param=sim_param, pml_axes=meep.Z)
s = meep_utils.init_structure(model=model, volume=vol, sim_param=sim_param, pml_axes="All")

## Create fields with Bloch-periodic boundaries (any transversal component of k-vector is allowed, but may not radiate)
f = meep.fields(s)

## Add a source of the plane wave (see meep_utils for definition of arbitrary source shape)
if not sim_param['frequency_domain']:           ## Select the source dependence on time
    src_time_type = meep.band_src_time(model.srcFreq/c / 2 , model.srcWidth/c, model.simtime*c/1.1)
    #src_time_type = meep.gaussian_src_time(model.srcFreq/c, model.srcWidth/c)
else:
    src_time_type = meep.continuous_src_time(sim_param['frequency']/c)

# XXX srcvolume = meep.volume( 
Esempio n. 3
0
srcComp = meep.Hz  # gaussian source component
mirrorDirection = meep.Y
mirrorFactor = complex(-1, 0)

lambda_rec = 0.633  # um
k = 2 * pi / lambda_rec
lambda_read = 0.633
freq_read = c / lambda_read
rz = 1  # m
rx = [0.1, -0.1, -0.1, 0.1]
ry = [0.1, 0.1, -0.1, -0.1]
amp = [1, 1, 1, 1]
phase = [0, 0, 0, 0]
modulation = 0.01

vol = meep.vol2d(gridSizeX, gridSizeY, 1 / res)

if len(rx) != len(ry):
    raise DimSizeError('Size of rx and ry is different. Halt')
    # break

r = numpy.zeros([len(rx)])
cos_fi = numpy.zeros([len(rx)])
sin_fi = numpy.zeros([len(rx)])
cos_theta = numpy.zeros([len(rx)])
sin_theta = numpy.zeros([len(rx)])
kz = numpy.zeros([len(rx)])
kx = numpy.zeros([len(rx)])
ky = numpy.zeros([len(rx)])

for ii in range(0, len(rx)):
Esempio n. 4
0
#model = dielbar_model(**model_param);      #  meep.use_averaging(True)
#model = PKCutSheet_model_test(**model_param)
#model = Fishnet_model(**model_param)
#model = Wedge_model(**model_param)
model = Wedge2D_model(**model_param)

#from model_SapphireBars import *       
#model = SapphireBars(**model_param)



if sim_param['frequency_domain']: model.simulation_name += ("_frequency=%.4e" % sim_param['frequency'])
meep.master_printf("Simulation name:\n\t%s\n" % model.simulation_name) ## TODO print parameters in a table

## Initialize volume
vol = meep.vol2d(model.size_T, model.size_L, 1./model.resolution)
volume_except_pml = meep.volume(
                meep.vec(-model.size_T/2, -model.size_L/2+model.pml_thickness*0), 
                meep.vec( model.size_T/2,  model.size_L/2-model.pml_thickness*0))
vol.center_origin()

## Define the Perfectly Matched Layers
perfectly_matched_layers = meep.pml(model.pml_thickness)          ## PML on both faces at Z axis

if not sim_param['frequency_domain']:
    meep.master_printf("== Time domain structure setup ==\n")
    ## Define each polarizability by redirecting the callback to the corresponding "where_material" function
    ## Define the frequency-independent epsilon for all materials (needed here, before defining s, or unstable)
    model.double_vec = model.get_static_permittivity; meep.set_EPS_Callback(model.__disown__())
    s = meep.structure(vol, meep.EPS, perfectly_matched_layers, meep.identity())
Esempio n. 5
0
#model = dielbar_model(**model_param);      #  meep.use_averaging(True)
#model = PKCutSheet_model_test(**model_param)
#model = Fishnet_model(**model_param)
#model = Wedge_model(**model_param)
model = Wedge2D_model(**model_param)

#from model_SapphireBars import *
#model = SapphireBars(**model_param)

if sim_param['frequency_domain']:
    model.simulation_name += ("_frequency=%.4e" % sim_param['frequency'])
meep.master_printf("Simulation name:\n\t%s\n" %
                   model.simulation_name)  ## TODO print parameters in a table

## Initialize volume
vol = meep.vol2d(model.size_T, model.size_L, 1. / model.resolution)
volume_except_pml = meep.volume(
    meep.vec(-model.size_T / 2, -model.size_L / 2 + model.pml_thickness * 0),
    meep.vec(model.size_T / 2, model.size_L / 2 - model.pml_thickness * 0))
vol.center_origin()

## Define the Perfectly Matched Layers
perfectly_matched_layers = meep.pml(
    model.pml_thickness)  ## PML on both faces at Z axis

if not sim_param['frequency_domain']:
    meep.master_printf("== Time domain structure setup ==\n")
    ## Define each polarizability by redirecting the callback to the corresponding "where_material" function
    ## Define the frequency-independent epsilon for all materials (needed here, before defining s, or unstable)
    model.double_vec = model.get_static_permittivity
    meep.set_EPS_Callback(model.__disown__())