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
