Dear all,

I am trying to simulate the photonic band structure diagram of a single D structure (diamond-like). The structure is defined by a level-set equation, similar to those of gyroids discussed earlier (http://www.mail-archive.com/[email protected]/msg00542.html).

I was able to set-up the dielectric function and the created epsilon-output indeed has the shape of a D structure. However, when I look at the bandgap diagram, I can see no bandgap of reasonable size. As a test, I tried to reproduce the bandgap width of a 30% filled D-structure (t < -0.5) of Kole et al. (Fig.1 , link.aps.org/doi/10.1103/PhysRevB.68.115107), but failed to see the shown broad gap. I also tested a Diamond structure with air spheres to much the 30% filling and there the bandgap size is approximately right.

To me it is not obvious, what is going wrong in my code. Any help and debugging would be greatly appreciated!

Cheers,
Bodo

; Dielectric Schwartz D surface in air, on a fcc lattice

(set! geometry-lattice (make lattice
                         (basis-size (sqrt 0.5) (sqrt 0.5) (sqrt 0.5))
                         (basis1 0 1 1)
                         (basis2 1 0 1)
                         (basis3 1 1 0)))

; Corners of the irreducible Brillouin zone for the fcc lattice
(set! k-points (interpolate 10 (list
                   (vector3 0 0.5 0.5)            ; X
                   (vector3 0 0.625 0.375)        ; U
                   (vector3 0 0.5 0)              ; L
                   (vector3 0 0 0)                ; Gamma
                   (vector3 0 0.5 0.5)            ; X
                   (vector3 0.25 0.75 0.5)        ; W
                   (vector3 0.375 0.75 0.375))))  ; K

; define a couple of parameters (which we can set from the command-line)
(define-param epsmat 11.9)   ; dielectric
(define-param treshold -0.5)   ; treshold to choose pinch-off point

(define pi (* 4 (atan 1))) ; 3.14159...

; The Epsilon function that returns the dielectric constant as a function of position
; returns epsmat if the value of function D < isoval, else it uses air (eps 1)
; D = cos(2*pi*z).*sin(2*pi*y + 2*pi*x) + sin(2*pi*z).*cos(2*pi*x - 2*pi*y)

(define (eps-func p)
   (let* ((lattice->cartesian p)
             (x (vector3-x p))
             (y (vector3-y p))
             (z (vector3-z p)))
   (if (< (+ (* (cos (* 2 pi z)) (sin (+(* 2 pi x)(* 2 pi y))))(* (sin (* 2 pi z)) (cos (- (* 2 pi x)(* 2 pi y))))) treshold)
                (make dielectric (epsilon epsmat))
                (make dielectric (epsilon 1)))))

; We'll just make it the default material, so that it goes everywhere.
(set! default-material (make material-function (material-func eps-func)))

(set-param! resolution 32)
(set-param! mesh-size 3)
(set-param! num-bands 6)

(run)

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

Reply via email to