Re: woodpile band gap

"Steven G. Johnson" <[email protected]>
Newsgroups gmane.comp.science.photonic-bands
Message-ID <[email protected]>
I find that it is quite tricky to get the unit cell and k points right  
for the woodpile structure.  Rest assured that, if you do so, MPB will  
give the right answer.

Rather than debug your .ctl file, I give below a file that yields the  
correct structure.  Notice the use of the cartesian->lattice function  
to convert between the orthogonal Cartesian basis and the basis of the  
primitive cell.

; Woodpile structure.  Note that a general woodpile is an fct lattice,
; but with the correct log height it is fcc, and that is what is used  
here.
; (It turns out that the optimal structure is pretty close to fcc
; anyway, so we don't gain much by going to fct.)

(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)))

(define-param k-interp 9)

; Corners of the irreducible Brillouin zone for the fcc lattice,
; in a canonical order.  In this case, woodpile breaks some of
; the symmetry so we have additional points W'', X', etc.
(define X (vector3 0 0.5 0.5))
(define U (vector3 0.25 0.625 0.625))
(define L (vector3 0.5 0.5 0.5))
(define Gamma (vector3 0 0 0))
(define W (vector3 0.25 0.5 0.75))
(define K (vector3 0.375 0.375 0.75))

; inequivalent points due to broken symmetry
(define W'' (rotate-reciprocal-vector3 X (deg->rad 90) W))
(define X' (vector3 0.5 0.5 0)) ; z (stacking) direction
(define K' (rotate-reciprocal-vector3 L (deg->rad -120) K))
(define W' (rotate-reciprocal-vector3 L (deg->rad -120) W))
(define U' (rotate-reciprocal-vector3 L (deg->rad -120) U))

(set! k-points (interpolate k-interp (list X U L Gamma W K X' U' W' K'  
W'')))

(define-param eps 13) ; the dielectric constant of the "log" material

(define diel (make dielectric (epsilon eps)))

(define-param w 0.20) ; width of the logs
(define-param h 0.25) ; height of logs (should be 1/4 for fcc to not  
overlap)

; shortcut for cartesian->lattice function:
(define (c->l . args) (cartesian->lattice (apply vector3 args)))

(set! geometry
	(list
	 (make block (material diel)
	       (center (c->l 0 0 0))
	       (e1 (c->l 1 1 0))
	       (e2 (c->l 1 -1 0))
	       (e3 (c->l 0 0 1))
	       (size infinity w h))
	 (make block (material diel)
	       (center (c->l 0.125 0.125 h))
	       (e1 (c->l 1 1 0))
	       (e2 (c->l 1 -1 0))
	       (e3 (c->l 0 0 1))
	       (size w infinity h))))

(set-param! resolution 32)
(set-param! num-bands 10)
(run)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.