Rich Hewitt

C++Noddy

Getting it

You need a machine with a recent C++ compiler and 'git' to clone the latest version. The build system also uses SCons and Python. The source is hosted on Github and can be obtained using 'git' via

  git clone git://github.com/hewitt/CppNoddy.git 

Once you have the code, running "scons" (or "scons lapack=1" to attempt to link to external BLAS/LAPACK libraries for example) in the CppNoddy directory should compile the library & example codes. You can check the finished product by running "./validate.sh" in the "Examples/Validation" directory.

Before running the 'validate.sh' script you must make sure that the CppNoddy/libs directory is in LD_LIBRARY_PATH. For example, for the bash shell:

 export LD_LIBRARY_PATH=/path/to/installation/CppNoddy/lib/ 

What is it?

A simple (aka Noddy) collection of object orientated numerical routines written in C++, aimed at undergraduate projects and starting graduate students. In the current version, the test/example cases solve (amongst others):

What is it for?

It's an introduction/framework for final-year undergraduate project students or new graduate students .... and just for fun.

Is it fast/accurate?

The matrix classes have native solvers that are naive unoptimised Gaussian elimination algorithms. These routines will only be practical (if at all!) for rather `small' matrix/band sizes and do not scale well. If the problem is of even moderate size, then you should link to your local LAPACK/BLAS/SuperLU/MUMPS routines by compiling with the `lapack=1' flag (for example). LAPACK/BLAS/SuperLU libraries are not shipped with the library -- but are available as packages for most linux distributions.

The code is not especially optimised, in fact in many places the code is deliberately un-optimised for greater transparency; it is not intended for 'heavy duty' problems. The only sanity checks applied are those listed in the test/example codes.

It made my machine burst into flames

I never said it wouldn't ;-)

I think it needs a CppNoddy::foo<bar> class

Feel free to add something. If you're an undergraduate looking for a final-year project or an MSc. student and have an idea of something to include (or wish to redesign something that I did in a stupid way), then let me know.

CC-GNU GPL
This software is licenced under the CC-GNU GPL.
© Content created by R.E. Hewitt, 2007.

Examples

Unsteady (parabolic) boundary-layer.
Karman rotating-disk.
Blasius boundary-layer.
Falkner-Skan equation.
Orr-Sommerfeld equation.
Bi-harmonic equation.
Sod's shocktube.
Linear acoustics.
Shallow water equations.
Compressible Euler.
Lorenz equations.
Poisson problem.

Features/classes

Dense/sparse vectors.
Dense/Banded/Sparse matrices.
Linear solvers
LAPACK, SuperLU, MUMPS_seq.
Arc-length continuation.
Newton iteration.
Initial value problems.
1D boundary-value problems.
1D eigenvalue problems.
1D/2D hyperbolic problems.
2D parabolic problems.