GoTools is a collection of C++ libraries related to geometry with a special focus on spline/NURBS representation for curves, surfaces and volumes. The libraries target the needs of Computer Aided Design (CAD) systems and support Isogeometric Analysis (IGA). It provides operations such as the definition, intersection and evaluation of NURBS (Non-Uniform Rational B-spline) geometries. Since many applications use implicit geometric representations such as planes, cylinders, tori etc., GoTools also supports such geometries and can handle the interaction between those and NURBS. It also includes implementations of the novel locally refined (LR) B-spline representation, both in 2D and 3D.
GoTools is divided into 15 libraries with varying levels of interdependency. This allows users with specific requirements to make use of only subsets of GoTools as needed. At the centre of GoTools is gotools-core, a library containing basic functionality included in a general CAD system. This includes functionality such as creation of geometric objects (e.g., through interpolation or approximation) and shape interrogation methods. The core functionality is complemented by many other modules that offer various functionality such as computation of intersections, isogeometric modelling and locally refined (LR) splines, to name just a few. GoTools also includes a module for visualization of 3D geometric models, including uni-, bi- and tri-variate splines, LR-splines and point clouds.
In addition to GoTools, SINTEF Mathematics and Cybernetics also provides SISL, a comprehensive NURBS library for the modelling and interrogation of curves and surfaces. SISL is a mature library, written in C, that has been developed for more than three decades. GoTools depends on SISL for some of its core functionality.
GoTools uses two internal formats; the first known as .g2, provides a simple text-based representation of geometric objects, while the second, .g22, builds on .g2 to also include the topology of a CAD model. These internal formats can be converted to and from STEP (ISO-10303) files via the use of the GoTools Gateway marketplace item.
GoTools is an evolving collection of C++ libraries and has been gradually developed and enhanced for close to two decades by the Geometry Group at SINTEF in Oslo. Consequently, new versions will be released, with extended functionality as well as bug fixes and updated documentation.
The maturity of the functionality in GoTools varies depending on which module is used, but as an average, it is around TRL 5, which corresponds to “technology validated in a relevant environment”.
IPR / Licence
GoTools is copyright of the Geometry Group at SINTEF Digital, Department of Mathematics and Cybernetics.
GoTools is available under the GNU Affero General Public License v3.0 or under a Commercial License.
Documentation for GoTools is available on: https://github.com/SINTEF-Geometry/GoTools
Source code is openly available on: https://github.com/SINTEF-Geometry/GoTools