Woodpile structure using simple cubic lattice

Giorgio Mauro <[email protected]> Mon, 9 Oct 2017 12:34:33 +0000
Newsgroups gmane.comp.science.photonic-bands
Message-ID <VI1PR0901MB1007DBA6F50887C93B6EA38AA5740@VI1PR0901MB1007.eurprd09.prod.outlook.com>
--===============8476389384171497125==
Content-Language: it-IT
Content-Type: multipart/alternative;
	boundary="_000_VI1PR0901MB1007DBA6F50887C93B6EA38AA5740VI1PR0901MB1007_"

--_000_VI1PR0901MB1007DBA6F50887C93B6EA38AA5740VI1PR0901MB1007_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Dear MPB users,


I'm recently working on a woodpile structure and as example I took the code=
 posted by Professor Steven G. Johnson years ago.


The structure consists of a supercell with a brick (waveguide) defect at it=
s center, so I have modified the code appropriately.


This code uses the fcc lattice to obtain the structure and consists of two =
brick rods disposed along the fcc lattice base.


However, due to the peculiar lattice base used, I'm finding quiete lot of d=
ifficulty to take a 2D slice of the structure in the defect direction and p=
lot fields.


I thought that having the same structure realized along common cartesian ax=
es could lead to more straightforward field plot possibilites (for example,=
 if z is the direction of the waveguide defect, one can cut a 2D slice on t=
he xy plane and observe the fields),


so I tried to make the same structure by using a simple cubic lattice. The =
code I wrote is the following:


; Woodpile structure.

(set! geometry-lattice (make lattice
(basis1 1 0 0)
(basis2 0 1 0)
(basis3 0 0 1)))

(define-param k-interp 9)

(define Gamma (vector3 0 0 0))
(define R (vector3 0.5 0.5 0.5))
(define X (vector3 0 0.5 0))
(define M (vector3 0.5 0.5 0))
(set! k-points (interpolate k-interp (list Gamma X M Gamma R X M R)))

(define-param eps 9.8) ; 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


(set! geometry
(list
(make block (material diel)
(center 0 0 0)
(size infinity w h))
(make block (material diel)
(center 0 0 h)
(size w infinity h))
(make block (material diel)
(center 0 0.5 0.5)
(size infinity w h))
(make block (material diel)
(center 0.5 0 0.75)
(size w infinity h))

))

(set-param! resolution 32)
(set-param! num-bands 20)
(run)



The structure consists of four bricks disposed opportunely along the stack =
(z) direction.


By running it, i find a band gap that is large as the one calculated by the=
 structure on fcc lattice, BUT it is centered at slightly lower normalized =
frequency.


I think that this is due to the different basis sizes used in fcc and CUB l=
attices; in fact, by plotting the epsilon function along some periods, I no=
ted that the horizontal center to center distance between the brick is larg=
er in the CUB representation than the fcc representation.


The question is, is this code correct/have any sense? Can I use it as an al=
ternative to the classic fcc representation?


Did I miss something or something is wrong?


In the case that this code is inconsistent, is there a pratical way (some c=
ode example would be appreciated) to cut a slice in a 2D plane along the de=
fect direction for a woodpile fcc representation?


I'm also attaching the base code with a defect inserted:


; Woodpile structure.

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

(define-param k-interp 9)

; Corners of the irreducible Brillouin zone for the fc 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))
(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 9.8) ; the dielectric constant of the "log" material

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

(define-param w 0.2) ; radius of the cylinder rod
(define-param h 0.25)
(define-param wdef 0.4)
(define-param ldef 0.35)

; 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! geometry (geometric-objects-lattice-duplicates geometry))

(set! geometry (append geometry
(list
(make block (material air)
(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 wdef ldef))
)))


(set-param! resolution 16)
(set-param! num-bands 70)
(run (output-at-kpoint (vector3 0.375 0.375 0.75) output-dpwr))



Thank you for your time!!


Giorgio

