► Examples  
► Arclength  
Arc_circle.cpp  A simple arclength continuation solving the equation
where is a parameter 
Arc_circle_vector.cpp  A simple arclength continuation solving the vector equation
where is a parameter 
Arc_Shoot_FalknerSkan.cpp  Arclength continue the FalknerSkan equation
for varying values of the Hartree parameter – around the well known limit point 
Arc_Trans_Fold.cpp  Solve the nonlinear scalar residual problem
by arclength continuation from the starting solution 
► BVP  
BVP_Berman.cpp  Solving the Berman suctionchannel solution in the form
subject to and by applying the ODE_BVP class 
BVP_Blasius.cpp  Solving the Blasius equation
with and in the domain by applying the ODE_BVP class 
BVP_Harmonic.cpp  Solving the Harmonic equation
subject to and (OR ) by applying the ODE_BVP class 
BVP_JH_arc_NV.cpp  Arc length conitinuation of the equation for selfsimilar flow between two planar angled walls; the JefferyHamel flow 
BVP_Karman.cpp  Solving the Karman rotatingdisk equations for the flow above an infinite rotating disk:
with boundary conditions , and , 
BVP_Karman_adapt.cpp  Adaptively solve the Karman rotatingdisk equations for the flow above an infinite rotating disk:
with boundary conditions , and , 
BVP_Karman_arc.cpp  Arclength continuation of the Karman rotatingdisk equations for the flow above an infinite rotating disk:
with boundary conditions , and , 
BVP_Karman_Jacobian.cpp  Solving the Karman rotatingdisk equations for the flow above an infinite rotating disk by applying a userprovided Jacobian
with boundary conditions , and , 
BVP_nonIdentity.cpp  Solving the equation
subject to and 
BVP_quarterlayer_NV.cpp  
BVP_Troesch.cpp  Solving the Troesch equation
subject to and 
Shoot_Berman.cpp  Solving the fourthorder Berman (porous channel) similarity equation
where and is a pressure constant and is the Reynolds number based on the channel halfheight and the wall suction 
Shoot_Blasius.cpp  Solving the Blasius equation
with and via RungeKutta and (scalar) Newton iteration 
► Containers  
Matrix_CompareNative.cpp  A quick check that the overhead associated with the matrix container class is less than 5% compared to a native array 
MatrixMult.cpp  Do some matrix multiplications and compare the native N^3 multiply with the BLAS implementation 
MatrixSolves.cpp  Example of the simple linear solvers implemented for dense, banded and sparse matrix objects 
MatrixSparseSolves.cpp  
Vec_DenseVector.cpp  Some simple sanity checks for the NVector class with both double and complex types 
Vec_Overloading.cpp  Just a quick and simple check that NVector operator overloading is functioning 
Vec_SparseVector.cpp  A superficial sanity check of one_norm and vector arithmetic for the sparse vector class 
► double_IBVP  
IBVP_linear.cpp  Solving the linear equation
subject to and 
IBVP_nonlinear_fast.cpp  Solving the nonlinear problem
subject to , and , 
IBVP_nonlinear_slow.cpp  Solving the nonlinear problem
subject to , and , 
► EVP  
EVP_complex.cpp  Solves a 4x4 complex generalised eigenvalue problem
for the 4 eigenvalues , 
EVP_complex_sparse.cpp  Solves a 4x4 complex generalised eigenvalue problem
for the 4 eigenvalues , 
EVP_Harmonic.cpp  Solves the harmonic equation
as an eigenvalue problem for over the unit domain with homogeneous boundary conditions for , returning any eigenvalue(s) with absolute value less than 10 
EVP_Harmonic_easy.cpp  Solves the harmonic equation
as an eigenvalue problem for over the unit domain with homogeneous boundary conditions for , returning the smallest eigenvalue 
EVP_Harmonic_sparse.cpp  
EVP_local_Harmonic.cpp  Solves the harmonic equation
as a LOCAL eigenvalue problem for over the unit domain with homogeneous boundary conditions for but using the nonlinear BVP solver to refine a guess at an eigenvalue 
EVP_OrrSommerfeld.cpp  Solves the following linear eigenvalue problem for values that satisfy :
subject to where , and 
EVP_OrrSommerfeld_easy.cpp  Solves the following linear eigenvalue problem for values that satisfy :
subject to where , and 
EVP_OrrSommerfeld_neutralcurve.cpp  Solves the following linear eigenvalue problem for values that satisfy :
subject to determining the values of and that lead to 
EVP_OrrSommerfeld_sparse.cpp  Solves the following linear eigenvalue problem for values that satisfy :
subject to where , and 
EVP_OrrSommerfeld_student_NV.cpp  
EVP_Rayleigh.cpp  Solves the Rayleigh problem for values that satisfy :
subject to ; it determines the critical wavenumber such that for 
EVP_real_sparse.cpp  Solves a 2x2 generalised eigenvalue problem
for the 2 eigenvalues , 
EVP_Shoot_Biharmonic.cpp  Solving a onedimensional "Biharmonic" eigenvalue problem (EVP)
via RungeKutta and (vector) Newton iteration 
► Generic  
ExceptionChecks.cpp  We do some obviously dumb things to induce a handful of common failures 
NewtonIter.cpp  A vector Newton iteration to find a root of
by splitting it into a vector equation (real & imaginary parts) 
Quad.cpp  Compute the integral
with varying schemes, then compare the result to the exact value

