# From version 0.2.1 to 0.3.0:

- Isotropic mesh adaption. The biggest user-visible change since the previous release is support for isotropic mesh adaptation. Internally, GRUMMP has had this functionality for a while, but by user request, it's now accessible through the command line interface. Basically, length scale information can be supplied for some or all vertices in a separate file, and meshopt2d / meshopt3d will modify the input mesh to match that length scale. If no length scale is provided, meshopt2d/3d behave as they always have.
- Length scale improvements. Fixed a problem with length scale calculations that sometimes caused a vertex to identify a bdry patch that was just -behind- the vertex (and therefore not visible) as one of its nearby patches. The 3D tire incinerator example was the geometry that showed this problem the most distinctly.
- Improved initial tetrahedralization. More incremental improvement to initial tetrahedralization, most notably in merging co-planar input facets and better handling of small angles between input edges. The latter also has the effect of reducing output mesh size noticeably for many input files with small angles between edges.

  - Added support for merging co-planar boundary patches in 3D. For input files that have large numbers of co-planar triangles, this boundary optimization can be a tremendous help in creating the initial volume mesh. All vertices are guaranteed to be in the volume mesh, but there are no guarantees about the surface triangles. (Command line option: -m for merge bdry patches.)
  - Fixed a bug in handling surface recovery for multi-region bdry files in 3D. This bug often resulted in failures near the end of initial tetrahedralization.
  - Support for free vertices in input files for 3D meshes. That is, a vertex can be pre-defined to have a particular location -without- being connected to the surface mesh. (The point must lie on or inside the domain, obviously.) Because of differences in the way that 2D and 3D input is handled, this capability is tricky to implement in 2D. However, a currently-underway re-write of all boundary input handling should enable this in 2D before much longer.
- Reordering of mesh entities before output to improve bandwidth and cache performance for solvers reading these meshes. Vertices are reordered using the reverse Cuthill-McKee algorithm. Faces and cells are reordered according to the sum of the indices of their vertices.
- Support for long arcs: circular arcs longer than 180 degrees. An arc is still CCW and < 180 degrees. A longarc is CCW and > 180 degrees between the same two points.
- Fixed a minor edge swapping bug that often resulted in a neglecting a few swaps.
- Internal changes to support the Terascale Simulation Tools and Technologies (TSTT) mesh interface. This is a language- and data-structure neutral interface to meshing tools. For more information, including links to the TSTT interface definition, see http://www.tstt-scidac.org.
- Fixed a GNU/Linux shared library creation bug. Added support for shared libraries under AIX (finally!).
- Made changes for GCC 3.x compatibility (mostly tightening up use of std::) and to improve portability (mostly getting rid of uses of the GNU extension that allows dynamic arrays to be declared as name[run-time size].
- Removed some experimental and obsolete files from the distribution.