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

Reply via email to