CGNS (CFD General Notation System) external link is a collection of conventions, along with software implementing those conventions, for the storage and retrieval of CFD (computational fluid dynamics) data. The CGNS system is designed to facilitate the exchange of data between sites and applications, as well as to help stabilize the archiving of fluid dynamic data. In today’s environment, it is important in many technical arenas to maintain detailed records of scientific computations. CGNS was designed to help promote a long-lasting and extensible standard for this purpose. Many companies and institutions choose to adopt the CGNS standard in order to increase productivity by (1) reducing the time required to translate between data created and used by different applications, and (2) increasing the quality, longevity, and re-usability of archived data.
The CGNS standard is a conceptual entity established by the documentation. The CGNS software is a physical product supplied to enable writing and reading data according to this standard. All CGNS software is completely free and open to anyone. By using the supplied software, it is relatively easy for users to adhere to most of the standard described in detail in this document.
The CGNS project originated during 1994 through a series of meetings that addressed improved transfer of NASA technology to industry. A principal impediment in this process was the disparity in I/O formats employed by various flow codes, grid generators, and other utilities, and CGNS was conceived as a means to promote “plug-and-play” CFD. An agreement was reached to develop CGNS at Boeing external link, under NASA Contract NAS1-20267, with active participation by a team of CFD researchers from NASA’s Langley external link, Lewis (now Glenn) external link, and Ames external link Research Centers, McDonnell Douglas Corporation (now part of Boeing), and Boeing Commercial Airplane Group external link. This team, which was joined by ICEM CFD Engineering Corporation external link of Berkeley, California in 1997, undertook the core of the development. However, in the spirit of creating a completely open and broadly accepted standard, all interested parties were encouraged to participate; the US Air Force external link and Arnold Engineering Development Center external link were notably present. From the beginning, the purpose was to develop a system that could be distributed freely, including all documentation, software and source code. This goal has now been fully realized; further, control of CGNS has been completely transferred to a public forum known as the CGNS Steering Committee.
The principal target is the data normally associated with compressible viscous flow (i.e., the Navier-Stokes equations), but the standard is also applicable to subclasses such as Euler and potential flows. The initial release addressed multi-zone grids, flow fields, boundary conditions, and zone-to-zone connection information, as well as a number of auxiliary items, such as non-dimensionalization, reference states, and equation set specifications. Extensions incorporated since then include unstructured mesh, connections to geometry definition, time-dependent flow, and support for multiple species and chemistry.
It is worth noting that extensibility is a fundamental design characteristic of the system, which in principal could be used for other disciplines of computational field physics, such as acoustics or electromagnetics, given the willingness of the cognizant scientific community to define the conventions.
The standard format, or paper convention, part of CGNS consists of two fundamental pieces. The first, known as the Standard Interface Data Structures (SIDS), describes in detail the intellectual content of the information to be stored. It defines, for example, the precise meaning of a “boundary condition”. The second, known as the CGNS/FMM - Data model mapping to implementation, defines the exact location in a CGNS file where the data is to be stored.
The implementation, or software, part of CGNS likewise consists of two separate entities. CGNS files are read and written by a stand-alone database manager, typically HDF5 (although the original ADF - Advanced Data Format - is also supported). The database manager implements a tree-like data structure, as a binary file. Since the format of this file is completely controlled by the database manager, and since HDF5 and ADF are both written in ANSI C (Fortran wrappers are provided), these files and the database manager itself are portable to any environment that supports ANSI C. Both HDF5 and ADF are available separately and constitute useful tools for the storage of large quantities of scientific data.
The underlying database manager, however, implements no knowledge of CFD or of the File Mapping. To simplify access to CGNS files, a second layer of software known as the CGNS/MLL - An API for C and Fortran applications is provided. This layer is in effect an API, or Application Programming Interface for CFD. The API incorporates knowledge of the CFD data structures, their meaning and their location in the file, enabling applications such as flow codes and grid generators to access the data in familiar terms. The API is therefore the piece of the CGNS system most visible to applications developers. Like the HDF5 and ADF database managers, the Mid-Level Library is written in ANSI C; all public API routines have Fortran counterparts.