In this version new tools and several improvements are present:
- This version of NanoShaper, using the DelPhiPatcher, can be interfaced to DelPhi Fortran 77 solver.
- The first grid operator is introduced, namely the minus operator. By grid operator we mean a function that takes as input one or more grids and produces an output grid. The minus operator is introduced because it is used to support pocket/cavity detection. To support cavity/pocket detection the keyword Operative_Mode is introduced; pockets detection is carried instead of the usual flow when the keyword is set to "pockets".
- Normals to vertices can be computed, analytically where possible. Meshes can now be saved in the, here introduced, OFF+N, OFF+N+A formats. These new formats save the nearest atom index (A) and the normals (N). Now meshes can be saved in MSMS format too when explicitly requested.
- Octree are now used when collecting the analytical intersections for the triangulation. This leads to a significant memory saving, in particular when an high resolution is used for triangulation. A parallel version of the Marching Cubes algorithm is present. It is a major change with respect to the previous version in that the algorithm has been significantly reformulated; often it gives a linearly scaling performance.
- Load balancing (during ray-tracing) is significantly improved..
- The flood-fill algorithm for closed cavity detection can lead to significant performance improvements wrt to previous version (4x) in particular when the number of detected cavities is relatively small (< 10).
- An algorithm to convert a mesh to a set of approximating atoms (balls) is developed. This can be useful for those codes which, for instance, use as input only a set of atoms (e.g. DelPhi Fortrant 95 code) and are not able to directly manipulate an arbitrary mesh.
- The classes that derive from Surface can be very easily registered. It is sufficient to add the .cpp and .h files of the new surface in src directory and recompile to make the surface available to the rest of the framework. To make clear how the surface derived classes should be written the ExampleSurface class is provided.