; Compute the transmission from a normal-incident planewave through
; a 2d photonic crystal composed of a square lattice of dielectric
; rods in air.
;
; The cell has nx rods in the x direction, with absorbing boundary
; conditions. In the y direction, we have periodic boundary
; conditions. The planewave is incident in the x direction, and is
; separated from the crystal by a distance "pad". We compute the
; transmitted power through a flux plane on the other side of the
; crystal.
; some parameters describing the structure
(define-param eps 8.9) ; dielectric constant of the rods
(define-param r 0.2) ; rod radius
(define-param nx 5) ; # rods in x direction
(define-param pad 4) ; distance between rods and source/flux plane
(define-param dpml 1) ; thickness of PML absorbing boundary layer
(define sx (+ nx (* 2 (+ pad dpml)))) ; size of cell in x direction
(set! geometry-lattice (make lattice (size sx 1 no-size)))
(set! k-point (vector3 0 0 0)) ; periodic boundaries
(set! pml-layers (list (make pml (direction X) (thickness dpml))))
(set! geometry
(geometric-object-duplicates
(vector3 1 0) (/ (- 1 nx) 2) (/ (- nx 1) 2) ; nx copies in x
(make cylinder (center 0) (radius r) (height infinity)
(material (make dielectric (epsilon eps))))))
(set-param! resolution 20) ; # pixels/a
(define-param fcen 0.375) ; pulse center frequency
(define-param df 0.35) ; pulse width (in frequency)
(set! sources (list
(make source
(src (make gaussian-src (frequency fcen) (fwidth df)))
(component Ez)
(center (+ dpml (* -0.5 sx)) 0)
(size 0 1))))
(set! symmetries (list (make mirror-sym (direction Y)))) ; exploit y=0 mirror
(define-param nfreq 500) ; number of frequencies at which to compute flux
(define trans ; transmitted flux
(add-flux fcen df nfreq
(make flux-region
(center (- (* 0.5 sx) dpml 0.5) 0) (size 0 1))))
; Run the simulation (stopping when Ez at flux plane grows small)
(run-sources+ (stop-when-fields-decayed
50 Ez
(vector3 (- (* 0.5 sx) dpml 0.5) 0)
1e-3)
(at-beginning output-epsilon))
(display-fluxes trans) ; print out the flux spectrum (power vs. frequency)