Dear colleagues:
             I am calculating the transmission spectrum of the 3d racetrack
resonators.It take long time(about a week ),but it still does not
finish.Even the square amplitude is keeping increasing.
         The part of the calculation data :
                        on time step 181179 (time=9058.95), 5.22266 s/step
                        on time step 181180 (time=9059), 5.79688 s/step
                       field decay(t = 9059.05): 16163.2289727805 /
16163.2289727805 = 1.0
       I want to know this is normal?It takes so long time , the field decay
is still 1.0(in the middle of the process ,the decay becomes 0.002,but after
that it becomes to increase ),The amplitude keeping increasing.
    The following is the code.:


(define-param n 3.42) ; index of Si
(define-param n1 1.46) ; index of  SiO2

 (define-param pad 2) ; padding between waveguide and edge of PML
(define-param dpml 1) ; thickness of PML

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

(define-param l  11)
(define-param w 0.5)  ; width of waveguide Si
(define-param r  4.5) ; inner radius of ring
(define-param space 0.18) ;space  between edge of direct WG and edge of ring
WG
(define-param lx 5)  ;
(define-param ls  2)  ; straightwaveguide length
(define-param  r1  21) ; outer radius
(define-param cl  3.5) ; coupling waveguide length

(define-param wz1 0.22)  ; height of waveguide Si1
(define-param wz2  0)  ; height of waveguide Si2
(define-param wz3  1)  ; height of waveguide SiO2
(define-param wz4  2)  ; height of  Substrate
(define  ly  (sqrt(- (* r1 r1) (* (- (+ r1 w) lx) (- (+ r1 w) lx))) )) ;

 ; determine the cell sizes
(define sx  (+  (* 2 (+ space w r lx))  (* 2 (+ pad dpml)))) ; cell size
(define sy (+  (* 2 ls) (* 2 ly)  (* 2 (+ pad dpml)))) ; cell size
(define sz (+  wz1   wz2  wz3 wz4 (* 2 (+ pad dpml)))) ; cell size

(define-param no-racetrack? false)

(set! resolution 10)
(set! geometry-lattice (make lattice (size sx sy sz)))
(set! pml-layers (list (make pml (thickness dpml))))
; create the WG


