Hello,

I’m running into a strange problem! I hope someone can help.

I have defined a chirped pulse in MEEP, and propagated it down a vacuum. On 
first glance, it overlays very well on the theoretical pulse (I adjusted the 
theory’s amplitude to match MEEPs, since I didn’t think amplitude mattered in 
this simulation). However, when I started to do some phase manipulations on 
more complex simulations, I could not get the expected effects. 

It turns out, my simulation pulse is slightly off-set from the theoretical 
description of it (about ~.2 femtoseconds in some places). When I take the 
difference of the MEEP pulse and the theoretical one, I get a smaller pulse 
with its own chirp, which shouldn’t happen in a vacuum over such a small 
distance.

Am I adding something in the MEEP code I’m not supposed to? How can I make the 
output from MEEP match theory?

Thank you for your time,
Priscilla

I compare the output of meep to this theoretical function
e^(-(time-t0)^2/(2*(1/width)^2)-1j*freq*2*np.pi*(time-t0)-1j*b*2*np.pi*(time-t0)^2)


(define-param sz 10) ; size of cell in z direction, 1 = 10 nm
(define-param dpml 2) ; PML layer thickness
(define-param t0 9000)
(define-param b 5e-7)

(define (my-func meep-time)
      ; gaussian shape
  (* (exp (/ (* -1 (- meep-time t0) (- meep-time t0)) (* 2 (/ 1 df) (/ 1 df))))
      ; carrier freq
     (exp (* 0+1i -1 fcen 2 pi (- meep-time t0)))
      ; phase
     (exp (* 0+1i -1 b 2 pi (- meep-time t0) (- meep-time t0)))
  )
)

(define-param fcen .0056219359395) ; center frequency of source
(define-param df 0.000555420651148) ; frequency width of source
(set! force-complex-fields? true) ; add complex output to field

(set-param! dimensions 1)

(set! geometry-lattice (make lattice (size no-size no-size sz))) ; create 1D 
system
(set! pml-layers (list (make pml (thickness dpml)))) ; make the pml for +/- z 
boundaries
(set-param! resolution 80) ;(usually 80) dx = 10 nm/# 

; generate the TM ultrashort pulse
(set! sources (list
               (make source
                 (src (make custom-src (src-func my-func) (end-time 12000)))
                 (component Hy) ; needed for TM
                 (center 0 0 (+ (* -0.5 sz) dpml)) ; located at - end of 
waveguide
                 (amplitude 1))))

; call to save the field data, we are saving Ex here
(define print-field (lambda()
  (print " \n ex:, " (meep-time) ", " (get-field-point Ex (vector3 0 0 (- (* 
0.5 sz) dpml))) "\n")))

; run sources until they've finished, add additional steps, print field every # 
time steps
(run-sources+ 24000
              (at-every .2 print-field))
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to