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