; MPB input file to simulate a "point defect" state formed by modifying ; a single eps2 layer in a periodic structure formed by two materials ; eps1 and eps2. The change in eps2 is controlled by the parameter deps2. ; ; To model a defect, we have to use a "supercell" with N copies of the unit ; cell, where one of the copies has been changed. This also means that we ; need to compute N times as many bands, because of the "band folding" ; (the reduction of the Brillouin zone). ; ; As usual, we choose units of the periodicity a (so that a=1). (define-param eps1 12) (define-param eps2 1) ; note that you can change deps2 on the command-line by e.g.: ; mpb deps2=0.1 defect1d.ctl (define-param deps2 0) ; the change in one eps2 layer (default is 0) ; use quarter-wave thickness by default (define-param d1 (/ (sqrt eps2) (+ (sqrt eps1) (sqrt eps2)))) (define d2 (- 1 d1)) (define-param N 15) ; the size of the supercell (set! geometry-lattice (make lattice (size N no-size no-size))) (set! default-material (make dielectric (epsilon eps1))) ; this is just one block of eps2 at the center... we duplicate it below (set! geometry (list (make block (center 0) (size d2 infinity infinity) (material (make dielectric (epsilon eps2)))))) ; to create the geometry, we have to repeat the epsilon 1 block N times, ; and we can do this using the geometric-objects-lattice-duplicates ; function (see the MPB manual). This function takes the geometry ; list and duplicates it as many times as necessary to fill up ; the lattice (with a duplicate appearing at every unit-vector shift). (set! geometry (geometric-objects-lattice-duplicates geometry)) ; Finally, we have to create the defect. We'll do this by appending ; a new object with eps2 + deps2 at the end of the geometry list ; -- note that later objects take precedence over earlier objects, ; so by putting it at the end we ensure that the defect "overwrites" ; the whatever was previously there. (set! geometry (append geometry (list (make block (center 0) (size d2 infinity infinity) (material (make dielectric (epsilon (+ eps2 deps2)))))))) (set-param! resolution 32) ; 32 pixels/a ; for the defect mode, k does matter (if the supercell is big enough), ; so we just set it to zero. (set! k-points (list (vector3 0))) ; because of the folding, the first band (before the gap) will be folded ; N times. So, we need to compute N bands plus some extra bands to ; get whatever defect states lie in the gap. We'll just use 1 extra band, ; but you'll need to increase this to see higher-order defect modes. (set! num-bands (+ N 1)) (run-tm output-efield-z) ; run, outputting Ez