MPB release notes
From AbInitio
(Difference between revisions)
Revision as of 01:41, 16 October 2005 (edit) Stevenj (Talk | contribs) ← Previous diff |
Revision as of 02:21, 3 April 2014 (edit) Stevenj (Talk | contribs) Next diff → |
||
Line 2: | Line 2: | ||
Here, we describe what has changed between releases of the [[MIT Photonic Bands]] package. You can also refer to the <code>NEWS</code> file in the MPB package (or the <code>ChangeLog</code> file for a more detailed listing). | Here, we describe what has changed between releases of the [[MIT Photonic Bands]] package. You can also refer to the <code>NEWS</code> file in the MPB package (or the <code>ChangeLog</code> file for a more detailed listing). | ||
{{TOCright}} | {{TOCright}} | ||
+ | |||
+ | |||
+ | == MPB 1.5 == | ||
+ | |||
+ | <small>April 2, 2014</small> | ||
+ | |||
+ | * MPB now also installs a library, for use from within Meep 1.2 or later. | ||
+ | * Support Guile 2.x. | ||
+ | * Support FFTW version 3.x (in addition to FFTW 2.x). Version 3.3 or later is required for MPI parallelism. | ||
+ | * Support for OpenMP parallelism. | ||
+ | * Use more accurate subpixel averaging algorithm for interfaces between anisotropic material (see [http://math.mit.edu/~stevenj/papers/papers_abstracts.html#KottkeFa08 Kottke et al, PRE 77, 036611, 2008]). | ||
+ | * Use more accurate geometry routines in recent libctl versions (improves and speeds subpixel averaging). | ||
+ | * Support using a different '''k''' origin in <code>find-k</code>. | ||
+ | * Added <code>epsilon-func</code> wrapper for <code>material-func</code> (similar to Meep). | ||
+ | * Added <code>compute-1-group-velocity</code> to compute group velocity of a single band. | ||
+ | * Added <code>kinterpolate-uniform</code> function, to interpolate with roughly uniform spacing in reciprocal space. | ||
+ | * Added <code>optimize-grid-size!</code> function to round the grid size to a size that can be handled more efficiently. (Only affects resolution, not lattice vectors.) | ||
+ | * Allow user to set <code>filename-prefix</code> to false to disable its use. | ||
+ | * Added <code>mpb-data -P <angle></code> option to change the phase angle of the output. | ||
+ | * Added <code>compute-field-divergence</code> and routines to get and output the bound charge density: <code>get-charge-density</code> and <code>output-charge-density</code>. | ||
+ | * <code>resolution</code> is now an arbitrary real number, not just an integer, although of course MPB eventually computes an integer grid size. | ||
+ | * Support HDF5 1.8. | ||
+ | * Fix recurring ''non positive-definite matrix in potrf'' errors that were arising due to roundoff errors preventing matrix inversion. | ||
+ | * Fix <code>output-at-kpoint</code> to avoid sensitivity to roundoff errors. | ||
+ | * Bug fix in parallel HDF5 support: HDF5 compiled for parallel I/O (MPI) now works. | ||
+ | * Bug fix in <code>field-map!</code>, thanks to Karen Lee for the bug report. | ||
+ | * Bug fix for <code>first-brillouin-zone-k</code>, thanks to Mischa Megens. | ||
+ | * Bug fix: <code>get-field</code> and <code>compute-field-integral</code> now use fields with the same phase as the outputted fields. Thanks to Jim West for the bug report. | ||
+ | * Miscellaneous bug fixes. | ||
+ | |||
== MPB 1.4.2 == | == MPB 1.4.2 == | ||
Revision as of 02:21, 3 April 2014
MIT Photonic Bands |
Download |
Release notes |
MPB manual |
Introduction |
Installation |
User Tutorial |
Data Analysis Tutorial |
User Reference |
Developer Information |
Acknowledgements |
License and Copyright |
Here, we describe what has changed between releases of the MIT Photonic Bands package. You can also refer to the NEWS
file in the MPB package (or the ChangeLog
file for a more detailed listing).
|
MPB 1.5
April 2, 2014
- MPB now also installs a library, for use from within Meep 1.2 or later.
- Support Guile 2.x.
- Support FFTW version 3.x (in addition to FFTW 2.x). Version 3.3 or later is required for MPI parallelism.
- Support for OpenMP parallelism.
- Use more accurate subpixel averaging algorithm for interfaces between anisotropic material (see Kottke et al, PRE 77, 036611, 2008).
- Use more accurate geometry routines in recent libctl versions (improves and speeds subpixel averaging).
- Support using a different k origin in
find-k
. - Added
epsilon-func
wrapper formaterial-func
(similar to Meep). - Added
compute-1-group-velocity
to compute group velocity of a single band. - Added
kinterpolate-uniform
function, to interpolate with roughly uniform spacing in reciprocal space. - Added
optimize-grid-size!
function to round the grid size to a size that can be handled more efficiently. (Only affects resolution, not lattice vectors.) - Allow user to set
filename-prefix
to false to disable its use. - Added
mpb-data -P <angle>
option to change the phase angle of the output. - Added
compute-field-divergence
and routines to get and output the bound charge density:get-charge-density
andoutput-charge-density
. -
resolution
is now an arbitrary real number, not just an integer, although of course MPB eventually computes an integer grid size. - Support HDF5 1.8.
- Fix recurring non positive-definite matrix in potrf errors that were arising due to roundoff errors preventing matrix inversion.
- Fix
output-at-kpoint
to avoid sensitivity to roundoff errors. - Bug fix in parallel HDF5 support: HDF5 compiled for parallel I/O (MPI) now works.
- Bug fix in
field-map!
, thanks to Karen Lee for the bug report. - Bug fix for
first-brillouin-zone-k
, thanks to Mischa Megens. - Bug fix:
get-field
andcompute-field-integral
now use fields with the same phase as the outputted fields. Thanks to Jim West for the bug report. - Miscellaneous bug fixes.
MPB 1.4.2
March 3, 2003
- Interactive prompt is now "
mpb>
" not "guile>
". - Output "
freqs:
" line lists headings as "k1, k2, k3
" instead of "kx, ky, kz
" since they are in reciprocal-lattice, not cartesian, coordinates. Thanks to Theis Peter Hanson for the suggestion. - Bug fix in
find-k
for non-orthogonal lattices; thanks to Suxia (Susan) Yang for tracking down this bug. - Fixed SunOS problem where k vectors along
no-size
dimensions failed; thanks to Benjamin Cowan for the bug report. - Fixed
find-k
to work forband-min
> 1; thanks to M. Povinelli for the bug report. - Fixed
find-k
to work for thunk band functions (which take no arguments and are called only once instead of per-band).
MPB 1.4.1
September 16, 2002
- Fixed
NaN
in field normalization when basis determinant was negative. Thanks to Rumen Iliew for the bug report. - Fixed compatibility problems with versions of Guile prior to 1.4. Thanks to Cazimir G. Bostan for bug reports.
- Don't resize lattice basis for
grid-size
== 1 unlessno-size
was explicitly specified; thanks to Tairan Wang for the suggestion.
MPB 1.4
September 12, 2002
- New
find-k
routine to find k as a function of frequency, instead of vice-versa. - The Great Field Renormalization: all fields are now normalized to have unit *integral* of their energy density (instead of unit sum over the grid points), which is much more useful e.g. for perturbation theory. (See field normalization section of manual.)
- You can now save fields in Scheme variables to perform computations combining different fields. Example routines, e.g. to output the Poynting vector, are included.
- Functions to export (and import) the raw eigenvectors (planewave amplitudes), as well as to compute dot products of eigenvectors from different k-points (e.g. for detecting band crossings).
-
allow-negative-epsilon
function to enable negative-dielectric support. - Added
examples/dos.scm
to compute density of states via simple Gaussian histogram, suggested by Xavier Gonze and Doug Allan. - Bug fix: allow real offdiagonal epsilon elements without requiring
--with-hermitian-eps
. Thanks to Doug Allan for the bug report. - Eliminated floating-point error on Alpha for homogeneous structure. Thanks to F. Lopez-Tejeira for the bug report.
- Added man page for
mpb-split
. - Minor installation fixes.
MPB 1.3
March 10, 2002
- You can now specify the grid size via the
resolution
input variable, instead of viagrid-size
. In this case, you make e.g. a 2d simulation by creating a lattice with sizeno-size
in one dimension. The old syntax is still supported, but the new style is encouraged (all examples have been updated to the new style). - New functions to retrieve fields, dielectric functions, etcetera at any point, interpolated from the grid if necessary; see the
get-*-point
functions in the reference section. - New
compute-field-integral
function, analogous tocompute-energy-integral
; thanks to Marin Soljacic for the suggestion. - Support Scheme complex numbers where appropriate (e.g. in
epsilon-offdiag
or in the new field integration functions). - Got rid of
NaN
when computing the (undefined) group velocity for zero-frequency states at the Gamma point; arbitrarily return zero here instead. Thanks to Dmitry N. Chigrin for reporting floating-point exceptions on Alphas. - Fixed compilation failure for Fortran compilers that use all upper case; thanks to Steve Lantz of Cornell.
- Added "Fun with Fortran" section to installation manual describing common Fortran pitfalls; thanks to Steve Lantz for the suggestion.
- Improved BLAS/LAPACK detection; new
--with-blas
and--with-lapack
options to specify these libraries manually. - Shortened
--with-hermitian-epsilon
configure option to--with-hermitian-eps
. - The data-analysis tutorial is now consistent with h5topng 1.7.
- Use new API from libctl 2.0.
MPB 1.2.2
December 7, 2001
- Fixed bug that caused erroneous/failed convergence when
EVEN-Y
/ODD-Y
constraints were used in three dimensions. Thanks to Rumen Iliew for the bug report. - Added convenience functions
run-yeven
,run-yodd
,run-yeven-zeven
, ...
MPB 1.2.1
November 20, 2001
- Fixed serious crashing bug in 1.2; thanks to Karl Koch for the bug report.
MPB 1.2
November 15, 2001
- Added new y-parity computation and constraints. See the new
run-parity
function, which allows you to simultaneously specify the parity through the y=0 and z=0 planes, for symmetric structures. See also thedisplay-yparities
function. - z parity is no longer computed by default; see the new
display-yparities
anddisplay-zparities
functions to pass to(run)
. - Return more-accurate average epsilon, fill factor, and scalar epsilon values (eigenfrequencies are not affected). Thanks to Mischa Megens for bugging me.
- Now outputs D and H in consistent units (previously, D and E were multiplied by a factor of -frequency). Thanks to Michelle Povinelli for worrying.
-
epsilon.h5
file now includes extra datasets for all components of the effective dielectric tensor. (This feature is not yet supported if youconfigure --with-inv-symmetry --with-hermitian-epsilon
.) -
run-polarization
is replaced byrun-parity
, andrun-even
/run-odd
are deprecated in favor ofrun-zeven
/run-zodd
.run-te
/run-tm
are now equivalent torun-zeven
/run-zodd
when invoked for 3d systems. - Noted new
basis-size
property ofgeometry-lattice
, from libctl 1.5. This makes it easier to use conventional units in the fcc lattice. - Group-velocity computation no longer silently invalidates fields that have been loaded with
get-dfield
, etcetera. Thanks to Marin Soljacic for the bug report. - The configure script now checks that
guile
is in the$PATH
. Thanks to Bing Li and Giridhar Malalahalli for their bug reports. - Rotated the W and K points of the diamond-lattice example so that they are oriented similarly to those in the Photonic Crystals book by Joannopoulos et al. (eigenfrequencies are not affected). Thanks to Robert Sheldon for pointing out that this was confusing.
- Added
honey-rods.ctl
example file: a 2d honeycomb lattice of rods. - Added
line-defect.ctl
example file: a line-defect waveguide in a 2d triangular lattice of dielectric rods, formed by a missing row of rods.
MPB 1.1.1
July 4, 2001
- Fixed bug in H-field output that caused subtly incorrect H-field files (only) for 3d problems when NOT using
mpbi
. - Fixed bug that caused
mpbi
to output incorrect results for 1d problems (e.g. outputted dielectric functions with zeros). - Changed default eigensolver tolerance from 1e-4 to 1e-7.
- Added
retrieve-gap
convenience function to return the gap between two specified bands. - Fixed typo that prevented compilation of MPI (parallel) version.
- C compiler flags
-O3
are no longer used by default, since they don't work with some compilers; most of the performance depends upon the BLAS and FFTW anyway. (Users wishing greater optimization can set theCFLAGS
environment variable.) Thanks to Giridhar Malalahalli for the bug report.
MPB 1.1
May 6, 2001
- Added
compute-energy-integral
function to make it easier to compute arbitrary field-energy integrals for perturbation theory; thanks to Marin Soljacic for the suggestion. - Fixed bug in
output-field
routines for the case of a nonzero kz component, that caused the fields to be multiplied by an exp(ikx) phase with a k in the wrong direction. Thanks to Jesper Riishede for the bug report.
MPB 1.0
February 23, 2001
- At long last, support for distributed-memory parallel machines with MPI. The computation time (and memory usage) can often improve nearly linearly with the number of processors. Thanks to Clarendon Photonics for funding this work.
- Also added
mpb-split
script to parallelize in a simpler way, without MPI, on e.g. SMP machines, by dividing up the list of k-points among a number of serial mpb processes. - Fixed bug in
mpbi
where artifacts could be introduced in 3d field and dielectric-function output files. (This only affected the output files, not the frequency eigenvalues, etcetera.) Thanks to Michelle Povinelli for the bug report. - Added new
material-function
material type, so that you can now specify that the dielectric tensor be an arbitrary function of position. Thanks to Peter Bermel for needing this. - If MPB is configured with the flag
--with-hermitian-epsilon
, then complex-hermitian dielectric tensors (corresponding to magnetic materials, which break time-reversal symmetry) are supported. Thanks to Shanhui Fan for pestering me about this. - Eliminated
output-copies
input variable; if you want to visualize multiple unit cells, you should usempb-data
. - Added new "
nothing
" material that punches a hole through other objects to the background. (This is distinct fromdefault-material
whenepsilon-input-file
is used, or forcompute-energy-in-objects
.) - Fixed inability of MPB 0.13 to run under an old version (1.2) of Guile.
- Now gives an error if k-point or dielectric tensor is incompatible with run-te/run-tm, or if the dielectric tensor is not positive-definite.
- Default to vendor
cc
instead ofgcc
, so that C and Fortran compilers are in sync. (We default to the vendorf77
because it was probably used to compile LAPACK/BLAS, and Fortran libraries are picky.) - The manual now cites our recent publication on the methods behind MPB.
- Bug fix in
compute-energy-in-object-list
for non-orthogonal lattices. - Bug fix in
combine-band-functions
and other functions of band functions, which did not handle functions of no arguments ("thunks") correctly (crashing with an error message). Thanks to Michelle Povinelli for the bug report. - Fixed a floating-point sensitivity bug in
mpb-data
that could cause a crash on the Alpha; thanks to Dominique Caron for the bug report and debugging information.
MPB 0.13
January 7, 2001
- Can now take advantage of inversion symmetry in the geometry, gaining at least a factor of two in speed and a factor of two in memory. To use this, you configure MPB with
--with-inv-symmetry
; the resulting executable is installed as "mpbi
" and only supports inversion symmetry, so you will usually want to install the ordinary MPB as well. - Added new
eigensolver-block-size
input variable, so that MPB can optionally solve for only a few bands at a time instead of all at once, reducing memory requirements and often increasing speed. - Improved handling of the singular (zero-frequency) solutions at the Gamma (k=0) point. This k point should no longer converge slowly (or cause additional problems in the targeted eigensolver).
- Manual updates: please see new referencing suggestions; expanded table of contents; we now use more conventional units in diamond/fcc example.
- You can now pass a "thunk" (function of no arguments) to
run
, and it will be evaluated once per k-point (instead of once per band per k-point as for ordinary band functions). -
compute-field-energy
function now also returns the fraction of the energy in the various field components. Thanks to Karl Koch for the suggestion. - The
filename-prefix
variable is now read each time an output function is called, instead of once per(run)
, so it can be changed frequently if desired. Thanks to Karl Koch for the suggestion. - Added
first-brillouin-zone
function to transform an arbitrary k-point into an equivalent point in the first Brillouin zone. Thanks to Payam Rabiei for the suggestion. - In
mpb-data
, the center of the output cell is now always identical to the origin of the coordinate system. Thanks to Michelle Povinelli for pointing out this deficiency. - Used improved spherical-quadrature formula in computing the effective dielectric tensor in 3d; this should increase accuracy somewhat at lower grid resolutions. Thanks to Doug Allan for helpful discussions.
MPB 0.12
July 9, 2000
- Added
fix-*field-phase
functions to allow a deterministic phase in the output fields, thanks to a suggestion by Doug Allan. - Added group-velocity calculation functions (
display-group-velocities
, etcetera). - Added
-e x,y,z
option tompb-data
so that you can now specify an orientation of the output cell (e.g. to make the first axis the 111 direction of an fcc crystal). - Added
(index n)
substitute forepsilon
property of dielectrics, equivalent to(epsilon (* n n))
. - Documented new libgeom features:
cone
geometric object, coordinate conversion functions (reciprocal->lattice
,lattice->cartesian
, etc.), and vector/matrix rotation. -
compute-field-energy
now returns the total, unnormalized energy in the corresponding field; combined withcompute-energy-in-objects
, this makes it easy to do some perturbation theory and related calculations. - Eigensolver improvements. Periodic reorthogonalization and renormalization to combat some numerical problems. New line-minimization code, included with permission from MINPACK-2 by Jorge J. Moré.
- Fixed breaking of 90-degree rotational symmetry-breaking by the mesh in 2d; thanks to Jim West and Doug Allan of Corning for the bug report. (In general, some symmetry-breaking by the discretization seems hard to avoid, however.)
- Fixed bug in field output routines that could cause crashes for grid sizes not a multiple of 4.
- Bug fix in dielectric function construction for 2d systems: we now use the xy plane at z=0 as documented, instead of z=-0.5.
MPB 0.11
February 12, 2000
-
configure
script can now detect and link ATLAS 3.0 accelerated BLAS. - Added
band-range-data
output variable. - Running
mpb-data
multiple times on the same file now replaces the results of the previous run, instead of appending-new2
,-new3
, etcetera. - Fixed bug in
run-even
/run-odd
that could seriously slow or even prevent eigensolver convergence. Thanks to Payam Rabiei for the bug report. - Fixed compilation
--without-hdf5
, or when HDF5 is not found. Thanks to Rajesh Rengarajan for the bug report.
MPB 0.10
January 28, 2000
- Added
mpb-data
utility for post-processing data (e.g. for unskewing non-orthogonal lattices). See the new data-analysis tutorial orman mpb-data
for more information. - Added new data-analysis tutorial to the manual, describing how to analyze and visualize the results of two sample calculations.
- Added support for a new material type,
dielectric-anisotropic
, so that you can specify arbitrary real/symmetric dielectric tensors. - Added new
output-at-kpoint
function to make it easier to output fields only at a single k-point in a band-structure calculation. - When outputting fields, output all field components (x, y, z, and real and imaginary parts) to a single HDF5 file. Also include info on the lattice and k-point vectors to facilitate post-processing.
- Added new subsection to the installation manual describing some generic installation path issues on Unix that were confusing people.
- Use
CPPFLAGS
environment variable instead of the less-standardINCLUDES
to pass-I
flags to the configure script (for header files in non-standard locations). - Added
diamond.ctl
example file for a 3d diamond (fcc) lattice of spheres. - Added (brief) mpb
man
page. - Fixed z-parity output and
run-even
/odd
functions for 2d grids. - Fixed bug in
output-dpwr-in-objects
. Thanks to Mihai Ibanescu for the bug report. - Compilation fixes. We need to set
SHELL
in theMakefile
formake
on some systems. Also added rule to insurectl-io.h
is created beforemain.c
is compiled. Thanks to Christoph Becher for the bug reports.
MPB 0.9.1
January 7, 2000
- Fixed eigensolver bug where special handling of Gamma (k=0) point could screw up convergence for subsequent k-points, causing incorrect results.
- Fixed behavior of
filename-prefix
input variable; thanks to Karl Koch for the bug report
MPB 0.9
January 2, 2000
- Added
run-even
andrun-odd
functions, so you can now compute only even/odd states (with respect to a z=0 mirror plane) in systems with sufficient symmetry. See also the newz-parity
output variable. - Added
epsilon-input-file
variable, so that you can now read an arbitrary dielectric function from a file. - Field file names now include the polarization (e.g. "
.tm
"). - Some optimizations in the eigensolver.
- Some documentation improvements; thanks to Edmond Chow for his comments.
-
configure
should work even when there is no Fortran compiler on your system (assuming your BLAS, etc., libraries work without Fortran libs). Thanks to Antti Renko for the bug report. - Fixed problems detecting BLAS and LAPACK shared libraries in
configure
. Thanks to Karri Varris for the bug report. - Fixed trailing spaces in
sed
command, which were breakingmake install
on some systems. Thanks to Ron Chase for the bug report.
MPB 0.8.1
November 22, 1999
- Added
output-hfield-x
,output-dfield-y
, etcetera, functions for outputting only specific field components. - Sped up HDF5 field output routines.
- Added
output-copies
variable to set the number of periods output by the band output functions.
MPB 0.8
November 19, 1999
- Initial public release.