ExodusII 4.96
doxygen.h
Go to the documentation of this file.
00001 /*!  \mainpage ExodusII API Documentation
00002 
00003 \section intro Introduction
00004 
00005 EXODUS II is the successor of the widely used finite element (FE) data file format EXODUS
00006 (henceforth referred to as EXODUS I) developed by Mills-Curran and Flanagan. It
00007 continues the concept of a common database for multiple application codes (mesh generators,
00008 analysis codes, visualization software, etc.) rather than code-specific utilities, affording
00009 flexibility and robustness for both the application code developer and application code user.
00010 By using the EXODUS II data model, a user inherits the flexibility of using a large array of
00011 application codes (including vendor-supplied codes) which access this common data file
00012 directly or via translators.
00013 
00014 The uses of the EXODUS II data model include the following:
00015     - Problem definition -- mesh generation, specification of locations of boundary conditions and load application, specification of material types.
00016     - Simulation -- model input and results output.
00017     - Visualization -- model verification, results postprocessing, data interrogation, and analysis tracking.
00018 
00019 \section avail License and Availability
00020 The EXODUS II library is licensed under the BSD open source license.
00021 
00022 Copyright (c) 2005 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000
00023 with Sandia Corporation, the U.S. Government retains certain rights in this software.
00024 
00025 Redistribution and use in source and binary forms, with or without modification, are permitted
00026 provided that the following conditions are met:
00027   - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
00028   - Redistributions in binary form must reproduce the above copyright notice, this list
00029 of conditions and the following disclaimer in the documentation and/or other
00030 materials provided with the distribution.
00031   -Neither the name of Sandia Corporation nor the names of its contributors may be
00032 used to endorse or promote products derived from this software without specific
00033 prior written permission.
00034 
00035 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00036 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00037 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00038 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
00039 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00040 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00041 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00042 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00043 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00044 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00045 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00046 
00047 The ExodusII library source code is available on Sourceforge at
00048 http://sourceforge.net/projects/exodusii
00049 
00050 For bug reports, documentation errors, and enhancement suggestions, contact:
00051 - Gregory D. Sjaardema
00052 - PHONE: (505) 844-2701
00053 - EMAIL: gdsjaar@sandia.gov
00054 
00055 \section devel Development of EXODUS II
00056 
00057 The evolution of the EXODUS data model has been steered by FE application code developers
00058 who desire the advantages of a common data format. The EXODUS II model has been
00059 designed to overcome deficiencies in the EXODUS I file format and meet the following
00060 functional requirements as specified by these developers:
00061    - Random read/write access.
00062    - Application programming interface (API) -- provide routines callable from FORTRAN, C, and C++ application codes.
00063    - Extensible -- allow new data objects to be added without modifying the application programs that use the file format.
00064    - Machine independent -- data should be independent of the machine which generated it.
00065    - Real-time access during analysis -- allow access to the data in a file while the file is
00066 being created.
00067 
00068 To address these requirements, the open source database library
00069 etCDF (http://www.unidata.ucar.edu/software/netcdf/) was selected to handle the low-level data storage. The EXODUS
00070 II library functions provide the mapping between FE data objects and
00071 netCDF dimensions, attributes, and variables. Thus, the code developer
00072 interacts with the data model using the vocabulary of an FE analyst
00073 (element connectivity, nodal coordinates, etc.) and is relieved of the
00074 details of the data access mechanism. 
00075 
00076 Because an EXODUS II file is a netCDF file, an application program can
00077 access data via the EXODUS II API or the netCDF API directly. Although
00078 accessing the data directly via the netCDF API requires more in-depth
00079 understanding of netCDF, this capability is a powerful feature that
00080 allows the development of auxiliary libraries of special purpose
00081 functions not offered in the standard EXODUS II library. For example,
00082 if an application required access to the coordinates of a single node
00083 (the standard library function returns the coordinates for all of the
00084 nodes in the model), a simple function could be written that calls
00085 netCDF routines directly to read the data of interest.
00086 
00087 \section descrip Description of Data Objects
00088 
00089 The data in EXODUS II files can be divided into three primary
00090 categories: initialization data, model, and results.
00091 
00092 Initialization data includes sizing parameters (number of nodes,
00093 number of elements, etc.), optional quality assurance information
00094 (names of codes that have operated on the data), and optional
00095 informational text.
00096 
00097 The model is described by data which are static (do not change through
00098 time). These data include nodal coordinates, element connectivity
00099 (node lists for each element), element attributes, and node sets and
00100 side sets (used to aid in applying loading conditions and boundary
00101 constraints).
00102 
00103 The results are optional and include five types of variables -- nodal,
00104 element, nodeset, sideset, and global -- each of which is stored
00105 through time. Nodal results are output (at each time step) for all the
00106 nodes in the model. An example of a nodal variable is displacement in
00107 the X direction. Element, nodeset, and sideset results are output (at
00108 each time step) for all entities (elements, nodes, sides) in one or
00109 more entity block. For example, stress may be an element
00110 variable. Another use of element variables is to record element status
00111 (a binary flag indicating whether each element is "alive" or "dead")
00112 through time. Global results are output (at each time step) for a
00113 single element or node, or for a single property. Linear momentum of a
00114 structure and the acceleration at a particular point are both examples
00115 of global variables.  Although these examples correspond to typical FE
00116 applications, the data format is flexible enough to accommodate a
00117 spectrum of uses.
00118 
00119 A few conventions and limitations must be cited:
00120 
00121  - There are no restrictions on the frequency of results output except
00122  that the time value associated with each successive time step must
00123  increase monotonically.
00124  - To output results at different frequencies (i.e., variable A at
00125  every simulation time step, variable B at every other time step)
00126  multiple EXODUS II files must be used.
00127  - There are no limits to the number of each type of results, but once
00128  declared, the number cannot change.
00129  - If the mesh geometry or topology changes in time (i.e., number of
00130  nodes increases, connectivity changes), then the new geometrymust be
00131  output to a new EXODUS II file.
00132 
00133 */