CppNoddy  0.92
Loading...
Searching...
No Matches
Overview

Introduction

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):

  • Two-dimensional parabolic problems ( eg., the unsteady boundary-layer equations ).
  • Boundary-value ODE problems ( eg., the Karman rotating-disk, Blasius boundary-layer and other similarity solutions ).
  • Arc-length continuation of problems involving limit points ( eg., the Karman rotating disk equations, Falkner-Skan equation, the plane Poiseuille flow linear neutral curve. ).
  • One-dimensional eigenvalue problems ( eg., the (bi-)harmonic equation, Orr-Sommerfeld equation ) solved both directly and via local methods.
  • One-dimensional hyperbolic problems ( eg., Sod's shocktube problem, linear acoustic waves with reflection in non-uniform medium, shallow water eqiations ).
  • Two-dimensional hyperbolic problems ( eg., compressible Euler problems, linear acoustic waves, shallow water eqiations ).
  • Initial-boundary-value problems ( eg., the heat diffusion equation in 1D, and the unsteady Karman rotating-disk equations ).
  • Initial-value problems ( eg., the Lorenz equations ).
  • Poisson problems in Cartesian and cylindrical geometries.

A breakdown of examples into groups is found under the 'Modules' link above. Alternatively, a complete list of examples can be found at this link Tests

The library provides:

  • Both dense vector and sparse vector classes (including the usual vector operations).
  • Dense , banded and sparse matrix classes.
  • A class for ODE IVPs with 4th-order Runge-Kutta(-Fehlberg) method(s).
  • A class for ODE BVPs with second-order finite-difference methods and adaptive refinement.
  • A class for ODE EVPs with second-order finite-difference methods.
  • A class for IBVPs with second-order methods in both ‘space’ and ‘time’.
  • A class for Two dimensional parabolic problems with a second-order box scheme.
  • Classes for both 1-D and 2-D hyperbolic problems via central scheme algorithms.
  • 2-D Poisson objects (Cartesian and axisymmetric cylindrical polars).
  • vector Newton iteration classes.
  • Arc-length continuation solvers exist for Residual objects and boundary value problems.
  • An ability to link to selected BLAS, LAPACK and PETSc routines via a simplified API (these currently include the real/complex generalised eigenproblem solvers, dense/banded/sparse LU solvers.).

What is it for?

It exists for two reasons:

  • It's an introduction/framework for final-year undergraduate project students or graduate students.
  • Just for fun.

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.


Content created by R.E. Hewitt, 2007. MIT license.

© 2012

R.E. Hewitt