(set! geometry

(if  no-racetrack?
  (list
                (make block (center (+ r lx space ( / w 2))   0    (- (/
wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size w infinity   wz1)
              (material (make dielectric (index n)) ))

; create the Si2
         (make block (center  0 0  (- ( / wz1 2) (/ wz3 2) (/ wz4 2))) (size
infinity  infinity  wz2)
            (material(make dielectric (index n)) ))
 ; create the SiO2
               (make block (center  0 0  (+ ( / wz1 2) (/ wz2 2) (/ wz4
-2)))  (size infinity  infinity  wz3)
              (material(make dielectric (index n1)) ))
     ; create the Si3
         (make block (center  0 0  (+ ( / wz1 2) (/ wz2 2) (/ wz3 2))) (size
infinity  infinity  wz4)
           (material(make dielectric (index n)) ))
)
(list
   ; create the Si1
         ;region1
                       (make cylinder (center (- (*  -1 r1) (* 2 w) space r)
0 (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (height  wz1)
           (radius (+ r1  w)) (material (make dielectric (index n)) ))
          (make cylinder (center (- (*  -1 r1) (* 2 w) space r) 0  (- (/
wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (height  wz1)
             (radius r1) (material air))
               (make block (center  (* -1 (+ space r r1 (* 2 w) (/ lx 2)))0
(- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size (- (* 2 (+ r1 w)) lx) (*
2 (+ r1 w))  wz1)
               (material  air ))
                         (make cylinder (center (+  r1 (* 2 w) space r) 0 (-
(/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (height  wz1)
            (radius (+ r1  w)) (material (make dielectric (index n)) ))
            (make cylinder (center (+  r1 (* 2 w) space r) 0  (- (/  wz2 -2
) (/  wz3  2 ) (/  wz4  2 ))) (height  wz1)
              (radius r1) (material air))
              (make block (center  (+ space r r1 (* 2 w) (/ lx 2)) 0 (- (/
wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size (- (* 2 (+ r1 w)) lx) (*  2 (+ r1
w))  wz1)
                  (material  air ))

                    (make block (center 0 (+ ly w) (- (/  wz2 -2 ) (/  wz3
2 ) (/  wz4  2 ))) (size infinity (* 2 w ) wz1)
                  (material  air ))
                   (make block (center 0 (*  -1 (+ ly w)) (- (/  wz2 -2 )
(/  wz3  2 ) (/  wz4  2 ))) (size infinity (* 2 w )  wz1)
                  (material  air ))

            ;region2:input straight coupling
              (make block (center 0 0 (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4
2 ))) (size infinity cl wz1)
               (material  air ))
                  (make block (center  (*  -1 (+ r w space ( / w 2)))  0 (-
(/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size  w  cl  wz1)
            (material (make dielectric (index n)) ))
              (make block (center   (+ r w space ( / w 2)) 0 (- (/  wz2 -2 )
(/  wz3  2 ) (/  wz4  2 ))) (size  w  cl  wz1)
            (material (make dielectric (index n)) ))

            ;region3:outer straight  waveguide
             (make block (center  (*  -1 (+ r lx space ( / w 2)))  (*  -1 (+
(/ sy 4) (/ ly 2))) (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size w (-
(/ sy 2) ly)   wz1)
        (material (make dielectric (index n)) ))
          (make block (center  (*  -1 (+ r lx space ( / w 2)))   (+ (/ sy 4)
(/ ly 2)) (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size w (- (/ sy 2)
ly)   wz1)
        (material (make dielectric (index n)) ))
           (make block (center   (+ r lx space ( / w 2))   (+ (/ sy 4) (/ ly
2)) (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size w (- (/ sy 2) ly)
wz1)
        (material (make dielectric (index n)) ))
         (make block (center  (+ r lx space ( / w 2))  (*  -1 (+ (/ sy 4) (/
ly 2))) (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 ))) (size w (- (/ sy 2)
ly)   wz1)
        (material (make dielectric (index n)) ))

      ;region4 :center region
           (make cylinder (center 0 (/ l 2) (- (/  wz2 -2 ) (/  wz3  2 ) (/
wz4  2 ))) (height  wz1)
     (radius (+ r  w)) (material (make dielectric (index n)) ))
    (make cylinder (center  0 (/ l 2) (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4
2 ))) (height  wz1)
             (radius r) (material air))
                 (make cylinder (center 0 (/ l  -2) (- (/  wz2 -2 ) (/  wz3
2 ) (/  wz4  2 ))) (height  wz1)
       (radius (+ r  w)) (material (make dielectric (index n)) ))
       (make cylinder (center  0 (/ l  -2) (- (/  wz2 -2 ) (/  wz3  2 ) (/
wz4  2 ))) (height  wz1)
             (radius r) (material air))

             (make cylinder (center  0 (/ l 2) (- (/  wz2 -2 ) (/  wz3  2 )
(/  wz4  2 ))) (height  wz1)
            (radius r) (material air))

              (make block (center  0 0 (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4
2 ))) (size (* 2 (+ r w))  l  wz1)
              (material (make dielectric (index n)) ))
              (make block (center  0 0 (- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4
2 ))) (size (* 2 r)  l  wz1)
              (material  air ))

   ; create the Si2
         (make block (center  0 0  (- ( / wz1 2) (/ wz3 2) (/ wz4 2))) (size
infinity  infinity  wz2)
            (material(make dielectric (index n)) ))
 ; create the SiO2
               (make block (center  0 0  (+ ( / wz1 2) (/ wz2 2) (/ wz4
-2)))  (size infinity  infinity  wz3)
              (material(make dielectric (index n1)) ))
     ; create the Si3
         (make block (center  0 0  (+ ( / wz1 2) (/ wz2 2) (/ wz3 2))) (size
infinity  infinity  wz4)
            (material(make dielectric (index n)) ))
            )))


(set! sources (list
        (make source
   (src (make gaussian-src (frequency fcen) (fwidth df)))
   (component Ex)
   (center  (+ r lx space ( / w 2)) (- (/ sy 2) 2) (- (/  wz2 -2 ) (/  wz3
2 ) (/  wz4  2 ))
   ))))

   (define-param nfreq 100) ; number of frequencies at which to compute flux
          (define trans ; transmitted flux
           (add-flux fcen df nfreq
       (if no-racetrack?
           (make flux-region
            (center  (+ r lx space ( / w 2))  (- 2 (/ sy 2) )  (- (/  wz2 -2
) (/  wz3  2 ) (/  wz4  2 ))) (size w 0  wz1))

           (make flux-region
             (center (*  -1  (+ r lx space ( / w 2)) ) (- (/ sy 2) 2)   (-
(/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 )) ) (size w 0  wz1 )))))
     (define refl ; reflected flux
           (add-flux fcen df nfreq
       (make flux-region
        (center   (+ r lx space ( / w 2)) (- (/ sy 2) 1.5)   (- (/  wz2 -2 )
(/  wz3  2 ) (/  wz4  2 ))) (size w  0   wz1 ) )))


     ; for normal run, load negated fields to subtract incident from refl.
fields
(if (not no-racetrack?) (load-minus-flux "refl-flux" refl))

     (run-sources+
      (stop-when-fields-decayed 50 Ex
           (if no-racetrack?
               (vector3 (+ r lx space ( / w 2))  (- 2 (/ sy 2) )   (- (/
wz2 -2 ) (/  wz3  2 ) (/  wz4  2 )) )

               (vector3  (*  -1  (+ r lx space ( / w 2)) ) (- (/ sy 2) 2)
(- (/  wz2 -2 ) (/  wz3  2 ) (/  wz4  2 )) )
               )
          1e-3)

      (at-beginning output-epsilon)
        (at-end output-efield-x)
       (at-end output-dpwr)
       )

     ; for normalization run, save flux fields for refl. plane
     (if no-racetrack? (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