Skip to content

Interpreter fixes & header cleanups

Dave Moxey requested to merge dmoxey/nektar:fix/interpreter into master

This branch primarily introduces fixes #126 (closed) in the analytic expression evaluator, but also contains a number of additional fixes for headers (mostly):

  • Interpreted quantities with a leading negative factor that also include an exponent, such as -x^2, now evaluate correctly.
  • Additionally, the grammar has been adjusted so that the power operator is correctly evaluated with right-to-left associativity.
  • The AEE has been renamed to Interpreter and its implementation has been hidden from the header file using the pimpl pattern, so that the boost::spirit headers are not included in virtually every compilation unit.
  • The pimpl pattern has also been used to remove boost::geometry from the MeshGraph and Geometry headers. Caching of bounding boxes inside geometry entities has also been removed to reduce memory overhead, and is cached inside the MeshGraph rtree in any case.
  • A number of redundant (either non-compiled or unused) source files have been removed.
  • The use of boost headers has been reduced significantly in LibUtilities in order to further reduce compilation times. There is still room for improvement, mostly in the linear algebra headers.
  • using namespace std had once again crept into some of the headers after the fixes in !601 (merged). This has been removed, and a large number of incorrect namespace references in MMF have been removed.

This seems to have reduced compilation times of the 'full' build run on kingscross w/36 cores by around 20-25% as shown in timings below:

master
real	5m13.749s
user	101m8.848s
sys	11m44.260s

fix/interpreter
real	3m54.318s
user	71m30.488s
sys	8m0.540s
Edited by Dave Moxey

Merge request reports