Hi.
I've been trying to calculate Q factor and mode volume for an H1 resonator
with the holes' epsilon being less than one whilst ignoring absorption.
However, for values of epsilon below a certain level the field seems to
'"explode". The critical level of epsilon seems to depend on resolution, the
higher resolution the higher the level. Changing the source to a
gaussian-type didn't help.
Can anyone suggest a solution or a workaround?
Thanks in advance.


-- 
Leonid Panfil
------------------
"Le mieux est l'ennemi du bien" - Voltaire

Code used:


(reset-meep)
(define-param diel_hole 1);dielectric constant of the holes
(define-param diel_slab 12);dielectric constant of the bulk
(define-param res 10);resolution pixels per unit of distance
(define-param rad 0.3);radius of the holes
(define-param numlayers 6);number of layers (6)
(define-param fcen_h 0.3);for harminv - bandgap for h=0.5 r=0.3 triangular
hole struct. is between ~0.27 and 0.35 (Chap 4)
(define-param df_h 0.06);for harminv
(define-param sx 17); x-size of the cell
(define-param sy 17); y-size of the cell
(define-param sz 10); z-size of the cell
(define-param slab_h 0.5);thickness of the slab
(define-param maxbands 100)
(define-param runtime 500)
(define-param sourcex 0.137);x coord of the point source
(define-param sourcey -0.09);y coord of the point source
(define-param sourcez 0);z coord of the point source
(define-param dhx 0);harminv displacement from source x-axis
(define-param dhy 0); -"- y-axis
(define-param dhz 0); -"- z-axis


(define ((delta_source) t)
  (if (<= t 1)
      1
      0));delta source: returns 1 if t<=1, else 0



(set! default-material (make dielectric (epsilon diel_slab)));default
material: high dielectric
(set! geometry-lattice (make lattice (size sx sy sz)));lattice sx*sy*sz


(set! geometry
      (append;combining list of objects
       (geometric-objects-duplicates (vector3 (/ (sqrt 3) 2) 0.5 0 ) (* -1
numlayers) numlayers
                                    (geometric-objects-duplicates (vector3
(/ (sqrt 3) 2) -0.5 0 ) (* -1 numlayers) numlayers (list
                                                                 (make
cylinder (center 0 0 0)(radius rad)(height infinity)(material (make
dielectric(epsilon diel_hole)))))))));duplicate whithin duplicate to make
holes in the slab


(set! geometry (append geometry (list
                                 (make cylinder (center 0)(radius
rad)(height infinity)(material (make dielectric (epsilon
diel_slab))));defect in the middle
                                 (make block (center ( + (/ sx 4) (* (/
(sqrt 3) 4) numlayers) rad) 0 0)(size ( - (/ sx 2) (* (/ (sqrt 3) 2)
numlayers)) sy infinity)(material (make dielectric (epsilon diel_slab))))
                                 (make block (center ( - (/ sx -4) (* (/
(sqrt 3) 4) numlayers) rad) 0 0)(size ( - (/ sx 2) (* (/ (sqrt 3) 2)
numlayers)) sy infinity)(material (make dielectric (epsilon diel_slab))))
                (make block (center 0 0 (/ sz 2)) (size sx sy (- sz
slab_h))(material (make dielectric (epsilon 1))))
                (make block (center 0 0 (/ sz -2)) (size sx sy (- sz
slab_h))(material (make dielectric (epsilon 1))))
                 )))       ;removing unwanted holes on the sides and then
removing dielectric material from top and bottom, leaving only the slab


(set! sources (list
                 (make source
                 (src (make custom-src (src-func (delta_source ))(start-time
0)(end-time 2)))
                 (component Ez)
                 (center sourcex sourcey sourcez)
                 (size 0 0 0))
               ));off-center delta point source to excite all modes





(set! pml-layers (list (make pml (thickness 1.0))))
(set! resolution res)

(run-sources+ runtime;run until sources off and "runtime" more
    (at-beginning output-epsilon)
        (at-every 2 output-dpwr); output the electric energy of the field
        (after-sources

         (harminv  Ex (vector3 (+ sourcex dhx) (+ sourcey dhy) (+ sourcez
dhz)) fcen_h  df_h maxbands )
         (harminv  Ey (vector3 (+ sourcex dhx) (+ sourcey dhy) (+ sourcez
dhz)) fcen_h  df_h maxbands )
         (harminv  Ez (vector3 (+ sourcex dhx) (+ sourcey dhy) (+ sourcez
dhz)) fcen_h  df_h maxbands )
         (harminv  Hx (vector3 (+ sourcex dhx) (+ sourcey dhy) (+ sourcez
dhz)) fcen_h  df_h maxbands )
         (harminv  Hy (vector3 (+ sourcex dhx) (+ sourcey dhy) (+ sourcez
dhz)) fcen_h  df_h maxbands )
         (harminv  Hz (vector3 (+ sourcex dhx) (+ sourcey dhy) (+ sourcez
dhz)) fcen_h  df_h maxbands )
         (harminv  Hz (vector3 (+ sourcex dhx) (+ sourcey dhy) 0.11) fcen_h
df_h maxbands )));measuring the Q at the location of the source, Ex,Ey,Hz
make up TE polarization. the last measurement is to check whether Qz is
higher outside z=0 plane
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to