Dear Steven and MEEP users


I am trying to simulate Reflectance and Transmittance spectrum from 
Quarter-wave stack. I am getting good results for normal incidence.



The values in the spectrum does not match for oblique incidence

I am attaching the code and spectrum at 45 deg and at normal incidence

Pls. Help me



Regards

Prashanth



Prashanth G.R

Research Scholar

Department of Electrical Communication Engineering

Indian Institute of Science, Bangalore
(reset-meep)

(define-param no-scr 0); if 1 then no scatterer else scatterer
(define-param N 16); (HL)^N
(define-param dh  0.88)
(define-param dl 1.08)
(define-param Nh 1.8)
(define-param Nl 1.4)
(define dhl (+ dh dl))
(define dhl-by-2 (/ dhl 2))
(define nh (make dielectric (index Nh)))
(define nl (make dielectric (index Nl)))
(define substrate (make dielectric (index 1.5 )))
 (define subs_size 4)
(define-param  sx (*  2 (* N dhl)))



(define-param  sy  4)

(set! resolution 10)

(set! pml-layers (list (make pml (direction X) (thickness 2.0) )))
(define tos(* 0.5 (- 0 (* dhl  N))))
(define bos(* 0.5  ( - (* N dhl) 0)))

(define center-l-layer( + (* 0.5 (- dh dhl)) tos))
(define center-h-layer (+  ( + dhl-by-2 (* 0.5 (-  dh dhl))) tos))



(define center_subst (+   (- bos  dhl-by-2 0.2)  (* 0.5 subs_size) ))



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

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

  (set! geometry
        (append
        (geometric-objects-duplicates (vector3 dhl) 0 (- N 1)
        (list
		
		(make block (center center-l-layer 0 0) (size dl sy infinity) (material nl)); Block 2
             (make block (center center-h-layer 0 0) (size dh sy infinity) (material nh)); Block 1
                
        ))
         (list 
             (make block (center center_subst 0 0) (size subs_size sy infinity) (material substrate))); substrate
)))

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


(use-output-directory)

;----------------------------------------------------------------------------------------------------------------------------

;(set! ensure-periodicity true)







(define-param rotation-kv (* (/ 44 360) 2 pi)) ; Degrees if you like them

(set-param! k-point (vector3 1 1 0))

(define-param kdir (vector3  (cos rotation-kv ) (sin rotation-kv ))); direction of k
(define k (vector3-scale (* 2 pi fcen ) (unit-vector3 kdir))); set k to be proper length in direction of kdir 



(define ((my-amp sigma k) x)
(exp (- (* +2i pi (vector3-dot k x))
(/ (vector3-dot x x) (* 2 sigma sigma)))))


(set! sources (list
               (make source 
                 (src (make gaussian-src (frequency  (+ 0.1 fcen)) (fwidth df)))
                 (component Ez)
                 (center (+ 2 (* -0.5 sx)) 0)
                 (size 0 sy)   
		 (amp-func (my-amp 0.01 k))
		 )
                 (make source 
                 (src (make gaussian-src (frequency (- fcen 0.1)) (fwidth df)))
                 (component Ez)
                 (center (+ 2 (* -0.5 sx)) 0)
                 (size 0 sy)   
		(amp-func (my-amp 0.01 k))
		 )
))











;----------------------------------------------------

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

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

(define refl ; reflected flux
      (add-flux fcen df nfreq
                (make flux-region 
                (center (+ 3 (* -0.5 sx)) 0)   ;                                                              3.0 for 90-theta-30
		
		(direction X)
                   (size 0 sy)))) ; 0 sy ;1.46
			
; for normal run, load negated fields to subtract incident from refl. fields
(if (= no-scr 0) (load-minus-flux "refl-flux" refl))

(run-sources+
 (stop-when-fields-decayed 10 Ez                                       ;2000                                      ;100 for 60
                           (vector3 (+ (/ sx 2) -1.5))
                     1e-3  )     ; 


;----------------------------------------------
;
(at-beginning output-epsilon)
(to-appended "ez" (at-every 2 output-efield-z)))

;----------------------------------------------------

 

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

(display-fluxes trans refl)




;---------------------------
;(at-end (output-png Ez "-Zc dkbluered"))
;(at-end (output-png Ey "-Zc dkbluered"))

; (at-end output-efield-z)


_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to