CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home >

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 [GOOD]
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.
Go to top Go to top             Suggest new link Suggest new link

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 [GOOD]
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 [GOOD]
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 [GOOD]
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 [GOOD]
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)
Go to top Go to top             Suggest new link Suggest new link

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 [GOOD]
A very large archive of numerical software.
NIST Guide to Available Math Software [GOOD]
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 [GOOD]
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 [GOOD]
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
Go to top Go to top             Suggest new link Suggest new link

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 [GOOD]
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).
Go to top Go to top             Suggest new link Suggest new link

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.
Go to top Go to top             Suggest new link Suggest new link