All integrable Hamiltonian systems are alike, while each nonintegrable one is nonintegrable in its own way
changes
Table of Contents
- 2.0.2, pending
- 2.0.1, 17 Apr 2023
- 2.0.0, 29 Mar 2023
- 1.0.16, 15 Aug 2022
- 1.0.15, 07 Nov 2019
- 1.0.14, 20 Aug 2019
- 1.0.13, 09 Jun 2016
- 1.0.12, 12 Jun 2015
- 1.0.11, 20 Dec 2012
- 1.0.10, 04 Jun 2012
- 1.0.9, 18 Jun 2011
- 1.0.8, 09 May 2011
- 1.0.7, 10 Apr 2011
- 1.0.6, 14 Jan 2009
- 1.0.5, 07 Jan 2009
- 1.0.4, 18 Nov 2008
- 1.0.3, 19 Oct 2008
- 1.0.2, 01 Jul 2008
- 1.0.1, 06 Jun 2008
- 1.0.0, 01 Jun 2008
-
The
--histogram
output is now comma (rather than space) separated. -
Initial correct treatment of pixel-aligned inputs, GFS files will be read as pixel-aligned, GMT netCDF files are read as per their
node_offset
attribute, Matlab MAT files as per theirpixel
variable and the new--pixel
option specifies pixel-aligned CSV input.The handling of pixel-aligned input is to use a node-aligned grid which is a half-pixel smaller than the boundary on each side, this might lead to plot failures when using very coarse input grids or very small arrows.
-
The boundary is now drawn only in the interior of the domain, so the value of
--domain-pen
option no longer affects the bounding-box of the plot. This should make composition a little simpler.
-
The
--fill
and--ellipse-fill
options now accept named colours as commonly used in web-browsers, "red", "beige" and so-on. -
All options which take a pen as argument (
--pen
and so-on) can now specify a colour in place of a greyscale value, including the named colours mentioned above.
-
All code updated to C99.
-
Redesign of how the boundary is handled. The "dimension climbing" approach of version 1 is replaced by considering the line-segments of the boundary as "semi-degenerate ellipses", the Perram-Wertheim distance can be generalised to this case. A report on these matters will be submitted for publication in due course.
The end result is that more-complex boundaries can be handled by the program.
-
The calculation of neighbours is now performed using R-trees rather than kd-trees. These are better suited to the (typically vertical and horizontal) line-segments of the boundary, and as a side-benefit results in a substantial performance boost.
-
Implemented autoscaling. In adaptive mode, if the
--scale
option is not specified, then vfplot will attempt to calculate the scaling required to give the number of arrows specified by the new--number
option, or a sensible default (200). -
The graphic-state files (see
--graphic-state
) are now in the JSON format. -
The domain files (see
--domain
) are now in the GeoJSON format. -
The simple ASCII grid input format, "sag", is retired, replaced by a CSV format. The program gfs-csv writes this format (given a Gerris simulation file) and the new csv-grd program will convert such files to GMT netCDF files for faster loading.
The format specifies the location in the grid by (offset-zero) grid indices in the first two columns, to allow these to be mapped to anywhere in plot-space, see the
--grid-range
and--grid-size
options for vfplot and csv-grd -
Acceptance-testing now uses the Bash Automated Testing System (BATS).
-
Added visual tests generating plots of the test fields if the
--enable-visual-tests
option is passed to configure. -
Added memory tests (using valgrind) if the
--enable-memory-tests
option is passed to configure.
-
The bottom-level documentation files are now in markdown (generated by Pandoc) rather than the plain-text generated by the Lynx browser.
-
Acceptance tests which exercise the Gerris functionality are now skipped if the
--enable-gerris
configure option is not given.
-
POSIX threads on OS X. Compiling on OS X with the
--pthread-extra
option should create a multithreaded version of the program.
-
Fixed 50 defects found by Coverity static analysis.
-
Fixed a bug in the numerical calculation of the field radius of curvature used in the dynamic.
-
The sag2grd utility rewritten in Python, works with GMT versions 4 or 5.
-
Short-circuit when the Perram-Werthiem distance is found to be greater than one (the ellipses do not intersect) giving a 20% speedup.
-
Updated to the latest version of John Tsiombikas's kdtree library.
-
Rewrote the POSIX threading for the force calculation, resulting in a substantial speedup on multiprocessor hardware: A plot taking 10 seconds with
-j1
will now typically take 6.5 seconds with-j2
on a dual-processor machine.The default behaviour is now to use as many threads as there are CPUs on the system, if this number can be determined. Otherwise one thread is used.
-
Updated the gfs2xyz2D program to compile against the most recent version of Gerris following the removal of some obsolete API features in January 2012.
-
Fixed a domain generation bug (strange winding number)
-
Modified the sag2grid program to handle input files with leading and trailing whitespace
Fixed Makefile for sag2grid so that it is now actually installed.
-
Simplified the bilinear grid code and modified the radius of curvature calculation therein to use one-sided derivatives if the two-sided devivatives cannot be used due to lack of data.
The result is that curvature data is usually available right up to edge of the boundary, improving robustness.
-
The triangle glyph is now the default glyph.
-
Added a
--graphic-state
option to cache the results of long program runs for final adjustment of line widths, fill colour, glyph type and so on. -
Reading of Matlab binary files.
-
Added a
--ke-drop
option which delays termination until the kinetic energy has dropped by the specified dB. -
Simplified the potential used in the dynamic — removal of the attractive tail allows us to reduce the number of neighbours and so speed up the dynamic by around a factor of two.
-
Added a perl script sag2grd which converts a sag(5) file to grd files.
-
Added a
--sag
option to the gfs2xyz2D program causing it to write a sag(5) header to the output data. -
Fixed floating point exception bug in dim2.c
-
Fixed a fencepost error in dim2.c which caused a leak in the boundary during the dynamic.
-
The default value for the
--threads
option is now1
rather than the number of CPUs. Use a value of0
to restore the autodetection. -
Removed thread creation/destruction and attendant overhead when the processing is single-threaded.
-
Removed signal handler for SIGFPE since, according to POSIX, ignoring it results in undefined behaviour.
-
Several fixes in the autoconf handling of sincos(), alloca() etc for the FreeBSD port.
-
Added a
--glyph
option for alternative glyphs. New wedge and triangle glyphs. -
Added a
--aspect
option to adjust the aspect (the ratio of length to width) of the glyph.