changes

vfplot changelog


2.0.2, pending

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

2.0.1, 17 Apr 2023

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

2.0.0, 29 Mar 2023

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

1.0.16, 15 Aug 2022

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

1.0.15, 07 Nov 2019

  • POSIX threads on OS X. Compiling on OS X with the --pthread-extra option should create a multithreaded version of the program.

1.0.14, 20 Aug 2019

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

1.0.13, 09 Jun 2016

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

1.0.12, 12 Jun 2015

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

1.0.11, 20 Dec 2012

  • Simplification of the threading code.

1.0.10, 04 Jun 2012

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

1.0.9, 18 Jun 2011

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

1.0.8, 09 May 2011

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

1.0.7, 10 Apr 2011

  • Fix for incorrect order of output grd files in sag2grd

  • Fixed a buffer overrun

1.0.6, 14 Jan 2009

  • Minor bugfixes found during the Windows/Cygwin port.

1.0.5, 07 Jan 2009

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

1.0.4, 18 Nov 2008

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

1.0.3, 19 Oct 2008

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

1.0.2, 01 Jul 2008

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

1.0.1, 06 Jun 2008

  • Corrected sag(5) documentation

  • Reduced the verbosity of some warnings

1.0.0, 01 Jun 2008

  • 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