Libctl release notes
Here, we describe what has changed between releases of the libctl package. You can also refer to the
NEWS file in the libctl package (or the
ChangeLog file for a more detailed listing).
28 March 2014
- Bug fix to
interpolate-uniformfor guile 1.8+.
8 August 2012
- Fix incorrect
20 July 2012
- Now works with Guile version 2.x (older versions are still supported).
main.cso that libctl-using programs can suppress all output if desired (e.g. to avoid duplicate outputs on parallel machines).
wedgeobject type for circular/cylindrical wedges, as a subclass of
...)with two new properties:
...)for the angle in radians, and
v)for a vector v such that the wedge angles start at zero in the (v, axis) plane.
- list-type constructors now accept either
vector3->exactfunction for to-integer rounding. Otherwise, ensure that interpolation results are floating-point to prevent type-conversion errors.
ctl-set-prompt!to set interactive prompt in both old and new Guile versions.
ctl-io.hfor C++ compatibility.
- Bug fix in normal-to-object near corners of blocks.
5 June 2008
- Support specifying the location of the
GUILE_CONFIGenvironment variables in the
- Support for calling NLopt optimization library (also requires the program using libctl to be changed to link nlopt).
ellipsoid_overlap_with_objectfunction, analogous to
- Bug fix in
includefunction for recent versions of Guile, to properly keep track of the current include directory.
- Bug fix in numerical-derivative routine, which didn't converge when the error was exactly zero.
27 February 2008
- Added "
begin-timed" function, which is similar to "
begin-time" except that it returns the value of the last statement (like "
begin") rather than the time.
- Bug fix: allow classes to have
- Bug fixes for compilation under C++, thanks to David Foster: include missing
string.hheader and fixed
22 August 2006
- Fix minor Guile incompatibility on some systems.
- Change shared-library version to 3:0:0 instead of 0:0:0. This avoids conflicts with shared library version numbers that has been assigned to earlier versions of libctl for Debian; thanks to Josselin Mouette for the suggestion.
- Switch to use
libtool. Can now install shared libraries with
- License is now GNU GPL (v2 or later) rather than the GNU LGPL, due to use of third-party GPL code for multi-dimensional integration (below).
gen-ctl-ionow supports separate generation of code and header files via
--headerarguments. (Better for parallel make.) Also support a
-ooption to give a different output file name.
gen-ctl-iocan now export C++ code by using the
gen-ctl-iocan now export SWIG
.ifiles for automatic type conversion in SWIG wrapper generation, using the
- Backwards incompatible change: users must include their own
ctlgeom.h, or you get
ctlgeom-types.hinstead (this is for use with the "stand-alone"
- New multi-dimensional integration routines using adaptive cubature. (Much more efficient than nested 1d integrations.) Adapted in part from the HIntlib Library by Rudolf Schuerer and from the GNU Scientific Library (GSL) by Brian Gough.
interpolate-uniformfunction that tries to maintain a uniform distance between points (i.e. variable number of interpolated points between different list elements, as needed).
- Now install a "stand-alone"
libctlgeom.alibrary to make it easier to call geometry routines from non-Scheme code.
- New routines to compute overlap fraction of box with object, compute analytical normal vectors, etcetera. (For upcoming versions of Meep and MPB.) Also new routines to get the object of a point, not just the material. Also new routines to operate on a supplied geometry list parameter instead of using the global; unlike the old material_of_point_in_tree functions, these functions do not shift the argument to the unit cell, but you can use the new function shift_to_unit_cell to get this behavior.
gen-ctl-ionow generates object equal/copy functions.
unit-vector3, only return 0 when norm==0, not merely if it is small.
- Added one-sided numerical derivative routine.
- Define "
verbose?" variable corresponding to main.c variable.
(flush-all-ports)to keep C and Scheme I/O in sync.
- Fix in
find-root-derivto prevent infinite loop in some cases where the root does not exist; thanks to XiuLun Yang for the bug report.
- Bug fix in
make_hermitian_cmatrix3x3; thanks to Mischa Megens.
- Added simple trapezoidal-rule adaptive numeric integration routine.
- Numerical derivative routines now allow numerical differentation of vector-valued function. Added
find-root-derivfunctions for faster root-finding of functions for which the derivative is also available.
- Added missing
...)constructor, and fixed corresponding constructor for
cvector3object properties; thanks to Doug Allan for the bug report.
- Added generic '
- libctl programs now print out command-line parameters when they run.
- Fixed incomplete support for generic
- Fixed to work with Guile 1.5+ (thanks to Mike Watts for the bug report).
- Bug fix: complex-number input variables were read as garbage if they had imaginary parts; does not affect complex-number outputs.
- Added generic
SCMtype for i/o variables and parameters, as a catch-all for other Scheme objects.
ctl_export_hook(enabled by defining
CTL_HAVE_EXPORT_HOOK) with which to define additional Guile symbols.
gen-ctl-io: converts "!" in symbols to "B" in C identifiers.
set-param!function, analogous to
define-param, that allows you to change the value of a parameter in a way that can still be overridden from the command line.
- In libgeom, allow user to specify the resolution instead of the grid-size. New
no-sizesupport in lattice class to reduce dimensionality, and new
- Support for Scheme complex numbers, along with a few new associated functions:
- New functions to compute numerical derivatives using Ridder's method of polynomial extrapolation.
object-property-value; thanks to Theis Peter Hansen for the suggestion.
- Get rid of unneeded make-default, and use consistent syntax for
define-propertyand define-post-processed-property, compared to
define-input-var.Not backward compatible (for developers; users are not affected). Thanks to Theis Peter Hansen for the suggestion.
--version, etcetera; this makes the behavior nicer e.g. with MPI.
geometry-latticenow has a separate
basis-sizeproperty, so that you can specify the basis vectors as being something other than unit vectors.
- More functions are tail-recursive, helping to prevent stack overflows; thanks to Robert Sheldon for the bug report.
fold-rightfunctions, documented in the manual.
- The configure script now checks that
guileis in the
$PATH. Thanks to Bing Li and Giridhar Malalahalli for their bug reports.
- Support function lists.
display-manyfunction to more felicitous
print-ok?global variable that allows you to disable program output.
- Added support for passing
'functiontypes back and forth (just a SCM object pointing to a Scheme function).
- Cosmetic fixes to yes/no? and menu-choice interaction functions.
- Support start/exit hooks for use e.g. with MPI.
- Added improved "subplex" multidimensional optimization algorithm (for
vector3-zfunctions for extracting
- Added new
conegeometric object type.
lattice->reciprocal, etcetera functions to libgeom for converting vectors between bases.
- Added routines
rotation-matrix3x3for rotating vectors.
- Added support for returning lists from external functions.
- Fixed bug in
- Fixed bug in find-root for converging to negative roots.
- Use Nelder-Mead simplex algorithm for multi-dimensional minimization (it seems to be more robust than the old routine).
CPPFLAGSenvironment variable instead of the less-standard
-Iflags to the configure script (for header files in non-standard locations).
- Compilation fixes. We need to set
SHELLin the Makefile for make on some systems. Also added rule to insure
ctl-io.his created before main.c is compiled. Thanks to Christoph Becher for the bug reports.
- geom: radius and height of objects is now permitted to be zero.
- geom: material_of_point_* routines now report whether the point is in any object; necessary for use with MPB 0.9.
- Added man page for
gen-ctl-io, based on a contribution by James R. Van Zandt.
- geom: handle case where
- geom: bug fix in
geometric-objects-lattice-duplicatesfor non-orthogonal lattices; thanks to Karl Koch for the bug report.
- Initial public release.