CppNoddy  0.92
Loading...
Searching...
No Matches
Types.h
Go to the documentation of this file.
1/// \file Types.h
2/// Some standard typedefs. These are kept for legacy reasons. I've tried
3/// to remove them from the code, which means things are a little more
4/// verbose, but perhaps also a little less obfuscated.
5
6/*! \mainpage Overview
7 *
8 * \section intro0 Introduction
9 * \subsection intro1 What is it?
10 *
11 *
12 * A simple (aka Noddy) collection of object orientated numerical routines written in C++,
13 * aimed at undergraduate projects and starting graduate students.
14 * In the current version, the test/example cases solve (amongst others):
15 *
16 *
17 * - Two-dimensional parabolic problems
18 * ( eg., the unsteady boundary-layer equations ).
19 * - Boundary-value ODE problems
20 * ( eg., the Karman rotating-disk, Blasius boundary-layer and other similarity solutions ).
21 * - Arc-length continuation of problems involving limit points
22 * ( eg., the Karman rotating disk equations, Falkner-Skan equation,
23 * the plane Poiseuille flow linear neutral curve. ).
24 * - One-dimensional eigenvalue problems ( eg., the (bi-)harmonic equation, Orr-Sommerfeld equation ) solved
25 * both directly and via local methods.
26 * - One-dimensional hyperbolic problems
27 * ( eg., Sod's shocktube problem,
28 * linear acoustic waves with reflection in non-uniform medium,
29 * shallow water eqiations ).
30 * - Two-dimensional hyperbolic problems
31 * ( eg., compressible Euler problems,
32 * linear acoustic waves,
33 * shallow water eqiations ).
34 * - Initial-boundary-value problems
35 * ( eg., the heat diffusion equation in 1D, and the unsteady Karman rotating-disk equations ).
36 * - Initial-value problems ( eg., the Lorenz equations ).
37 * - Poisson problems in Cartesian and cylindrical geometries.
38 *
39 *
40 *
41 * A breakdown of examples into groups is found under the 'Modules' link above.
42 * Alternatively, a complete list of examples can be found at this link \link Tests \endlink
43 *
44 * The library provides:
45
46 * - Both \link #CppNoddy::DenseVector dense vector \endlink and \link #CppNoddy::SparseVector sparse vector \endlink classes (including the usual vector operations).
47 * - \link #CppNoddy::DenseMatrix Dense \endlink, \link #CppNoddy::BandedMatrix banded \endlink and \link #CppNoddy::SparseMatrix sparse \endlink matrix classes.
48 * - A class for \link #CppNoddy::ODE_IVP ODE IVPs \endlink with 4th-order Runge-Kutta(-Fehlberg) method(s).
49 * - A class for \link #CppNoddy::ODE_BVP ODE BVPs \endlink with second-order finite-difference methods and adaptive refinement.
50 * - A class for \link #CppNoddy::ODE_EVP ODE EVPs \endlink with second-order finite-difference methods.
51 * - A class for \link #CppNoddy::PDE_IBVP IBVPs \endlink with second-order methods in both `space'
52 and `time'.
53 * - A class for \link #CppNoddy::PDE_double_IBVP Two dimensional parabolic problems \endlink with a second-order box scheme.
54 * - Classes for both \link #CppNoddy::OneD_TVDLF_Mesh 1-D \endlink and \link #CppNoddy::TwoD_TVDLF_Mesh 2-D \endlink hyperbolic problems via central scheme algorithms.
55 * - 2-D Poisson objects (\link #CppNoddy::Poisson_Cartesian Cartesian \endlink and
56 * \link #CppNoddy::Poisson_meridional axisymmetric \endlink cylindrical polars).
57 * - \link #CppNoddy::Newton vector \endlink Newton iteration classes.
58 * - Arc-length continuation solvers exist for Residual objects and boundary value problems.
59 * - An ability to link to selected BLAS, LAPACK and PETSc routines via a simplified API
60 * (these currently include the real/complex generalised eigenproblem solvers,
61 * dense/banded/sparse LU solvers.).
62 *
63 * \subsection intro2 What is it for?
64 * It exists for two reasons:
65 * - It's an introduction/framework for final-year undergraduate project students or graduate students.
66 * - Just for fun.
67 *
68 * \subsection add0 I think it needs a CppNoddy::foo<bar> class
69 *
70 * 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.
71 *
72 *
73<br/>
74<p>
75Content created by R.E. Hewitt, 2007. MIT license.
76</p>
77
78 * \endhtmlonly
79 */
80
81#ifndef TYPES_H
82#define TYPES_H
83
84#include <complex>
85#include <cmath>
86#include <sys/stat.h>
87
88#include <DenseVector.h>
89#include <DenseMatrix.h>
90#include <BandedMatrix.h>
91
92
93/// A collection of OO numerical routines aimed at simple
94/// (typical) applied problems in continuum mechanics.
95namespace CppNoddy {
96
97 /// A complex double precision number using std::complex
98 typedef std::complex<double> D_complex;
99
100}
101
102#endif // NTYPES_H
A matrix class that constructs a BANDED matrix.
A matrix class that constructs a DENSE matrix as an STL Vector of DenseVectors.
Specification for a templated DenseVector class – a dense, dynamic, vector object.
A collection of OO numerical routines aimed at simple (typical) applied problems in continuum mechani...
std::complex< double > D_complex
A complex double precision number using std::complex.
Definition: Types.h:98

© 2012

R.E. Hewitt