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 )






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

Reply via email to