Tool for numeric analysis of ordinary differential equations
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
equares_con
equares_core
equares_gui
equares_http
imgresize
scripts
util
.gitignore
equares.pri
equares.pro
todo.doc
todo.odt

# NumEquaRes

NumEquaRes is a tool for numerical analysis of ordinary differential equations. The tool is available online at equares.ctmech.ru.

## Motivation

We have formulated our requirements as follows:

• Speed matters. NumEquaRes performs faster than MATLAB, SciLab, and the like.
• Freedom matters. NumEquaRes is free software. Thus, everyone can extend its functionality.
• Ease of use matters.
• User should be able to use it easily without having to do advanced training.
• User shouldn't have to install a ton of software to get it all work.

Fast basically means implementation of your custom equations in a native language, e.g. C++. So our system needs a compiler to compile your equations. But we don't want to force user to install a compiler! That's why NumEquaRes is an online system: we install everything on the server, you just use it.

## Architecture

NumEquaRes is built of the following components

• Core
• equares_core (C++): library providing the computational functionality
• equares_con (C++): console front-end to equares_core
• Web interface
• equares_http (node.js): HTTP-server providing the Web interface to NumEquaRes
• Utilities
• captchagen (C++): captcha generator
• imgresize (C++): image resizer

## Technology

Technologies involved are as follows

• C++ code is using
• Server code is written in JavaScript and is run by node.js. There are a number of modules that are required to run the server app
• line
• express
• jade
• mongodb
• mongoose
• mongoose
• connect
• passport
• passport
• connect
• marked
• nodemailer
• activator
• mobile-detect
• Besides, running server app requires the mongoDB database engine

## Building

To build the NumEquaRes core, you will need QtCreator (see qt-project.org or just an installed version of Qt (4.8+, 5.x also supported).

Optionally, you can install and use the ACML library. To use it, supply the ACML_DIR variable to qmake like this:

qmake ACML_DIR=/opt/acml5.3.1/gfortran64 other arguments


Doing so will enhance the functionality of some boxes; some boxes, e.g. Eigenvalues, are not available at all without the use of ACML. The ACML_DIR variable must be set to the path to an installed version of ACML. That directory is expected to contain files include/acml.h and lib/libacml.so (Linux) or lib/acml.dll (Windows).

Project file to open with QtCreator is equares.pro. Optionally, you can build project using the command line:

mkdir build-equares-release
cd build-equares-release
qmake CONFIG+=release ACML_DIR=/path/to/acml/installation ../equares/equares.pro
make


Nothing more needs to be built.

## Running

To run equares http server, you will need to install

• node.js
• npm
• mongoDB
• node modules mentioned above; this is done with the command npm install issued from the equares_http subdirectory.
• MathJax — run ./install-mathjax.sh from within the equares_http subdirectory.

The EQUARES_BIN environment variable must be set to point to the directory containing core binaries, e.g. (on Linux, prvided the build root is $HOME/build-equares-release), export EQUARES_BIN=$HOME/build-equares-release/bin


On Linux, you will likely need to set the LD_LIBRARY_PATH environment variable to the same directory:

export LD_LIBRARY_PATH=\$EQUARES_BIN


Before running the server, you should also do these things.

• Make sure mongodb server is running on localhost.
• Provide the file equares_http/email-settings.json (consider example file equares_http/email-settings-example.json).

The server is started with the command

node app.js


issued in the equares_http subdirectory.

You can’t perform that action at this time.