Dear Steven and MEEP users,
I have the following problem with tranmission spectrum measurement. I
would be thankful if anyone can help me with it.
problem: fields exponentially blow up in Silicon nanobeam cavity as designed
in [1]
meep version: 1.1.1
description:
I am trying to obtain transmission spectrum in a nanobeam cavity designed in
[1]. The Scheme code is extension of ab-initio example[2] to 3D. The code
works well for simple waveguide and the plot of the fiels also looks fine.
But when the holes are placed in the waveguide, fields exponentially blow
up.
I tried removing pml, setting Courant factor to 0.4, setting resolution to
10/15/20, or removing symmetry command. But again the fields blew up. Also
adding small losses in Si didn't help. "field decay" reaches like
1e300/1e300=1.0 and after some further steps, gets inf./inf. = nan and
simulation stops.
To run the code, I use the terminal command:
meep Structure-Test?=false BackgroundStructure?=false NB3.ctl | tee
NB3-out/NB3.out
The code is (NB3.ctl):
=========================================================================================
; Control variables
(define-param BackgroundStructure? true); if true, structure is just the
waveguide without the holes.
; Typically assigned when calling the code.
(define-param Structure-Test? true)
; Some parameters to describe the geometry:
(define-param a 430) ;
(define-param eps 12.1) ;
(define MySi (make medium (epsilon 12.1) (D-conductivity (/ (* 2 pi 0.3 0)
12))) )
(define-param w (/ 500 a)) ; width of waveguide
(define-param h (/ 220 a)) ; height of waveguide
(define-param r/a 0.28) ; radius of holes / lattice constant
(define-param s (/ 146 a)) ; cavity length
(define-param N 10) ; number of holes on either side of defect (total)
(define-param Ntaper 5) ; number of holes on either side of defect
(define-param a-max (/ 430 a)) ; minimum lattice constant; next to the
cavity.
(define-param a-min (/ 330 a)) ; minimum lattice constant; next to the
cavity.
; The cell dimensions
(define-param sy (* 6 w)) ; size of cell in y direction (perpendicular to
wvg.)
(define sz (* 6 h)) ; size of cell in z direction
(define-param pad 2) ; padding between last hole and PML edge
(define-param dpml 1) ; PML thickness
;----------------------------------------------------------------------------------------
; defining lattice
(define sx (+ (* 2 (+ pad dpml N)) s -1)) ; size of cell in x direction
(set! geometry-lattice (make lattice (size sx sy sz)))
;----------------------------------------------------------------------------------------
; defining structure
(set! geometry (list ))
(set! geometry
(append geometry
(list (make block (center 0 0 0) (size sx w h)
(material MySi ))
)
)
)
(if BackgroundStructure?
(begin)
(begin
(define-param xc (+ (/ s 2) (* r/a a-min) ) ) ; xc is x of rod
center
(define-param r (* r/a a-min)) ; r is radius
(define-param dist a-min) ; hole spacing
(define-param dist_step (/ (- a-max a-min) Ntaper) ) ; steps by
which distance will be incremented
(do ((i 1 (+ i 1))) ((> i N))
(print i " " xc " " r " " dist "\n")
(set! geometry
(append geometry
(list (make cylinder (center xc 0 0) (radius r) (height
h) (axis 0 0 1) (material air))
)
)
)
(set! geometry
(append geometry
(list (make cylinder (center (- xc) 0 0) (radius r)
(height h) (axis 0 0 1) (material air))
)
)
)
(set! xc (+ xc dist))
(if (<= i Ntaper)
(set! dist (+ dist dist_step))
)
(set! r (* r/a dist))
)
) ; for (begin
) ; for if
;----------------------------------------------------------------------------------------
; defining PML
(set! pml-layers (list (make pml (thickness dpml))))
;----------------------------------------------------------------------------------------
; mesh resolution and Courant
(set-param! resolution 10)
(set-param! Courant 0.4)
;----------------------------------------------------------------------------------------
;
(use-output-directory) ; to put all output files in "filename-out" folder.
(define-param fcen (/ a 1550)) ; pulse center
frequency
(define-param df (* fcen (/ 500 1550))) ; pulse width (in frequency), df =
f(d_lambda/lambda)
(define-param nfreq 500) ; number of frequencies at which to compute flux
; false = transmission spectrum, true = resonant modes:
(define-param compute-mode? false)
(if Structure-Test?
(begin
(run-until 0
(at-beginning output-epsilon)
))
(begin
(if compute-mode?
(begin ; for Q of cavity
(set! sources (list
(make source
(src (make gaussian-src (frequency fcen) (fwidth df)))
(component Hz) (center 0 0 0))))
(set! symmetries
(list (make mirror-sym (direction Y) (phase -1))
(make mirror-sym (direction X) (phase -1))))
(run-sources+ 400
(at-beginning output-epsilon)
(after-sources (harminv Hz (vector3 0) fcen df)))
(run-until (/ 1 fcen) (at-every (/ 1 fcen 20) output-hfield-z))
)
(begin ; for transmission spectrum
(set! sources (list
(make source
(src (make gaussian-src (frequency fcen) (fwidth df)))
(component Ey)
(center (+ dpml (* -0.5 sx) 0.5) 0 0)
(size 0 w 0))))
(set! symmetries (list
(make mirror-sym (direction Y) (phase -1))
))
(define trans ; transmitted flux
(add-flux fcen df nfreq
(make flux-region
(center (- (* 0.5 sx) dpml 0.5) 0 0) (size 0 (* w 2) (* h 2)))))
; (run-sources+ 900
(run-sources+ (stop-when-fields-decayed
50 Ey
(vector3 (- (* 0.5 sx) dpml 0.5) 0 0)
1e-3)
(at-beginning output-epsilon)
(at-every 0
(in-volume (volume (center 0 0 0) (size sx 0 0))
(to-appended "hz-slice" (at-every 0.4
output-hfield-z))
(to-appended "ey-slice" (at-every 0.4 output-efield-y))
)
)
)
(display-fluxes trans) ; print out the flux spectrum
)) ; if compute-mode?
)) ; if Structure-Test?
=========================================================================================
references:
[1] PBDeotare, MWMcCutcheon, IWFrank, M.Khan, and M.Loncar, “High quality
factor photonic crystal nanobeam cavities,” Appl. Phys. Lett. 94, 121106
(2009)
[2]
http://ab-initio.mit.edu/wiki/index.php/Meep_Tutorial/Band_diagram%2C_resonant_modes%2C_and_transmission_in_a_holey_waveguide
Thank you for paying attention to this email,
Farshid
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss