<commit_before>% This Source Code Form is subject to the terms of the Mozilla Public
% License, v. 2.0. If a copy of the MPL was not distributed with this
% file, You can obtain one at http://mozilla.org/MPL/2.0/. */
%
%------ Copyright (C) 2018 University of Strathclyde and Authors ------
%--------------- e-mail: <EMAIL> ---------------------------
%------------------- Authors: SMART developers team -------------------# SMART-O2CPP
(Strathclyde Mechanical and Aerospace Research Toolbox for Optimisation and Optimal Control - C++ development)

======================================================================

[![Build Status](https://travis-ci.org/space-art/smart-o2cpp.svg?branch=master)](https://travis-ci.org/space-art/smart-o2cpp)


`SMART` is a collection of toolboxes developed and maintained since 2015 by the department of Mechanical and Aerospace Engineer of Strathclyde University. `SMART-O2CPP` in particular, is a collection of optimisation and optimal control transcription techniques.

`SMART` is aimed at making code development inside the team more efficient, reusable and easy maintainabile.

`SMART` is CMake-based C++ project. It can be used as the basis for new projects. 


Features
------

  - General directory structure common to C++ projects
  - Example of CMake module
  - Testing framework ([Catch](https://www.github.com/philsquared/Catch "Catch Github repository"))
  - Install script (`make install`)
  - CPack script for packaging (`make package`)
  - Automatic API documentation ([Doxygen](http://www.doxygen.org "Doxygen homepage"))
  - Continuous Integration ([Travis CI](https://travis-ci.org/ "Travis CI homepage"))  (PENDING)
  - Example of how to include external dependencies (using `ExternalProject` module)

Requirements
------

To install this project, please ensure that you have installed the following (install guides are provided on the respective websites):

  - [Git](http://git-scm.com)
  - A C++ compiler, e.g., [GCC](https://gcc.gnu.org/), [clang](http://clang.llvm.org/), [MinGW](http://www.mingw.org/)
  - [CMake](http://www.cmake.org)
  - [Doxygen](http://www.doxygen.org "Doxygen homepage") (optional)

`SMART-O2CPP` depends on the following libraries:

  - [CATCH](https://www.github.com/philsquared/Catch) (unit testing library necessary for `BUILD_TESTS` build option, optional)

This dependency will be downloaded and configured automagically if not already present locally (requires an internet connection).

Installation
------

Run the following commands to download, build, and install this project.

    git clone https://github.com/space-art/smart-o2cpp.git
    (Introcude your username and password)
    cd smart-o2cpp
    mkdir build && cd build
    cmake .. && make

To install the header files, run the following from within the `build` directory:

    make install

Note that dependencies are installed by fetching them online, in case they cannot be detected on your local system. If the build process fails, check the error log given. Typically, building fails due to timeout. Simply run the `cmake --build .` command once more.

Build options
-------------

You can pass the following, general command-line options when running CMake:

  - `-DCMAKE_INSTALL_PREFIX[=$install_dir]`: set path prefix for install script (`make install`); if not set, defaults to usual locations
  - `-DBUILD_SHARED_LIBS=[on|off (default)]`: build shared libraries instead of static
  - `-DBUILD_MAIN[=on|off (default)]`: build the main-function
  - `-DBUILD_DOCS[=ON|OFF (default)]`: build the [Doxygen](http://www.doxygen.org "Doxygen homepage") documentation ([LaTeX](http://www.latex-project.org/) must be installed with `amsmath` package)
  - `-DBUILD_TESTS[=ON|OFF (default)]`: build tests (execute tests from build-directory using `ctest -V`)
  - `-DBUILD_DEPENDENCIES[=ON|OFF (default)]`: force local build of dependencies, instead of first searching system-wide using `find_package()`

The following command is conditional and can only be set if `BUILD_TESTS = ON`:


requires [GCC](https://gcc.gnu.org/) compiler; execute coverage analysis from build-directory using `make coverage`)

Pass these options either directly to the `cmake ..` build command or run `ccmake ..` instead to bring up the interface that can be used to toggle options.

Contributing
------------

Once you've made your great commits:

  1. [Fork](https://github.com/space-art/smart-o2cpp//fork) `smart-o2cpp`
  2. Create a topic branch - `git checkout -b my_branch`
  3. Push to your branch - `git push origin my_branch`
  4. Create a [Pull Request](http://help.github.com/pull-requests/) from your branch
  5. That's it!

Disclaimer
------

The copyright holders are not liable for any damage(s) incurred due to improper use of `smart-o2cpp`.

TODO
------

  - TODO 1
  - TODO 2
<commit_msg>updating readme file<commit_after># SMART-O2C
(Strathclyde Mechanical and Aerospace Research Toolbox for Optimisation and Optimal Control)

======================================================================

`SMART` is a collection of toolboxes developed and maintained since 2015 by the department of Mechanical and Aerospace Engineer of Strathclyde University. `SMART-O2C` in particular, is a collection of optimisation techniques and optimal control transcription methods.

`SMART` is aimed at making code development inside the team more efficient, reusable and easy maintainabile.

Features
------

  - Matlab project ([Matlab](http://www.mathworks.com/products/matlab/ "Matlab homepage"))
  - Automatic API documentation (Matlab *publish* function)
  
Requirements
------

To install this project, please ensure that you have installed the following (install guides are provided on the respective websites):

  - Matlab 2014b above

Note to developers
------------
Each new optimisation algorithm or transcription method should include the standard header for documentation 
```
%% myalgorithm: brief description
% Extensive function description
% (If you need to insert formulas use latex conventions: 
% $x_1+x_2$) 
%% Inputs:
%
% * x1 : explanation
% * x2 : explanation
%
%
%% Output:
% * y : explanation
%
%% Author(s): <NAME>
% email: <EMAIL>
%
%% References:
% relevant references for the algorithm
```
Contributing
------------

Once you've made your great commits:

  1. [Fork](https://github.com/space-art/smart-o2c//fork) `smart-o2c`
  2. Create a topic branch - `git checkout -b my_branch`
  3. Push to your branch - `git push origin my_branch`
  4. Create a [Pull Request](http://help.github.com/pull-requests/) from your branch
  5. That's it!

Disclaimer
------

The copyright holders are not liable for any damage(s) incurred due to improper use of `smart-o2c`.


{'fraction_non_alphanumeric': 0.14349442379182156, 'fraction_numerical': 0.00758364312267658, 'mean_word_length': 3.821505376344086, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, 'https://': 10, 'lorem ipsum': 0, 'www.': 9, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4273374', 'n_tokens_mistral': 1974, 'n_tokens_neox': 1833, 'n_words': 740}