Dear Prof. Steven,

Appology for bothering you again about the same question. This time, Only 2D 
simulations of the W1 waveguide. The codes are attached. It is much faster to 
get the mode fields--Only several minutes. I want to find similar modes as 
those shown in your online textbook (Fig 10, Page 164, Chapter 8). It seems 
with rectangular lattice, all the similar modes can be found only by run both 
ctl files. You can also see the wierd field distributions of some modes. How 
can I get all the TE modes with a single run?

Looking forward to your kind reply.

Best wishes,
Jiangjun

; w1-rect-1.ctl
;------------------------------------------------
; Define basic lattice distances and sizes
(define ax 1)
(define ay (* (sqrt 3) ax))

(define dx (* 0.5 ax))
(define dy (* 0.5 ay))

(define vec-x (vector3 ax 0)) ; Basic vectores
(define vec-y (vector3 0 ay))
(define vec-1 (vector3 dx dy))
(define vec-2 (vector3 dx (* -1 dy)))

(define ps-x (* ax 0))
(define ps-y (* ay 0.5)) ; determine wg width
(define p1 (vector3 ps-x ps-y))
(define m1 (vector3* -1 p1))

; Define the position of other holes
(define p2 (vector3- p1 vec-2))
(define p3 (vector3+ p1 vec-1))
(define p4 (vector3+ p1 vec-y))
(define m2 (vector3- m1 vec-1))
(define m3 (vector3+ m1 vec-2))
(define m4 (vector3- m1 vec-y))
(define p5 (vector3+ p2 vec-y))
(define p6 (vector3+ p3 vec-y))
(define p7 (vector3+ p4 vec-y))
(define m5 (vector3- m2 vec-y))
(define m6 (vector3- m3 vec-y))
(define m7 (vector3- m4 vec-y))
(define p8 (vector3+ p5 vec-y))
(define p9 (vector3+ p6 vec-y))
(define p10 (vector3+ p7 vec-y))
(define m8 (vector3- m5 vec-y))
(define m9 (vector3- m6 vec-y))
(define m10 (vector3- m7 vec-y))

; Sx Sy and Sz are determined after the geometry is set
(define sx (* 1 ax)) ; If not rectangular, use s1 s2 s3
(define sy (vector3-y (vector3- p10 m10))) ;
(define sz no-size) ; Since 2D
;------------------------------------------------

;------------------------------------------------
; Define basic materials
(define mat (make dielectric (epsilon 12)))
;------------------------------------------------

;------------------------------------------------
; Define Basic components
(define r (* 0.29 ax))
(define h infinity)

(define cylinder-si (make cylinder
              (center 0) (material mat)
              (radius r) (height h)))
(define cylinder-air (make cylinder
               (center 0) (material air)
               (radius r) (height h)))
(define slab-si (make block
          (center 0) (material mat)
          (size infinity infinity h)))
;------------------------------------------------

;------------------------------------------------
; set k and band numbers etc..
(define k-interp 19)
(set-param! num-bands 20)
(set-param! mesh-size 7)
(set-param! resolution (vector3 32 32))
;------------------------------------------------

;------------------------------------------------
(print "sx, sy, sz: " sx " " sy " " sz "\n")
(print "Resolution: " resolution "\n")
(print "num-bands: " num-bands "\n")
(print "k-interp: " k-interp "\n") 

(set! default-material mat) ; since 2D

(set! geometry-lattice (make lattice
             (size sx sy no-size)))

(set! geometry (list
        (shift-geometric-object cylinder-air p1)
        (shift-geometric-object cylinder-air p2)
        (shift-geometric-object cylinder-air p3)
        (shift-geometric-object cylinder-air p4)
        (shift-geometric-object cylinder-air m1)
        (shift-geometric-object cylinder-air m2)
        (shift-geometric-object cylinder-air m3)
        (shift-geometric-object cylinder-air m4)
        (shift-geometric-object cylinder-air p5)
        (shift-geometric-object cylinder-air p6)
        (shift-geometric-object cylinder-air p7)
        (shift-geometric-object cylinder-air m5)
        (shift-geometric-object cylinder-air m6)
        (shift-geometric-object cylinder-air m7)
        (shift-geometric-object cylinder-air p8)
        (shift-geometric-object cylinder-air p9)
        (shift-geometric-object cylinder-air p10)
        (shift-geometric-object cylinder-air m8)
        (shift-geometric-object cylinder-air m9)
        (shift-geometric-object cylinder-air m10)))

