Hello,

I'm designing a large ring resonator (200µm diameter) in the visible spectrum 
(640nm). My 2D simulations have been running for nearly 20h (meep time 11,000) 
on HPC, using 12 nodes (36 cores/node). I believe this is a very high 
computational time, especially given the capabilities of the HPC but I could be 
wrong in that assumption.


I need to perform 3D simulations but it will last even longer than 2D for the 
required height, maybe weeks.


I tried to use symmetry without much success. The transmission spectrum was not 
the same because of the additional source.


I thought of reducing my dimensions by 10, making a = 10µm (instead of 1µm), 
but the resolution will have to be much higher (200 instead of 20) since the 
wavelength will be 10 times smaller and we need around 8pixels/wavelength in 
the highest dielectric.


Could you please give me some insight on how to go about this.


According to the output file:

"Computational cell is 240 x 320 x 0 with resolution 20"


Here's my code in case you can't see the attachment:


(use-output-directory "Output")
(define-param pad 4) ; padding between cell edge and wvg
(define-param w 50) ; waveguide width 0.25 micrometers
(define-param n 1.4) ; index of refraction
(define-param r 100) ; outer radius of ring micrometers
(define-param top-gap 0.15) ; top-gap between wvg and ring
(define top-wvg-ycen (+ r (/ w 2) top-gap)) ; y center of horiz. wvg
(define-param n-ring 1.4) ; index of refraction of the semi circle
(define-param ring-thickness 3)
(define ring-or r)
(define ring-ir (- r ring-thickness))
(define-param bottom-gap 0.1)
(define bottom-wvg-ycen (* -1 (+ r bottom-gap (/ ring-thickness 2))))
(define-param dpml 2) ; thickness of pml
(define-param has-ring? true) ; if false, we have a straight wvg w/o a ring
(define-param has-symmetry? false)
;(define-param sym-phase 1)
(define-param duration 10000)

(define-param sx (* 2 (+ r 20))) ; size of cell X dir
(define-param sy (* 2 (+ r w pad))) ; size of cell Y dir
(define x-source (+ (* -0.5 sx) pad))
(set! geometry-lattice (make lattice (size sx sy no-size)))
(set! pml-layers (list (make pml (thickness dpml))))
(set-param! resolution 20)

(set! geometry
  (if has-ring?
    (list
        (make block (center 0 top-wvg-ycen) (size infinity w infinity) ; top wvg
            (material (make dielectric (index n))))
        (make cylinder (center 0 0) (height infinity)
            (radius ring-or) (material (make dielectric (index n))))
        (make cylinder (center 0 0) (height infinity)
            (radius ring-ir) (material air))
        (make block (center 0 bottom-wvg-ycen)
            (size infinity ring-thickness infinity) ; bottom wvg
            (material (make dielectric (index n))))
    )
    (list
        (make block (center 0 top-wvg-ycen) (size infinity w infinity)
            (material (make dielectric (index n))))
    )
  ))


(define-param fcen (/ 1 0.640)) ; pulse center frequency
(define-param df 0.01) ; pulse width (in frequency)
(set! sources (list
                (make source
                  (src (make gaussian-src (frequency fcen) (fwidth df)))
                  (component Ez)
                  (center x-source top-wvg-ycen)
                  (size 0 w))))

;(if has-symmetry? (set! symmetries (list (make mirror-sym (direction X) (phase 
sym-phase)))))

(define-param dfe 0.005) ; pulse width (in frequency)
(define nfreq 30000)

(define trans1 ; transmitted flux just after the source
    (add-flux fcen dfe nfreq
        (make flux-region
            (center (+ x-source 10) top-wvg-ycen) (size 0 (* 2 w)))))

(define trans2 ; transmitted flux end of top wvg
    (add-flux fcen dfe nfreq
        (make flux-region
            (center (* -1 (+ x-source 10)) top-wvg-ycen) (size 0 (* 2 w)))))

(define trans3 ; transmitted flux at the bottom waveguide
    (add-flux fcen dfe nfreq
        (make flux-region
            (center x-source bottom-wvg-ycen) (size 0 (* 2 ring-thickness)))))

(define trans-ring ; ring flux
    (add-flux fcen dfe nfreq
        (make flux-region
            (center (/ (+ ring-or ring-ir) 2) 0) (size (* 2 ring-thickness) 
0))))


(define (myoutputfeb)
            (print "fieldenergybwvg:, " (meep-time) ", "
                 (field-energy-in-box (volume (size 1 (* 2 ring-thickness) 0)
                 (center x-source bottom-wvg-ycen))) "\n"))

(define (myoutputfer)
           (print "fieldenergyring:, " (meep-time) ", "
                (field-energy-in-box (volume (size (* 2 ring-thickness) (* 2 
ring-thickness))
                (center (/ (+ ring-ir ring-or) 2) 0))) "\n"))

(run-sources+ duration
    (after-sources (harminv Ez (vector3 x-source bottom-wvg-ycen 0) fcen dfe))
    (at-every 0.5 myoutputfeb myoutputfer)
)


(if has-ring? (display-fluxes trans1 trans2 trans3 trans-ring) (display-fluxes 
trans2))

Thank you,

Jaime Silva

Attachment: wvg-ring.ctl
Description: wvg-ring.ctl

_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to