Doug,

I don't know if this is the whole answer to your problem, but you use a
frequency of 1.5, RI of 1.5 and resolution 10. The docs recommend (in
the Straight Waveguide tutorial):

"In general, at least 8 pixels/wavelength in the highest dielectric is a
good idea."

In my hands, setting the resolution to 18 or 25 to conform to this,
makes the "diffraction" invisible.

Ian


On 17/05/18 21:08, Doug McKnight wrote:
> Hello,
> I'm learning Meep, and in the spirit of "walk before you run" and
> wanting to make sure I am solid on the concepts, I've been
> experimenting with some simple tests.
>
> In one experiment, I set the computation cell to be 20 units tall (y
> direction) and inserted a "block" of material that's centered in y,
> and also 20 units tall.
>
> I am using Bloch periodicity, and illuminating the material with a
> plane wave.
>
> If the y-size of the block of material is exactly 20 units, I get what
> appears to be diffraction around the end of the block (outside the
> cell!).
>
> If I extend the block of material by a few tenths of a unit, the
> effect diminishes, and appears to be completely gone at 0.1 unit of
> extra height. The resolution is set to 10, so I'm wondering if the
> block is extending to the next grid point (top and bottom).
> Increasing the resolution to 20 does, indeed, half the amount of
> extension outside the cell that's required to suppress this diffraction.
>
> This behavior was unexpected to me, so my question is whether this is
> expected behavior, or a bug...
> Or, it is more likely that this is simply a bug in my understanding of
> how things are meant to work.
>
> If anyone is interested, here's the code. The extra block y-size is
> the variable "xtra" and the code, as copied here, should show this
> diffraction.
>
> Regards
> Doug
> #---------------------------------------------------------------------------------
>
>
> from __future__ import division
>
> import cmath
> import math
>
> import meep as mp
>
> sy=20
> sx=40
> posx=-sx/2 + 4
> t=1.0
> xtra=0.0
>
> input_ang_deg=0
> input_ang=math.radians(input_ang_deg)
>
> cell = mp.Vector3(sx, sy, 0)
>
> geometry = [mp.Block(mp.Vector3(t, xtra+sy, 1e20),   #top half
>                      center=mp.Vector3(posx-(t)/2, 0),
>                      material=mp.Medium(epsilon=2.25))]
>
> def source_cpxamp(pos):
>     amp=cmath.exp(complex(1, pos.y*k.y))
>     return amp
>
> fcen = 1.5# pulse center frequency
> lam=1/fcen
> #df = 0.02  # turn-on bandwidth
> k_x=math.cos(input_ang)
> k_y=math.sin(input_ang)
>
> kdir = mp.Vector3(k_x,k_y)  # direction of k (length is irrelevant)
> print('kdir')
> print(kdir)
> k = kdir.unit().scale(2 * math.pi * fcen)  # k with correct length
> print('k')
> print(k)
> bloch_k_point=kdir*fcen # kdir.unit().scale(fcen) # there's a scale
> factor that eludes me here...
> sources = [
>     mp.Source(
>         mp.ContinuousSource(frequency=fcen),
>         component=mp.Ez,
>         center=mp.Vector3(-sx/2 +2 , 0),
>         size=mp.Vector3(0, sy),
>         amp_func=source_cpxamp
> )]
>
> pml_layers = [mp.PML(thickness=1.0 ,direction=mp.X)]
>
> resolution = 10
>
> sim = mp.Simulation(cell_size=cell,
>                     k_point=bloch_k_point,
>                     boundary_layers=pml_layers,
>                     geometry=geometry,
>                     sources=sources,
>                     resolution=resolution)
>
> sim.run(until=50)
>
> import numpy as np
> import matplotlib.pyplot as plt
>
> eps_data = sim.get_array(mp.Vector3(), cell, mp.Dielectric)
>
> #plt.figure(dpi=100)
> #plt.imshow(eps_data.transpose(),
> origin='lower',interpolation='spline36', cmap='binary')
>
> #plt.axis('off')
> #plt.show()
>
> ez_data = sim.get_array(mp.Vector3(), cell, mp.Ez,cmplx=False)
> plt.figure(dpi=100)
> plt.imshow(eps_data.transpose(), origin='lower',
> interpolation='spline36', cmap='binary')
> plt.imshow(ez_data.transpose(), origin='lower',
> interpolation='spline36', cmap='RdBu', alpha=0.9)
> plt.axis('off')
> plt.show()
>
>
>
>
>
> _______________________________________________
> meep-discuss mailing list
> meep-discuss@ab-initio.mit.edu
> http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss


_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to