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

Reply via email to