Hi all!
First of all, Erik Shipton, thank you for the help. That helped me to
figure out the discrepancy between the farfield simulation and the full
simulation, but I've encountered some new problems. Now, I'm simulating a
simple pillar on glass, with the structure as follows:
Working in 3D dimensions.
Computational cell is 2.62787 x 0.801724 x 0.801724 with resolution 22.4516
block, center = (-0.4,0,0)
size (0.8,0.8,0.8)
axes (1,0,0), (0,1,0), (0,0,1)
dielectric constant epsilon diagonal = (2.2521,2.2521,2.2521)
block, center = (0.4,0,0)
size (0.8,0.25,0.25)
axes (1,0,0), (0,1,-0), (0,0,1)
dielectric constant epsilon diagonal = (12.1104,12.1104,12.1104)
I don't believe there are any particular issues with this structure. The
k_point is defined as (0,0,0), and a PML layer is imposed in the positive
and negative X directions. A gaussian source is used to excite the
structure in Ez, and my flux capture regions are defined as such:
def __init_n2f_capture_forw(self):
# Calculate box size
bx = self.str_height + 2/self.resolution
by = self.cell_y - 2/self.resolution # self.lattice * self.pillar_num
bz = self.cell_z - 2/self.resolution # self.lattice
# Calculate box face centers
cx, cy, cz = bx/2, by/2, bz/2
# Build the nearfield capture regions
return self.sim.add_near2far(
# Computes nfreq equally spaced frequencies
# in frequency range (fcen-df/2, fcen+df/2)
# fcen, nfreq, df
1 / self.wavelength, 0, 1,
# Draw box to capture nearfield
# ^y _____
# | / /|
# |/ / |
# / / |
# /____/ |
# | | ----->x
# | | |
# | | /
# /| | /
# z | | /
# |____|/
mp.Near2FarRegion( # top
center = mp.Vector3(cx, cy, 0),
size = mp.Vector3(bx, 0, bz),
direction = mp.Y,
weight = 1
),
mp.Near2FarRegion( # bottom
center = mp.Vector3(cx, -cy, 0),
size = mp.Vector3(bx, 0, bz),
direction = mp.Y,
weight = -1
),
mp.Near2FarRegion( # near
center = mp.Vector3(cx, 0, cz),
size = mp.Vector3(bx, by, 0),
direction = mp.Z,
weight = 1
),
mp.Near2FarRegion( # far
center = mp.Vector3(cx, 0, -cz),
size = mp.Vector3(bx, by, 0),
direction = mp.Z,
weight = -1
),
mp.Near2FarRegion( # front
center = mp.Vector3(bx, 0, 0),
size = mp.Vector3(0, by, bz),
direction = mp.X,
weight = 1
)
)
I *believe* this should all be correct. I examine the far-field with:
grating.sim.output_farfields(
grating.nearfields, "ff_out1",
1 / (grating.wavelength / 51), # Resolution
center = mp.Vector3(500, 0, 0), # Center of region
size = mp.Vector3(0, 2, 2) # Size of region
)
Which is where I run into trouble. The farfields do not make sense at all;
they look like this <https://i.imgur.com/9AGstwm.png>. This is completely
nonphysical, I feel, but I'm not sure *why* this is produced. Does anyone
have any suggestions?
Any help would be greatly appreciated.
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss