How do we develop a larger numerical project

When building up a numerical project there are several elements you should think of, amongst these we take the liberty of mentioning the following.

  1. How to structure a code in terms of functions and modules
  2. How to read input data flexibly from the command line
  3. Find tests and how to write unit tests (test functions). A very good example is Catch, a modern, C++-native, header-only, framework for unit-tests. Try to find suitable tests of the mathematical algorithms as well as tests which reflect the physics of the system.
  4. It takes one quick command to let all your code undergo heavy testing
  5. How to refactor code in terms of classes (instead of functions only)
  6. How to conduct and automate large-scale numerical experiments