mpb improvements?

Greg Werner <[email protected]>
Newsgroups gmane.comp.science.photonic-bands
Message-ID <[email protected]>
There are a couple of suggestions that were made some time ago on the 
list that have not been incorporated into mpb 1.4.2.  I think that one of 
them might count as a bug (though it may not affect many people)...the 
other I'm not sure about.  Is there a list of known bugs in 1.4.2? (Are 
there known bugs in 1.4.2?)  I'd like to know what the consensus (or 
expert opinion, rather) on these issues is, in case I'm making a mistake. 
Admittedly, the "issues" are pretty small.

First, I'm pretty sure there's a bug in the "first-brillouin-zone" 
procedure.  It was described in the mpb users list,
ab-initio.mit.edu/cgi-bin/mailman/private/mpb-discuss/2004-April/000007.html
(I can't see this link any more).
Basically, the procedure translates a vector by reciprocal lattice basis 
vectors and takes the shortest result, then repeats until it finds the 
shortest vector that is equal to the original vector up to a reciprocal 
lattice vector.  The problem is that if b1 and b2 are reciprocal lattice 
basis vectors, k + b1 and k + b2 may be longer than k, while k+b1+b2 may 
be shorter.  The fix is simple: in mpb-ctl/mpb.scm, change the "try-all" 
function so that it tries diagonals too: b1, b2, b3, (which it does 
already), b1+b2, b1-b2, ... , b1 - b2 + b3, b1 + b2 - b3 (13 in all).

Second, someone suggested a slight change to the averaging of the
dielectric over a cell.  The claim was that, e.g., with mesh-size 4, mpb
samples points within the interval -1/2 to 1/2 at locations
-3/6 -1/6 1/6 3/6, whereas with this change, it samples points at
-3/8 -1/8 1/8 3/8.
ab-initio.mit.edu/cgi-bin/mailman/private/mpb-discuss/2004-July/000066.html
(again, I can't see this link anymore)
This seems reasonable to me, since the points would be equally spaced 
over the whole lattice.

I'll offer another test, on a cubic lattice of sapphire spheres (rotated 
so that the dielectric tensor is not diagonal):

Here are the first 6 band frequencies with grids of N x N x N for
a k vector of (0.1,0.2,0.3) (times 2pi), with mesh-size 7.

N    freq (c/a) of first 6 modes using mpb 1.4.2
16,  0.260688, 0.269213, 0.391221, 0.413273, 0.424603, 0.500248
32,  0.260662, 0.269210, 0.389662, 0.411626, 0.422824, 0.498832
64,  0.261040, 0.269523, 0.389486, 0.411522, 0.422587, 0.498649
128, 0.261228, 0.269676, 0.389437, 0.411513, 0.422524, 0.498642

N    freq (c/a) of first 6 modes using mpb 1.4.2 + above change
16,  0.261050, 0.269517, 0.390861, 0.412963, 0.424180, 0.500194
32,  0.261153, 0.269624, 0.389750, 0.411814, 0.422887, 0.499032
64,  0.261253, 0.269703, 0.389537, 0.411612, 0.422630, 0.498773
128, 0.261343, 0.269774, 0.389479, 0.411576, 0.422563, 0.498718

It doesn't seem to make much difference (and I think that higher 
mesh-sizes will reduce the difference).  However, it's interesting 
to look at the Richardson extrapolation of the frequency (assuming 
O(dx^2) error in frequency).

I'll just show the frequencies extrapolated from N=8 and N=16:

mpb 1.4.2:, 0.260653, 0.269209, 0.389142, 0.411077, 0.422231, 0.498360
w/ change:, 0.261356, 0.269815, 0.389583, 0.411554, 0.422573, 0.498692

and those extroplated from N=64 and N=128:

mpb 1.4.2:, 0.261291, 0.269727, 0.389421, 0.411510, 0.422503, 0.498640
w/ change:, 0.261373, 0.269798, 0.389460, 0.411564, 0.422541, 0.498700

It seems to me that this change is beneficial.

Thanks,
Greg.
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.