Hi,

I've been running the script that is attached to calculate reflectance and transmittance of a 1D Bragg stack. Something funny happens... When I run it for 16 layers (see variable nlayer), everything looks fine. I compared the results to other methods and it matches perfectly. But when I run for 32 layers, I get a reflectance spectra with a peak above 1 (in a region where the source is pretty intense). The transmittance looks a bit better, but seems to be offset.

I observed that happening in a 2D calculation that I run time ago, but I something was wrong with my ctl file. Now it happens again and I can't figure out why...

Any idea?

Thanks a lot,
        Floren



Florencio Garcia-Santamaria, PhD
Postdoctoral Research Associate
Department of Materials Science and Engineering.
University of Illinois at Urbana-Champaign.
Phone #: 217-333-6779
Personal web-page -> users.mrl.uiuc.edu/floren 
(define-param no-phc 1) ; if true (1), have air, otherwise (0), PhC
(define-param la 0.8) ; size box 1
(define-param lb 0.2) ; size box 2

(define-param nlayer 16) ; number of periods

(define sx (+ 6 nlayer)) ; size of cell in X direction

(define first_block (* 0.5 (- 1 nlayer))); Center of the first period
(define last_block (* 0.5 (- nlayer 1))); Center of the last period
(define center_la (+ (* 0.5 (- la 1)) first_block)); center of the first block a
(define center_lb (+ (+ 0.5 (* 0.5 (- la 1))) first_block)); center of the 
first block b
(define end_cry (+ 0.5 last_block)); Coordinate in x where the cylinders finish
(define center_subst (+ (/ sx 4) (/ end_cry 2))); Center in x of the box that 
defines the substrate
(define sizex_subst (- (/ sx 2) end_cry)); Size in x of the substrate

(define na (make dielectric (epsilon (* 1.5 1.5))))
(define nb (make dielectric (epsilon (* 1.64 1.64))))
(define substrate (make dielectric (epsilon (* 3.5 3.5))))

(set! geometry-lattice (make lattice (size sx no-size no-size)))

(if (= no-phc 1)
    (set! geometry
        (list (make block (center center_subst 0 0) (size 1 infinity infinity) 
(material air)))
    )

    (set! geometry
        (append
        (geometric-objects-duplicates (vector3 1) 0 (- nlayer 1)
        (list
                (make block (center center_la 0 0) (size la infinity infinity) 
(material na)); Block 1
                (make block (center center_lb 0 0) (size lb infinity infinity) 
(material nb)); Block 2
        ))
        (list (make block (center center_subst 0 0) (size sizex_subst 1 
infinity) (material substrate))); substrate
)))

(define-param fcen 0.4) ; pulse center frequency
(define-param df 0.4)  ; pulse width (in frequency)

(set! sources (list
               (make source 
                 (src (make gaussian-src (frequency (+ 0.1 fcen)) (fwidth df)))
                 (component Hz)
                 (center (+ 1 (* -0.5 sx)))
                 (size 0))
               (make source 
                 (src (make gaussian-src (frequency (- fcen 0.1)) (fwidth df)))
                 (component Hz)
                 (center (+ 1 (* -0.5 sx)))
                 (size 0))
))


(set! pml-layers (list (make pml (direction X) (thickness 1))))
(set-param! k-point (vector3 0))
(set-param! resolution 20)

(define-param nfreq 600) ; number of frequencies at which to compute flux

(define trans ; transmitted flux
      (add-flux fcen df nfreq
             (make flux-region
                  (center (+ -1.5 (/ sx 2))) (size 0))))

(define refl ; reflected flux
      (add-flux fcen df nfreq
                (make flux-region 
                  (center (+ 1.5 (* -0.5 sx))) (size 0))))

; for normal run, load negated fields to subtract incident from refl. fields
(if (= no-phc 0) (load-minus-flux "refl-flux" refl))

(run-sources+
 (stop-when-fields-decayed 20 Hz
                           (vector3 (+ (/ sx 2) -1.5))
                           1e-3)
; (at-end output-efield-z)
 (at-beginning output-epsilon))

; for normalization run, save flux fields for refl. plane
(if (= no-phc 1) (save-flux "refl-flux" refl))

(display-fluxes trans refl)
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to