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

Reply via email to