Various algorithms on numerics, control, reinforcement learning and machine learning. The functionality is split into modules compiled into dynamic libraries. This is shown in the figure below
- A C++17 compatible compiler
- Boost C++ libraries
- Blaze library for linear algebra
- GTest if testing is enabled
- Trilinos if it is enabled.
magic_enum
only used if__GNUC__ >7
- Nlohmann JSON used for JSON support
Installing the libraries is done via a config_opts.json
file. Some of the options are explained
below.
BUILD_LIBS
Flag indicating if the python script should build the librariesCMAKE_BUILD_TYPE
Build mode optionsRELEASE
orDEBUG
CMAKE_CXX_COMPILER
C++ CompilerCMAKE_C_COMPILER
C CompilerBLAZE_INCL_DIR
Path to theblaze
libraryNLOHMANN_JSON_INCL_DIR
Path to thenlohman_json
libraryGTEST_INC_DIR
Path to GTest include directoryGTEST_LIB_DIR
Path to the GTest library "/home/alex/MySoftware/gtest/install/lib"USE_TRILINOS
Flag indicating if Trilinos is to be usedUSE_TRILINOS_LONG_LONG_TYPE
Flag indicating if C++ long long type is used with TrilinosTRILINOS_INCL_DIR
Path to Trilinos header filesTRILINOS_LIB_DIR
Path to Trilinos librariesUSE_OPEN_CV
Flag indicating if OpenCV is to be usedOPENCV_INCL_DIR
Path to OpenCV headersCMAKE_INSTALL_PREFIX
Where the libraries should be installedUSE_DISCRETIZATION
Generate CMakeLists for discretization libraryUSE_NUMERICS
Generate CMakeLists for numerics libraryUSE_RIGID_BODY_DYNAMICS
Generate CMakeLists for rigid body dynamics libraryUSE_FVM
Use finite volume methodBUILD_KERNEL_TESTS
Flag indicating if tests should be buildBUILD_KERNEL_EXAMPLES
Flag indicating if examples should be buildUSE_RL
Flag indicating if RL library should be buildUSE_ML
Flag indicating if ML library should be buildUSE_ESTIMATION
Flag indicating if estimation library should be buildUSE_PLANNING
Flag indicating if planning library should be buildUSE_CONTROL
Flag indicating if control library should be build
After specifying the options, execute the configure.py
script.
python configure.py
You can find the HTML documentation here
You can find some example applications below