On 09/11/2020 03:54, Ardavan Oskooi wrote:
sources = [mp.GaussianBeamSource(src=mp.ContinuousSource(fcen),
                                 center=mp.Vector3(),
                                 size=mp.Vector3(s,s,0),
                                 beam_x0=beam_x0,
                                 beam_kdir=beam_kdir,
                                 beam_w0=beam_w0,
                                 beam_E0=mp.Vector3(1,1j,0))]


Many thanks for your help, Ardavan. This works like a charm in 3d. I'd like to use 2d for efficiency, and so far my efforts fail. In 2d I have a source definition like:

beam_x0 = mp.Vector3(0,0,0)  # beam center
rot_angle = math.radians(0)  # CCW rotation angle about z axis (0: +y axis)
beam_kdir = mp.Vector3(0,1,0).rotate(mp.Vector3(0,0,1),rot_angle) # beam propagation direction
beam_w0 = 0.8  # beam waist radius
fcen = 1
df=0.1

sources = [mp.GaussianBeamSource(src=mp.ContinuousSource(frequency=fcen, fwidth=df),
                                 center=mp.Vector3(0,0,0),
                                 size=mp.Vector3(s,0,0),
                                 beam_x0=beam_x0,
                                 beam_kdir=beam_kdir,
                                 beam_w0=beam_w0,
                                 beam_E0=mp.Vector3(1,0,0)]

If I set beam_E0=mp.Vector3(1,0,0) or beam_E0=mp.Vector3(0,0,1) it works fine, but if E0 is set to any other direction such as beam_E0=mp.Vector3(1,0,1) or beam_E0=mp.Vector3(1j,0,1) then I end up with fields of zero. Normalizing |E0| to 1 doesn't help.

Is there any way to generate a circular polarized Gaussian beam in 2d? (it's possible with a simulated QWP, of course)

Many thanks,

Ian


_______________________________________________
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