Links - Programming and Development
This section contains links to selected resources that might be of interest
for people developing CFD codes. For software and source code you should also
check out the
Links - Software section.
To suggest a link to be included in this section please use
the online
link suggestion form. You are of
course also welcome to contact us directly via email at
webmaster@cfd-online.com.
Contents:
Data Formats
- CGNS - CFD General Notation System
- CGNS is slowly becoming a de facto data format standard in the CFD world.
CGNS was initiated by NASA and Boeing back in 1994 and the format is still
actively developed. The CGNS format is now supported by most commercial code
vendors, although not as well by some large vendors as you would hope. If
you are writing your own CFD code you should definitely make sure that it
can read and write CGNS data.
- HDF5
- HDF is a general purpose library and file format for storing scientific
data. HDF was developed by NCSA and has many users. HDF is a lower-level
format than CGNS and CGNS will most likely switch to using HDF5 as the storage
layer. There are also other more "intelligent" CFD related developments
of HDF that might be of interest, like the HDF5
Mesh API.
- PLOT3D
Read and Write Utilities
- Fortran routines to read and write PLOT3D data. PLOT3D is an old NASA format
which is widely supported. When everything else fails you can always try
the PLOT3D format. Another description of PLOT3D can be found here.
- MOAB - a Mesh-Oriented datABase
- A software library for creating, storing and accessing finite element mesh
data. Distributed under GPL. Developed by Elemental Technologies and Sandia
National Labs.
- Scientific
Data Management, by Mario Valle
- A nice overview of the field of scientific data management. Contains many
links.
Software Libraries
Libraries which you can use if you don't want to write your own routines for
everything. These can be invaluable if you, for example, don't want to code your
own linear equation solver. Wikipedia has a more general page with a
list of numerical libraries.
For documents and information on discretizations
schemes and solvers see the
Modeling
and Numerics section. For links to more sources of numerical software see
the
Numerical Software chapter.
- Trilinos
- A project led by Sandia to develop an object-oriented sofware framework
for scientific computations. This is an active project which includes several
state-of-the-art solvers and lots of other nice things a software engineer
writing CFD codes would find useful. Everything is freely available for download
once you have registered. Very good!
- PETSc
- A parallel library of routines for scientific computations developed by
the MCS division at Argonne National Laboratory .
This library is included in the Trilinos suite above.
- Chombo
- Tools for implementing finite difference and finite volume methods for the solution of partial differential equations on block-structured adaptively refined rectangular grids. Both elliptic and time-dependent modules are included. Chombo supports calculations in complex geometries with both embedded boundaries and mapped grids, and Chombo also supports particle methods. Developed by the Applied Numerical Algorithms Group of the Computational Research Division at the Lawrence Berkley National Laboratory.
- DUNE, the Distributed and Unified Numerics Environment
- A free tollbox for solving PDE's with grid-based methods. Written in C++ and distributed under GPL. Originating from IWR, Universität Heidelberg. Looks very nice and seems to be updated regularely (Jan, 2012)
Numerical Software
A few selected software repositories where you can search for free numerical
software. For a more complete list look at
Numerical Methods (Tomasz Plewa),
Other Sources of Math Software Information (GAMS/NIST) or surf on Wikipedia from
Wikipedia page on Mathematical Software.
For software libraries to use in your code see also the Programming & Computing > Software
Libraries section.
- Netlib
- A very large archive of numerical software.
- NIST Guide to Available Math Software
- An online cross-index of free mathematical software from several sources.
You can identify the routines you need by following a problem decision tree.
Highly recommended!
- Numerical Recipes
- This classical book is now available directly online in both C and Fortran
versions! There is also a lot of additional information here. You can get
the book for free, but you'll have to pay to get access to source code.
- Aztec
- A parallel iterative sparse linear solver package developed at Sandia
National Laboratories. This solver is included in the TOPS and Trilinos
suites above.
- Scalable Linear Solvers, Hypre
- A library of high performance preconditioners using parallel multigrid
methods for both structured and unstructured grids. Developed at the Lawrence
Livermore National Laboratory .
- BlockSolve95
- Software for the efficient solution of large, sparse linear systems on
massively parallel computers
- Freely
Available Software for Linear Algebra
- Links to more packages. By Jack Dongarra. This list looks very complete and seemd to be updated regularly. Very nice!
- Overview of
Iterative Linear System Solver Packages
- A nice surevey from 1997 by Victor Eijkhout
Parallel Computing
For information on clusters, cluster software etc. please see the
Links >
Hardware > Clusters section.
Mesh Generation and Partitioning
- METIS: Unstructured
Graph Partitioning and Sparse Matrix Ordering System
- METIS is a set of routines to partition and re-order grids. The algorithms
used produce very good results for domain decomposition methods. Both serial
and parallel versions are freely available for download. This is good stuff!
- Trilinos Meshes, Geometry and Load Balancing Capabilities
- Libraries, tools and common interfaces for creating, accessing and manipulating mesh and matrix data. Developed within the Trillinos project.
Communication Interfaces
- MPI - Message Passing Interface
- The most commonly used communication interface. There are many MPI implementation.
Some of the more popular are MPICH, LAM/MPI and
the new Open MPI There is also a complete reference
book on MPI freely available on the web
- PVM - Parallel Virtual
Machine
- PVM is a communication library with a long history and many users. In recent
years it has lost market share to MPI though. You can find a complete reference
book on PVM freely available on the web.
- BSP - Bulk Synchronous Parallel
Model
- BSPlib is an alternative to MPI and PVM. It is based on the BSP model of
parallel computation. It is supposed to be simpler to use but it does not
seem to be taking off.
Parallel Info
- Parallel Computing in CFD-Wiki
- A growing page about information related to parallel computing in CFD.
- Nan's Parallel Computing
Page
- Lots of links to parallel computing related resources. It is getting a bit old by now (Jan, 2012) and contains many dead links.
- Designing and Building Parallel
Programs
- A free hypertextbook by Ian Foster. Geeting a bit old now and does not seem to have been updated since 1995 (Jan, 2012).
Interesting General Sites
- code.NASA
- A new site from NASA about open source projects. Opened in January 2012. It will be interesting to see how this site develops.