vfplot changelog


  • 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.


  • Fix floating point errors reading Gerris GFS files when compiled with gcc-8.


  • 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.


  • Simplification of the threading code.


  • 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.


  • Fix for incorrect order of output grd files in sag2grd

  • Fixed a buffer overrun


  • Minor bugfixes found during the Windows/Cygwin port.


  • Output to POV-Ray with --output-format povray.


  • 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 now 1 rather than the number of CPUs. Use a value of 0 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.


  • Corrected sag(5) documentation

  • Reduced the verbosity of some warnings


  • Read and write support for the sag(5) format

  • Implemented autodetection of input files formats (using file magic)

  • Added -L option for late decimation and --decimate-contact for finer control the decimation