Relationship between primitive cell and reciprocal lattice vectors

"Bruce Burckel" <[email protected]>
Newsgroups gmane.comp.science.photonic-bands
Message-ID <[email protected]>
Hello all,

As a prelude to studying a larger problem, I have been knocking around a toy
problem with MPB and have confirmed some cloudy areas in my understanding of
the program. I would like to study the behavior of a "nominally" 1-D bragg
stack with variable angle with respect to the x-axis in the unit cell. I say
nominally 1-D because with either 0 degrees of tilt (horizontal slabs) or 90
degrees of tilt (vertical slabs) the problem is truly 1-D, but with angles
between these two, the problem becomes 2-D in the sense that the unit cell
requires finite dimensions in both x and y. To keep things consistent
regardless of the tilt angle, I would like to study the problem as a 2-D
problem for all angles.

The unit cell consists of a rectangular primitive cell of low index material
with a "block"of high index material running through the cell. The long axis
of the block makes an angle alpha with the horizontal axis. I find I need to
adjust the size of the primitive cell in order to represent a full period of
the resulting index profile in both x and y. I do this through adjusting the
size parameter for Lattice. The epsilon profiles look correct when I convert
them to pngs.

For the same index contrast and bragg spacing, the bandgap should be a
constant regardless of tilt angle as long as I am considering k-points
normal to the bragg planes. I find this is not the case the way I am coding
up the problem.

alpha = 0 - Gap between 1 and 2 of 39.28%; Gap between 2 and 3 of 5.47% ;
Gap between 4 and 5 of 7.29%

alpha = 90 - Gap between 1 and 2 of 39.38%; Gap between 2 and 3 of 5.34%;
Gap between 4 and 5 of 7.16%

alpha = 45 - Gap between 1 and 2 of 31.77%

alpha = 30 - Gap between 1 and 2 of 18.34%

alpha = 15 - Gap between 3 and 4 of 4.35%



I am wondering if the problem is that I am not treating the reciprocal
lattice vectors fairly as I adjust my primitive cell for each angle or some
other issue with my understanding or implementation. The ctl file I am using
is included below. Thanks in advance to anyone willing to throw some cycles
at enlightening me.

Bruce

(define-param n-lo 1.0) ; low index

(define-param n-hi 1.828); high index

(define-param alpha 45) ; tilt angle of bragg stack

(define pi (* 4 (atan 1)))

(define a_rad (* alpha (/ pi 180))) ; alpha_rad is the tilt angle in radians

(define s (sin a_rad))

(define c (cos a_rad))

(define s (if (< (abs s) 1e-4) 0 s)) ; need to make almost zero exactly zero

(define c (if (< (abs c) 1e-4) 0 c)) ; need to make almost zero exactly zero

(define size_x (if (= s 0) 1 (/ s))) ; need finite primitive cell even when
dimension goes to zero

(define size_y (if (= c 0) 1 (/ c))) ; need finite primitive cell even when
dimension goes to zero





(set! geometry-lattice (make lattice

(size size_x size_y no-size)))


;**************************************************************************

;**** Define Bragg Structure

;**************************************************************************

(define Bragg-spacing 2) ; periodicity of bragg stack

(define (Unit_tilt p) (- (* (sin a_rad) (vector3-x p))

(* (cos a_rad) (vector3-y p)) )); unit vector in direction perp to tilt

(define (Layers p) (cos (* Bragg-spacing pi (Unit_tilt p)))); cos
distribuition over primitive cell

(define (Bragg p) (if (> (Layers p) 0) n-hi n-lo )) ; threshhold-ed index

(define (eps-func p) (make dielectric (index (Bragg p)) ))

(set! default-material (make material-function (material-func eps-func)))

;**************************************************************************

(define bz_edge (cartesian->reciprocal (vector3 (- s) c) ))

(set! k-points (list (vector3 0 0) bz_edge))

(set! k-points (interpolate 8 k-points))

(set-param! resolution 16)

(set-param! num-bands 6)

(run-te fix-hfield-phase output-hfield-z )
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.