--_000_VI1PR0901MB1007DBA6F50887C93B6EA38AA5740VI1PR0901MB1007_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<style type=3D"text/css" style=3D"display:none;"><!-- P {margin-top:0;margi=
n-bottom:0;} --></style>
</head>
<body dir=3D"ltr">
<div id=3D"divtagdefaultwrapper" style=3D"font-size:12pt;color:#000000;font=
-family:Calibri,Helvetica,sans-serif;" dir=3D"ltr">
<p>Dear MPB users,</p>
<p><br>
</p>
<p>I'm recently working on a woodpile structure and as example I took the c=
ode posted by Professor Steven G. Johnson years ago.&nbsp;</p>
<p><br>
</p>
<p>The structure consists of a supercell with a brick (waveguide) defect at=
 its center, so I have modified the code appropriately.</p>
<p><br>
</p>
<p>This code uses the fcc lattice to obtain the structure and consists of t=
wo brick rods disposed along the fcc lattice base.&nbsp;</p>
<p><br>
</p>
<p>However, due to the peculiar lattice base used, I'm finding quiete lot o=
f difficulty to take a 2D&nbsp;slice of the structure in the defect directi=
on and plot fields.</p>
<p><br>
</p>
<p>I thought that having the same structure realized along common cartesian=
 axes could lead to more straightforward field&nbsp;plot possibilites (for =
example, if z is the direction of the waveguide defect, one can cut a 2D sl=
ice on the xy plane and observe the fields),</p>
<p><br>
</p>
<p>so I tried to make the same structure by using a simple cubic lattice. T=
he code I wrote is the following:</p>
<p><br>
</p>
<p></p>
<div><span style=3D"font-family: Consolas, Courier, monospace;">; Woodpile =
structure.&nbsp;</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! geome=
try-lattice (make lattice</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(basis1 1 0=
 0)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(basis2 0 1=
 0)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(basis3 0 0=
 1)))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am k-interp 9)</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define Gam=
ma (vector3 0 0 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define R (=
vector3 0.5 0.5 0.5))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define X (=
vector3 0 0.5 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define M (=
vector3 0.5 0.5 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! k-poi=
nts (interpolate k-interp (list Gamma X M Gamma R X M R)))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am eps 9.8) ; the dielectric constant of the &quot;log&quot; material</span=
></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define die=
l (make dielectric (epsilon eps)))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am w 0.20) ; width of the logs</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am h 0.25) ; height of logs&nbsp;</span></div>
<div><br>
</div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! geome=
try</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(list</span=
></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(make block=
 (material diel)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(center 0 0=
 0)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(size infin=
ity w h))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(make block=
 (material diel)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(center 0 0=
 h)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(size w inf=
inity h))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(make block=
 (material diel)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(center 0 0=
.5 0.5)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(size infin=
ity w h))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(make block=
 (material diel)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(center 0.5=
 0 0.75)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(size w inf=
inity h))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">))</span></=
div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set-param!=
 resolution 32)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set-param!=
 num-bands 20)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(run)</span=
></div>
<br>
<p></p>
<p><br>
</p>
<p>The structure consists of four bricks disposed opportunely along the sta=
ck (z) direction.</p>
<p><br>
</p>
<p>By running it, i find a band gap that is large as the one calculated by =
the structure on fcc lattice, BUT it is centered at slightly lower normaliz=
ed frequency.</p>
<p><br>
</p>
<p>I think that this is due to the different basis sizes used in fcc and CU=
B lattices; in fact, by plotting the epsilon function along some periods, I=
 noted that the horizontal center to center distance between the brick is l=
arger in the CUB representation
 than the fcc representation.</p>
<p><br>
</p>
<p>The question is, is this code correct/have any sense? Can I use it as an=
 alternative to the classic fcc representation?</p>
<p><br>
</p>
<p>Did I miss something or something is wrong?</p>
<p><br>
</p>
<p>In the case that this code is inconsistent, is there a pratical way (som=
e code&nbsp;example would be appreciated) to cut a slice in a 2D plane alon=
g the defect direction for a woodpile fcc representation?</p>
<p><br>
</p>
<p>I'm also attaching the base code with a defect inserted:</p>
<p><br>
</p>
<p></p>
<div><span style=3D"font-family: Consolas, Courier, monospace;">; Woodpile =
structure.&nbsp;</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! geome=
try-lattice (make lattice</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(basis1 0 1=
 1)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(basis2 1 0=
 1)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(basis3 1 1=
 0)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(basis-size=
 (sqrt 0.5) (sqrt 0.5) (sqrt 0.5))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">&nbsp; &nbs=
p;(size 5 5 1))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">)</span></d=
iv>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am k-interp 9)</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">; Corners o=
f the irreducible Brillouin zone for the fc lattice,</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">; in a cano=
nical order. In this case, woodpile breaks some of</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">; the symme=
try so we have additional points W'', X', etc.</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define X (=
vector3 0 0.5 0.5))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define U (=
vector3 0.25 0.625 0.625))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define L (=
vector3 0.5 0.5 0.5))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define Gam=
ma (vector3 0 0 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define W (=
vector3 0.25 0.5 0.75))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define K (=
vector3 0.375 0.375 0.75))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define W''=
 (rotate-reciprocal-vector3 X (deg-&gt;rad 90) W))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define X' =
(vector3 0.5 0.5 0)) ; z (stacking) direction</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define K' =
(rotate-reciprocal-vector3 L (deg-&gt;rad -120) K))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define W' =
(rotate-reciprocal-vector3 L (deg-&gt;rad -120) W))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define U' =
(rotate-reciprocal-vector3 L (deg-&gt;rad -120) U))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! k-poi=
nts (interpolate k-interp (list X U L Gamma W K X' U' W' K'</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">W'')))</spa=
n></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am eps 9.8) ; the dielectric constant of the &quot;log&quot; material</span=
></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define die=
l (make dielectric (epsilon eps)))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am w 0.2) ; radius of the cylinder rod</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am h 0.25)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am wdef 0.4)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define-par=
am ldef 0.35)</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">; shortcut =
for cartesian-&gt;lattice function:</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(define (c-=
&gt;l . args) (cartesian-&gt;lattice (apply vector3 args)))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! geome=
try</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(list</span=
></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(make block=
 (material diel)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(center (c-=
&gt;l 0 0 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e1 (c-&gt;=
l 1 1 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e2 (c-&gt;=
l 1 -1 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e3 (c-&gt;=
l 0 0 1))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(size infin=
ity w h))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(make block=
 (material diel)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(center (c-=
&gt;l 0.125 0.125 h))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e1 (c-&gt;=
l 1 1 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e2 (c-&gt;=
l 1 -1 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e3 (c-&gt;=
l 0 0 1))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(size w inf=
inity h))))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! geome=
try (geometric-objects-lattice-duplicates geometry))</span></div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set! geome=
try (append geometry&nbsp;</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(list</span=
></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(make block=
 (material air)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(center (c-=
&gt;l 0 0 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e1 (c-&gt;=
l 1 1 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e2 (c-&gt;=
l 1 -1 0))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(e3 (c-&gt;=
l 0 0 1))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(size infin=
ity wdef ldef))</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">)))</span><=
/div>
<div><br>
</div>
<div><br>
</div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set-param!=
 resolution 16)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(set-param!=
 num-bands 70)</span></div>
<div><span style=3D"font-family: Consolas, Courier, monospace;">(run (outpu=
t-at-kpoint (vector3 0.375 0.375 0.75) output-dpwr))</span></div>
<br>
<p></p>
<p><br>
</p>
<p>Thank you for your time!!</p>
<p><br>
</p>
<p>Giorgio&nbsp;</p>
</div>
</body>
</html>

--_000_VI1PR0901MB1007DBA6F50887C93B6EA38AA5740VI1PR0901MB1007_--


--===============8476389384171497125==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbXBiLWRpc2N1
c3MgbWFpbGluZyBsaXN0Cm1wYi1kaXNjdXNzQGFiLWluaXRpby5taXQuZWR1Cmh0dHA6Ly9hYi1p
bml0aW8ubWl0LmVkdS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbXBiLWRpc2N1c3M=

--===============8476389384171497125==--