TrivialComplex.cpp  A pointless repeated computation test for timing the std::complex class 
► HYP_1D  
HYP_acoustic_impedance.cpp  Solve the constant coefficient linear sound wave problem
for a rightpropagating square pressure pulse in a medium with constant bulk modulus and density if and elsewhere 
HYP_acoustic_reflection.cpp  Solve the constant coefficient linear sound wave problem
for a rightpropagating square pulse in a medium with constant bulk modulus and density and reflecting boundary conditions at both sides 
HYP_nonlinear_advection.cpp  Solving the 1D `nonlinear advection equation'
using a TVD LaxFriedrichs scheme for 
HYP_radial_dam_break.cpp  Solve the shallow water equations in one dimension for an initial column of fluid
The result is compared to the same problem solved using Clawpack, evaluated at the single point x=0.5 
HYP_shallow_source_NV.cpp  Solve the shallow water equations in one dimension
where the momentum is fixed upstream, and the flow depth is fixed downstream and is the topography shape 
HYP_shallow_water_NV.cpp  Solve the shallow water equations in one dimension for an initial (small) hump of fluid
where and the boundaries are reflecting 
HYP_shocktube_Lax_NV.cpp  Solving the 1D Euler problem for gas dynamics
where
and 
HYP_shocktube_Sod.cpp  Solving the 1D Euler problem for gas dynamics
where
and 
► HYP_2D  
HYP_2D_acoustic_NV.cpp  A linear acoustic pulse propagating towards a cylindrical region of higher (four times) bulk modulus 
HYP_2D_Euler_NV.cpp  Solving the Euler equations for a compressible gas with Sodlike initial conditions in a rectangular box , with nomomentum flux through the walls 
HYP_2D_linear_advection_xy.cpp  Solving the 2D advection equation
using a TVD LaxFriedrichs scheme for 
HYP_2D_nonlinear_advection_x.cpp  Solving the 1D `nonlinear advection equation'
using a TVD LaxFriedrichs scheme for 
HYP_2D_nonlinear_advection_xy.cpp  Solving the 2D `nonlinear advection equation'
using a TVD LaxFriedrichs scheme for 
HYP_2D_nonlinear_advection_y.cpp  Solving the 1D `nonlinear advection equation'
using a TVD LaxFriedrichs scheme for 
HYP_2D_radial_dam_break.cpp  A radial dambreak problem for the 2D shallow water equations 
HYP_2D_RayTay_NV.cpp  Solving the Euler equations for a compressible gas including a buoyancy force in a rectangular box , with nomomentum flux through the walls 
HYP_2D_shallow_source.cpp  Two dimensional shallow water equations over topography 
► IBVP  
IBVP_diffusion.cpp  Solving the heat diffusion equation
subject to and with initial condition 
IBVP_diffusion_nonlinear.cpp  Solving the unstead diffusion problem:
with boundary conditions ; where 
IBVP_Karman.cpp  Solving the unsteady Karman rotatingdisk equations for the flow above an infinite rotating disk in a rotating fluid:
with boundary conditions , and , 
IBVP_nonlinear_advdiff.cpp  Solving the nonlinear advection diffusion equation
subject to and with initial condition and a source term
for some constant parameters and 
► IVP  
IVP_Harmonic.cpp  Integrate the harmonic equation
with from to as an IVP, using an adaptive RungeKuttaFehlberg routine 
IVP_Lorenz.cpp  Integrate the Lorenz equations
forward in time using an adaptive RungeKuttaFehlberg routine 
► Meshes  
1DNodeMesh.cpp  A simple check of the OneD_Node_Mesh container that stores nodal data over a given mesh 
1DNodeMesh_Airy.cpp  Solves the Airy equation
on the negative real axis over the range [10,0] then pushes the data into a OneD_GenMesh object and integrates the result 
2DNodeMesh.cpp  A simple check of the TwoD_Node_Mesh container that stores nodal data over a given mesh 
► Poisson  
Poisson_C.cpp  Solving a Cartesian Poisson problem:
with
where 
Poisson_m.cpp  Solving a Poisson problem in the meridional plane of a cylinder:
with
where 
Poisson_Stokes.cpp  Solving a Poissonlike problem in the meridional plane of a cylinder for the Stokes streamfunction
with
where and
The global problem is solved (in one step) and result is compared to the exact solution

