Hello,
I have a question about an older post to the list. The original
poster was interested in oblique scattering of a plane wave on a
crystal.
The solution offered in the previous mailing can be used to find
transmission and reflection due to a single element, but this is not
what the original poster requests. The original request was for
scattering due to a periodic structure (eg., a standard grating
problem).
Because of the PML boundaries in the proposed solution, the result is
not periodic.
Is it possible to have an oblique plane wave with periodic boundaries?
The only way I can think to do this is to use a total/scattered field
approach. Another post recommends a solution, but leaves out all
detail:
From
http://article.gmane.org/gmane.comp.science.electromagnetism.meep.general/347/match=total+scattered+field
"There is no built-in support for this currently (in my own work I
rarely need incident plane waves except in cases with periodic
boundaries where it is easy). In principle this should be possible by
using a "box" of appropriately-chosen E and H current sources, but
that requires some attention to detail."
Can anyone elaborate on this approach?
As a side question, how would alter the code in the reply to acheive a
plane wave at a different angle (e.g., 21 degrees of incidence,
instead of 45?)
Kind Regards,
Matt
---------------------------------------------------------------------------
From: Steven G. Johnson <[EMAIL PROTECTED]>
Subject: Re: oblique scattering
Newsgroups: gmane.comp.science.electromagnetism.meep.general
Date: 2006-07-31 14:35:11 GMT (27 weeks, 6 days, 2 hours and 27 minutes ago)
Mon, 31 Jul 2006, emil vinteler wrote:
I want to calculate transmission and reflection spectrum in oblique
scattering at angle 50 degrees from square lattice of polystiren
spheres. I used the following ctl file, but I'm not sure if it's
correct. Please tell me if I'm wrong.
There are several problems with your file.
First, just setting the k-point is not enough to get an angled source.
The k-point only determines the boundary conditions of your simulation,
and does not affect source planes. If you want a source plane where the
amplitude varies as exp(ikx), you need to specify this yourself using the
amp-fun property. See, for example, the attached file.
Second, your k vector isn't correct, because the magnitude of k depends on
the frequency. Remember, omega = c |k| in vacuum.
Third, because the magnitude of k depends on the frequency, you can't make
a single source that produces light with a single angle (other than normal
incidence) over a broad bandwidth, as your control file attempts to do.
You need to use a narrow-bandwidth source, and do multiple simulations if
you want a transmission spectrum at a given angle.
Good luck.
Cordially,
Steven G. Johnson
; This example creates an approximate TM planewave in vacuum
; propagating at a 45-degree angle, by using a couple of current sources
; with amplitude exp(ikx) corresponding to the desired planewave.
(define-param s 11) ; the size of the computational cell, not including PML
(define-param dpml 1) ; thickness of PML layers
(define sxy (+ s (* 2 dpml))) ; cell size, including PML
(set! geometry-lattice (make lattice (size sxy sxy no-size)))
(set! pml-layers (list (make pml (thickness dpml))))
(set-param! resolution 10)
; pw-amp is a function that returns the amplitude exp(ik(x+x0)) at a
; given point x. (We need the x0 because current amplitude functions
; in Meep are defined relative to the center of the current source,
; whereas we want a fixed origin.) Actually, it is a function of k
; and x0 that returns a function of x ...
(define ((pw-amp k x0) x)
(exp (* 0+1i (vector3-dot k (vector3+ x x0)))))
(define-param fcen 0.8) ; pulse center frequency
(define-param df 0.02) ; turn-on bandwidth
(define-param kdir (vector3 1 1)) ; direction of k (length is irrelevant)
(define k (vector3-scale (* 2 pi fcen)
(unit-vector3 kdir))) ; k with correct length
(define kxcos (vector3-x (unit-vector3 k))) ; direction cosine of k in x
(define kycos (vector3-y (unit-vector3 k))) ; direction cosine of k in x
(set! sources
(list
; left
(make source
(src (make continuous-src (frequency fcen) (fwidth df)))
(component Ez) (center (* -0.5 s) 0) (size 0 s)
(amp-func (pw-amp k (vector3 (* -0.5 s) 0))))
; bottom
(make source
(src (make continuous-src (frequency fcen) (fwidth df)))
(component Ez) (center 0 (* -0.5 s)) (size s 0)
(amp-func (pw-amp k (vector3 0 (* -0.5 s)))))
))
(define-param T 400) ; run time
(run-until T (at-end output-efield-z))
_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss