/**
@page DONE PML DONE list

The following needs to be written in PhysicalModel.h history page (to appear in the \ref history page)

@section done done version 0.8 - ????
- NEW memory management optimisation for position (a big bunch of memory is allocated for the atom's positions, the pointer to this space is given by the PhysicalModel method getPositionPointer(), to be
shared by pml's application.
- NEW Properties class has a new method isAField to check if a field exist in the PML file (defined or not)
- NEW tools select: to select atom using some clipping box/bounds (defined by xmin/xmax, ymin/ymax, zmin/zmax)
- NEW tools renError: to compute the relative energy norm error (given 3 pml: initial, real, simulated)
- NEW Cell class has now methods to directly get the composing triangular or quad faces
- NEW CMake 2.6 and over compliant
- FIXED small memory leaks (thanks to valgrind!)
*/

/** @page history PML library version history

@section h0_7_1  0.7.1 - 3 june 2008
- NEW two new methods in Property class: one to know how many extra fields were read and the other to get a field name
- NEW better error message (but still on the stderr...) for loading pml
- NEW CMakeLists for all tools!
- FIXED genatoms does not read the last line if there are no empty line at the end of the file
- FIXED some doxygen warnings
- FIXED modified CMakeLists.txt to build on 64bits

@section h0_7_0 0.7.0 - 26 february 2008
- NEW change dependency from xerces-c to libxml2
- NEW add any kind of custom properties using "fields" (much easier)
- NEW change from qmake to cmake
- NEW tools/gensphere new tool to generate a surfacic sphere using cube or icosahedron reccursive subdivision
- NEW tools/gengrid new tool to generate a 2D grid made of quads
- NEW tools/pml2ghs3d can now reorder atom index (which is required if atom indexes are not consecutives)
- NEW tools/ansys2pml can now read quad element
- NEW Class PMLTransform, regrouping some methods from PMLTools for convenience (needs more work, to be continued)
- NEW Cell : method to compute Surface and Volume of a cell, and the normal if type is quad or triangle
- NEW Cell : method to get the facets of a cell, as a StructuralComponent composed by triangles and/or quads
- FIXED seg fault when printing out the atom component when the atoms where created without a PhysicalModel and added a posterio using setAtoms(..)
- FIXED compilation for x86_64 processor (-fPIC flag needed)

@section h0_6 0.6 - 20 july 2006
- tools/obj2pml now takes the different OBJ objects/group into account (and creates a structural component by object/group)
- NEW tools/pml2wrl converts a component to VRML (have to be a surfacic representation), default component = Regions
- NEW tools/refineMesh refines the "Elements" component (each tetra is subdivided in 4 sub-tetras, each hexa is subdivided in 4 sub-hexas)
- NEW tools/triangulate triangulates QUAD cells of a given component
- NEW tools/optimizeMesh optimizes a mesh by fusionning atoms that are closer than a given distance (called precision)
- NEW tools/gencells now can make a cell using start and end atom indexes
- NEW tools/extractCells select cells of a component where all atoms are also in another component of the same PML or in a list given as CSV
- NEW tools/genatoms generates a simple pml containing only the list using a list of floats in a text file (floats are considered as 3d coordinates xi yi zi)
- NEW tools/gencells.cpp generates on stdout a structural component containing cells using a simple text file where each line gives the atom indexes of a cell (cell type is automatically choose depending on the number of atoms on each line). It also can generate a POLY_VERTEX cell using all atoms indexes between 1st command line argument and 2nd command line argument
- NEW tools/mooreNeighborhood creates Moore neighborhood of distance d as a new exclusive structural component called "Moore Neighborhood" (Ai is a Moore neighbor of distance d of Aj if Aix-Ajx<d and Aiy-Ajy<d and Aiz-Ajz<d, NOTE: this is different from von Neumann neighborhood, which use dist(ai,aj)<d as a criteria)
- NEW tools/nobox2pml convert a nobox format to pml (nobox text file=nr of atoms, list of 3D coordinates, nr of tetrahedron, list of atoms for each tetrahedron)
- NEW tools/tri2pml generates a PML from a list of triangles (tri test file=nr of atoms, list of 3D coordinates, nr of triangles, list of atoms for each triangle)
- NEW tools/pml2ghs3d transforms a PML document containing an 'Elements' (list of triangles) exclusive structural component to a .mesh (readable in GHS3D)
- NEW tools/alltools.pro qmake file to make all tools (type qmake in the tools/ directory and then make)
- NEW geometric type: a simple line between to atoms

@section h0_5 0.5 - 2 august 2005
- tools/ansys2pml convert ANSYS node and element files into pml
- tools/pml2ansys convert a pml document to a ANSYS node and an element files
- tools/pmldiff check the diff between two similar pml document and output a lml document that allow
  to transform one into the other (similar=same atoms, produced LML=list of translations)
- added conveniant static method to convert geometric type to string and vice versa

@section h0_4 0.4 - 26 november 2004
- xsl stylesheet to automatically transform a x3d file to PML (at the moment triangles and quad)
- tools/obj2pml: new tool to import obj file into PML
- tools/elementsToNeighborhood: new tool to transform element-based description (such as exported from FEM software) to neighborhood-based description (such as used in mass-spring network). Also extract outside facets.
- use xerces-c v2.5 or higher
- compile ok under Microsoft Visual .NET (thanks to Paul Neumann!)

@section h0_3 0.3 - 11 august 2004
- better autodocumentation (doxygen) including TODO list, and version list

@section h0_2 0.2 - 6 july 2004
- suppress dependancy with ALP (TIMC specific lib)
- added a new static variable version (to get lib version and date)

@section h0_1 0.1 - april 2004
- initial release
*/