ExamplesOverview.h  
► include  
ArcLength_base.h  A base class for arclengthcapable solvers 
BandedLinearSystem.h  Specification of the linear system class 
BandedMatrix.h  A matrix class that constructs a BANDED matrix 
BVP_bundle.h  A shorter bundled include file for ODE_BVP and PDE_IBVP codes 
cfortran.h  Http://wwwzeus.desy.de/~burow/cfortran/ by Burkhard Burow burow.nosp@m.@des.nosp@m.y.de 
DenseLinearEigenSystem.h  Specification of the dense linear eigensystem class 
DenseLinearSystem.h  Specification of the linear system class 
DenseMatrix.h  A matrix class that constructs a DENSE matrix as an STL Vector of DenseVectors, inheriting from Matrix_base 
DenseVector.h  Specification for a templated DenseVector class – a dense, dynamic, vector object 
Equation.h  A templated class for equations that can be inherited from to allow instantiation of ODE/PDE objects using the resulting class 
Equation_1matrix.h  A templated class for equations that can be inherited from to allow instantiation of PDE_IBVP objects (amongst others) 
Equation_2matrix.h  A templated class for equations that can be inherited from to allow instantiation of PDE_double_IBVP objects (amongst others) 
Equation_3matrix.h  A templated class for equations that can be inherited from to allow instantiation of PDE_double_IBVP objects (amongst others) 
EVP_bundle.h  A shorter bundled include file for ODE_EVP and general eigenvalue problems 
Exceptions.h  The collection of CppNoddy exceptions 
FnQuadrature.h  A specification for quadrature classes 
FortranBLAS.h  Some interface definitions for calling external fortran routines from BLAS 
FortranData.h  
FortranLAPACK.h  Some interface definitions for calling external fortran routines in LAPACK 
Functors.h  Some Function Objects that CppNoddy makes use of in algorithms applied to STL containers 
Generic_bundle.h  A shorter bundled include file for ODE_BVP and PDE_IBVP codes 
HST.h  Some classes useful for hydrodynamic stability theory problems 
IBVP_bundle.h  A shorter bundled include file for initial boundary value problems 
IBVP_double_bundle.h  A shorter bundled include file for double initial boundary value problems 
IVP_bundle.h  A shorter bundled include file for initialvalue problems 
LinearEigenSystem_base.h  Specification of the linear eigensystem base class 
LinearSystem_base.h  Specification of the linear system class 
Matrix_base.h  A base matrix class to ensure a consistent interface between the inheriting dense/banded matrix classes 
Newton.h  A vector NEWTON iteration class 
Newton_bundle.h  A shorter bundled include file for Newton iteration problems 
ODE_BVP.h  A specification of a class for an order ODE BVP defined by
subject to Dirichlet conditions defined at or for some components of 
ODE_EVP.h  A specification of a class for an order ODE LINEAR EVP defined by
subject to zero Dirichlet conditions defined at or for some components of 
ODE_IVP.h  A specification for a class to solve initial value problems of the form
where is known 
OneD_HYP_bundle.h  A shorter bundled include file for hyperbolic problems 
OneD_Hyperbolic_System.h  
OneD_Node_Mesh.h  A specification for a one dimensional mesh object 
OneD_TVDLF_Elt.h  Specification of a one dimensional linear element for use in a TVD LaxFriedrichs scheme 
OneD_TVDLF_Mesh.h  Specification of an object that represents a one dimensional mesh for TVD LX methods 
PDE_double_IBVP.h  A specification of a class for an order IBVP of the form
subject to conditions defined at and for some components of 
PDE_IBVP.h  A specification of a class for an order IBVP of the form
subject to conditions defined at and for some components of 
Poisson_base.h  Specification of a Poisson base class .. 
Poisson_Cartesian.h  Specification of a Poisson problem in a 2D Cartesian coordinate system with Dirichlet boundary conditions – you really don't want to use this unless you link to LAPACK 
Poisson_meridional.h  Specification of a Poisson problem in the meridional plane of a cylindrical polar coordinate system with Dirichlet boundary conditions – you really don't want to use this unless you link to LAPACK 
Residual.h  A specification of a (double/complex) VECTOR residual class 
Residual_with_coords.h  A specification of a (double/complex) residual class that not only defines a vector residual of a vector of state variables but may also depend upon N additional (double) variables 
reversed_BL.h  An implementation of the zigzag modification for unsteady parabolic marching with reverse flow 
SLEPc.h  
SparseLinearEigenSystem.h  Specification of the sparse linear eigensystem class 
SparseLinearSystem.h  Specification of a sparsestorage linear system class 
SparseMatrix.h  A matrix class that constructs a SPARSE matrix as an STL Vector of SparseVectors, inheriting from Matrix_base 
SparseVector.h  A templated SparseVector class – a sparse, variable size, vector object 
Timer.h  A spec for the CppNoddy Timer object 
TrackerFile.h  A class that can be passed pointers to scalar/vector/mesh objects, then their contents are written to a file each time that the update method is called 
TwoD_HYP_bundle.h  A shorter bundled include file for hyperbolic problems 
TwoD_Hyperbolic_System.h  
TwoD_Node_Mesh.h  A specification for a two dimensional mesh object 
TwoD_TVDLF_Elt.h  Specification of a two dimensional linear element for use in a TVD LaxFriedrichs scheme 
TwoD_TVDLF_Mesh.h  Specification of an object that represents a two dimensional mesh for TVD LF methods 
Types.h  Some standard typedefs 
Uncopyable.h  
Utility.h  A spec for a collection of utility functions 
► OLD  
BandedLinearEigenSystem.cpp  Implementation for the BandedLinearEigenSystem class This class links to ARPACK to perform the solver phase 
BandedLinearEigenSystem.h  Specification of the banded linear eigensystem class 
CppNoddy.h  Some standard typedefs 
EVP_slepc_sparse2_NV.cpp  
EVP_slepc_sparse_NV.cpp  
FortranARPACK.h  Some interface definitions for calling external fortran routines in ARPACK 
MPI_MUMPS.cpp  
MPIinit.h  
PETSc.h  
SLU.h  
► src  
ArcLength_base.cpp  An implementation of the arclength class 
BandedLinearSystem.cpp  Implementation for the LinearSystem class 
BandedMatrix.cpp  Implementation of the matrix class that constructs a BANDED matrix as an NVector of NVectors 
DenseLinearEigenSystem.cpp  Implementation for the DenseLinearEigenSystem class This class links to LAPACK to perform the solver phase 
DenseLinearSystem.cpp  Implementation for the LinearSystem class 
DenseMatrix.cpp  Implementation of a DENSE matrix as an Vector of NVectors, inheriting from Matrix_base 
DenseVector.cpp  Implementation of the DenseVector class – a dense, variable size, vector object 
Equation.cpp  Implementation for an equations class that can be inherited from to allow instantiation of ODE objects using the resulting class 
Equation_1matrix.cpp  Implementation for an equations class that can be inherited from to allow instantiation of ODE objects using the resulting class 
Equation_2matrix.cpp  Implementation for an equations class that can be inherited from to allow instantiation of ODE objects using the resulting class 
Equation_3matrix.cpp  Implementation for an equations class that can be inherited from to allow instantiation of ODE objects using the resulting class 
FnQuadrature.cpp  Implementation of the real quadrature class 
LinearEigenSystem_base.cpp  Implementation for the LinearEigenSystem_base class 
LinearSystem_base.cpp  Implementation for the LinearSystem class 
Newton.cpp  Implementation of the vector NEWTON iteration class 
ODE_BVP.cpp  An implementation of a class for an order ODE BVP defined by
subject to Dirichlet conditions defined at or for some components of 
ODE_EVP.cpp  A specification of a class for an order ODE LINEAR EVP defined by
subject to zero Dirichlet conditions defined at or for some components of 
ODE_IVP.cpp  Implementation of an th order system of ODEs that form the IVP:
where is known 
OneD_Node_Mesh.cpp  Implementation of the one dimensional uniformly distributed mesh object 
OneD_TVDLF_Elt.cpp  Implementation of a one dimensional linear element for use in a TVD LaxFriedrichs scheme 
OneD_TVDLF_Mesh.cpp  Implementation of an object that represents a one dimensional mesh for TVD LF methods 
PDE_double_IBVP.cpp  
PDE_IBVP.cpp  Implementation of a class for an order IBVP of the form
subject to conditions defined at and for some components of 
Poisson_Cartesian.cpp  Implementation of the Poisson Cartesian class 
Poisson_meridional.cpp  Implementation of a Poisson problem in the meridional plane of a cylindrical polar coordinate system 
Residual.cpp  Implementation of the (double/complex) VECTOR residual class 
Residual_with_coords.cpp  A specification of a (double/complex) residual class that not only defines a vector residual of a vector of state variables but may also depend upon N additional (double) variables 
reversed_BL.cpp  
SparseLinearEigenSystem.cpp  Implementation for the BandedLinearEigenSystem class This class links to ARPACK to perform the solver phase 
SparseLinearSystem.cpp  Implementation for the LinearSystem class 
SparseMatrix.cpp  Implementation of a SPARSE matrix as an STL Vector of SparseVectors, inheriting from Matrix_base 
SparseVector.cpp  Implementation of the SparseVector class – a sparse, variable size, vector object 
Timer.cpp  Implementation of the CppNoddy Timer object 
TrackerFile.cpp  Implementation details for the TrackerFile object 
TwoD_Node_Mesh.cpp  Implementation of a two dimensional mesh object 
TwoD_TVDLF_Elt.cpp  Implementation of an object that represents a two dimensional element for TVD LF methods 
TwoD_TVDLF_Mesh.cpp  Implementation of an object that represents a two dimensional mesh for TVD LF methods 
Utility.cpp  An implementation for a collection of utility functions 
© 2012
R.E. Hewitt