This package provides C++ utilities that are used in several projects at SIREHNA.
To use ssc
for your own program, you can pull the associated docker image:
docker pull sirehna/ssc
To run all tests, you can run the following command:
docker run sirehna/ssc /bin/bash -c "cd ssc/bin && ./run_all_tests"
To build ssc
, you can pull the following image that contains all dependencies:
docker pull sirehna/ssc_build
These two images are based on Debian 8 and use GCC/G++/GFortran 4.9.
This package contains:
- csv_file_reader: Reads CSV (comma-separated values) text files in a std::map.
- data_source: Manage data transfers between computation modules with lazy evaluation, forward- and backward-chaining.
- decode_unit: Convert a string containing a physical unit to a conversion factor to USI.
- exception_handling: Custom exceptions, with debug data (file & line number) & useful macros.
- functors_for_optimizer: Simple computer algebra system.
- functional_programming: For_each, etc.
- generic_pimpl: Implementation of Herb Sutter's generic PIMPL idiom.
- geometry: Calculate shortest paths & loxodromes on geoids & find if a point is inside a polygon defined on a geoid.
- integrate: Numerical integration of a scalar function on an interval (not necessarily compact). Generic interface.
- interpolation: Perform 1D & 2D interpolation (piecewise constant, linear, spline) with constant or variable step.
- ipopt_interface: Interface to the IPOPT solver, to be used with
the
optimizer
module. - kinematics: Compute coordinate transform matrices between two
reference frames, minimizing the number of computations
(uses the
data_source
module & boost**:**:graph internally). - lpsolve_interface: Interface to use the linear programming solver LP solve with the optimization module.
- macros: Useful macros for traces (eg. COUT on steroids) & unit tests.
- numeric: Kahan sum, pairwise sum, almost_equal (within 4 ULP).
- optimizer: Generic optimization module, with a simple
computer algebra system (
functors_for_optimizer
). - random_data_generator: Generate random test data, uniformly distributed, between two values, excluding certain values, etc. Used mainly for unit testing.
- solver: Integrate any ordinary differential equation, using any stepper (RK4, RKCK, Euler...).
- text_file_reader: Read the contents of one or several files into a std::string.
- websocket: Send & receive data through websockets in real time. Client & server.
- yaml_parser: Thin wrapper around yaml-cpp.