⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tutorial.ctl

📁 MIT开发出来的计算光子晶体的软件
💻 CTL
字号:
; This file contains the Scheme commands from the user tutorial section; of the manual.  It is meant to be run interactively by the user.; *** Our First Band Structure ***(print "********** Square lattice of rods in air **********\n")(set! num-bands 8)(set! k-points (list (vector3 0 0 0)     ; Gamma                     (vector3 0.5 0 0)   ; X                     (vector3 0.5 0.5 0) ; M                     (vector3 0 0 0)))   ; Gamma(set! k-points (interpolate 4 k-points))(set! geometry (list (make cylinder                        (center 0 0 0) (radius 0.2) (height infinity)                       (material (make dielectric (epsilon 12))))))(set! geometry-lattice (make lattice (size 1 1 no-size)))(set! resolution 32)(print "********** Square lattice of rods: TE bands**********\n")(run-te)(print "********** Square lattice of rods: TM bands **********\n")(run-tm)(print "********** Square lattice of rods: TM, w/efield **********\n")(run-tm output-efield-z)(print "********** Square lattice of rods: TE, w/hfield & dpwr **********\n")(run-te (output-at-kpoint (vector3 0.5 0 0) output-hfield-z output-dpwr)); *** Bands of a Triangular Lattice ***(print "********** Triangular lattice of rods in air **********\n")(set! geometry-lattice (make lattice (size 1 1 no-size)                         (basis1 (/ (sqrt 3) 2) 0.5)                         (basis2 (/ (sqrt 3) 2) -0.5)))(set! k-points (list (vector3 0 0 0)          ; Gamma                     (vector3 0 0.5 0)        ; M                     (vector3 (/ -3) (/ 3) 0) ; K                     (vector3 0 0 0)))        ; Gamma(set! k-points (interpolate 4 k-points))(run-tm); *** Maximizing the First TM Gap ***(print "********** Maximizing the first TM gap **********\n")(define (first-tm-gap r)  (set! geometry (list (make cylinder                         (center 0 0 0) (radius r) (height infinity)                         (material (make dielectric (epsilon 12))))))  (run-tm)  (retrieve-gap 1)) ; return the gap from TM band 1 to TM band 2(set! num-bands 2)(set! mesh-size 7) ; increase from default value of 3(define result (maximize first-tm-gap 0.1 0.1 0.5))(print "radius at maximum: " (max-arg result) "\n")(print "gap size at maximum: " (max-val result) "\n")(set! mesh-size 3) ; reset to default value of 3; *** A Complete 2D Gap with an Anisotropic Dielectric ***(print "********** Anisotropic complete 2d gap **********\n")(set! geometry (list (make cylinder                       (center 0 0 0) (radius 0.3) (height infinity)                       (material (make dielectric-anisotropic                                   (epsilon-diag 1 1 12))))))(set! default-material (make dielectric-anisotropic (epsilon-diag 12 12 1)))(set! num-bands 8)(run) ; just use run, instead of run-te or run-tm, to find the complete gap; *** Finding a Point-defect State ***(print "********** 5x5 point defect **********\n")(set! geometry-lattice (make lattice (size 5 5 no-size)))(set! geometry (list (make cylinder                       (center 0 0 0) (radius 0.2) (height infinity)                       (material (make dielectric (epsilon 12))))))(set! geometry (geometric-objects-lattice-duplicates geometry))(set! geometry (append geometry                        (list (make cylinder (center 0 0 0)                                    (radius 0.2) (height infinity)                                   (material air)))))(set! resolution 16)(set! k-points (list (vector3 0.5 0.5 0)))(set! num-bands 50)(run-tm)(output-efield-z 25)(get-dfield 25)  ; compute the D field for band 25(compute-field-energy)  ; compute the energy density from D(print "energy in cylinder: " (compute-energy-in-objects (make cylinder (center 0 0 0)                                  (radius 1.0) (height infinity)                                  (material air))) "\n")(print "********** 5x5 point defect, targeted solver **********\n")(set! num-bands 1)  ; only need to compute a single band, now!(set! target-freq (/ (+ 0.2812 0.4174) 2))(set! tolerance 1e-8)(run-tm); *** Tuning the Point-defect Mode ***(print "********** Tuning the 5x5 point defect **********\n")(define old-geometry geometry) ; save the 5x5 grid with a missing rod(define (rootfun eps)  ; add the cylinder of epsilon = eps to the old geometry:  (set! geometry (append old-geometry                         (list (make cylinder (center 0 0 0)                                     (radius 0.2) (height infinity)                                     (material (make dielectric                                                 (epsilon eps)))))))  (run-tm)  ; solve for the mode (using the targeted solver)  (print "epsilon = " eps " gives freq. = " (list-ref freqs 0) "\n")  (- (list-ref freqs 0) 0.314159))  ; return 1st band freq. - 0.314159(define rooteps (find-root rootfun 0.01 1 12))(print "root (value of epsilon) is at: " rooteps "\n")(define rootval (rootfun rooteps))(print "root function at " rooteps " = " rootval "\n")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -