The goal of this project is to provide small working examples demonstrating the incorporation of various library, code and github functionality into a larger code. All examples below assume a unix-like operating system and were run on Ubuntu release 16.04 LTS.
All examples presented here are written in c++ and outline any library dependencies along with command line instructions
for how to observe the showcased functionality. Code to be entered on the command line is presented as:
$ type_this_on_the_cmd_line
.
The examples should generally be reviewed in order as they may assume knowledge of previous examples.
"MPICH is a high performance and widely portable implementation of the Message Passing Interface (MPI) standard." -MPICH website
- building with various options: (after cmake is introduced, likely need to modify ex1)
- ch3:nemesis vs. ch3:sock
- --enable-debuginfo
- optimization level
- Debugging with Totalview
"Doxygen is the de facto standard tool for generating documentation from annotated C++ sources." -Doxygen website
Add examples usage of:
Presentation:
"CMake is an open-source, cross-platform family of tools designed to build, test and package software." -CMake website
- Look into CTest (dashboard)
- Use
check_function_exists
for: blas functions
"Google Test is a unit testing library for the C++ programming language, based on the xUnit architecture." -Wikipedia
- Usage of features outlined in the Advanced Guide:
- ::testing::AssertionResult
- Teaching Google Test How to Print Your Values
- SCOPED_TRACE()
- Sharing Resources Between Tests in the Same Test Case
- Value Parameterized Tests
- Typed Tests
- Generating an XML Report
- Turning Assertion Failures into Break-Points
- Distributing Test Functions to Multiple Machines
- combined with CTest, CMake and Boost (see this SO discussion)
- Eigen: Expression templates
- stacktrace
- Math
- special functions
- complex number functions
- quaternion (hobby: 3D rotation investigation)
- root finding, Polynomial and Rational Function Evaluation
- Intrusive
- MPI
Protected vs. Private class members (discussion of library modification without modifying the source because of allowed inheritance)
Update list of inherited objects through corresponding list of base objects (Not sure if this is possible)
The code is licensed under the GNU GPLv3.