Dear Steven,
I am simulating the SPP of a metal film.
The film is at xy plane. TM plane wave (Hy, Ex, Ez), oblique
incidence.(66 degree)
The following is my ctl file. I can not see the SPP.
When i set the source, i set (component Hy) , in meep can we use
(component Hy+Ex+Ez)?
Can (component Hy) with (define (my-amp-func p) (exp (* 0+2i pi kx
(vector3-x p)))) can generate a TM wave?
Thank you very much!
Yours Sincerely,
Lina
(reset-meep)
(define-param unit 5e-7); base unit in 10nm (1e-8nm = 10 nm)
(define c 2.99796e+8)
(define unit_t (/ unit c))
(define-param no-slab? false)
(define-param e_au_inf 5.9673) ; infinity epsilon of Au
(define-param delta-epsilon_drude 1.0)
(define-param delta-epsilon_lorentz 1.09)
(define fp_drude 2.1136e+15)
(define lamda_drude (/ c fp_drude))
(define wp_drude_unit (/ unit lamda_drude))
(define gamma_drude 1.592e+13)
(define temp_lamda_drude (/ c gamma_drude))
(define gamma_drude_unit (/ unit temp_lamda_drude))
(define fp_lorentz 6.5007e+14)
(define lamda_lorentz (/ c fp_lorentz))
(define wp_lorentz_unit (/ unit lamda_lorentz))
(define gamma_lorentz 1.0486e+14)
(define temp_lamda_lorentz (/ c gamma_lorentz))
(define gamma_lorentz_unit (/ unit temp_lamda_lorentz))
(define Au
(make dielectric (epsilon e_au_inf)
(polarizations
(make polarizability
(omega 1e-20) (gamma gamma_drude_unit)
(delta-epsilon (* delta-epsilon_drude wp_drude_unit
wp_drude_unit 1e+20 1e+20)))
(make polarizability
(omega wp_lorentz_unit) (gamma gamma_lorentz_unit)
(delta-epsilon delta-epsilon_lorentz))
)))
(define sio2 (make dielectric (epsilon (* 1.51 1.51))))
(define liquid (make dielectric (epsilon (* 1.329 1.329))))
(set-param! resolution 500.0)
(define-param L 0.12)
(define-param d 0.1)
(define-param sx L)
(define-param sy L)
(define-param sz 1.6)
(define-param h 0.1) ; thickness of Au
(define-param hs (/ sz 2)) ; thickness of substrate
(define-param h_air (- (/ sz 2) h)) ; thickness of air
(set! eps-averaging? false)
(set! geometry-lattice (make lattice (size sx sy sz)))
(set! geometry (if no-slab?
(list
(make block (material sio2) (center 0 0 0) (size sx sy sz)))
(list
(make block (material liquid) (center 0 0 0) (size sx sy sz))
(make block (material sio2) (center 0 0 (* -0.5 hs) ) (size sx sy
hs))
(make block (material Au) (center 0 0 (/ h 2)) (size L L h) )
)))
(define-param fcen 0.625) ; pulse center frequency
(define-param df 0) ; turn-on bandwidth
(define-param nfreq 1)
(define-param theta_degree 66)
(define theta (* pi (/ theta_degree 180)))
(define kx (* fcen (sin theta)))
(set! k-point (vector3 kx 0 0))
(define (my-amp-func p) (exp (* 0+2i pi kx (vector3-x p))))
(set! sources
(list
(make source
(src (make continuous-src (frequency fcen) ))
(component Hy) (center 0 0 -0.6) (size sx sy 0)
(amp-func my-amp-func))
))
(set! k-point (vector3 kx 0 0))
(define-param dpmlz 0.1) ; thickness of PML in z
(set! pml-layers (list (make pml (thickness dpmlz) (direction Z))))
(define trans ; transmitted flux
(add-flux fcen df nfreq
(make flux-region
(center 0 0 0.5)(direction Z) (size sx sy 0))))
(define refl
(add-flux fcen df nfreq
(make flux-region
(center 0 0 -0.5) (size sx sy 0) (direction Z))))
(if (not no-slab?) (load-minus-flux "refl-flux" refl))
;(run-sources+ (stop-when-fields-decayed 500 Ey
; (vector3 0 0 50) 1e-4)
; (at-beginning output-epsilon)
; (at-every 100 output-efield-x))
(define (my-print-point1)
(print "point:, " (meep-time) ", "
(get-field-point Hy (vector3 0 0 0.5)) "\n"))
(define (my-print-point2)
(print "point:, " (meep-time) ", "
(get-field-point Hy (vector3 0 0 -0.5)) "\n"))
(define (my-print-point3)
(print "point:, " (meep-time) ", "
(get-field-point Ex (vector3 0 0 0.5)) "\n"))
(define (my-print-point4)
(print "point:, " (meep-time) ", "
(get-field-point Ex (vector3 0 0 -0.5)) "\n"))
(define (my-print-point5)
(print "point:, " (meep-time) ", "
(get-field-point Hy (vector3 0.06 0.06 -0.5)) "\n"))
(run-until 30 my-print-point1 my-print-point2 my-print-point3
my-print-point4 my-print-point5
(at-beginning output-epsilon)
(at-every 10 output-hfield-y))
(print "dt = " (meep-fields-dt-get fields) "\n")
(if no-slab? (save-flux "refl-flux" refl))
(display-fluxes trans refl)
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss