GeoTess Software Change Log

Version 2.6.0 -- 09/8/2020

Expanded GeoTessExplorer, moved GeoTess extension classes inside the GeoTessJava module. Various bugfixes on GeoTessCPP.

Version 2.2.2 -- 08/26/2015

Made modifications to the GeoTessCShell to support classes that extend GeoTessModel.

In all interfaces, the various 'getPathIntegralXXX' methods have been modified in a way that may break some code. The parameter reciprocal was removed from all of these interfaces. The reason this was done is because there is some ambiguity about how the interpolation should be performed when integrating a function. On the one hand, the integration could be performed by interpolating the model parameter at the center of each path segment and then taking the reciprocal, or, it could be performed by interpolating the reciprocal at the center of each path segment and summing that.

Version 2.2.1 -- 01/22/2015

Added getMemory() methods to many c++ classes in order to allow applications to determine how much memory GeoTessModels and GeoTessGrids consume.

In the C interface, added functions to allow access to the EarthShape object managed by a GeoTessModel object. These EarthShape objects contain information about the ellipsoid that is to be used with the model (WGS84, GRS80, SPHERE, etc.).

Fixed a bug in the documentation for the GeoTessGridC class in the C interface where most of the available methods were missing from the documentation. This bug only affected documentation for the GeoTessGridC class in the C interface.

Various minor bug fixes, feature enhancements, and corrections/improvements to the comments and documentation.

Version 2.2.0 -- 06/23/2014

Improved the computational performance of the Natural Neighbor interpolation algorithm.

Added the EarthShape class which allows users to specify the Earth ellipsoid that supports the model. This resulted in a model file format change since the name of the EarthShape has to be stored in the model file. This new version of GeoTess can read all the old model files (EarthShape defaults to WGS84). New model files that use the WGS84 EarthShape (default) will be readable by old versions of GeoTess software. But new model files that specify an EarthShape other than WGS84 (default) will not be readable by versions of the software older that version 2.2.0.

Reorganized the getPathIntegral() and getWeights() functions. For backward compatibility, old method signatures are still accessible but deprecated.

Various feature enhancements, performance enhancements and bug fixes.

Version 2.1.1 -- 02/17/2014

Added method getPathIntegrale2D() to GeoTessModel in all interfaces. It integrates the value of a model attribute along the great circle path through a 2D GeoTessModel. As an option, it will return the interpolation coefficient weights applied to each grid node touched by the great circle path. This method is similar to, but simpler than method getPathIntegral() which applies to both 2D and 3D models. This method will throw an exception if an attempt is made to apply it to 3D models.

Added a new example program called Tomography2D in each of the supported languages. It illustrates many of the steps a user might wish to implement in a 2D tomography code that uses GeoTess.

Version 2.1.0 -- 12/01/2013

Significant changes to the GeoTessCShell interface. Only very minor changes to the C++ and Java libraries.

In GeoTessCShell, the way memory is managed has changed significantly. All of the *_destroy() methods, which used to take 2 arguments, now only take one. The CShell now knows when to delete the wrapped C++ objects and when not to. To accomplish this, a couple of structures have been removed. DataC and ProfileC are no longer available. GeoTessModelC has been substantially enhanced in order to replace the functionality that used to be accessed through DataC and ProfileC.

In GeoTessGridC in the GeoTessCShell, implemented improved memory management for methods that return arrays of vertices or arrays of unit vectors. Now users can initialize the arrays to NULL, pass their address to the relevant function and when they come back they will have been malloc'ed with the correct amount of memory. See the html source code documentation for more details.

These modifications will require changes to C code that access GeoTess via the GeoTessCShell interface.

Version 2.0.7 -- 11/12/2013

Recompiled GeoTessJava and GeoTessBuilder using Java version 1.6. GeoTess version 2.0.6 was built with Java version 1.7 which resulted in issues for some users, especially Mac users.

Version 2.0.6 -- 10/15/2013

Modified to run in concurrent mode. This change resulted in dramatic performance increase in GeoTessBuilder when building grids from scratch using Polygons.

Added some additional utility functions to GeoTessExplorer.

Minor bug fixes and performance enhancements.

On 10/22/2013 a patch to GeoTessBuilder was uploaded to the website. To see if you have the patched version, run geotessbuilder with no command line arguments. If you have the patch, the output will start with "GeoTessBuilder 1.0.1".

Version 2.0.5 -- 8/13/2013

Added functionality to GeoTessBuilder to control refinement of models. In the User's Manual, see new GeoTessBuilder properties minTriangleSize and minCorners for more information.

Fixed a bug in the way Polygon was implemented in GeoTessBuilder that resulted in incorrect distribution of triangle refinement in some cases.

In GeoTessCPP, renamed many of the classes by prepending 'GeoTess' to the existing classname in order to prevent class name clashes with other software.

Added GeoTessModel crust10.geotess to the collection of example models delivered as part of each software download. This model is a reparameterization of the Crust 1.0 model released on July 15, 2013 by Laske, et al. The original model was obtained from

Version 2.0.4 -- 5/14/2013

Performance improvements implemented by changing compiler optimization flags. Applies to the Linux and Mac OSX builds only.

Version 2.0.3 -- 4/28/2013

Rewrote the section of the User's Manual that describes how to populate a model with data (Library Interactions -> Model Population -> Step 3 - Add Data).

Minor bug fixes and documentation improvements.


Consolidated functions extractGridtriangleEdges and gridToKML into a single function extractGrid. This function now loads a GeoTessGrid either directly from a file or from a GeoTessModel loaded from a file. The format of the output depends on the extension of the specified output file. The output might be a GeoTessGrid object in ascii or binary format, a vtk file viewable with Paraview, a KML/KMZ file viewable with Google Earth, or an ascii text file in a format compatible with GMT.

GreatCircle (C++)

Added functions getNPoints() and getPoints(), which return an arrray of unit vectors deployed along the great circle path.

Version 2.0.2 -- 4/18/2013


Added ability to refine a model based on threshold value of an attribute. See GeoTessBuilder Properties File section of the User's Manual for details.


Added method getGreatCirclePoints. This method takes two unit vectors that define the ends of a great circle path and returns a user-specified number of equally spaced points along the path.


Fixed bugs and improved documentation and comments related to method getWeights().

Added method getPathIntegral. This method integrates model attribute values along a user-specified ray path. It returns the integrated value and also the list of model points that contributed interpolation coefficients to the integral and the model weights associated with those points. The sum of the weights is equal to the length of the user-supplied ray path.

GeoTess Explorer

Added triangleEdges function that writes all triangle edges to standard out. Intention is that output would be piped to GMT script to plot triangles on a map.

Added function gridToKML that writes a GeoTessGrid tessellation to a kml or kmz file for viewing with Google Earth.

Users Manual

Added section on Polygons to the User's Manual.

Example programs

Expanded the example code in,, TestCrust20.c. Now includes examples of how to query model attribute values stored on the grid (not just interpolated values). Also added examples illustrating the use of the getWeights() method and the new getPathIntegral() method.