(define kz 0)
(define Gamma (vector3 0 0 0))
(define K' (vector3 0.5 0 0))
(set! k-points (interpolate k-interp (list Gamma K')))

(begin-time
 "Total Time Used: "
 (begin
   (run-te
    (output-at-kpoint K' fix-hfield-phase output-hfield-z))))

(display-eigensolver-stats)
(set! mesh-size 3)
;****************************************************************

; w1-rect-2.ctl
;------------------------------------------------
; Define basic lattice distances and sizes
(define ax 1)
(define ay (* (sqrt 3) ax))

(define dx (* 0.5 ax))
(define dy (* 0.5 ay))

(define vec-x (vector3 ax 0)) ; Basic vectores
(define vec-y (vector3 0 ay))
(define vec-1 (vector3 dx dy))
(define vec-2 (vector3 dx (* -1 dy)))

(define ps-x (* ax -0.5))
(define ps-y (* ay 0.5)) ; determine wg width
(define p1 (vector3 ps-x ps-y))
(define m1 (vector3* -1 p1))

; Define the position of other holes
(define p2 (vector3+ p1 vec-x))
(define p3 (vector3+ p1 vec-1))
(define m2 (vector3- m1 vec-x))
(define m3 (vector3- m1 vec-1))

(define p4 (vector3+ p1 vec-y))
(define p5 (vector3+ p2 vec-y))
(define m4 (vector3- m1 vec-y))
(define m5 (vector3- m2 vec-y))

(define p6 (vector3+ p3 vec-y))
(define p7 (vector3+ p4 vec-y))
(define p8 (vector3+ p5 vec-y))
(define m6 (vector3- m3 vec-y))
(define m7 (vector3- m4 vec-y))
(define m8 (vector3- m5 vec-y))

; Sx Sy and Sz are determined after the geometry is set
(define sx (* 1 ax)) ; If not rectangular, use s1 s2 s3
(define sy (vector3-y (vector3- p8 m8))) ;
(define sz no-size) ; Since 2D
;------------------------------------------------

;------------------------------------------------
; Define basic materials
(define mat (make dielectric (epsilon 12)))
;------------------------------------------------

;------------------------------------------------
; Define Basic components
(define r (* 0.29 ax))
(define h infinity)

(define cylinder-si (make cylinder
              (center 0) (material mat)
              (radius r) (height h)))
(define cylinder-air (make cylinder
               (center 0) (material air)
               (radius r) (height h)))
(define slab-si (make block
          (center 0) (material mat)
          (size infinity infinity h)))
;------------------------------------------------

;------------------------------------------------
; set k and band numbers etc..
(define k-interp 19)
(set-param! num-bands 20)
(set-param! mesh-size 7)
(set-param! resolution (vector3 32 32))
;------------------------------------------------

;------------------------------------------------
(print "sx, sy, sz: " sx " " sy " " sz "\n")
(print "Resolution: " resolution "\n")
(print "num-bands: " num-bands "\n")
(print "k-interp: " k-interp "\n") 

(set! default-material mat) ; since 2D

(set! geometry-lattice (make lattice
             (size sx sy no-size)))

(set! geometry (list
        (shift-geometric-object cylinder-air p1)
        (shift-geometric-object cylinder-air p2)
        (shift-geometric-object cylinder-air p3)
        (shift-geometric-object cylinder-air p4)
        (shift-geometric-object cylinder-air m1)
        (shift-geometric-object cylinder-air m2)
        (shift-geometric-object cylinder-air m3)
        (shift-geometric-object cylinder-air m4)
        (shift-geometric-object cylinder-air p5)
        (shift-geometric-object cylinder-air p6)
        (shift-geometric-object cylinder-air p7)
        (shift-geometric-object cylinder-air m5)
        (shift-geometric-object cylinder-air m6)
        (shift-geometric-object cylinder-air m7)
        (shift-geometric-object cylinder-air p8)
        (shift-geometric-object cylinder-air m8)))

(define kz 0)
(define Gamma (vector3 0 0 0))
(define K' (vector3 0.5 0 0))
(set! k-points (interpolate k-interp (list Gamma K')))

(begin-time
 "Total Time Used: "
 (begin
   (run-te
    (output-at-kpoint K' fix-hfield-phase output-hfield-z))))

(display-eigensolver-stats)
(set! mesh-size 3)

;****************************************************************




_______________________________________________
mpb-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/mpb-discuss

Reply via email to