Hello Prof. Johnson and MEEP users,

I tried to calculate the 
transmission/refection of a 2D photonic crystal slab by following the 
tutorial. However, the obtained spectra are not correct: T+R>1 
(oscillation) as shown in the attached figure. My CTL file is enclosed 
below. In brief, the structure is consisting of 4-layer cylinders in 
air, with periodic boundary condition along the lateral direction and 
PML along the other direction. Could you please tell me what's wrong? I 
also wonder if there is reflection between the source plane and the 
structure. Thanks a lot.

Regards,
XY

======================================================
(define-param
 sx 1) ; size of cell in X direction
(define-param sy 30) ; size of 
cell in Y direction

(define pi (* 4 (atan 1))) ; 3.14159...

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

(define-param freespace? false) ; if true, have no 
structure

(set! geometry
      (if freespace?
          
(list
           (make block (center 0) (size infinity infinity 
infinity) (material air)))
          (list
           (make 
cylinder (center 0 -1.5) (radius r) (height infinity) (material Si))
          
 (make cylinder (center 0 -0.5) (radius r) (height infinity) (material 
Si))
           (make cylinder (center 0 0.5)  (radius r) (height 
infinity) (material Si))
           (make cylinder (center 0 1.5)  
(radius r) (height infinity)
 (material Si))
)))

(define-param kx 0.2)
(define-param 
fcen 0.63373) ; pulse center
 frequency
(define-param df 0.24)    ; pulse width (in 
frequency)

(define (my-amp-func p)
   (exp (* 0+2i pi kx 
(vector3-x p))))

(set! sources (list
               (make 
source
                 (src (make gaussian-src (frequency fcen) 
(fwidth df)))
                 (component Ez) (amp-func my-amp-func)
                
 (center 0 -10) (size sx 0))))


(set! pml-layers (list (make 
pml (thickness 4) (direction Y))))

(set! k-point (vector3 kx 0 
0))

(set-param! resolution
 50)

(define-param nfreq 1500) ; number of frequencies at which 
to compute flux
(define trans ; transmitted flux
      (add-flux 
fcen df nfreq
                    (make flux-region (center 0 5) 
(size sx 0))))
(define refl ; reflected flux
      (add-flux fcen 
df nfreq
                 (make flux-region    (center 0 -5) (size sx
 0))))


(if (not freespace?) (load-minus-flux "refl-flux" 
refl))
(run-sources+ 5000 (at-beginning output-epsilon))
(if 
freespace? (save-flux "refl-flux" refl))

(display-fluxes trans 
refl)


      

<<attachment: TR.png>>

_______________________________________________
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