This PR replaces muParser by ExprTK based parser. The details are/will be in the code comments, the essentials are the following.
Parser related
Replaced muParser with ExprTK parser.
ExprTK is more performant than muParser (see benchmarks).
ExprTK is thread-safe and the parser works great when both Ksolve and Gsolve are multi-threaded with some caveat ~(the PyRun expression must not update any moose.vec)~.
Added a test based on Vinu's model. The values are almost equivalent to single-threaded version.
The API remains the same. The expression format remains the same. Many more expressions are supported by ExprTK.
Other changes
Removed outdated moose.Func. It has been replaced by moose.Function. (See #367 for Subha's comment)
Ksolve and Gsolve can be turned into multithreaded by setting environment variable MOOSE_NUM_THREADS e.g. export MOOSE_NUM_THREADS=8 will make both Ksolve and Gsolve to use 8 threads. Alternatively use can set numThreads to 8.
readSBML function has some cosmetic changes. I needed to print some values during the debug process.
Tests
9 more tests from rdesigneur scripts.
2 tests causes segfault at the end of simulation when memory is cleaned (related to #388). These tests are not run by default and have been moved to alpha directory.
Build system
Added make docker which runs whole travis pipeline inside a docker image. If docker is setup, developers are encouraged to use make docker before pushing changes to repository.
This PR replaces muParser by ExprTK based parser. The details are/will be in the code comments, the essentials are the following.
Parser related
moose.vec
)~.Other changes
moose.Func
. It has been replaced bymoose.Function
. (See #367 for Subha's comment)Ksolve
andGsolve
can be turned into multithreaded by setting environment variableMOOSE_NUM_THREADS
e.g.export MOOSE_NUM_THREADS=8
will make bothKsolve
andGsolve
to use 8 threads. Alternatively use can setnumThreads
to8
.readSBML
function has some cosmetic changes. I needed to print some values during the debug process.Tests
alpha
directory.Build system
make docker
which runs whole travis pipeline inside a docker image. If docker is setup, developers are encouraged to usemake docker
before pushing changes to repository.TODO
Before fix
After fix https://github.com/BhallaLab/moose-core/pull/387/commits/51da6935f775a0d9d58b024ebab9dfe2ae24d96e